authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-02-04 06:33:36-05:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-02-06 16:14:53-05:00
logfa9b0fa6d37f5ce61e7b36acd48cccb0d4fe71cc
tree691e28b2412e16b5584291a2fdbed50610da9a6e
parent39119088f968c36ec72ad0ebb69e02ce31b5a033

x86_64: rewrite most of the remaining float ops


8 files changed, 24909 insertions(+), 11364 deletions(-)

build.zig+1-1
......@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {
450450 .skip_non_native = skip_non_native,
451451 .skip_libc = skip_libc,
452452 .use_llvm = use_llvm,
453 .max_rss = 1.25 * 1024 * 1024 * 1024,
453 .max_rss = 2 * 1024 * 1024 * 1024,
454454 }));
455455
456456 test_modules_step.dependOn(tests.addModuleTests(b, .{
src/arch/x86_64/CodeGen.zig+24525-11255
......@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24142414}
24152415
24162416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(5_500);
2417 @setEvalBranchQuota(9_200);
24182418 const pt = cg.pt;
24192419 const zcu = pt.zcu;
24202420 const ip = &zcu.intern_pool;
......@@ -2450,23 +2450,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24502450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
24512451 switch (air_tags[@intFromEnum(inst)]) {
24522452 // zig fmt: off
2453 .add,
24542453 .add_wrap,
2455 .sub,
24562454 .sub_wrap,
24572455 => |air_tag| try cg.airBinOp(inst, air_tag),
24582456
24592457 .shr, .shr_exact => try cg.airShlShrBinOp(inst),
24602458 .shl, .shl_exact => try cg.airShlShrBinOp(inst),
24612459
2462 .mul,
24632460 .mul_wrap,
2464 .rem,
24652461 .mod,
2466 .div_float,
2467 .div_trunc,
2468 .div_floor,
2469 .div_exact,
24702462 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),
24712463
24722464 .add_sat => try cg.airAddSat(inst),
......@@ -2474,23 +2466,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24742466 .mul_sat => try cg.airMulSat(inst),
24752467 .shl_sat => try cg.airShlSat(inst),
24762468
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
24942469 .add_with_overflow => try cg.airAddSubWithOverflow(inst),
24952470 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),
24962471 .mul_with_overflow => try cg.airMulWithOverflow(inst),
......@@ -2524,7 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25242499 .reduce => try cg.airReduce(inst),
25252500 .aggregate_init => try cg.airAggregateInit(inst),
25262501 .prefetch => try cg.airPrefetch(inst),
2527 .mul_add => try cg.airMulAdd(inst),
25282502
25292503 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),
25302504 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),
......@@ -2548,16 +2522,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25482522 .intcast_safe,
25492523 => return cg.fail("TODO implement safety_checked_instructions", .{}),
25502524
2551 .add_optimized => try cg.airBinOp(inst, .add),
2552 .sub_optimized => try cg.airBinOp(inst, .sub),
2553 .mul_optimized => try cg.airBinOp(inst, .mul),
2554 .div_float_optimized => try cg.airMulDivBinOp(inst, .div_float),
2555 .div_trunc_optimized => try cg.airMulDivBinOp(inst, .div_trunc),
2556 .div_floor_optimized => try cg.airMulDivBinOp(inst, .div_floor),
2557 .div_exact_optimized => try cg.airMulDivBinOp(inst, .div_exact),
2558 .rem_optimized => try cg.airMulDivBinOp(inst, .rem),
25592525 .mod_optimized => try cg.airMulDivBinOp(inst, .mod),
2560 .neg_optimized => try cg.airFloatSign(inst, .neg),
25612526 .reduce_optimized => try cg.airReduce(inst),
25622527 .int_from_float_optimized => try cg.airIntFromFloat(inst),
25632528
......@@ -2575,490 +2540,661 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25752540 if (arg != .none) break;
25762541 } else try cg.airDbgVarArgs();
25772542 },
2578 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
2579 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
2580 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
2543 .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: {
2544 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2545 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
25812546 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2582 try ops[0].toSlicePtr(cg);
25832547 var res: [1]Temp = undefined;
2584 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
2585 .patterns = &.{
2586 .{ .src = .{ .to_gpr, .simm32 } },
2548 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2549 .required_features = .{ .f16c, null, null, null },
2550 .src_constraints = .{
2551 .{ .scalar_float = .{ .of = .word, .is = .word } },
2552 .{ .scalar_float = .{ .of = .word, .is = .word } },
2553 .any,
25872554 },
2588 .dst_temps = .{.{ .rc = .general_purpose }},
2589 .each = .{ .once = &.{
2590 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
2591 } },
2592 }, .{
2593 .dst_constraints = .{.{ .elem_size_is = 1 }},
25942555 .patterns = &.{
2595 .{ .src = .{ .to_gpr, .to_gpr } },
2556 .{ .src = .{ .to_sse, .to_sse, .none } },
25962557 },
2597 .dst_temps = .{.{ .rc = .general_purpose }},
2558 .extra_temps = .{
2559 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2560 .unused,
2561 .unused,
2562 .unused,
2563 .unused,
2564 .unused,
2565 .unused,
2566 .unused,
2567 .unused,
2568 },
2569 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25982570 .each = .{ .once = &.{
2599 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2571 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2572 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
2573 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0d, ._ },
2574 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
26002575 } },
26012576 }, .{
2602 .dst_constraints = .{.{ .elem_size_is = 2 }},
2577 .required_features = .{ .sse, null, null, null },
2578 .src_constraints = .{
2579 .{ .scalar_float = .{ .of = .word, .is = .word } },
2580 .{ .scalar_float = .{ .of = .word, .is = .word } },
2581 .any,
2582 },
26032583 .patterns = &.{
2604 .{ .src = .{ .to_gpr, .to_gpr } },
2584 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
26052585 },
2606 .dst_temps = .{.{ .rc = .general_purpose }},
2586 .call_frame = .{ .alignment = .@"16" },
2587 .extra_temps = .{
2588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2589 .unused,
2590 .unused,
2591 .unused,
2592 .unused,
2593 .unused,
2594 .unused,
2595 .unused,
2596 .unused,
2597 },
2598 .dst_temps = .{.{ .ref = .src0 }},
2599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26072600 .each = .{ .once = &.{
2608 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2601 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
26092602 } },
26102603 }, .{
2611 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
2604 .required_features = .{ .f16c, null, null, null },
2605 .src_constraints = .{
2606 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2607 .{ .scalar_float = .{ .of = .qword, .is = .word } },
2608 .any,
2609 },
26122610 .patterns = &.{
2613 .{ .src = .{ .to_gpr, .to_gpr } },
2611 .{ .src = .{ .mem, .mem, .none } },
2612 .{ .src = .{ .to_sse, .mem, .none } },
2613 .{ .src = .{ .mem, .to_sse, .none } },
2614 .{ .src = .{ .to_sse, .to_sse, .none } },
26142615 },
2615 .dst_temps = .{.{ .rc = .general_purpose }},
2616 .extra_temps = .{
2617 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2618 .unused,
2619 .unused,
2620 .unused,
2621 .unused,
2622 .unused,
2623 .unused,
2624 .unused,
2625 .unused,
2626 },
2627 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26162628 .each = .{ .once = &.{
2617 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2618 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2629 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2630 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
2631 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
2632 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
26192633 } },
26202634 }, .{
2621 .dst_constraints = .{.{ .elem_size_is = 4 }},
2635 .required_features = .{ .f16c, null, null, null },
2636 .src_constraints = .{
2637 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2638 .{ .scalar_float = .{ .of = .xword, .is = .word } },
2639 .any,
2640 },
26222641 .patterns = &.{
2623 .{ .src = .{ .to_gpr, .to_gpr } },
2642 .{ .src = .{ .mem, .mem, .none } },
2643 .{ .src = .{ .to_sse, .mem, .none } },
2644 .{ .src = .{ .mem, .to_sse, .none } },
2645 .{ .src = .{ .to_sse, .to_sse, .none } },
26242646 },
2625 .dst_temps = .{.{ .rc = .general_purpose }},
2647 .extra_temps = .{
2648 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
2649 .unused,
2650 .unused,
2651 .unused,
2652 .unused,
2653 .unused,
2654 .unused,
2655 .unused,
2656 .unused,
2657 },
2658 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26262659 .each = .{ .once = &.{
2627 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2660 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
2661 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
2662 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
2663 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
26282664 } },
26292665 }, .{
2630 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
2666 .required_features = .{ .f16c, null, null, null },
2667 .src_constraints = .{
2668 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
2669 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
2670 .any,
2671 },
26312672 .patterns = &.{
2632 .{ .src = .{ .to_gpr, .to_gpr } },
2673 .{ .src = .{ .to_mem, .to_mem, .none } },
26332674 },
2634 .dst_temps = .{.{ .ref = .src1 }},
2675 .extra_temps = .{
2676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2677 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2678 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2679 .unused,
2680 .unused,
2681 .unused,
2682 .unused,
2683 .unused,
2684 .unused,
2685 },
2686 .dst_temps = .{.mem},
2687 .clobbers = .{ .eflags = true },
26352688 .each = .{ .once = &.{
2636 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2637 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2689 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2690 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2691 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
2692 .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ },
2693 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
2694 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26382696 } },
26392697 }, .{
2640 .required_features = .{ .@"64bit", null, null, null },
2641 .dst_constraints = .{.{ .elem_size_is = 8 }},
2698 .required_features = .{ .avx, null, null, null },
2699 .src_constraints = .{
2700 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2701 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2702 .any,
2703 },
26422704 .patterns = &.{
2643 .{ .src = .{ .to_gpr, .to_gpr } },
2705 .{ .src = .{ .to_mem, .to_mem, .none } },
26442706 },
2645 .dst_temps = .{.{ .rc = .general_purpose }},
2707 .call_frame = .{ .alignment = .@"16" },
2708 .extra_temps = .{
2709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2710 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2711 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2712 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2713 .unused,
2714 .unused,
2715 .unused,
2716 .unused,
2717 .unused,
2718 },
2719 .dst_temps = .{.mem},
2720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26462721 .each = .{ .once = &.{
2647 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2722 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2723 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
2724 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
2725 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
2726 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2727 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2728 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26482730 } },
26492731 }, .{
2650 .required_features = .{ .@"64bit", null, null, null },
2651 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
2732 .required_features = .{ .sse4_1, null, null, null },
2733 .src_constraints = .{
2734 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2735 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2736 .any,
2737 },
26522738 .patterns = &.{
2653 .{ .src = .{ .to_gpr, .to_gpr } },
2739 .{ .src = .{ .to_mem, .to_mem, .none } },
26542740 },
2655 .dst_temps = .{.{ .ref = .src1 }},
2741 .call_frame = .{ .alignment = .@"16" },
2742 .extra_temps = .{
2743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2744 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2745 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2747 .unused,
2748 .unused,
2749 .unused,
2750 .unused,
2751 .unused,
2752 },
2753 .dst_temps = .{.mem},
2754 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26562755 .each = .{ .once = &.{
2657 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2658 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2756 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2757 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
2758 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
2759 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2760 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2761 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2762 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2763 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2764 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26592765 } },
26602766 }, .{
2661 .dst_constraints = .{.po2_elem_size},
2767 .required_features = .{ .sse2, null, null, null },
2768 .src_constraints = .{
2769 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2770 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2771 .any,
2772 },
26622773 .patterns = &.{
2663 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2774 .{ .src = .{ .to_mem, .to_mem, .none } },
26642775 },
2665 .dst_temps = .{.{ .ref = .src1 }},
2666 .clobbers = .{ .eflags = true },
2776 .call_frame = .{ .alignment = .@"16" },
2777 .extra_temps = .{
2778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2779 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2780 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2782 .{ .type = .f16, .kind = .{ .reg = .ax } },
2783 .unused,
2784 .unused,
2785 .unused,
2786 .unused,
2787 },
2788 .dst_temps = .{.mem},
2789 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
26672790 .each = .{ .once = &.{
2668 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2669 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2791 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2792 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
2793 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
2794 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2795 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
2796 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
2797 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
2798 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
2799 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26702801 } },
26712802 }, .{
2672 .patterns = &.{
2673 .{ .src = .{ .to_gpr, .to_gpr } },
2803 .required_features = .{ .sse, null, null, null },
2804 .src_constraints = .{
2805 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2806 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2807 .any,
26742808 },
2675 .dst_temps = .{.{ .rc = .general_purpose }},
2676 .clobbers = .{ .eflags = true },
2677 .each = .{ .once = &.{
2678 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
2679 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2680 } },
2681 } }) catch |err| switch (err) {
2682 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
2683 @tagName(air_tag),
2684 cg.typeOf(bin_op.lhs).fmt(pt),
2685 ops[0].tracking(cg),
2686 ops[1].tracking(cg),
2687 }),
2688 else => |e| return e,
2689 } else { // hack around Sema OPV bugs
2690 res[0] = ops[0];
2691 }
2692 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2693 },
2694 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
2695 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
2696 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
2697 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2698 try ops[0].toSlicePtr(cg);
2699 var res: [1]Temp = undefined;
2700 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
27012809 .patterns = &.{
2702 .{ .src = .{ .to_gpr, .simm32 } },
2810 .{ .src = .{ .to_mem, .to_mem, .none } },
27032811 },
2704 .dst_temps = .{.{ .rc = .general_purpose }},
2812 .call_frame = .{ .alignment = .@"16" },
2813 .extra_temps = .{
2814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2815 .{ .type = .f16, .kind = .{ .reg = .ax } },
2816 .{ .type = .f32, .kind = .mem },
2817 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2818 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
2819 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
2820 .unused,
2821 .unused,
2822 .unused,
2823 },
2824 .dst_temps = .{.mem},
2825 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27052826 .each = .{ .once = &.{
2706 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },
2827 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2828 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
2829 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
2830 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
2831 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
2832 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
2833 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
2834 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
2835 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
2836 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
2837 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
2838 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2839 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27072840 } },
27082841 }, .{
2709 .dst_constraints = .{.{ .elem_size_is = 1 }},
2842 .required_features = .{ .avx, null, null, null },
2843 .src_constraints = .{
2844 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2845 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2846 .any,
2847 },
27102848 .patterns = &.{
2711 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2849 .{ .src = .{ .to_sse, .mem, .none } },
2850 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2851 .{ .src = .{ .to_sse, .to_sse, .none } },
27122852 },
2713 .dst_temps = .{.{ .ref = .src1 }},
2714 .clobbers = .{ .eflags = true },
2853 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27152854 .each = .{ .once = &.{
2716 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2717 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2855 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
27182856 } },
27192857 }, .{
2720 .dst_constraints = .{.{ .elem_size_is = 2 }},
2858 .required_features = .{ .sse, null, null, null },
2859 .src_constraints = .{
2860 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2861 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
2862 .any,
2863 },
27212864 .patterns = &.{
2722 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2865 .{ .src = .{ .to_mut_sse, .mem, .none } },
2866 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2867 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27232868 },
2724 .dst_temps = .{.{ .ref = .src1 }},
2725 .clobbers = .{ .eflags = true },
2869 .dst_temps = .{.{ .ref = .src0 }},
27262870 .each = .{ .once = &.{
2727 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2728 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2871 .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ },
27292872 } },
27302873 }, .{
2731 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
2874 .required_features = .{ .avx, null, null, null },
2875 .src_constraints = .{
2876 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2877 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2878 .any,
2879 },
27322880 .patterns = &.{
2733 .{ .src = .{ .to_gpr, .to_gpr } },
2881 .{ .src = .{ .to_sse, .mem, .none } },
2882 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2883 .{ .src = .{ .to_sse, .to_sse, .none } },
27342884 },
2735 .dst_temps = .{.{ .rc = .general_purpose }},
2736 .clobbers = .{ .eflags = true },
2885 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27372886 .each = .{ .once = &.{
2738 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2739 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2740 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2887 .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ },
27412888 } },
27422889 }, .{
2743 .dst_constraints = .{.{ .elem_size_is = 4 }},
2890 .required_features = .{ .sse, null, null, null },
2891 .src_constraints = .{
2892 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2893 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
2894 .any,
2895 },
27442896 .patterns = &.{
2745 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2897 .{ .src = .{ .to_mut_sse, .mem, .none } },
2898 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2899 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27462900 },
2747 .dst_temps = .{.{ .ref = .src1 }},
2748 .clobbers = .{ .eflags = true },
2901 .dst_temps = .{.{ .ref = .src0 }},
27492902 .each = .{ .once = &.{
2750 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2751 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2903 .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ },
27522904 } },
27532905 }, .{
2754 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
2906 .required_features = .{ .avx, null, null, null },
2907 .src_constraints = .{
2908 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2909 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
2910 .any,
2911 },
27552912 .patterns = &.{
2756 .{ .src = .{ .to_gpr, .to_gpr } },
2913 .{ .src = .{ .to_sse, .mem, .none } },
2914 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2915 .{ .src = .{ .to_sse, .to_sse, .none } },
27572916 },
2758 .dst_temps = .{.{ .rc = .general_purpose }},
2759 .clobbers = .{ .eflags = true },
2917 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27602918 .each = .{ .once = &.{
2761 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2762 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2763 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2919 .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ },
27642920 } },
27652921 }, .{
2766 .required_features = .{ .@"64bit", null, null, null },
2767 .dst_constraints = .{.{ .elem_size_is = 8 }},
2922 .required_features = .{ .avx, null, null, null },
2923 .src_constraints = .{
2924 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2925 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2926 .any,
2927 },
27682928 .patterns = &.{
2769 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2929 .{ .src = .{ .to_mem, .to_mem, .none } },
27702930 },
2771 .dst_temps = .{.{ .ref = .src1 }},
2931 .extra_temps = .{
2932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2933 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
2934 .unused,
2935 .unused,
2936 .unused,
2937 .unused,
2938 .unused,
2939 .unused,
2940 .unused,
2941 },
2942 .dst_temps = .{.mem},
27722943 .clobbers = .{ .eflags = true },
27732944 .each = .{ .once = &.{
2774 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2775 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2946 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
2947 .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
2948 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2949 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27762951 } },
27772952 }, .{
2778 .required_features = .{ .@"64bit", null, null, null },
2779 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
2953 .required_features = .{ .sse, null, null, null },
2954 .src_constraints = .{
2955 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2956 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2957 .any,
2958 },
27802959 .patterns = &.{
2781 .{ .src = .{ .to_gpr, .to_gpr } },
2960 .{ .src = .{ .to_mem, .to_mem, .none } },
27822961 },
2783 .dst_temps = .{.{ .rc = .general_purpose }},
2962 .extra_temps = .{
2963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2964 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
2965 .unused,
2966 .unused,
2967 .unused,
2968 .unused,
2969 .unused,
2970 .unused,
2971 .unused,
2972 },
2973 .dst_temps = .{.mem},
27842974 .clobbers = .{ .eflags = true },
27852975 .each = .{ .once = &.{
2786 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2787 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2788 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2976 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2977 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2978 .{ ._, ._ps, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
2979 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2980 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27892982 } },
27902983 }, .{
2791 .dst_constraints = .{.po2_elem_size},
2984 .required_features = .{ .avx, null, null, null },
2985 .src_constraints = .{
2986 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2987 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
2988 .any,
2989 },
27922990 .patterns = &.{
2793 .{ .src = .{ .to_gpr, .to_mut_gpr } },
2991 .{ .src = .{ .to_sse, .mem, .none } },
2992 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2993 .{ .src = .{ .to_sse, .to_sse, .none } },
27942994 },
2795 .dst_temps = .{.{ .ref = .src1 }},
2796 .clobbers = .{ .eflags = true },
2995 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27972996 .each = .{ .once = &.{
2798 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2799 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2800 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2997 .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ },
28012998 } },
28022999 }, .{
2803 .patterns = &.{
2804 .{ .src = .{ .to_gpr, .to_gpr } },
3000 .required_features = .{ .sse2, null, null, null },
3001 .src_constraints = .{
3002 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3003 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3004 .any,
28053005 },
2806 .dst_temps = .{.{ .rc = .general_purpose }},
2807 .clobbers = .{ .eflags = true },
2808 .each = .{ .once = &.{
2809 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
2810 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2811 } },
2812 } }) catch |err| switch (err) {
2813 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
2814 @tagName(air_tag),
2815 cg.typeOf(bin_op.lhs).fmt(pt),
2816 ops[0].tracking(cg),
2817 ops[1].tracking(cg),
2818 }),
2819 else => |e| return e,
2820 } else {
2821 // hack around Sema OPV bugs
2822 res[0] = ops[0];
2823 }
2824 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2825 },
2826 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
2827 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2828 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2829 var res: [1]Temp = undefined;
2830 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2831 .required_features = .{ .cmov, null, null, null },
2832 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
28333006 .patterns = &.{
2834 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3007 .{ .src = .{ .to_mut_sse, .mem, .none } },
3008 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
3009 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
28353010 },
28363011 .dst_temps = .{.{ .ref = .src0 }},
2837 .clobbers = .{ .eflags = true },
28383012 .each = .{ .once = &.{
2839 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2840 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
3013 .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ },
28413014 } },
28423015 }, .{
2843 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
3016 .required_features = .{ .x87, null, null, null },
3017 .src_constraints = .{
3018 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3019 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3020 .any,
3021 },
28443022 .patterns = &.{
2845 .{ .src = .{ .to_mut_gpr, .mem } },
2846 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2847 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3023 .{ .src = .{ .mem, .mem, .none } },
28483024 },
2849 .dst_temps = .{.{ .ref = .src0 }},
2850 .clobbers = .{ .eflags = true },
3025 .extra_temps = .{
3026 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3027 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3028 .unused,
3029 .unused,
3030 .unused,
3031 .unused,
3032 .unused,
3033 .unused,
3034 .unused,
3035 },
3036 .dst_temps = .{.mem},
28513037 .each = .{ .once = &.{
2852 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2853 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2854 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
3038 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
3039 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
3040 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3041 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
28553042 } },
28563043 }, .{
2857 .required_features = .{ .cmov, null, null, null },
2858 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
3044 .required_features = .{ .avx, null, null, null },
3045 .src_constraints = .{
3046 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3047 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3048 .any,
3049 },
28593050 .patterns = &.{
2860 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3051 .{ .src = .{ .to_sse, .mem, .none } },
3052 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
3053 .{ .src = .{ .to_sse, .to_sse, .none } },
28613054 },
2862 .dst_temps = .{.{ .ref = .src0 }},
2863 .clobbers = .{ .eflags = true },
3055 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28643056 .each = .{ .once = &.{
2865 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2866 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
3057 .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ },
28673058 } },
28683059 }, .{
2869 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
3060 .required_features = .{ .sse2, null, null, null },
3061 .src_constraints = .{
3062 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3063 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3064 .any,
3065 },
28703066 .patterns = &.{
2871 .{ .src = .{ .to_mut_gpr, .mem } },
2872 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2873 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3067 .{ .src = .{ .to_mut_sse, .mem, .none } },
3068 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
3069 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
28743070 },
28753071 .dst_temps = .{.{ .ref = .src0 }},
2876 .clobbers = .{ .eflags = true },
28773072 .each = .{ .once = &.{
2878 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
2879 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2880 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
3073 .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ },
28813074 } },
28823075 }, .{
2883 .required_features = .{ .cmov, null, null, null },
2884 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
3076 .required_features = .{ .avx, null, null, null },
3077 .src_constraints = .{
3078 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3079 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3080 .any,
3081 },
28853082 .patterns = &.{
2886 .{ .src = .{ .to_mut_gpr, .mem } },
2887 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2888 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3083 .{ .src = .{ .to_sse, .mem, .none } },
3084 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
3085 .{ .src = .{ .to_sse, .to_sse, .none } },
28893086 },
2890 .dst_temps = .{.{ .ref = .src0 }},
2891 .clobbers = .{ .eflags = true },
3087 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28923088 .each = .{ .once = &.{
2893 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2894 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
3089 .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ },
28953090 } },
28963091 }, .{
2897 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
3092 .required_features = .{ .avx, null, null, null },
3093 .src_constraints = .{
3094 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3095 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3096 .any,
3097 },
28983098 .patterns = &.{
2899 .{ .src = .{ .to_mut_gpr, .mem } },
2900 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2901 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3099 .{ .src = .{ .to_mem, .to_mem, .none } },
29023100 },
2903 .dst_temps = .{.{ .ref = .src0 }},
3101 .extra_temps = .{
3102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3103 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
3104 .unused,
3105 .unused,
3106 .unused,
3107 .unused,
3108 .unused,
3109 .unused,
3110 .unused,
3111 },
3112 .dst_temps = .{.mem},
29043113 .clobbers = .{ .eflags = true },
29053114 .each = .{ .once = &.{
2906 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2907 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2908 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
2909 } },
2910 }, .{
2911 .required_features = .{ .cmov, null, null, null },
2912 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
2913 .patterns = &.{
2914 .{ .src = .{ .to_mut_gpr, .mem } },
2915 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2916 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2917 },
2918 .dst_temps = .{.{ .ref = .src0 }},
2919 .clobbers = .{ .eflags = true },
2920 .each = .{ .once = &.{
2921 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2922 .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ },
2923 } },
2924 }, .{
2925 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
2926 .patterns = &.{
2927 .{ .src = .{ .to_mut_gpr, .mem } },
2928 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2929 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2930 },
2931 .dst_temps = .{.{ .ref = .src0 }},
2932 .clobbers = .{ .eflags = true },
2933 .each = .{ .once = &.{
2934 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
2935 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2936 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
2937 } },
2938 }, .{
2939 .required_features = .{ .cmov, null, null, null },
2940 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
2941 .patterns = &.{
2942 .{ .src = .{ .to_mut_gpr, .mem } },
2943 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2944 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2945 },
2946 .dst_temps = .{.{ .ref = .src0 }},
2947 .clobbers = .{ .eflags = true },
2948 .each = .{ .once = &.{
2949 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2950 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
3115 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3116 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3117 .{ ._, .v_pd, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3118 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3119 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3120 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29513121 } },
29523122 }, .{
2953 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
2954 .patterns = &.{
2955 .{ .src = .{ .to_mut_gpr, .mem } },
2956 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2957 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3123 .required_features = .{ .sse2, null, null, null },
3124 .src_constraints = .{
3125 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3127 .any,
29583128 },
2959 .dst_temps = .{.{ .ref = .src0 }},
2960 .clobbers = .{ .eflags = true },
2961 .each = .{ .once = &.{
2962 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2963 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
2964 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
2965 } },
2966 }, .{
2967 .required_features = .{ .cmov, null, null, null },
2968 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
29693129 .patterns = &.{
2970 .{ .src = .{ .to_mut_gpr, .mem } },
2971 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2972 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3130 .{ .src = .{ .to_mem, .to_mem, .none } },
29733131 },
2974 .dst_temps = .{.{ .ref = .src0 }},
2975 .clobbers = .{ .eflags = true },
2976 .each = .{ .once = &.{
2977 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2978 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
2979 } },
2980 }, .{
2981 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
2982 .patterns = &.{
2983 .{ .src = .{ .to_mut_gpr, .mem } },
2984 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2985 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3132 .extra_temps = .{
3133 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3134 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
3135 .unused,
3136 .unused,
3137 .unused,
3138 .unused,
3139 .unused,
3140 .unused,
3141 .unused,
29863142 },
2987 .dst_temps = .{.{ .ref = .src0 }},
3143 .dst_temps = .{.mem},
29883144 .clobbers = .{ .eflags = true },
29893145 .each = .{ .once = &.{
2990 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
2991 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2992 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
3146 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3147 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3148 .{ ._, ._pd, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3149 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3150 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3151 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29933152 } },
29943153 }, .{
2995 .required_features = .{ .@"64bit", .cmov, null, null },
2996 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
2997 .patterns = &.{
2998 .{ .src = .{ .to_mut_gpr, .mem } },
2999 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3000 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3154 .required_features = .{ .x87, null, null, null },
3155 .src_constraints = .{
3156 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3157 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3158 .any,
30013159 },
3002 .dst_temps = .{.{ .ref = .src0 }},
3003 .clobbers = .{ .eflags = true },
3004 .each = .{ .once = &.{
3005 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3006 .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ },
3007 } },
3008 }, .{
3009 .required_features = .{ .@"64bit", null, null, null },
3010 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
30113160 .patterns = &.{
3012 .{ .src = .{ .to_mut_gpr, .mem } },
3013 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3014 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3161 .{ .src = .{ .to_mem, .to_mem, .none } },
30153162 },
3016 .dst_temps = .{.{ .ref = .src0 }},
3017 .clobbers = .{ .eflags = true },
3018 .each = .{ .once = &.{
3019 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3020 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
3021 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
3022 } },
3023 }, .{
3024 .required_features = .{ .@"64bit", .cmov, null, null },
3025 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
3026 .patterns = &.{
3027 .{ .src = .{ .to_mut_gpr, .mem } },
3028 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3029 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3163 .extra_temps = .{
3164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3165 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3166 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3167 .unused,
3168 .unused,
3169 .unused,
3170 .unused,
3171 .unused,
3172 .unused,
30303173 },
3031 .dst_temps = .{.{ .ref = .src0 }},
3032 .clobbers = .{ .eflags = true },
3174 .dst_temps = .{.mem},
30333175 .each = .{ .once = &.{
3034 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3035 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },
3176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3177 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3178 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3179 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3180 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3181 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30363183 } },
30373184 }, .{
3038 .required_features = .{ .@"64bit", null, null, null },
3039 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
3040 .patterns = &.{
3041 .{ .src = .{ .to_mut_gpr, .mem } },
3042 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3043 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3185 .required_features = .{ .x87, null, null, null },
3186 .src_constraints = .{
3187 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3188 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3189 .any,
30443190 },
3045 .dst_temps = .{.{ .ref = .src0 }},
3046 .clobbers = .{ .eflags = true },
3047 .each = .{ .once = &.{
3048 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
3049 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
3050 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
3051 } },
3052 }, .{
3053 .required_features = .{ .@"64bit", .cmov, null, null },
3054 .src_constraints = .{ .any_signed_int, .any_signed_int },
30553191 .patterns = &.{
3056 .{ .src = .{ .to_mem, .to_mem } },
3192 .{ .src = .{ .mem, .mem, .none } },
30573193 },
30583194 .extra_temps = .{
3059 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3060 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3061 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3195 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3196 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3197 .unused,
30623198 .unused,
30633199 .unused,
30643200 .unused,
......@@ -3066,34 +3202,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30663202 .unused,
30673203 .unused,
30683204 },
3069 .dst_temps = .{.mem},
3070 .clobbers = .{ .eflags = true },
3205 .dst_temps = .{.{ .rc = .x87 }},
30713206 .each = .{ .once = &.{
3072 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
3073 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3074 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3075 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3076 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3077 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3078 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
3079 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
3080 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3081 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
3082 .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ },
3083 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3084 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3085 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3207 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3208 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3209 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3210 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
30863211 } },
30873212 }, .{
3088 .required_features = .{ .@"64bit", null, null, null },
3089 .src_constraints = .{ .any_signed_int, .any_signed_int },
3213 .required_features = .{ .x87, null, null, null },
3214 .src_constraints = .{
3215 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3216 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3217 .any,
3218 },
30903219 .patterns = &.{
3091 .{ .src = .{ .to_mem, .to_mem } },
3220 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
3221 .{ .src = .{ .mem, .to_x87, .none } },
3222 .{ .src = .{ .to_x87, .to_x87, .none } },
30923223 },
30933224 .extra_temps = .{
3094 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3095 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3096 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3225 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3226 .unused,
3227 .unused,
30973228 .unused,
30983229 .unused,
30993230 .unused,
......@@ -3101,34 +3232,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31013232 .unused,
31023233 .unused,
31033234 },
3104 .dst_temps = .{.mem},
3105 .clobbers = .{ .eflags = true },
3235 .dst_temps = .{.{ .rc = .x87 }},
31063236 .each = .{ .once = &.{
3107 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
3108 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3109 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3110 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
3111 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3112 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3113 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
3114 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
3115 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3116 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
3117 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
3118 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3119 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3120 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3237 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3238 .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ },
3239 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
31213240 } },
31223241 }, .{
3123 .required_features = .{ .@"64bit", .cmov, null, null },
3124 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
3242 .required_features = .{ .x87, null, null, null },
3243 .src_constraints = .{
3244 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3245 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3246 .any,
3247 },
31253248 .patterns = &.{
3126 .{ .src = .{ .to_mem, .to_mem } },
3249 .{ .src = .{ .to_mem, .to_mem, .none } },
31273250 },
31283251 .extra_temps = .{
3129 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3130 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3131 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3253 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3254 .{ .type = .f80, .kind = .{ .reg = .st7 } },
31323255 .unused,
31333256 .unused,
31343257 .unused,
......@@ -3137,31 +3260,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31373260 .unused,
31383261 },
31393262 .dst_temps = .{.mem},
3140 .clobbers = .{ .eflags = true },
31413263 .each = .{ .once = &.{
3142 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
3143 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3144 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
3145 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
3146 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3147 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3148 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3149 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
3150 .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ },
3151 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3152 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3153 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3264 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3265 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3266 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3267 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3268 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3269 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31543271 } },
31553272 }, .{
3156 .required_features = .{ .@"64bit", null, null, null },
3157 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
3273 .required_features = .{ .sse, null, null, null },
3274 .src_constraints = .{
3275 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3276 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3277 .any,
3278 },
31583279 .patterns = &.{
3159 .{ .src = .{ .to_mem, .to_mem } },
3280 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
31603281 },
3282 .call_frame = .{ .alignment = .@"16" },
31613283 .extra_temps = .{
3162 .{ .type = .isize, .kind = .{ .reg = .rsi } },
3163 .{ .type = .u64, .kind = .{ .reg = .rdi } },
3164 .{ .type = .u64, .kind = .{ .reg = .rcx } },
3284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3285 .unused,
3286 .unused,
31653287 .unused,
31663288 .unused,
31673289 .unused,
......@@ -3169,100 +3291,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31693291 .unused,
31703292 .unused,
31713293 },
3172 .dst_temps = .{.mem},
3173 .clobbers = .{ .eflags = true },
3294 .dst_temps = .{.{ .ref = .src0 }},
3295 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31743296 .each = .{ .once = &.{
3175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
3176 .{ ._, ._c, .cl, ._, ._, ._, ._ },
3177 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
3178 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
3179 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3180 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3181 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
3182 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
3183 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
3184 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
3185 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
3186 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
3297 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31873298 } },
31883299 }, .{
31893300 .required_features = .{ .avx, null, null, null },
31903301 .src_constraints = .{
3191 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3192 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3302 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3303 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3304 .any,
31933305 },
31943306 .patterns = &.{
3195 .{ .src = .{ .to_sse, .mem } },
3196 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3197 .{ .src = .{ .to_sse, .to_sse } },
3198 },
3199 .dst_temps = .{.{ .rc = .sse }},
3200 .each = .{ .once = &.{
3201 .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ },
3202 } },
3203 }, .{
3204 .required_features = .{ .sse4_1, null, null, null },
3205 .src_constraints = .{
3206 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3207 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3307 .{ .src = .{ .to_mem, .to_mem, .none } },
32083308 },
3209 .patterns = &.{
3210 .{ .src = .{ .to_mut_sse, .mem } },
3211 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3212 .{ .src = .{ .to_mut_sse, .to_sse } },
3309 .call_frame = .{ .alignment = .@"16" },
3310 .extra_temps = .{
3311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3312 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3313 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3314 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3315 .unused,
3316 .unused,
3317 .unused,
3318 .unused,
3319 .unused,
32133320 },
3214 .dst_temps = .{.{ .ref = .src0 }},
3321 .dst_temps = .{.mem},
3322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32153323 .each = .{ .once = &.{
3216 .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ },
3324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3325 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3326 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3327 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3328 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3329 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32173331 } },
32183332 }, .{
32193333 .required_features = .{ .sse2, null, null, null },
32203334 .src_constraints = .{
3221 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3222 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
3335 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3336 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3337 .any,
32233338 },
32243339 .patterns = &.{
3225 .{ .src = .{ .to_mut_sse, .mem } },
3226 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3227 .{ .src = .{ .to_mut_sse, .to_sse } },
3228 },
3229 .dst_temps = .{.{ .rc = .sse }},
3230 .each = .{ .once = &.{
3231 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
3232 .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ },
3233 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
3234 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
3235 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
3236 } },
3237 }, .{
3238 .required_features = .{ .avx2, null, null, null },
3239 .src_constraints = .{
3240 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
3241 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
3340 .{ .src = .{ .to_mem, .to_mem, .none } },
32423341 },
3243 .patterns = &.{
3244 .{ .src = .{ .to_sse, .mem } },
3245 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3246 .{ .src = .{ .to_sse, .to_sse } },
3342 .call_frame = .{ .alignment = .@"16" },
3343 .extra_temps = .{
3344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3345 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3346 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3347 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3348 .unused,
3349 .unused,
3350 .unused,
3351 .unused,
3352 .unused,
32473353 },
3248 .dst_temps = .{.{ .rc = .sse }},
3354 .dst_temps = .{.mem},
3355 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32493356 .each = .{ .once = &.{
3250 .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ },
3357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3358 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3359 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3360 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3361 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3362 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32513364 } },
32523365 }, .{
3253 .required_features = .{ .avx2, null, null, null },
3366 .required_features = .{ .sse, null, null, null },
32543367 .src_constraints = .{
3255 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
3256 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
3368 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3369 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3370 .any,
32573371 },
32583372 .patterns = &.{
3259 .{ .src = .{ .to_mem, .to_mem } },
3373 .{ .src = .{ .to_mem, .to_mem, .none } },
32603374 },
3375 .call_frame = .{ .alignment = .@"16" },
32613376 .extra_temps = .{
32623377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3263 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
3264 .unused,
3265 .unused,
3378 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3379 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
32663381 .unused,
32673382 .unused,
32683383 .unused,
......@@ -3270,27 +3385,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32703385 .unused,
32713386 },
32723387 .dst_temps = .{.mem},
3273 .clobbers = .{ .eflags = true },
3388 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32743389 .each = .{ .once = &.{
3275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3276 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3277 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3278 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3279 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3391 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3392 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3393 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3394 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3395 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32803396 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32813397 } },
3282 }, .{
3283 .required_features = .{ .avx, null, null, null },
3398 } }) catch |err| switch (err) {
3399 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
3400 @tagName(air_tag),
3401 cg.typeOf(bin_op.lhs).fmt(pt),
3402 ops[0].tracking(cg),
3403 ops[1].tracking(cg),
3404 }),
3405 else => |e| return e,
3406 };
3407 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3408 },
3409 .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else fallback: {
3410 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3411 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
3412 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
3413 var res: [1]Temp = undefined;
3414 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
3415 .required_features = .{ .f16c, null, null, null },
32843416 .src_constraints = .{
3285 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3286 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3417 .{ .scalar_float = .{ .of = .word, .is = .word } },
3418 .{ .scalar_float = .{ .of = .word, .is = .word } },
3419 .any,
32873420 },
32883421 .patterns = &.{
3289 .{ .src = .{ .to_mem, .to_mem } },
3422 .{ .src = .{ .to_sse, .to_sse, .none } },
32903423 },
32913424 .extra_temps = .{
3292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3293 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3425 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3426 .unused,
32943427 .unused,
32953428 .unused,
32963429 .unused,
......@@ -3299,28 +3432,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32993432 .unused,
33003433 .unused,
33013434 },
3302 .dst_temps = .{.mem},
3303 .clobbers = .{ .eflags = true },
3435 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33043436 .each = .{ .once = &.{
3305 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3306 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3307 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3308 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3309 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3437 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3438 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3439 .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ },
3440 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33113441 } },
33123442 }, .{
3313 .required_features = .{ .sse4_1, null, null, null },
3443 .required_features = .{ .sse, null, null, null },
33143444 .src_constraints = .{
3315 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3316 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3445 .{ .scalar_float = .{ .of = .word, .is = .word } },
3446 .{ .scalar_float = .{ .of = .word, .is = .word } },
3447 .any,
33173448 },
33183449 .patterns = &.{
3319 .{ .src = .{ .to_mem, .to_mem } },
3450 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
33203451 },
3452 .call_frame = .{ .alignment = .@"16" },
33213453 .extra_temps = .{
3322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3323 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3455 .unused,
33243456 .unused,
33253457 .unused,
33263458 .unused,
......@@ -3329,29 +3461,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33293461 .unused,
33303462 .unused,
33313463 },
3332 .dst_temps = .{.mem},
3333 .clobbers = .{ .eflags = true },
3464 .dst_temps = .{.{ .ref = .src0 }},
3465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33343466 .each = .{ .once = &.{
3335 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3336 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3337 .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3338 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3339 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3467 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33413468 } },
33423469 }, .{
3343 .required_features = .{ .sse2, null, null, null },
3470 .required_features = .{ .f16c, null, null, null },
33443471 .src_constraints = .{
3345 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3346 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
3472 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3473 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3474 .any,
33473475 },
33483476 .patterns = &.{
3349 .{ .src = .{ .to_mem, .to_mem } },
3477 .{ .src = .{ .mem, .mem, .none } },
3478 .{ .src = .{ .to_sse, .mem, .none } },
3479 .{ .src = .{ .mem, .to_sse, .none } },
3480 .{ .src = .{ .to_sse, .to_sse, .none } },
33503481 },
33513482 .extra_temps = .{
3352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3353 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3354 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
3483 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3484 .unused,
3485 .unused,
33553486 .unused,
33563487 .unused,
33573488 .unused,
......@@ -3359,33 +3490,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33593490 .unused,
33603491 .unused,
33613492 },
3362 .dst_temps = .{.mem},
3363 .clobbers = .{ .eflags = true },
3493 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33643494 .each = .{ .once = &.{
3365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3366 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3367 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
3368 .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3369 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
3370 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3371 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
3372 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3373 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3374 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3495 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3496 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3497 .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ },
3498 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33753499 } },
33763500 }, .{
3377 .required_features = .{ .cmov, .slow_incdec, null, null },
3501 .required_features = .{ .f16c, null, null, null },
33783502 .src_constraints = .{
3379 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3380 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3503 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3504 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3505 .any,
33813506 },
33823507 .patterns = &.{
3383 .{ .src = .{ .to_mem, .to_mem } },
3508 .{ .src = .{ .mem, .mem, .none } },
3509 .{ .src = .{ .to_sse, .mem, .none } },
3510 .{ .src = .{ .mem, .to_sse, .none } },
3511 .{ .src = .{ .to_sse, .to_sse, .none } },
33843512 },
33853513 .extra_temps = .{
3386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3387 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3388 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3514 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3515 .unused,
3516 .unused,
33893517 .unused,
33903518 .unused,
33913519 .unused,
......@@ -3393,31 +3521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33933521 .unused,
33943522 .unused,
33953523 },
3396 .dst_temps = .{.mem},
3397 .clobbers = .{ .eflags = true },
3524 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33983525 .each = .{ .once = &.{
3399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3400 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3401 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3402 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3403 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3404 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3405 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3526 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
3527 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
3528 .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ },
3529 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
34073530 } },
34083531 }, .{
3409 .required_features = .{ .cmov, null, null, null },
3532 .required_features = .{ .f16c, null, null, null },
34103533 .src_constraints = .{
3411 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3412 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3534 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3535 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3536 .any,
34133537 },
34143538 .patterns = &.{
3415 .{ .src = .{ .to_mem, .to_mem } },
3539 .{ .src = .{ .to_mem, .to_mem, .none } },
34163540 },
34173541 .extra_temps = .{
34183542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3419 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3543 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3544 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
34213545 .unused,
34223546 .unused,
34233547 .unused,
......@@ -3428,29 +3552,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34283552 .dst_temps = .{.mem},
34293553 .clobbers = .{ .eflags = true },
34303554 .each = .{ .once = &.{
3431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3432 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3433 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3434 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3435 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3436 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3437 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3438 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3556 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3557 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3558 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ },
3559 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
3560 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34393562 } },
34403563 }, .{
3441 .required_features = .{ .slow_incdec, null, null, null },
3564 .required_features = .{ .avx, null, null, null },
34423565 .src_constraints = .{
3443 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3444 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3566 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3567 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3568 .any,
34453569 },
34463570 .patterns = &.{
3447 .{ .src = .{ .to_mem, .to_mem } },
3571 .{ .src = .{ .to_mem, .to_mem, .none } },
34483572 },
3573 .call_frame = .{ .alignment = .@"16" },
34493574 .extra_temps = .{
34503575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3451 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3452 .unused,
3453 .unused,
3576 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3577 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3578 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
34543579 .unused,
34553580 .unused,
34563581 .unused,
......@@ -3458,180 +3583,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34583583 .unused,
34593584 },
34603585 .dst_temps = .{.mem},
3461 .clobbers = .{ .eflags = true },
3586 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34623587 .each = .{ .once = &.{
3463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3464 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3465 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3466 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3467 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3468 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3469 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3588 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3589 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
3590 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
3591 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
3592 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3593 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3594 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34703595 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34713596 } },
34723597 }, .{
3598 .required_features = .{ .sse4_1, null, null, null },
34733599 .src_constraints = .{
3474 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3475 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
3600 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3601 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3602 .any,
34763603 },
34773604 .patterns = &.{
3478 .{ .src = .{ .to_mem, .to_mem } },
3605 .{ .src = .{ .to_mem, .to_mem, .none } },
34793606 },
3607 .call_frame = .{ .alignment = .@"16" },
34803608 .extra_temps = .{
34813609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3482 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
3610 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3611 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
34833613 .unused,
34843614 .unused,
34853615 .unused,
34863616 .unused,
34873617 .unused,
3618 },
3619 .dst_temps = .{.mem},
3620 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3621 .each = .{ .once = &.{
3622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3623 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
3624 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
3625 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3626 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3627 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3628 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3629 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3630 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3631 } },
3632 }, .{
3633 .required_features = .{ .sse2, null, null, null },
3634 .src_constraints = .{
3635 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3636 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3637 .any,
3638 },
3639 .patterns = &.{
3640 .{ .src = .{ .to_mem, .to_mem, .none } },
3641 },
3642 .call_frame = .{ .alignment = .@"16" },
3643 .extra_temps = .{
3644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3645 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3646 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3648 .{ .type = .f16, .kind = .{ .reg = .ax } },
3649 .unused,
3650 .unused,
34883651 .unused,
34893652 .unused,
34903653 },
34913654 .dst_temps = .{.mem},
3492 .clobbers = .{ .eflags = true },
3655 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34933656 .each = .{ .once = &.{
3494 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3495 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3496 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3497 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3498 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3499 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3500 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3501 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3657 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3658 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
3659 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
3660 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3661 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3662 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3663 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
3664 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
3665 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3666 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35023667 } },
35033668 }, .{
3504 .required_features = .{ .sse, .mmx, null, null },
3669 .required_features = .{ .sse, null, null, null },
35053670 .src_constraints = .{
3506 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
3507 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
3671 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3672 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3673 .any,
35083674 },
35093675 .patterns = &.{
3510 .{ .src = .{ .to_mut_mmx, .mem } },
3511 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3512 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3676 .{ .src = .{ .to_mem, .to_mem, .none } },
35133677 },
3514 .dst_temps = .{.{ .ref = .src0 }},
3678 .call_frame = .{ .alignment = .@"16" },
3679 .extra_temps = .{
3680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3681 .{ .type = .f16, .kind = .{ .reg = .ax } },
3682 .{ .type = .f32, .kind = .mem },
3683 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3684 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3685 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3686 .unused,
3687 .unused,
3688 .unused,
3689 },
3690 .dst_temps = .{.mem},
3691 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35153692 .each = .{ .once = &.{
3516 .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ },
3693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3694 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
3695 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
3696 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
3697 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
3698 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
3699 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
3700 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
3701 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
3702 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
3703 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
3704 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3705 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35173706 } },
35183707 }, .{
35193708 .required_features = .{ .avx, null, null, null },
35203709 .src_constraints = .{
3521 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3522 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3710 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3711 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3712 .any,
35233713 },
35243714 .patterns = &.{
3525 .{ .src = .{ .to_sse, .mem } },
3526 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3527 .{ .src = .{ .to_sse, .to_sse } },
3715 .{ .src = .{ .to_sse, .mem, .none } },
3716 .{ .src = .{ .to_sse, .to_sse, .none } },
35283717 },
3529 .dst_temps = .{.{ .rc = .sse }},
3718 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35303719 .each = .{ .once = &.{
3531 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },
3720 .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ },
35323721 } },
35333722 }, .{
3534 .required_features = .{ .sse2, null, null, null },
3723 .required_features = .{ .sse, null, null, null },
35353724 .src_constraints = .{
3536 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3725 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3726 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3727 .any,
35383728 },
35393729 .patterns = &.{
3540 .{ .src = .{ .to_mut_sse, .mem } },
3541 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3542 .{ .src = .{ .to_mut_sse, .to_sse } },
3730 .{ .src = .{ .to_mut_sse, .mem, .none } },
3731 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
35433732 },
35443733 .dst_temps = .{.{ .ref = .src0 }},
35453734 .each = .{ .once = &.{
3546 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },
3735 .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ },
35473736 } },
35483737 }, .{
3549 .required_features = .{ .avx2, null, null, null },
3738 .required_features = .{ .avx, null, null, null },
35503739 .src_constraints = .{
3551 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3740 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3741 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3742 .any,
35533743 },
35543744 .patterns = &.{
3555 .{ .src = .{ .to_sse, .mem } },
3556 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3557 .{ .src = .{ .to_sse, .to_sse } },
3745 .{ .src = .{ .to_sse, .mem, .none } },
3746 .{ .src = .{ .to_sse, .to_sse, .none } },
35583747 },
3559 .dst_temps = .{.{ .rc = .sse }},
3748 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35603749 .each = .{ .once = &.{
3561 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },
3750 .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ },
35623751 } },
35633752 }, .{
3564 .required_features = .{ .avx2, null, null, null },
3753 .required_features = .{ .sse, null, null, null },
35653754 .src_constraints = .{
3566 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3567 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
3755 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3756 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3757 .any,
35683758 },
35693759 .patterns = &.{
3570 .{ .src = .{ .to_mem, .to_mem } },
3571 },
3572 .extra_temps = .{
3573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3574 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
3575 .unused,
3576 .unused,
3577 .unused,
3578 .unused,
3579 .unused,
3580 .unused,
3581 .unused,
3760 .{ .src = .{ .to_mut_sse, .mem, .none } },
3761 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
35823762 },
3583 .dst_temps = .{.mem},
3584 .clobbers = .{ .eflags = true },
3763 .dst_temps = .{.{ .ref = .src0 }},
35853764 .each = .{ .once = &.{
3586 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3587 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3588 .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3589 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3590 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3591 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3765 .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ },
35923766 } },
35933767 }, .{
35943768 .required_features = .{ .avx, null, null, null },
35953769 .src_constraints = .{
3596 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3597 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3770 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3771 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3772 .any,
35983773 },
35993774 .patterns = &.{
3600 .{ .src = .{ .to_mem, .to_mem } },
3601 },
3602 .extra_temps = .{
3603 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3604 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
3605 .unused,
3606 .unused,
3607 .unused,
3608 .unused,
3609 .unused,
3610 .unused,
3611 .unused,
3775 .{ .src = .{ .to_sse, .mem, .none } },
3776 .{ .src = .{ .to_sse, .to_sse, .none } },
36123777 },
3613 .dst_temps = .{.mem},
3614 .clobbers = .{ .eflags = true },
3778 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36153779 .each = .{ .once = &.{
3616 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3617 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3618 .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3619 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3620 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3621 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3780 .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ },
36223781 } },
36233782 }, .{
3624 .required_features = .{ .sse2, null, null, null },
3783 .required_features = .{ .avx, null, null, null },
36253784 .src_constraints = .{
3626 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3627 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
3785 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3786 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3787 .any,
36283788 },
36293789 .patterns = &.{
3630 .{ .src = .{ .to_mem, .to_mem } },
3790 .{ .src = .{ .to_mem, .to_mem, .none } },
36313791 },
36323792 .extra_temps = .{
36333793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3634 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
3794 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
36353795 .unused,
36363796 .unused,
36373797 .unused,
......@@ -3643,26 +3803,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36433803 .dst_temps = .{.mem},
36443804 .clobbers = .{ .eflags = true },
36453805 .each = .{ .once = &.{
3646 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3647 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3648 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3649 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3650 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3806 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3807 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3808 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3809 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3810 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
36513811 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36523812 } },
36533813 }, .{
3654 .required_features = .{ .cmov, .slow_incdec, null, null },
3814 .required_features = .{ .sse, null, null, null },
36553815 .src_constraints = .{
3656 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3657 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3816 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3817 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3818 .any,
36583819 },
36593820 .patterns = &.{
3660 .{ .src = .{ .to_mem, .to_mem } },
3821 .{ .src = .{ .to_mem, .to_mem, .none } },
36613822 },
36623823 .extra_temps = .{
36633824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3664 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3665 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3825 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
3826 .unused,
36663827 .unused,
36673828 .unused,
36683829 .unused,
......@@ -3673,90 +3834,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36733834 .dst_temps = .{.mem},
36743835 .clobbers = .{ .eflags = true },
36753836 .each = .{ .once = &.{
3676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3677 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3678 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3679 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3680 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
3681 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3682 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3838 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3839 .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
36833842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36843843 } },
36853844 }, .{
3686 .required_features = .{ .cmov, null, null, null },
3845 .required_features = .{ .avx, null, null, null },
36873846 .src_constraints = .{
3688 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3689 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3847 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3848 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3849 .any,
36903850 },
36913851 .patterns = &.{
3692 .{ .src = .{ .to_mem, .to_mem } },
3693 },
3694 .extra_temps = .{
3695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3696 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3697 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3698 .unused,
3699 .unused,
3700 .unused,
3701 .unused,
3702 .unused,
3703 .unused,
3852 .{ .src = .{ .to_sse, .mem, .none } },
3853 .{ .src = .{ .to_sse, .to_sse, .none } },
37043854 },
3705 .dst_temps = .{.mem},
3706 .clobbers = .{ .eflags = true },
3855 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37073856 .each = .{ .once = &.{
3708 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3709 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3710 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3711 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
3712 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
3713 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3714 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3715 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3857 .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ },
37163858 } },
37173859 }, .{
3718 .required_features = .{ .slow_incdec, null, null, null },
3860 .required_features = .{ .sse2, null, null, null },
37193861 .src_constraints = .{
3720 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3721 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3862 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3863 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3864 .any,
37223865 },
37233866 .patterns = &.{
3724 .{ .src = .{ .to_mem, .to_mem } },
3867 .{ .src = .{ .to_mut_sse, .mem, .none } },
3868 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
37253869 },
3726 .extra_temps = .{
3727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3728 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3729 .unused,
3730 .unused,
3731 .unused,
3732 .unused,
3733 .unused,
3734 .unused,
3735 .unused,
3736 },
3737 .dst_temps = .{.mem},
3738 .clobbers = .{ .eflags = true },
3870 .dst_temps = .{.{ .ref = .src0 }},
37393871 .each = .{ .once = &.{
3740 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3741 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3742 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3743 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
3744 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3745 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3746 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3872 .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ },
37483873 } },
37493874 }, .{
3875 .required_features = .{ .x87, null, null, null },
37503876 .src_constraints = .{
3751 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3752 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
3877 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3878 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3879 .any,
37533880 },
37543881 .patterns = &.{
3755 .{ .src = .{ .to_mem, .to_mem } },
3882 .{ .src = .{ .mem, .mem, .none } },
37563883 },
37573884 .extra_temps = .{
3758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3759 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3885 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3886 .{ .type = .f64, .kind = .{ .reg = .st7 } },
37603887 .unused,
37613888 .unused,
37623889 .unused,
......@@ -3766,89 +3893,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37663893 .unused,
37673894 },
37683895 .dst_temps = .{.mem},
3769 .clobbers = .{ .eflags = true },
3770 .each = .{ .once = &.{
3771 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3772 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
3773 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3774 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
3775 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
3776 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3777 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3778 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3779 } },
3780 }, .{
3781 .required_features = .{ .sse, .mmx, null, null },
3782 .src_constraints = .{
3783 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
3784 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
3785 },
3786 .patterns = &.{
3787 .{ .src = .{ .to_mut_mmx, .mem } },
3788 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3789 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3790 },
3791 .dst_temps = .{.{ .ref = .src0 }},
37923896 .each = .{ .once = &.{
3793 .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ },
3897 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
3898 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
3899 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3900 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
37943901 } },
37953902 }, .{
37963903 .required_features = .{ .avx, null, null, null },
37973904 .src_constraints = .{
3798 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3799 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3905 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3906 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3907 .any,
38003908 },
38013909 .patterns = &.{
3802 .{ .src = .{ .to_sse, .mem } },
3803 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3804 .{ .src = .{ .to_sse, .to_sse } },
3910 .{ .src = .{ .to_sse, .mem, .none } },
3911 .{ .src = .{ .to_sse, .to_sse, .none } },
38053912 },
3806 .dst_temps = .{.{ .rc = .sse }},
3913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38073914 .each = .{ .once = &.{
3808 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },
3915 .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ },
38093916 } },
38103917 }, .{
38113918 .required_features = .{ .sse2, null, null, null },
38123919 .src_constraints = .{
3813 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3814 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
3920 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3921 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3922 .any,
38153923 },
38163924 .patterns = &.{
3817 .{ .src = .{ .to_mut_sse, .mem } },
3818 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
3819 .{ .src = .{ .to_mut_sse, .to_sse } },
3925 .{ .src = .{ .to_mut_sse, .mem, .none } },
3926 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
38203927 },
38213928 .dst_temps = .{.{ .ref = .src0 }},
38223929 .each = .{ .once = &.{
3823 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },
3930 .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ },
38243931 } },
38253932 }, .{
3826 .required_features = .{ .avx2, null, null, null },
3933 .required_features = .{ .avx, null, null, null },
38273934 .src_constraints = .{
3828 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
3829 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
3935 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3936 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3937 .any,
38303938 },
38313939 .patterns = &.{
3832 .{ .src = .{ .to_sse, .mem } },
3833 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
3834 .{ .src = .{ .to_sse, .to_sse } },
3940 .{ .src = .{ .to_sse, .mem, .none } },
3941 .{ .src = .{ .to_sse, .to_sse, .none } },
38353942 },
3836 .dst_temps = .{.{ .rc = .sse }},
3943 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38373944 .each = .{ .once = &.{
3838 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },
3945 .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ },
38393946 } },
38403947 }, .{
3841 .required_features = .{ .avx2, null, null, null },
3948 .required_features = .{ .avx, null, null, null },
38423949 .src_constraints = .{
3843 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
3844 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
3950 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3951 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3952 .any,
38453953 },
38463954 .patterns = &.{
3847 .{ .src = .{ .to_mem, .to_mem } },
3955 .{ .src = .{ .to_mem, .to_mem, .none } },
38483956 },
38493957 .extra_temps = .{
38503958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3851 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3959 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
38523960 .unused,
38533961 .unused,
38543962 .unused,
......@@ -3860,25 +3968,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38603968 .dst_temps = .{.mem},
38613969 .clobbers = .{ .eflags = true },
38623970 .each = .{ .once = &.{
3863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3864 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
3865 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
3866 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
3971 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3972 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3973 .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3974 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38673975 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
38683976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38693977 } },
38703978 }, .{
3871 .required_features = .{ .avx, null, null, null },
3979 .required_features = .{ .sse2, null, null, null },
38723980 .src_constraints = .{
3873 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3874 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3981 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3982 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3983 .any,
38753984 },
38763985 .patterns = &.{
3877 .{ .src = .{ .to_mem, .to_mem } },
3986 .{ .src = .{ .to_mem, .to_mem, .none } },
38783987 },
38793988 .extra_temps = .{
38803989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3881 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3990 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
38823991 .unused,
38833992 .unused,
38843993 .unused,
......@@ -3890,26 +3999,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38903999 .dst_temps = .{.mem},
38914000 .clobbers = .{ .eflags = true },
38924001 .each = .{ .once = &.{
3893 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3894 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3895 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
3896 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4003 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4004 .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4005 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38974006 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
38984007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38994008 } },
39004009 }, .{
3901 .required_features = .{ .sse2, null, null, null },
4010 .required_features = .{ .x87, null, null, null },
39024011 .src_constraints = .{
3903 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
3904 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
4012 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4013 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4014 .any,
39054015 },
39064016 .patterns = &.{
3907 .{ .src = .{ .to_mem, .to_mem } },
4017 .{ .src = .{ .to_mem, .to_mem, .none } },
39084018 },
39094019 .extra_temps = .{
39104020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3911 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3912 .unused,
4021 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4022 .{ .type = .f64, .kind = .{ .reg = .st7 } },
39134023 .unused,
39144024 .unused,
39154025 .unused,
......@@ -3918,27 +4028,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39184028 .unused,
39194029 },
39204030 .dst_temps = .{.mem},
3921 .clobbers = .{ .eflags = true },
39224031 .each = .{ .once = &.{
3923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3924 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
3925 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
3926 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
3927 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4032 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4033 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4034 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4035 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4036 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4037 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39284038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39294039 } },
39304040 }, .{
3931 .required_features = .{ .cmov, null, null, null },
4041 .required_features = .{ .x87, null, null, null },
39324042 .src_constraints = .{
3933 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
3934 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
4043 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4044 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4045 .any,
39354046 },
39364047 .patterns = &.{
3937 .{ .src = .{ .to_mem, .to_mem } },
4048 .{ .src = .{ .mem, .mem, .none } },
39384049 },
39394050 .extra_temps = .{
3940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3941 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4051 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4052 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39424053 .unused,
39434054 .unused,
39444055 .unused,
......@@ -3947,28 +4058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39474058 .unused,
39484059 .unused,
39494060 },
3950 .dst_temps = .{.mem},
3951 .clobbers = .{ .eflags = true },
4061 .dst_temps = .{.{ .rc = .x87 }},
39524062 .each = .{ .once = &.{
3953 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3954 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
3955 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3956 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3957 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3958 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4063 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4064 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4065 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4066 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
39604067 } },
39614068 }, .{
4069 .required_features = .{ .x87, null, null, null },
39624070 .src_constraints = .{
3963 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
3964 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
4071 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4072 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4073 .any,
39654074 },
39664075 .patterns = &.{
3967 .{ .src = .{ .to_mem, .to_mem } },
4076 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
39684077 },
39694078 .extra_temps = .{
3970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3971 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4079 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4080 .unused,
39724081 .unused,
39734082 .unused,
39744083 .unused,
......@@ -3977,92 +4086,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39774086 .unused,
39784087 .unused,
39794088 },
3980 .dst_temps = .{.mem},
3981 .clobbers = .{ .eflags = true },
3982 .each = .{ .once = &.{
3983 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
3984 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
3985 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3986 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
3987 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
3988 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3989 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3991 } },
3992 }, .{
3993 .required_features = .{ .avx, null, null, null },
3994 .src_constraints = .{
3995 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
3996 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
3997 },
3998 .patterns = &.{
3999 .{ .src = .{ .to_sse, .mem } },
4000 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4001 .{ .src = .{ .to_sse, .to_sse } },
4002 },
4003 .dst_temps = .{.{ .rc = .sse }},
4004 .each = .{ .once = &.{
4005 .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ },
4006 } },
4007 }, .{
4008 .required_features = .{ .sse4_1, null, null, null },
4009 .src_constraints = .{
4010 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4011 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4012 },
4013 .patterns = &.{
4014 .{ .src = .{ .to_mut_sse, .mem } },
4015 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4016 .{ .src = .{ .to_mut_sse, .to_sse } },
4017 },
4018 .dst_temps = .{.{ .ref = .src0 }},
4089 .dst_temps = .{.{ .rc = .x87 }},
40194090 .each = .{ .once = &.{
4020 .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ },
4091 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4092 .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ },
4093 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40214094 } },
40224095 }, .{
4023 .required_features = .{ .sse2, null, null, null },
4096 .required_features = .{ .x87, null, null, null },
40244097 .src_constraints = .{
4025 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4026 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4098 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4099 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4100 .any,
40274101 },
40284102 .patterns = &.{
4029 .{ .src = .{ .to_mut_sse, .mem } },
4030 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4031 .{ .src = .{ .to_mut_sse, .to_sse } },
4103 .{ .src = .{ .mem, .to_x87, .none } },
4104 .{ .src = .{ .to_x87, .to_x87, .none } },
40324105 },
4033 .dst_temps = .{.{ .ref = .src0 }},
4034 .each = .{ .once = &.{
4035 .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ },
4036 .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ },
4037 } },
4038 }, .{
4039 .required_features = .{ .avx2, null, null, null },
4040 .src_constraints = .{
4041 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4042 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4043 },
4044 .patterns = &.{
4045 .{ .src = .{ .to_sse, .mem } },
4046 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4047 .{ .src = .{ .to_sse, .to_sse } },
4106 .extra_temps = .{
4107 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4108 .unused,
4109 .unused,
4110 .unused,
4111 .unused,
4112 .unused,
4113 .unused,
4114 .unused,
4115 .unused,
40484116 },
4049 .dst_temps = .{.{ .rc = .sse }},
4117 .dst_temps = .{.{ .rc = .x87 }},
40504118 .each = .{ .once = &.{
4051 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },
4119 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4120 .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ },
4121 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40524122 } },
40534123 }, .{
4054 .required_features = .{ .avx2, null, null, null },
4124 .required_features = .{ .x87, null, null, null },
40554125 .src_constraints = .{
4056 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4057 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
4126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4127 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4128 .any,
40584129 },
40594130 .patterns = &.{
4060 .{ .src = .{ .to_mem, .to_mem } },
4131 .{ .src = .{ .to_mem, .to_mem, .none } },
40614132 },
40624133 .extra_temps = .{
40634134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4064 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
4065 .unused,
4135 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4136 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40664137 .unused,
40674138 .unused,
40684139 .unused,
......@@ -4071,27 +4142,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40714142 .unused,
40724143 },
40734144 .dst_temps = .{.mem},
4074 .clobbers = .{ .eflags = true },
40754145 .each = .{ .once = &.{
4076 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4077 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4078 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4079 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4080 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4146 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4147 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4148 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4149 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4150 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4151 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
40814152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40824153 } },
40834154 }, .{
4084 .required_features = .{ .avx, null, null, null },
4155 .required_features = .{ .sse, null, null, null },
40854156 .src_constraints = .{
4086 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4087 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4157 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4158 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4159 .any,
40884160 },
40894161 .patterns = &.{
4090 .{ .src = .{ .to_mem, .to_mem } },
4162 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40914163 },
4164 .call_frame = .{ .alignment = .@"16" },
40924165 .extra_temps = .{
4093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4094 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4167 .unused,
40954168 .unused,
40964169 .unused,
40974170 .unused,
......@@ -4100,30 +4173,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41004173 .unused,
41014174 .unused,
41024175 },
4103 .dst_temps = .{.mem},
4104 .clobbers = .{ .eflags = true },
4176 .dst_temps = .{.{ .ref = .src0 }},
4177 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41054178 .each = .{ .once = &.{
4106 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4107 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4108 .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4109 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4110 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4179 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
41124180 } },
41134181 }, .{
4114 .required_features = .{ .sse4_1, null, null, null },
4182 .required_features = .{ .avx, null, null, null },
41154183 .src_constraints = .{
4116 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4117 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4184 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4185 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4186 .any,
41184187 },
41194188 .patterns = &.{
4120 .{ .src = .{ .to_mem, .to_mem } },
4189 .{ .src = .{ .to_mem, .to_mem, .none } },
41214190 },
4191 .call_frame = .{ .alignment = .@"16" },
41224192 .extra_temps = .{
41234193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4124 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4125 .unused,
4126 .unused,
4194 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4195 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4196 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
41274197 .unused,
41284198 .unused,
41294199 .unused,
......@@ -4131,29 +4201,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41314201 .unused,
41324202 },
41334203 .dst_temps = .{.mem},
4134 .clobbers = .{ .eflags = true },
4204 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41354205 .each = .{ .once = &.{
4136 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4137 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4138 .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4139 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4207 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4208 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4209 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4210 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41404211 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41414212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41424213 } },
41434214 }, .{
41444215 .required_features = .{ .sse2, null, null, null },
41454216 .src_constraints = .{
4146 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4147 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
4217 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4218 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4219 .any,
41484220 },
41494221 .patterns = &.{
4150 .{ .src = .{ .to_mem, .to_mem } },
4222 .{ .src = .{ .to_mem, .to_mem, .none } },
41514223 },
4224 .call_frame = .{ .alignment = .@"16" },
41524225 .extra_temps = .{
41534226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4154 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
4155 .unused,
4156 .unused,
4227 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4228 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4229 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
41574230 .unused,
41584231 .unused,
41594232 .unused,
......@@ -4161,30 +4234,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41614234 .unused,
41624235 },
41634236 .dst_temps = .{.mem},
4164 .clobbers = .{ .eflags = true },
4237 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41654238 .each = .{ .once = &.{
4166 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4167 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4168 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4169 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4170 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4240 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4241 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4242 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4243 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
41714244 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41724245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41734246 } },
41744247 }, .{
4175 .required_features = .{ .cmov, null, null, null },
4248 .required_features = .{ .sse, null, null, null },
41764249 .src_constraints = .{
4177 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4178 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4250 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4251 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4252 .any,
41794253 },
41804254 .patterns = &.{
4181 .{ .src = .{ .to_mem, .to_mem } },
4255 .{ .src = .{ .to_mem, .to_mem, .none } },
41824256 },
4257 .call_frame = .{ .alignment = .@"16" },
41834258 .extra_temps = .{
41844259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4185 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4186 .unused,
4187 .unused,
4260 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4261 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
41884263 .unused,
41894264 .unused,
41904265 .unused,
......@@ -4192,27 +4267,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41924267 .unused,
41934268 },
41944269 .dst_temps = .{.mem},
4195 .clobbers = .{ .eflags = true },
4270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
41964271 .each = .{ .once = &.{
4197 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4198 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
4199 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4200 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4201 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
4202 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4272 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4273 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4274 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4275 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4276 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4277 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42034278 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42044279 } },
4205 }, .{
4280 } }) catch |err| switch (err) {
4281 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
4282 @tagName(air_tag),
4283 cg.typeOf(bin_op.lhs).fmt(pt),
4284 ops[0].tracking(cg),
4285 ops[1].tracking(cg),
4286 }),
4287 else => |e| return e,
4288 };
4289 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4290 },
4291 .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else fallback: {
4292 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
4293 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mul);
4294 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4295 var res: [1]Temp = undefined;
4296 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
4297 .required_features = .{ .f16c, null, null, null },
42064298 .src_constraints = .{
4207 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4208 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
4299 .{ .scalar_float = .{ .of = .word, .is = .word } },
4300 .{ .scalar_float = .{ .of = .word, .is = .word } },
4301 .any,
42094302 },
42104303 .patterns = &.{
4211 .{ .src = .{ .to_mem, .to_mem } },
4304 .{ .src = .{ .to_sse, .to_sse, .none } },
42124305 },
42134306 .extra_temps = .{
4214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4215 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4307 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4308 .unused,
42164309 .unused,
42174310 .unused,
42184311 .unused,
......@@ -4221,94 +4314,87 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42214314 .unused,
42224315 .unused,
42234316 },
4224 .dst_temps = .{.mem},
4225 .clobbers = .{ .eflags = true },
4317 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42264318 .each = .{ .once = &.{
4227 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4228 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
4229 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4230 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
4231 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
4232 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
4233 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4319 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4320 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4321 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0d, ._ },
4322 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
42354323 } },
42364324 }, .{
4237 .required_features = .{ .avx, null, null, null },
4325 .required_features = .{ .sse, null, null, null },
42384326 .src_constraints = .{
4239 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4240 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4327 .{ .scalar_float = .{ .of = .word, .is = .word } },
4328 .{ .scalar_float = .{ .of = .word, .is = .word } },
4329 .any,
42414330 },
42424331 .patterns = &.{
4243 .{ .src = .{ .to_sse, .mem } },
4244 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4245 .{ .src = .{ .to_sse, .to_sse } },
4246 },
4247 .dst_temps = .{.{ .rc = .sse }},
4248 .each = .{ .once = &.{
4249 .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ },
4250 } },
4251 }, .{
4252 .required_features = .{ .sse4_1, null, null, null },
4253 .src_constraints = .{
4254 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4255 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4332 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
42564333 },
4257 .patterns = &.{
4258 .{ .src = .{ .to_mut_sse, .mem } },
4259 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4260 .{ .src = .{ .to_mut_sse, .to_sse } },
4334 .call_frame = .{ .alignment = .@"16" },
4335 .extra_temps = .{
4336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4337 .unused,
4338 .unused,
4339 .unused,
4340 .unused,
4341 .unused,
4342 .unused,
4343 .unused,
4344 .unused,
42614345 },
42624346 .dst_temps = .{.{ .ref = .src0 }},
4347 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
42634348 .each = .{ .once = &.{
4264 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },
4349 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
42654350 } },
42664351 }, .{
4267 .required_features = .{ .sse2, null, null, null },
4352 .required_features = .{ .f16c, null, null, null },
42684353 .src_constraints = .{
4269 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4270 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
4354 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4355 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4356 .any,
42714357 },
42724358 .patterns = &.{
4273 .{ .src = .{ .to_mut_sse, .mem } },
4274 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4275 .{ .src = .{ .to_mut_sse, .to_sse } },
4276 },
4277 .dst_temps = .{.{ .rc = .sse }},
4278 .each = .{ .once = &.{
4279 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
4280 .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ },
4281 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
4282 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
4283 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
4284 } },
4285 }, .{
4286 .required_features = .{ .avx2, null, null, null },
4287 .src_constraints = .{
4288 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
4289 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
4359 .{ .src = .{ .mem, .mem, .none } },
4360 .{ .src = .{ .to_sse, .mem, .none } },
4361 .{ .src = .{ .mem, .to_sse, .none } },
4362 .{ .src = .{ .to_sse, .to_sse, .none } },
42904363 },
4291 .patterns = &.{
4292 .{ .src = .{ .to_sse, .mem } },
4293 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4294 .{ .src = .{ .to_sse, .to_sse } },
4364 .extra_temps = .{
4365 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4366 .unused,
4367 .unused,
4368 .unused,
4369 .unused,
4370 .unused,
4371 .unused,
4372 .unused,
4373 .unused,
42954374 },
4296 .dst_temps = .{.{ .rc = .sse }},
4375 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42974376 .each = .{ .once = &.{
4298 .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ },
4377 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4378 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4379 .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ },
4380 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
42994381 } },
43004382 }, .{
4301 .required_features = .{ .avx2, null, null, null },
4383 .required_features = .{ .f16c, null, null, null },
43024384 .src_constraints = .{
4303 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
4304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
4385 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4386 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4387 .any,
43054388 },
43064389 .patterns = &.{
4307 .{ .src = .{ .to_mem, .to_mem } },
4390 .{ .src = .{ .mem, .mem, .none } },
4391 .{ .src = .{ .to_sse, .mem, .none } },
4392 .{ .src = .{ .mem, .to_sse, .none } },
4393 .{ .src = .{ .to_sse, .to_sse, .none } },
43084394 },
43094395 .extra_temps = .{
4310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4311 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
4396 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4397 .unused,
43124398 .unused,
43134399 .unused,
43144400 .unused,
......@@ -4317,29 +4403,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43174403 .unused,
43184404 .unused,
43194405 },
4320 .dst_temps = .{.mem},
4321 .clobbers = .{ .eflags = true },
4406 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43224407 .each = .{ .once = &.{
4323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4324 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4325 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4326 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4327 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4408 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
4409 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
4410 .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ },
4411 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
43294412 } },
43304413 }, .{
4331 .required_features = .{ .avx, null, null, null },
4414 .required_features = .{ .f16c, null, null, null },
43324415 .src_constraints = .{
4333 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4334 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4416 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4417 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4418 .any,
43354419 },
43364420 .patterns = &.{
4337 .{ .src = .{ .to_mem, .to_mem } },
4421 .{ .src = .{ .to_mem, .to_mem, .none } },
43384422 },
43394423 .extra_temps = .{
43404424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4341 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4342 .unused,
4425 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4426 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
43434427 .unused,
43444428 .unused,
43454429 .unused,
......@@ -4350,27 +4434,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43504434 .dst_temps = .{.mem},
43514435 .clobbers = .{ .eflags = true },
43524436 .each = .{ .once = &.{
4353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4354 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4355 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4356 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4438 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4439 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4440 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ },
4441 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
43574442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43584443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43594444 } },
43604445 }, .{
4361 .required_features = .{ .sse4_1, null, null, null },
4446 .required_features = .{ .avx, null, null, null },
43624447 .src_constraints = .{
4363 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4364 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4448 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4449 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4450 .any,
43654451 },
43664452 .patterns = &.{
4367 .{ .src = .{ .to_mem, .to_mem } },
4453 .{ .src = .{ .to_mem, .to_mem, .none } },
43684454 },
4455 .call_frame = .{ .alignment = .@"16" },
43694456 .extra_temps = .{
43704457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4371 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4372 .unused,
4373 .unused,
4458 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4459 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
43744461 .unused,
43754462 .unused,
43764463 .unused,
......@@ -4378,29 +4465,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43784465 .unused,
43794466 },
43804467 .dst_temps = .{.mem},
4381 .clobbers = .{ .eflags = true },
4468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
43824469 .each = .{ .once = &.{
4383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4384 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4385 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4386 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4387 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4471 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
4472 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
4473 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
4474 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4475 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4476 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43884477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43894478 } },
43904479 }, .{
4391 .required_features = .{ .sse2, null, null, null },
4480 .required_features = .{ .sse4_1, null, null, null },
43924481 .src_constraints = .{
4393 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4394 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
4482 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4483 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4484 .any,
43954485 },
43964486 .patterns = &.{
4397 .{ .src = .{ .to_mem, .to_mem } },
4487 .{ .src = .{ .to_mem, .to_mem, .none } },
43984488 },
4489 .call_frame = .{ .alignment = .@"16" },
43994490 .extra_temps = .{
44004491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4401 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4402 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
4403 .unused,
4492 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4493 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
44044495 .unused,
44054496 .unused,
44064497 .unused,
......@@ -4408,172 +4499,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44084499 .unused,
44094500 },
44104501 .dst_temps = .{.mem},
4411 .clobbers = .{ .eflags = true },
4502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44124503 .each = .{ .once = &.{
4413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4414 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4415 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
4416 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4417 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
4418 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4419 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
4420 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4421 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4505 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4506 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4507 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4508 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4509 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4510 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4511 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44224512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44234513 } },
44244514 }, .{
4425 .required_features = .{ .cmov, null, null, null },
4515 .required_features = .{ .sse2, null, null, null },
44264516 .src_constraints = .{
4427 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4428 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4517 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4518 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4519 .any,
44294520 },
44304521 .patterns = &.{
4431 .{ .src = .{ .to_mem, .to_mem } },
4522 .{ .src = .{ .to_mem, .to_mem, .none } },
44324523 },
4524 .call_frame = .{ .alignment = .@"16" },
44334525 .extra_temps = .{
44344526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4435 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
4436 .unused,
4437 .unused,
4438 .unused,
4527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4528 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4530 .{ .type = .f16, .kind = .{ .reg = .ax } },
44394531 .unused,
44404532 .unused,
44414533 .unused,
44424534 .unused,
44434535 },
44444536 .dst_temps = .{.mem},
4445 .clobbers = .{ .eflags = true },
4537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44464538 .each = .{ .once = &.{
4447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4448 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4449 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4450 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4451 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4452 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4540 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4541 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4542 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4543 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4544 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4545 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
4546 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
4547 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44534548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44544549 } },
44554550 }, .{
4551 .required_features = .{ .sse, null, null, null },
44564552 .src_constraints = .{
4457 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4458 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
4553 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4554 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4555 .any,
44594556 },
44604557 .patterns = &.{
4461 .{ .src = .{ .to_mem, .to_mem } },
4558 .{ .src = .{ .to_mem, .to_mem, .none } },
44624559 },
4560 .call_frame = .{ .alignment = .@"16" },
44634561 .extra_temps = .{
44644562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4465 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
4466 .unused,
4467 .unused,
4468 .unused,
4469 .unused,
4563 .{ .type = .f16, .kind = .{ .reg = .ax } },
4564 .{ .type = .f32, .kind = .mem },
4565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4566 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
44704568 .unused,
44714569 .unused,
44724570 .unused,
44734571 },
44744572 .dst_temps = .{.mem},
4475 .clobbers = .{ .eflags = true },
4573 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
44764574 .each = .{ .once = &.{
4477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4478 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4479 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4480 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
4481 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4482 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4483 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4575 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4576 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
4577 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4578 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
4579 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
4580 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4581 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
4582 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
4583 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
4584 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
4585 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
4586 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44844587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
44854588 } },
44864589 }, .{
44874590 .required_features = .{ .avx, null, null, null },
44884591 .src_constraints = .{
4489 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4490 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4592 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4593 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4594 .any,
44914595 },
44924596 .patterns = &.{
4493 .{ .src = .{ .to_sse, .mem } },
4494 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4495 .{ .src = .{ .to_sse, .to_sse } },
4597 .{ .src = .{ .to_sse, .mem, .none } },
4598 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4599 .{ .src = .{ .to_sse, .to_sse, .none } },
44964600 },
4497 .dst_temps = .{.{ .rc = .sse }},
4601 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
44984602 .each = .{ .once = &.{
4499 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },
4603 .{ ._, .v_ss, .mul, .dst0x, .src0x, .src1d, ._ },
45004604 } },
45014605 }, .{
4502 .required_features = .{ .sse4_1, null, null, null },
4606 .required_features = .{ .sse, null, null, null },
45034607 .src_constraints = .{
4504 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4608 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4609 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4610 .any,
45064611 },
45074612 .patterns = &.{
4508 .{ .src = .{ .to_mut_sse, .mem } },
4509 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4510 .{ .src = .{ .to_mut_sse, .to_sse } },
4613 .{ .src = .{ .to_mut_sse, .mem, .none } },
4614 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4615 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
45114616 },
45124617 .dst_temps = .{.{ .ref = .src0 }},
45134618 .each = .{ .once = &.{
4514 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },
4619 .{ ._, ._ss, .mul, .dst0x, .src1d, ._, ._ },
45154620 } },
45164621 }, .{
4517 .required_features = .{ .sse2, null, null, null },
4622 .required_features = .{ .avx, null, null, null },
45184623 .src_constraints = .{
4519 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4520 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4624 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4625 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4626 .any,
45214627 },
45224628 .patterns = &.{
4523 .{ .src = .{ .to_mut_sse, .mem } },
4524 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4525 .{ .src = .{ .to_mut_sse, .to_sse } },
4629 .{ .src = .{ .to_sse, .mem, .none } },
4630 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4631 .{ .src = .{ .to_sse, .to_sse, .none } },
45264632 },
4527 .extra_temps = .{
4528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
4529 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
4530 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4531 .unused,
4532 .unused,
4533 .unused,
4534 .unused,
4535 .unused,
4536 .unused,
4633 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4634 .each = .{ .once = &.{
4635 .{ ._, .v_ps, .mul, .dst0x, .src0x, .src1x, ._ },
4636 } },
4637 }, .{
4638 .required_features = .{ .sse, null, null, null },
4639 .src_constraints = .{
4640 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4641 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4642 .any,
45374643 },
4538 .dst_temps = .{.{ .rc = .sse }},
4644 .patterns = &.{
4645 .{ .src = .{ .to_mut_sse, .mem, .none } },
4646 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4647 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4648 },
4649 .dst_temps = .{.{ .ref = .src0 }},
45394650 .each = .{ .once = &.{
4540 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4541 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
4542 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
4543 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
4544 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
4545 .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ },
4546 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
4547 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
4548 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
4651 .{ ._, ._ps, .mul, .dst0x, .src1x, ._, ._ },
45494652 } },
45504653 }, .{
4551 .required_features = .{ .avx2, null, null, null },
4654 .required_features = .{ .avx, null, null, null },
45524655 .src_constraints = .{
4553 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4554 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4656 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4657 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4658 .any,
45554659 },
45564660 .patterns = &.{
4557 .{ .src = .{ .to_sse, .mem } },
4558 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4559 .{ .src = .{ .to_sse, .to_sse } },
4661 .{ .src = .{ .to_sse, .mem, .none } },
4662 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4663 .{ .src = .{ .to_sse, .to_sse, .none } },
45604664 },
4561 .dst_temps = .{.{ .rc = .sse }},
4665 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45624666 .each = .{ .once = &.{
4563 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },
4667 .{ ._, .v_ps, .mul, .dst0y, .src0y, .src1y, ._ },
45644668 } },
45654669 }, .{
4566 .required_features = .{ .avx2, null, null, null },
4670 .required_features = .{ .avx, null, null, null },
45674671 .src_constraints = .{
4568 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4569 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
4672 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4673 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4674 .any,
45704675 },
45714676 .patterns = &.{
4572 .{ .src = .{ .to_mem, .to_mem } },
4677 .{ .src = .{ .to_mem, .to_mem, .none } },
45734678 },
45744679 .extra_temps = .{
45754680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4576 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
4681 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
45774682 .unused,
45784683 .unused,
45794684 .unused,
......@@ -4585,25 +4690,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45854690 .dst_temps = .{.mem},
45864691 .clobbers = .{ .eflags = true },
45874692 .each = .{ .once = &.{
4588 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4589 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4590 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
4591 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4694 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4695 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4696 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
45924697 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
45934698 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45944699 } },
45954700 }, .{
4596 .required_features = .{ .avx, null, null, null },
4701 .required_features = .{ .sse, null, null, null },
45974702 .src_constraints = .{
4598 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4599 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4703 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4704 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4705 .any,
46004706 },
46014707 .patterns = &.{
4602 .{ .src = .{ .to_mem, .to_mem } },
4708 .{ .src = .{ .to_mem, .to_mem, .none } },
46034709 },
46044710 .extra_temps = .{
46054711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4606 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4712 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
46074713 .unused,
46084714 .unused,
46094715 .unused,
......@@ -4615,25 +4721,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46154721 .dst_temps = .{.mem},
46164722 .clobbers = .{ .eflags = true },
46174723 .each = .{ .once = &.{
4618 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4619 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4620 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
4621 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4724 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4725 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4726 .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4727 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
46224728 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
46234729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46244730 } },
46254731 }, .{
4626 .required_features = .{ .sse4_1, null, null, null },
4732 .required_features = .{ .avx, null, null, null },
46274733 .src_constraints = .{
4628 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4629 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4734 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4735 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4736 .any,
4737 },
4738 .patterns = &.{
4739 .{ .src = .{ .to_sse, .mem, .none } },
4740 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4741 .{ .src = .{ .to_sse, .to_sse, .none } },
4742 },
4743 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4744 .each = .{ .once = &.{
4745 .{ ._, .v_sd, .mul, .dst0x, .src0x, .src1q, ._ },
4746 } },
4747 }, .{
4748 .required_features = .{ .sse2, null, null, null },
4749 .src_constraints = .{
4750 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4751 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4752 .any,
4753 },
4754 .patterns = &.{
4755 .{ .src = .{ .to_mut_sse, .mem, .none } },
4756 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4757 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4758 },
4759 .dst_temps = .{.{ .ref = .src0 }},
4760 .each = .{ .once = &.{
4761 .{ ._, ._sd, .mul, .dst0x, .src1q, ._, ._ },
4762 } },
4763 }, .{
4764 .required_features = .{ .x87, null, null, null },
4765 .src_constraints = .{
4766 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4767 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4768 .any,
46304769 },
46314770 .patterns = &.{
4632 .{ .src = .{ .to_mem, .to_mem } },
4771 .{ .src = .{ .mem, .mem, .none } },
46334772 },
46344773 .extra_temps = .{
4635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4636 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
4774 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4775 .{ .type = .f64, .kind = .{ .reg = .st7 } },
46374776 .unused,
46384777 .unused,
46394778 .unused,
......@@ -4643,67 +4782,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46434782 .unused,
46444783 },
46454784 .dst_temps = .{.mem},
4646 .clobbers = .{ .eflags = true },
46474785 .each = .{ .once = &.{
4648 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4649 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4650 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4651 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4652 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4786 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
4787 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
4788 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4789 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
4790 } },
4791 }, .{
4792 .required_features = .{ .avx, null, null, null },
4793 .src_constraints = .{
4794 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4795 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4796 .any,
4797 },
4798 .patterns = &.{
4799 .{ .src = .{ .to_sse, .mem, .none } },
4800 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4801 .{ .src = .{ .to_sse, .to_sse, .none } },
4802 },
4803 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4804 .each = .{ .once = &.{
4805 .{ ._, .v_pd, .mul, .dst0x, .src0x, .src1x, ._ },
46544806 } },
46554807 }, .{
46564808 .required_features = .{ .sse2, null, null, null },
46574809 .src_constraints = .{
4658 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4659 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
4810 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4811 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4812 .any,
46604813 },
46614814 .patterns = &.{
4662 .{ .src = .{ .to_mem, .to_mem } },
4815 .{ .src = .{ .to_mut_sse, .mem, .none } },
4816 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4817 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
46634818 },
4664 .extra_temps = .{
4665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4666 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
4667 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
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 .unused,
4673 .unused,
4819 .dst_temps = .{.{ .ref = .src0 }},
4820 .each = .{ .once = &.{
4821 .{ ._, ._pd, .mul, .dst0x, .src1x, ._, ._ },
4822 } },
4823 }, .{
4824 .required_features = .{ .avx, null, null, null },
4825 .src_constraints = .{
4826 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4827 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4828 .any,
46744829 },
4675 .dst_temps = .{.mem},
4676 .clobbers = .{ .eflags = true },
4830 .patterns = &.{
4831 .{ .src = .{ .to_sse, .mem, .none } },
4832 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4833 .{ .src = .{ .to_sse, .to_sse, .none } },
4834 },
4835 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
46774836 .each = .{ .once = &.{
4678 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4679 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
4680 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4681 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4682 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4683 .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ },
4684 .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ },
4685 .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ },
4686 .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ },
4687 .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ },
4688 .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ },
4689 .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ },
4690 .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ },
4691 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
4692 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4837 .{ ._, .v_pd, .mul, .dst0y, .src0y, .src1y, ._ },
46944838 } },
46954839 }, .{
4696 .required_features = .{ .cmov, null, null, null },
4840 .required_features = .{ .avx, null, null, null },
46974841 .src_constraints = .{
4698 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4699 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4842 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4843 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4844 .any,
47004845 },
47014846 .patterns = &.{
4702 .{ .src = .{ .to_mem, .to_mem } },
4847 .{ .src = .{ .to_mem, .to_mem, .none } },
47034848 },
47044849 .extra_temps = .{
47054850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4706 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
4851 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
47074852 .unused,
47084853 .unused,
47094854 .unused,
......@@ -4715,25 +4860,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47154860 .dst_temps = .{.mem},
47164861 .clobbers = .{ .eflags = true },
47174862 .each = .{ .once = &.{
4718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4719 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4720 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4721 .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4722 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4723 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4864 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4865 .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4866 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4867 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
47244868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47254869 } },
47264870 }, .{
4871 .required_features = .{ .sse2, null, null, null },
47274872 .src_constraints = .{
4728 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4729 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
4873 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4874 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4875 .any,
47304876 },
47314877 .patterns = &.{
4732 .{ .src = .{ .to_mem, .to_mem } },
4878 .{ .src = .{ .to_mem, .to_mem, .none } },
47334879 },
47344880 .extra_temps = .{
47354881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4736 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
4882 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
47374883 .unused,
47384884 .unused,
47394885 .unused,
......@@ -4745,43 +4891,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47454891 .dst_temps = .{.mem},
47464892 .clobbers = .{ .eflags = true },
47474893 .each = .{ .once = &.{
4748 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4749 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
4750 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4751 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
4752 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
4753 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4754 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4895 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4896 .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4897 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4898 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47554899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47564900 } },
47574901 }, .{
4758 .required_features = .{ .avx, null, null, null },
4902 .required_features = .{ .x87, null, null, null },
47594903 .src_constraints = .{
4760 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4761 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4904 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4905 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4906 .any,
47624907 },
47634908 .patterns = &.{
4764 .{ .src = .{ .to_sse, .to_sse } },
4909 .{ .src = .{ .to_mem, .to_mem, .none } },
47654910 },
4766 .dst_temps = .{.{ .rc = .sse }},
4911 .extra_temps = .{
4912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4913 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4914 .{ .type = .f64, .kind = .{ .reg = .st7 } },
4915 .unused,
4916 .unused,
4917 .unused,
4918 .unused,
4919 .unused,
4920 .unused,
4921 },
4922 .dst_temps = .{.mem},
47674923 .each = .{ .once = &.{
4768 .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ },
4769 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
4924 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4925 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4926 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4927 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4928 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4929 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4930 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47704931 } },
47714932 }, .{
4772 .required_features = .{ .sse4_2, null, null, null },
4933 .required_features = .{ .x87, null, null, null },
47734934 .src_constraints = .{
4774 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4775 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
4935 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4936 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4937 .any,
47764938 },
47774939 .patterns = &.{
4778 .{ .src = .{ .to_mut_sse, .mem } },
4779 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4780 .{ .src = .{ .to_mut_sse, .to_sse } },
4940 .{ .src = .{ .mem, .mem, .none } },
47814941 },
47824942 .extra_temps = .{
4783 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
4784 .unused,
4943 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4944 .{ .type = .f80, .kind = .{ .reg = .st7 } },
47854945 .unused,
47864946 .unused,
47874947 .unused,
......@@ -4790,40 +4950,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47904950 .unused,
47914951 .unused,
47924952 },
4793 .dst_temps = .{.{ .ref = .src0 }},
4953 .dst_temps = .{.{ .rc = .x87 }},
47944954 .each = .{ .once = &.{
4795 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },
4796 .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ },
4797 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ },
4955 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4956 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4957 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4958 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
47984959 } },
47994960 }, .{
4800 .required_features = .{ .avx2, null, null, null },
4961 .required_features = .{ .x87, null, null, null },
48014962 .src_constraints = .{
4802 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
4803 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
4963 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4964 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4965 .any,
48044966 },
48054967 .patterns = &.{
4806 .{ .src = .{ .to_sse, .to_sse } },
4968 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
4969 .{ .src = .{ .mem, .to_x87, .none } },
4970 .{ .src = .{ .to_x87, .to_x87, .none } },
48074971 },
4808 .dst_temps = .{.{ .rc = .sse }},
4972 .extra_temps = .{
4973 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4974 .unused,
4975 .unused,
4976 .unused,
4977 .unused,
4978 .unused,
4979 .unused,
4980 .unused,
4981 .unused,
4982 },
4983 .dst_temps = .{.{ .rc = .x87 }},
48094984 .each = .{ .once = &.{
4810 .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ },
4811 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
4985 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4986 .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ },
4987 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
48124988 } },
48134989 }, .{
4814 .required_features = .{ .avx2, null, null, null },
4990 .required_features = .{ .x87, null, null, null },
48154991 .src_constraints = .{
4816 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
4817 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
4992 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4993 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4994 .any,
48184995 },
48194996 .patterns = &.{
4820 .{ .src = .{ .to_mem, .to_mem } },
4997 .{ .src = .{ .to_mem, .to_mem, .none } },
48214998 },
48224999 .extra_temps = .{
48235000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4824 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
4825 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
4826 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
5001 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5002 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5003 .unused,
48275004 .unused,
48285005 .unused,
48295006 .unused,
......@@ -4831,63 +5008,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48315008 .unused,
48325009 },
48335010 .dst_temps = .{.mem},
4834 .clobbers = .{ .eflags = true },
48355011 .each = .{ .once = &.{
4836 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4837 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
4838 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
4839 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },
4840 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
4841 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
4842 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5013 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5014 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5015 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
5016 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5017 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
48435018 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
48445019 } },
48455020 }, .{
4846 .required_features = .{ .avx, null, null, null },
5021 .required_features = .{ .sse, null, null, null },
48475022 .src_constraints = .{
4848 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
4849 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
5023 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5024 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5025 .any,
48505026 },
48515027 .patterns = &.{
4852 .{ .src = .{ .to_mem, .to_mem } },
5028 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
48535029 },
5030 .call_frame = .{ .alignment = .@"16" },
48545031 .extra_temps = .{
4855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4856 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4857 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4858 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
5032 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
5033 .unused,
5034 .unused,
5035 .unused,
48595036 .unused,
48605037 .unused,
48615038 .unused,
48625039 .unused,
48635040 .unused,
48645041 },
4865 .dst_temps = .{.mem},
4866 .clobbers = .{ .eflags = true },
5042 .dst_temps = .{.{ .ref = .src0 }},
5043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
48675044 .each = .{ .once = &.{
4868 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4869 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4870 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4871 .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ },
4872 .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x },
4873 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4874 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4875 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5045 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
48765046 } },
48775047 }, .{
4878 .required_features = .{ .sse4_2, null, null, null },
5048 .required_features = .{ .avx, null, null, null },
48795049 .src_constraints = .{
4880 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
4881 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
5050 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5051 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5052 .any,
48825053 },
48835054 .patterns = &.{
4884 .{ .src = .{ .to_mem, .to_mem } },
5055 .{ .src = .{ .to_mem, .to_mem, .none } },
48855056 },
5057 .call_frame = .{ .alignment = .@"16" },
48865058 .extra_temps = .{
48875059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4888 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4889 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
4890 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
5060 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5061 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
48915063 .unused,
48925064 .unused,
48935065 .unused,
......@@ -4895,32 +5067,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48955067 .unused,
48965068 },
48975069 .dst_temps = .{.mem},
4898 .clobbers = .{ .eflags = true },
5070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
48995071 .each = .{ .once = &.{
4900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4901 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4902 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
4903 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
4904 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },
4905 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
4906 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5072 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5073 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5074 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5075 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5076 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
49075077 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49085078 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
49095079 } },
49105080 }, .{
4911 .required_features = .{ .@"64bit", .cmov, null, null },
5081 .required_features = .{ .sse2, null, null, null },
49125082 .src_constraints = .{
4913 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
4914 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
5083 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5084 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5085 .any,
49155086 },
49165087 .patterns = &.{
4917 .{ .src = .{ .to_mem, .to_mem } },
5088 .{ .src = .{ .to_mem, .to_mem, .none } },
49185089 },
5090 .call_frame = .{ .alignment = .@"16" },
49195091 .extra_temps = .{
49205092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4921 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
4922 .unused,
4923 .unused,
5093 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5094 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
49245096 .unused,
49255097 .unused,
49265098 .unused,
......@@ -4928,30 +5100,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49285100 .unused,
49295101 },
49305102 .dst_temps = .{.mem},
4931 .clobbers = .{ .eflags = true },
5103 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
49325104 .each = .{ .once = &.{
4933 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4934 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
4935 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4936 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4937 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
4938 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5106 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5107 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5108 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5109 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5110 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49395111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
49405112 } },
49415113 }, .{
4942 .required_features = .{ .@"64bit", null, null, null },
5114 .required_features = .{ .sse, null, null, null },
49435115 .src_constraints = .{
4944 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
4945 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
5116 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5117 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5118 .any,
49465119 },
49475120 .patterns = &.{
4948 .{ .src = .{ .to_mem, .to_mem } },
5121 .{ .src = .{ .to_mem, .to_mem, .none } },
49495122 },
5123 .call_frame = .{ .alignment = .@"16" },
49505124 .extra_temps = .{
49515125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4952 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
4953 .unused,
4954 .unused,
5126 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5127 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5128 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
49555129 .unused,
49565130 .unused,
49575131 .unused,
......@@ -4959,32 +5133,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49595133 .unused,
49605134 },
49615135 .dst_temps = .{.mem},
4962 .clobbers = .{ .eflags = true },
5136 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
49635137 .each = .{ .once = &.{
4964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4965 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
4966 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4967 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
4968 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
4969 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
4970 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5139 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5140 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5141 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5142 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5143 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
49715144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
49725145 } },
4973 }, .{
4974 .required_features = .{ .avx, null, null, null },
5146 } }) catch |err| switch (err) {
5147 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
5148 @tagName(air_tag),
5149 cg.typeOf(bin_op.lhs).fmt(pt),
5150 ops[0].tracking(cg),
5151 ops[1].tracking(cg),
5152 }),
5153 else => |e| return e,
5154 };
5155 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5156 },
5157 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
5158 else => unreachable,
5159 .div_float, .div_float_optimized => .div_float,
5160 .div_exact, .div_exact_optimized => .div_exact,
5161 }) else fallback: {
5162 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
5163 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .div_exact);
5164 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5165 var res: [1]Temp = undefined;
5166 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
5167 .required_features = .{ .f16c, null, null, null },
49755168 .src_constraints = .{
4976 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
4977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5169 .{ .scalar_float = .{ .of = .word, .is = .word } },
5170 .{ .scalar_float = .{ .of = .word, .is = .word } },
5171 .any,
49785172 },
49795173 .patterns = &.{
4980 .{ .src = .{ .to_sse, .mem } },
4981 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4982 .{ .src = .{ .to_sse, .to_sse } },
5174 .{ .src = .{ .to_sse, .to_sse, .none } },
49835175 },
49845176 .extra_temps = .{
4985 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
4986 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
4987 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5177 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5178 .unused,
5179 .unused,
49885180 .unused,
49895181 .unused,
49905182 .unused,
......@@ -4992,31 +5184,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49925184 .unused,
49935185 .unused,
49945186 },
4995 .dst_temps = .{.{ .rc = .sse }},
5187 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
49965188 .each = .{ .once = &.{
4997 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4998 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
4999 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
5000 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
5001 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
5002 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
5189 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5190 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5191 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
5192 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
50035193 } },
50045194 }, .{
5005 .required_features = .{ .sse4_2, null, null, null },
5195 .required_features = .{ .sse, null, null, null },
50065196 .src_constraints = .{
5007 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5008 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5197 .{ .scalar_float = .{ .of = .word, .is = .word } },
5198 .{ .scalar_float = .{ .of = .word, .is = .word } },
5199 .any,
50095200 },
50105201 .patterns = &.{
5011 .{ .src = .{ .to_mut_sse, .mem } },
5012 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5013 .{ .src = .{ .to_mut_sse, .to_sse } },
5202 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
50145203 },
5204 .call_frame = .{ .alignment = .@"16" },
50155205 .extra_temps = .{
5016 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
5017 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5018 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5019 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
5206 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5207 .unused,
5208 .unused,
5209 .unused,
50205210 .unused,
50215211 .unused,
50225212 .unused,
......@@ -5024,30 +5214,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50245214 .unused,
50255215 },
50265216 .dst_temps = .{.{ .ref = .src0 }},
5217 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
50275218 .each = .{ .once = &.{
5028 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5029 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5030 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
5031 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
5032 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
5033 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ },
5034 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ },
5219 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
50355220 } },
50365221 }, .{
5037 .required_features = .{ .avx2, null, null, null },
5222 .required_features = .{ .f16c, null, null, null },
50385223 .src_constraints = .{
5039 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5040 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5224 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5225 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5226 .any,
50415227 },
50425228 .patterns = &.{
5043 .{ .src = .{ .to_sse, .mem } },
5044 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
5045 .{ .src = .{ .to_sse, .to_sse } },
5229 .{ .src = .{ .mem, .mem, .none } },
5230 .{ .src = .{ .to_sse, .mem, .none } },
5231 .{ .src = .{ .mem, .to_sse, .none } },
5232 .{ .src = .{ .to_sse, .to_sse, .none } },
50465233 },
50475234 .extra_temps = .{
5048 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
5049 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5050 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5235 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5236 .unused,
5237 .unused,
50515238 .unused,
50525239 .unused,
50535240 .unused,
......@@ -5055,139 +5242,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50555242 .unused,
50565243 .unused,
50575244 },
5058 .dst_temps = .{.{ .rc = .sse }},
5245 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
50595246 .each = .{ .once = &.{
5060 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5061 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5062 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
5063 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
5064 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
5065 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
5247 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5248 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5249 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
5250 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
50665251 } },
50675252 }, .{
5068 .required_features = .{ .avx2, null, null, null },
5253 .required_features = .{ .f16c, null, null, null },
50695254 .src_constraints = .{
5070 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5071 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
5255 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5256 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5257 .any,
50725258 },
50735259 .patterns = &.{
5074 .{ .src = .{ .to_mem, .to_mem } },
5260 .{ .src = .{ .mem, .mem, .none } },
5261 .{ .src = .{ .to_sse, .mem, .none } },
5262 .{ .src = .{ .mem, .to_sse, .none } },
5263 .{ .src = .{ .to_sse, .to_sse, .none } },
50755264 },
50765265 .extra_temps = .{
5077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5078 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5079 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5080 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5081 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5082 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5083 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
5266 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5267 .unused,
5268 .unused,
5269 .unused,
5270 .unused,
5271 .unused,
5272 .unused,
50845273 .unused,
50855274 .unused,
50865275 },
5087 .dst_temps = .{.mem},
5088 .clobbers = .{ .eflags = true },
5276 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
50895277 .each = .{ .once = &.{
5090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5091 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5093 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5094 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
5095 .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ },
5096 .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ },
5097 .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ },
5098 .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y },
5099 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
5100 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5278 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
5279 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5280 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
5281 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
51025282 } },
51035283 }, .{
5104 .required_features = .{ .avx, null, null, null },
5284 .required_features = .{ .f16c, null, null, null },
51055285 .src_constraints = .{
5106 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5107 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5286 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5287 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5288 .any,
51085289 },
51095290 .patterns = &.{
5110 .{ .src = .{ .to_mem, .to_mem } },
5291 .{ .src = .{ .to_mem, .to_mem, .none } },
51115292 },
51125293 .extra_temps = .{
51135294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5114 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5115 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5116 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5117 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5118 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5119 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5295 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5296 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5297 .unused,
5298 .unused,
5299 .unused,
5300 .unused,
51205301 .unused,
51215302 .unused,
51225303 },
51235304 .dst_temps = .{.mem},
51245305 .clobbers = .{ .eflags = true },
51255306 .each = .{ .once = &.{
5126 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5127 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5128 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5129 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5130 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5131 .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ },
5132 .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ },
5133 .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ },
5134 .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x },
5135 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5307 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5308 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5309 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5310 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
5311 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
51365312 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
51375313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
51385314 } },
51395315 }, .{
5140 .required_features = .{ .sse4_2, null, null, null },
5316 .required_features = .{ .avx, null, null, null },
51415317 .src_constraints = .{
5142 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5143 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
5318 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5319 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5320 .any,
51445321 },
51455322 .patterns = &.{
5146 .{ .src = .{ .to_mem, .to_mem } },
5323 .{ .src = .{ .to_mem, .to_mem, .none } },
51475324 },
5325 .call_frame = .{ .alignment = .@"16" },
51485326 .extra_temps = .{
51495327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5150 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
5151 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5152 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5154 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
5155 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
5328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5329 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5330 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5331 .unused,
5332 .unused,
5333 .unused,
51565334 .unused,
51575335 .unused,
51585336 },
51595337 .dst_temps = .{.mem},
5160 .clobbers = .{ .eflags = true },
5338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
51615339 .each = .{ .once = &.{
5162 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5163 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5164 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5165 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
5166 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
5167 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5168 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5169 .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ },
5170 .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ },
5171 .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ },
5172 .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ },
5173 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5174 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5341 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5342 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
5343 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
5344 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5345 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5346 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
51755347 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
51765348 } },
51775349 }, .{
5178 .required_features = .{ .@"64bit", .cmov, null, null },
5350 .required_features = .{ .sse4_1, null, null, null },
51795351 .src_constraints = .{
5180 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5181 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5352 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5353 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5354 .any,
51825355 },
51835356 .patterns = &.{
5184 .{ .src = .{ .to_mem, .to_mem } },
5357 .{ .src = .{ .to_mem, .to_mem, .none } },
51855358 },
5359 .call_frame = .{ .alignment = .@"16" },
51865360 .extra_temps = .{
51875361 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5188 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
5189 .unused,
5190 .unused,
5362 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5363 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
51915365 .unused,
51925366 .unused,
51935367 .unused,
......@@ -5195,212 +5369,181 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51955369 .unused,
51965370 },
51975371 .dst_temps = .{.mem},
5198 .clobbers = .{ .eflags = true },
5372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
51995373 .each = .{ .once = &.{
5200 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5201 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5202 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5203 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5204 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
5205 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5375 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5376 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5377 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5378 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5379 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5380 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5381 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
52065382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
52075383 } },
52085384 }, .{
5209 .required_features = .{ .@"64bit", null, null, null },
5385 .required_features = .{ .sse2, null, null, null },
52105386 .src_constraints = .{
5211 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5212 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
5387 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5388 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5389 .any,
52135390 },
52145391 .patterns = &.{
5215 .{ .src = .{ .to_mem, .to_mem } },
5392 .{ .src = .{ .to_mem, .to_mem, .none } },
52165393 },
5394 .call_frame = .{ .alignment = .@"16" },
52175395 .extra_temps = .{
52185396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5219 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
5220 .unused,
5221 .unused,
5222 .unused,
5397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5398 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5400 .{ .type = .f16, .kind = .{ .reg = .ax } },
52235401 .unused,
52245402 .unused,
52255403 .unused,
52265404 .unused,
52275405 },
52285406 .dst_temps = .{.mem},
5229 .clobbers = .{ .eflags = true },
5407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
52305408 .each = .{ .once = &.{
5231 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5232 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5233 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5234 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
5235 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5236 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
5237 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5410 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5411 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5412 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5413 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5414 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5415 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5416 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
5417 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
52385418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
52395419 } },
52405420 }, .{
5241 .required_features = .{ .@"64bit", .cmov, null, null },
5242 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
5421 .required_features = .{ .sse, null, null, null },
5422 .src_constraints = .{
5423 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5424 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5425 .any,
5426 },
52435427 .patterns = &.{
5244 .{ .src = .{ .to_mem, .to_mem } },
5428 .{ .src = .{ .to_mem, .to_mem, .none } },
52455429 },
5430 .call_frame = .{ .alignment = .@"16" },
52465431 .extra_temps = .{
52475432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5248 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5249 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5250 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5251 .unused,
5252 .unused,
5433 .{ .type = .f16, .kind = .{ .reg = .ax } },
5434 .{ .type = .f32, .kind = .mem },
5435 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5436 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
52535438 .unused,
52545439 .unused,
52555440 .unused,
52565441 },
52575442 .dst_temps = .{.mem},
5258 .clobbers = .{ .eflags = true },
5443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
52595444 .each = .{ .once = &.{
5260 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5261 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
5262 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5263 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5264 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5265 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5266 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5267 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5268 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5269 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5270 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5271 .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5272 .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ },
5273 .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5274 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5275 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5276 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5445 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5446 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
5447 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5448 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5449 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
5450 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5451 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
5452 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
5453 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5454 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5455 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
5456 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
52775457 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
52785458 } },
52795459 }, .{
5280 .required_features = .{ .@"64bit", null, null, null },
5281 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
5282 .patterns = &.{
5283 .{ .src = .{ .to_mem, .to_mem } },
5460 .required_features = .{ .avx, null, null, null },
5461 .src_constraints = .{
5462 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5463 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5464 .any,
52845465 },
5285 .extra_temps = .{
5286 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5287 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5288 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5289 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5290 .unused,
5291 .unused,
5292 .unused,
5293 .unused,
5294 .unused,
5466 .patterns = &.{
5467 .{ .src = .{ .to_sse, .mem, .none } },
5468 .{ .src = .{ .to_sse, .to_sse, .none } },
52955469 },
5296 .dst_temps = .{.mem},
5297 .clobbers = .{ .eflags = true },
5470 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
52985471 .each = .{ .once = &.{
5299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5300 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
5301 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5302 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5303 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5304 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5305 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5306 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5307 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5308 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5309 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5310 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
5311 .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5312 .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
5313 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5314 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5315 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
5316 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5472 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
53175473 } },
53185474 }, .{
5319 .required_features = .{ .@"64bit", .cmov, null, null },
5320 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
5475 .required_features = .{ .sse, null, null, null },
5476 .src_constraints = .{
5477 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5478 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5479 .any,
5480 },
53215481 .patterns = &.{
5322 .{ .src = .{ .to_mem, .to_mem } },
5482 .{ .src = .{ .to_mut_sse, .mem, .none } },
5483 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
53235484 },
5324 .extra_temps = .{
5325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5326 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5327 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5328 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5329 .unused,
5330 .unused,
5331 .unused,
5332 .unused,
5333 .unused,
5485 .dst_temps = .{.{ .ref = .src0 }},
5486 .each = .{ .once = &.{
5487 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
5488 } },
5489 }, .{
5490 .required_features = .{ .avx, null, null, null },
5491 .src_constraints = .{
5492 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5493 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5494 .any,
53345495 },
5335 .dst_temps = .{.mem},
5336 .clobbers = .{ .eflags = true },
5496 .patterns = &.{
5497 .{ .src = .{ .to_sse, .mem, .none } },
5498 .{ .src = .{ .to_sse, .to_sse, .none } },
5499 },
5500 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
53375501 .each = .{ .once = &.{
5338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5339 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5340 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5341 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5342 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5343 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5344 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5345 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5346 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5347 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
5348 .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ },
5349 .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5350 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5351 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5352 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
5353 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
5502 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
53545503 } },
53555504 }, .{
5356 .required_features = .{ .@"64bit", null, null, null },
5357 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
5505 .required_features = .{ .sse, null, null, null },
5506 .src_constraints = .{
5507 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5508 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5509 .any,
5510 },
53585511 .patterns = &.{
5359 .{ .src = .{ .to_mem, .to_mem } },
5512 .{ .src = .{ .to_mut_sse, .mem, .none } },
5513 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
53605514 },
5361 .extra_temps = .{
5362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5363 .{ .type = .isize, .kind = .{ .reg = .rsi } },
5364 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5365 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5366 .unused,
5367 .unused,
5368 .unused,
5369 .unused,
5370 .unused,
5515 .dst_temps = .{.{ .ref = .src0 }},
5516 .each = .{ .once = &.{
5517 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
5518 } },
5519 }, .{
5520 .required_features = .{ .avx, null, null, null },
5521 .src_constraints = .{
5522 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5523 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5524 .any,
53715525 },
5372 .dst_temps = .{.mem},
5373 .clobbers = .{ .eflags = true },
5526 .patterns = &.{
5527 .{ .src = .{ .to_sse, .mem, .none } },
5528 .{ .src = .{ .to_sse, .to_sse, .none } },
5529 },
5530 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
53745531 .each = .{ .once = &.{
5375 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5376 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5377 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5378 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5379 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5380 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5381 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5382 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5383 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5384 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
5385 .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
5386 .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
5387 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
5388 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
5389 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
5390 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
5532 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
53915533 } },
53925534 }, .{
5393 .required_features = .{ .f16c, null, null, null },
5535 .required_features = .{ .avx, null, null, null },
53945536 .src_constraints = .{
5395 .{ .scalar_float = .{ .of = .word, .is = .word } },
5396 .{ .scalar_float = .{ .of = .word, .is = .word } },
5537 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5538 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5539 .any,
53975540 },
53985541 .patterns = &.{
5399 .{ .src = .{ .to_sse, .to_sse } },
5542 .{ .src = .{ .to_mem, .to_mem, .none } },
54005543 },
54015544 .extra_temps = .{
5402 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5403 .{ .type = .f16, .kind = .{ .rc = .sse } },
5545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5546 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
54045547 .unused,
54055548 .unused,
54065549 .unused,
......@@ -5409,28 +5552,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54095552 .unused,
54105553 .unused,
54115554 },
5412 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5555 .dst_temps = .{.mem},
5556 .clobbers = .{ .eflags = true },
54135557 .each = .{ .once = &.{
5414 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5415 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5416 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
5417 .{ ._, .v_ss, .max, .dst0x, .tmp0x, .dst0x, ._ },
5418 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
5419 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5558 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5559 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5560 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5561 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5562 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5563 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
54205564 } },
54215565 }, .{
54225566 .required_features = .{ .sse, null, null, null },
54235567 .src_constraints = .{
5424 .{ .scalar_float = .{ .of = .word, .is = .word } },
5425 .{ .scalar_float = .{ .of = .word, .is = .word } },
5568 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5570 .any,
54265571 },
54275572 .patterns = &.{
5428 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
5573 .{ .src = .{ .to_mem, .to_mem, .none } },
54295574 },
5430 .call_frame = .{ .alignment = .@"16" },
54315575 .extra_temps = .{
5432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5433 .unused,
5576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5577 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
54345578 .unused,
54355579 .unused,
54365580 .unused,
......@@ -5439,58 +5583,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54395583 .unused,
54405584 .unused,
54415585 },
5442 .dst_temps = .{.{ .ref = .src0 }},
5443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5586 .dst_temps = .{.mem},
5587 .clobbers = .{ .eflags = true },
54445588 .each = .{ .once = &.{
5445 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
5589 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5590 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5591 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5592 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5593 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5594 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
54465595 } },
54475596 }, .{
5448 .required_features = .{ .f16c, null, null, null },
5597 .required_features = .{ .avx, null, null, null },
54495598 .src_constraints = .{
5450 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5451 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5599 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5600 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5601 .any,
54525602 },
54535603 .patterns = &.{
5454 .{ .src = .{ .mem, .mem } },
5455 .{ .src = .{ .to_sse, .mem } },
5456 .{ .src = .{ .mem, .to_sse } },
5457 .{ .src = .{ .to_sse, .to_sse } },
5458 },
5459 .extra_temps = .{
5460 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5461 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },
5462 .unused,
5463 .unused,
5464 .unused,
5465 .unused,
5466 .unused,
5467 .unused,
5468 .unused,
5604 .{ .src = .{ .to_sse, .mem, .none } },
5605 .{ .src = .{ .to_sse, .to_sse, .none } },
54695606 },
54705607 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
54715608 .each = .{ .once = &.{
5472 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5473 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5474 .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
5475 .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ },
5476 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
5477 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5609 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
54785610 } },
54795611 }, .{
5480 .required_features = .{ .f16c, null, null, null },
5612 .required_features = .{ .sse2, null, null, null },
54815613 .src_constraints = .{
5482 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5483 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5614 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5615 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5616 .any,
5617 },
5618 .patterns = &.{
5619 .{ .src = .{ .to_mut_sse, .mem, .none } },
5620 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5621 },
5622 .dst_temps = .{.{ .ref = .src0 }},
5623 .each = .{ .once = &.{
5624 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
5625 } },
5626 }, .{
5627 .required_features = .{ .x87, null, null, null },
5628 .src_constraints = .{
5629 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5630 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5631 .any,
54845632 },
54855633 .patterns = &.{
5486 .{ .src = .{ .mem, .mem } },
5487 .{ .src = .{ .to_sse, .mem } },
5488 .{ .src = .{ .mem, .to_sse } },
5489 .{ .src = .{ .to_sse, .to_sse } },
5634 .{ .src = .{ .mem, .mem, .none } },
54905635 },
54915636 .extra_temps = .{
5492 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5493 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5637 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5638 .{ .type = .f64, .kind = .{ .reg = .st7 } },
54945639 .unused,
54955640 .unused,
54965641 .unused,
......@@ -5499,96 +5644,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54995644 .unused,
55005645 .unused,
55015646 },
5502 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5647 .dst_temps = .{.mem},
55035648 .each = .{ .once = &.{
5504 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
5505 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5506 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
5507 .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ },
5508 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
5509 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },
5649 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
5650 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
5651 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5652 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
55105653 } },
55115654 }, .{
5512 .required_features = .{ .f16c, null, null, null },
5655 .required_features = .{ .avx, null, null, null },
55135656 .src_constraints = .{
5514 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5515 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5657 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5658 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5659 .any,
55165660 },
55175661 .patterns = &.{
5518 .{ .src = .{ .to_mem, .to_mem } },
5662 .{ .src = .{ .to_sse, .mem, .none } },
5663 .{ .src = .{ .to_sse, .to_sse, .none } },
55195664 },
5520 .extra_temps = .{
5521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5522 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5523 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5524 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
5525 .unused,
5526 .unused,
5527 .unused,
5528 .unused,
5529 .unused,
5665 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5666 .each = .{ .once = &.{
5667 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
5668 } },
5669 }, .{
5670 .required_features = .{ .sse2, null, null, null },
5671 .src_constraints = .{
5672 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5673 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5674 .any,
55305675 },
5531 .dst_temps = .{.mem},
5532 .clobbers = .{ .eflags = true },
5676 .patterns = &.{
5677 .{ .src = .{ .to_mut_sse, .mem, .none } },
5678 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5679 },
5680 .dst_temps = .{.{ .ref = .src0 }},
55335681 .each = .{ .once = &.{
5534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5535 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5536 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5537 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
5538 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
5539 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
5540 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
5541 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5682 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
55435683 } },
55445684 }, .{
55455685 .required_features = .{ .avx, null, null, null },
55465686 .src_constraints = .{
5547 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5548 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5687 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5688 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5689 .any,
55495690 },
55505691 .patterns = &.{
5551 .{ .src = .{ .to_mem, .to_mem } },
5552 },
5553 .call_frame = .{ .alignment = .@"16" },
5554 .extra_temps = .{
5555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5556 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5557 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5558 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5559 .unused,
5560 .unused,
5561 .unused,
5562 .unused,
5563 .unused,
5692 .{ .src = .{ .to_sse, .mem, .none } },
5693 .{ .src = .{ .to_sse, .to_sse, .none } },
55645694 },
5565 .dst_temps = .{.mem},
5566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5695 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
55675696 .each = .{ .once = &.{
5568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5569 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5570 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
5571 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
5572 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5573 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5574 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5697 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
55765698 } },
55775699 }, .{
5578 .required_features = .{ .sse4_1, null, null, null },
5700 .required_features = .{ .avx, null, null, null },
55795701 .src_constraints = .{
5580 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5581 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5702 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5703 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5704 .any,
55825705 },
55835706 .patterns = &.{
5584 .{ .src = .{ .to_mem, .to_mem } },
5707 .{ .src = .{ .to_mem, .to_mem, .none } },
55855708 },
5586 .call_frame = .{ .alignment = .@"16" },
55875709 .extra_temps = .{
55885710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5589 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5590 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5711 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
5712 .unused,
5713 .unused,
55925714 .unused,
55935715 .unused,
55945716 .unused,
......@@ -5596,103 +5718,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55965718 .unused,
55975719 },
55985720 .dst_temps = .{.mem},
5599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5721 .clobbers = .{ .eflags = true },
56005722 .each = .{ .once = &.{
5601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5602 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5603 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5604 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
5605 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
5606 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5607 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5608 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5724 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5725 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5726 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5727 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
56095728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56105729 } },
56115730 }, .{
56125731 .required_features = .{ .sse2, null, null, null },
56135732 .src_constraints = .{
5614 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5615 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5733 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5734 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5735 .any,
56165736 },
56175737 .patterns = &.{
5618 .{ .src = .{ .to_mem, .to_mem } },
5738 .{ .src = .{ .to_mem, .to_mem, .none } },
56195739 },
5620 .call_frame = .{ .alignment = .@"16" },
56215740 .extra_temps = .{
56225741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5623 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5624 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5626 .{ .type = .f16, .kind = .{ .reg = .ax } },
5742 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
5743 .unused,
5744 .unused,
5745 .unused,
56275746 .unused,
56285747 .unused,
56295748 .unused,
56305749 .unused,
56315750 },
56325751 .dst_temps = .{.mem},
5633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5752 .clobbers = .{ .eflags = true },
56345753 .each = .{ .once = &.{
5635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5636 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5637 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5638 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
5639 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
5640 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5641 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5642 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5643 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5755 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5756 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5757 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5758 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
56445759 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56455760 } },
56465761 }, .{
5647 .required_features = .{ .sse, null, null, null },
5762 .required_features = .{ .x87, null, null, null },
56485763 .src_constraints = .{
5649 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5650 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5764 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5765 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5766 .any,
56515767 },
56525768 .patterns = &.{
5653 .{ .src = .{ .to_mem, .to_mem } },
5769 .{ .src = .{ .to_mem, .to_mem, .none } },
56545770 },
5655 .call_frame = .{ .alignment = .@"16" },
56565771 .extra_temps = .{
56575772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5658 .{ .type = .f16, .kind = .{ .reg = .ax } },
5659 .{ .type = .f32, .kind = .mem },
5660 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5661 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5662 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
5773 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5774 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5775 .unused,
5776 .unused,
5777 .unused,
56635778 .unused,
56645779 .unused,
56655780 .unused,
56665781 },
56675782 .dst_temps = .{.mem},
5668 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
56695783 .each = .{ .once = &.{
5670 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5671 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
5672 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5673 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5674 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },
5675 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5676 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
5677 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
5678 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5679 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5680 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
5681 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5785 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5786 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5787 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5788 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5789 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
56825790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56835791 } },
56845792 }, .{
5685 .required_features = .{ .avx, null, null, null },
5793 .required_features = .{ .x87, null, null, null },
56865794 .src_constraints = .{
5687 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5688 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5795 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5796 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5797 .any,
56895798 },
56905799 .patterns = &.{
5691 .{ .src = .{ .to_sse, .to_sse } },
5800 .{ .src = .{ .mem, .mem, .none } },
56925801 },
56935802 .extra_temps = .{
5694 .{ .type = .f32, .kind = .{ .rc = .sse } },
5695 .unused,
5803 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5804 .{ .type = .f80, .kind = .{ .reg = .st7 } },
56965805 .unused,
56975806 .unused,
56985807 .unused,
......@@ -5701,39 +5810,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57015810 .unused,
57025811 .unused,
57035812 },
5704 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5705 .each = .{ .once = &.{
5706 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5707 .{ ._, .v_ss, .max, .dst0x, .src1x, .src0x, ._ },
5708 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5709 } },
5710 }, .{
5711 .required_features = .{ .sse4_1, null, null, null },
5712 .src_constraints = .{
5713 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5714 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5715 },
5716 .patterns = &.{
5717 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5718 },
5719 .dst_temps = .{.{ .rc = .sse }},
5813 .dst_temps = .{.{ .rc = .x87 }},
57205814 .each = .{ .once = &.{
5721 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
5722 .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ },
5723 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },
5724 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5815 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5816 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
5817 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5818 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57255819 } },
57265820 }, .{
5727 .required_features = .{ .sse, null, null, null },
5821 .required_features = .{ .x87, null, null, null },
57285822 .src_constraints = .{
5729 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5730 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5823 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5824 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5825 .any,
57315826 },
57325827 .patterns = &.{
5733 .{ .src = .{ .to_mut_sse, .to_sse } },
5828 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
57345829 },
57355830 .extra_temps = .{
5736 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5831 .{ .type = .f80, .kind = .{ .reg = .st7 } },
57375832 .unused,
57385833 .unused,
57395834 .unused,
......@@ -5743,26 +5838,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57435838 .unused,
57445839 .unused,
57455840 },
5746 .dst_temps = .{.{ .ref = .src0 }},
5841 .dst_temps = .{.{ .rc = .x87 }},
57475842 .each = .{ .once = &.{
5748 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
5749 .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ },
5750 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
5751 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5752 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5753 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5843 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5844 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
5845 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57545846 } },
57555847 }, .{
5756 .required_features = .{ .avx, null, null, null },
5848 .required_features = .{ .x87, null, null, null },
57575849 .src_constraints = .{
5758 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5759 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5850 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5851 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5852 .any,
57605853 },
57615854 .patterns = &.{
5762 .{ .src = .{ .to_sse, .to_sse } },
5855 .{ .src = .{ .mem, .to_x87, .none } },
5856 .{ .src = .{ .to_x87, .to_x87, .none } },
57635857 },
57645858 .extra_temps = .{
5765 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5859 .{ .type = .f80, .kind = .{ .reg = .st7 } },
57665860 .unused,
57675861 .unused,
57685862 .unused,
......@@ -5772,45 +5866,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57725866 .unused,
57735867 .unused,
57745868 },
5775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5776 .each = .{ .once = &.{
5777 .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5778 .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ },
5779 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5780 } },
5781 }, .{
5782 .required_features = .{ .sse4_1, null, null, null },
5783 .src_constraints = .{
5784 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5785 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5786 },
5787 .patterns = &.{
5788 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
5789 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
5790 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5791 },
5792 .dst_temps = .{.{ .rc = .sse }},
5869 .dst_temps = .{.{ .rc = .x87 }},
57935870 .each = .{ .once = &.{
5794 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
5795 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },
5796 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },
5797 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5871 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5872 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
5873 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
57985874 } },
57995875 }, .{
5800 .required_features = .{ .sse, null, null, null },
5876 .required_features = .{ .x87, null, null, null },
58015877 .src_constraints = .{
5802 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5803 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5878 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5879 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5880 .any,
58045881 },
58055882 .patterns = &.{
5806 .{ .src = .{ .to_mut_sse, .mem } },
5807 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5808 .{ .src = .{ .to_mut_sse, .to_sse } },
5883 .{ .src = .{ .to_mem, .to_mem, .none } },
58095884 },
58105885 .extra_temps = .{
5811 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5812 .unused,
5813 .unused,
5886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5887 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5888 .{ .type = .f80, .kind = .{ .reg = .st7 } },
58145889 .unused,
58155890 .unused,
58165891 .unused,
......@@ -5818,26 +5893,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58185893 .unused,
58195894 .unused,
58205895 },
5821 .dst_temps = .{.{ .ref = .src0 }},
5896 .dst_temps = .{.mem},
58225897 .each = .{ .once = &.{
5823 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
5824 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },
5825 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
5826 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5827 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5828 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5898 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5899 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5900 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5901 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5902 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5903 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5904 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
58295905 } },
58305906 }, .{
5831 .required_features = .{ .avx, null, null, null },
5907 .required_features = .{ .sse, null, null, null },
58325908 .src_constraints = .{
5833 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5834 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5909 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5910 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5911 .any,
58355912 },
58365913 .patterns = &.{
5837 .{ .src = .{ .to_sse, .to_sse } },
5914 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
58385915 },
5916 .call_frame = .{ .alignment = .@"16" },
58395917 .extra_temps = .{
5840 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
58415919 .unused,
58425920 .unused,
58435921 .unused,
......@@ -5847,26 +5925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58475925 .unused,
58485926 .unused,
58495927 },
5850 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5928 .dst_temps = .{.{ .ref = .src0 }},
5929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
58515930 .each = .{ .once = &.{
5852 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
5853 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
5854 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
5931 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
58555932 } },
58565933 }, .{
58575934 .required_features = .{ .avx, null, null, null },
58585935 .src_constraints = .{
5859 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5860 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5936 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5937 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5938 .any,
58615939 },
58625940 .patterns = &.{
5863 .{ .src = .{ .to_mem, .to_mem } },
5941 .{ .src = .{ .to_mem, .to_mem, .none } },
58645942 },
5943 .call_frame = .{ .alignment = .@"16" },
58655944 .extra_temps = .{
58665945 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5867 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5868 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5869 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5946 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5947 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5948 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
58705949 .unused,
58715950 .unused,
58725951 .unused,
......@@ -5874,32 +5953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58745953 .unused,
58755954 },
58765955 .dst_temps = .{.mem},
5877 .clobbers = .{ .eflags = true },
5956 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
58785957 .each = .{ .once = &.{
5879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5880 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5881 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
5882 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
5883 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
5884 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
5885 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5886 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5958 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5959 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5960 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5961 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5962 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5963 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
58875964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
58885965 } },
58895966 }, .{
5890 .required_features = .{ .sse4_1, null, null, null },
5967 .required_features = .{ .sse2, null, null, null },
58915968 .src_constraints = .{
5892 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5893 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5969 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5970 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5971 .any,
58945972 },
58955973 .patterns = &.{
5896 .{ .src = .{ .to_mem, .to_mem } },
5974 .{ .src = .{ .to_mem, .to_mem, .none } },
58975975 },
5976 .call_frame = .{ .alignment = .@"16" },
58985977 .extra_temps = .{
58995978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5900 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
5901 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5902 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5979 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5980 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
59035982 .unused,
59045983 .unused,
59055984 .unused,
......@@ -5907,33 +5986,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59075986 .unused,
59085987 },
59095988 .dst_temps = .{.mem},
5910 .clobbers = .{ .eflags = true },
5989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
59115990 .each = .{ .once = &.{
5912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5913 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5914 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5915 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
5916 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
5917 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
5918 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
5919 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5992 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5993 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5994 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5995 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
59205996 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
59215997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
59225998 } },
59235999 }, .{
59246000 .required_features = .{ .sse, null, null, null },
59256001 .src_constraints = .{
5926 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5927 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
6002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6003 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6004 .any,
59286005 },
59296006 .patterns = &.{
5930 .{ .src = .{ .to_mem, .to_mem } },
6007 .{ .src = .{ .to_mem, .to_mem, .none } },
59316008 },
6009 .call_frame = .{ .alignment = .@"16" },
59326010 .extra_temps = .{
59336011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5934 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5935 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5936 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
6012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
59376015 .unused,
59386016 .unused,
59396017 .unused,
......@@ -5941,712 +6019,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59416019 .unused,
59426020 },
59436021 .dst_temps = .{.mem},
5944 .clobbers = .{ .eflags = true },
6022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
59456023 .each = .{ .once = &.{
5946 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5947 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5948 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5949 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
5950 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
5951 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
5952 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
5953 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
5954 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
5955 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5956 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5957 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5958 } },
5959 }, .{
5960 .required_features = .{ .avx, null, null, null },
5961 .src_constraints = .{
5962 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5963 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5964 },
5965 .patterns = &.{
5966 .{ .src = .{ .to_sse, .to_sse } },
5967 },
5968 .extra_temps = .{
5969 .{ .type = .f64, .kind = .{ .rc = .sse } },
5970 .unused,
5971 .unused,
5972 .unused,
5973 .unused,
5974 .unused,
5975 .unused,
5976 .unused,
5977 .unused,
5978 },
5979 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5980 .each = .{ .once = &.{
5981 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
5982 .{ ._, .v_sd, .max, .dst0x, .src1x, .src0x, ._ },
5983 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
5984 } },
5985 }, .{
5986 .required_features = .{ .sse4_1, null, null, null },
5987 .src_constraints = .{
5988 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5989 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5990 },
5991 .patterns = &.{
5992 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
5993 },
5994 .dst_temps = .{.{ .rc = .sse }},
5995 .each = .{ .once = &.{
5996 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
5997 .{ ._, ._sd, .max, .dst0x, .src0x, ._, ._ },
5998 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
5999 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
6000 } },
6001 }, .{
6002 .required_features = .{ .sse2, null, null, null },
6003 .src_constraints = .{
6004 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6005 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6006 },
6007 .patterns = &.{
6008 .{ .src = .{ .to_mut_sse, .to_sse } },
6009 },
6010 .extra_temps = .{
6011 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6012 .unused,
6013 .unused,
6014 .unused,
6015 .unused,
6016 .unused,
6017 .unused,
6018 .unused,
6019 .unused,
6020 },
6021 .dst_temps = .{.{ .ref = .src0 }},
6022 .each = .{ .once = &.{
6023 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
6024 .{ ._, ._sd, .max, .tmp0x, .src0x, ._, ._ },
6025 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
6026 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
6027 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
6028 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
6029 } },
6030 }, .{
6031 .required_features = .{ .sse, null, null, null },
6032 .src_constraints = .{
6033 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6034 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6035 },
6036 .patterns = &.{
6037 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
6038 },
6039 .call_frame = .{ .alignment = .@"16" },
6040 .extra_temps = .{
6041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
6042 .unused,
6043 .unused,
6044 .unused,
6045 .unused,
6046 .unused,
6047 .unused,
6048 .unused,
6049 .unused,
6050 },
6051 .dst_temps = .{.{ .ref = .src0 }},
6052 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6053 .each = .{ .once = &.{
6054 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6055 } },
6056 }, .{
6057 .required_features = .{ .avx, null, null, null },
6058 .src_constraints = .{
6059 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6060 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6061 },
6062 .patterns = &.{
6063 .{ .src = .{ .to_sse, .to_sse } },
6064 },
6065 .extra_temps = .{
6066 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6067 .unused,
6068 .unused,
6069 .unused,
6070 .unused,
6071 .unused,
6072 .unused,
6073 .unused,
6074 .unused,
6075 },
6076 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6077 .each = .{ .once = &.{
6078 .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
6079 .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ },
6080 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
6081 } },
6082 }, .{
6083 .required_features = .{ .sse4_1, null, null, null },
6084 .src_constraints = .{
6085 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6086 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6087 },
6088 .patterns = &.{
6089 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
6090 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
6091 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
6092 },
6093 .dst_temps = .{.{ .rc = .sse }},
6094 .each = .{ .once = &.{
6095 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
6096 .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ },
6097 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
6098 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
6099 } },
6100 }, .{
6101 .required_features = .{ .sse2, null, null, null },
6102 .src_constraints = .{
6103 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6104 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6105 },
6106 .patterns = &.{
6107 .{ .src = .{ .to_mut_sse, .mem } },
6108 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
6109 .{ .src = .{ .to_mut_sse, .to_sse } },
6110 },
6111 .extra_temps = .{
6112 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6113 .unused,
6114 .unused,
6115 .unused,
6116 .unused,
6117 .unused,
6118 .unused,
6119 .unused,
6120 .unused,
6121 },
6122 .dst_temps = .{.{ .ref = .src0 }},
6123 .each = .{ .once = &.{
6124 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
6125 .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ },
6126 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
6127 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
6128 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
6129 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
6130 } },
6131 }, .{
6132 .required_features = .{ .avx, null, null, null },
6133 .src_constraints = .{
6134 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6135 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6136 },
6137 .patterns = &.{
6138 .{ .src = .{ .to_sse, .to_sse } },
6139 },
6140 .extra_temps = .{
6141 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6142 .unused,
6143 .unused,
6144 .unused,
6145 .unused,
6146 .unused,
6147 .unused,
6148 .unused,
6149 .unused,
6150 },
6151 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6152 .each = .{ .once = &.{
6153 .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
6154 .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ },
6155 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
6156 } },
6157 }, .{
6158 .required_features = .{ .avx, null, null, null },
6159 .src_constraints = .{
6160 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6161 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6162 },
6163 .patterns = &.{
6164 .{ .src = .{ .to_mem, .to_mem } },
6165 },
6166 .extra_temps = .{
6167 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6168 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6169 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6170 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6171 .unused,
6172 .unused,
6173 .unused,
6174 .unused,
6175 .unused,
6176 },
6177 .dst_temps = .{.mem},
6178 .clobbers = .{ .eflags = true },
6179 .each = .{ .once = &.{
6180 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6181 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
6182 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
6183 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
6184 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
6185 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
6186 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
6187 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6188 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6189 } },
6190 }, .{
6191 .required_features = .{ .sse4_1, null, null, null },
6192 .src_constraints = .{
6193 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6194 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6195 },
6196 .patterns = &.{
6197 .{ .src = .{ .to_mem, .to_mem } },
6198 },
6199 .extra_temps = .{
6200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6201 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
6202 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6203 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6204 .unused,
6205 .unused,
6206 .unused,
6207 .unused,
6208 .unused,
6209 },
6210 .dst_temps = .{.mem},
6211 .clobbers = .{ .eflags = true },
6212 .each = .{ .once = &.{
6213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6214 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6215 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6216 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
6217 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
6218 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
6219 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
6220 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
6221 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6223 } },
6224 }, .{
6225 .required_features = .{ .sse2, null, null, null },
6226 .src_constraints = .{
6227 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6228 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6229 },
6230 .patterns = &.{
6231 .{ .src = .{ .to_mem, .to_mem } },
6232 },
6233 .extra_temps = .{
6234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6235 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6236 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6237 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6238 .unused,
6239 .unused,
6240 .unused,
6241 .unused,
6242 .unused,
6243 },
6244 .dst_temps = .{.mem},
6245 .clobbers = .{ .eflags = true },
6246 .each = .{ .once = &.{
6247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6248 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6249 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6250 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
6251 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
6252 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
6253 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
6254 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
6255 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
6256 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6257 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6259 } },
6260 }, .{
6261 .required_features = .{ .sse, null, null, null },
6262 .src_constraints = .{
6263 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6264 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6265 },
6266 .patterns = &.{
6267 .{ .src = .{ .to_mem, .to_mem } },
6268 },
6269 .call_frame = .{ .alignment = .@"16" },
6270 .extra_temps = .{
6271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6272 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6273 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
6274 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
6275 .unused,
6276 .unused,
6277 .unused,
6278 .unused,
6279 .unused,
6280 },
6281 .dst_temps = .{.mem},
6282 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6283 .each = .{ .once = &.{
6284 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6285 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
6286 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
6287 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
6288 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
6024 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6025 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6026 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
62896027 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6290 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
6291 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6293 } },
6294 }, .{
6295 .required_features = .{ .x87, .cmov, null, null },
6296 .src_constraints = .{
6297 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6298 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6299 },
6300 .patterns = &.{
6301 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6302 .{ .src = .{ .mem, .to_x87 } },
6303 .{ .src = .{ .to_x87, .to_x87 } },
6304 },
6305 .extra_temps = .{
6306 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6307 .unused,
6308 .unused,
6309 .unused,
6310 .unused,
6311 .unused,
6312 .unused,
6313 .unused,
6314 .unused,
6315 },
6316 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6317 .clobbers = .{ .eflags = true },
6318 .each = .{ .once = &.{
6319 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6320 .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ },
6321 .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ },
6322 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6323 .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ },
6324 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6325 .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ },
6326 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
6327 } },
6328 }, .{
6329 .required_features = .{ .sahf, .x87, null, null },
6330 .src_constraints = .{
6331 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6332 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6333 },
6334 .patterns = &.{
6335 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6336 .{ .src = .{ .mem, .to_x87 } },
6337 .{ .src = .{ .to_x87, .to_x87 } },
6338 },
6339 .extra_temps = .{
6340 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6341 .{ .type = .u8, .kind = .{ .reg = .ah } },
6342 .unused,
6343 .unused,
6344 .unused,
6345 .unused,
6346 .unused,
6347 .unused,
6348 .unused,
6349 },
6350 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6351 .clobbers = .{ .eflags = true },
6352 .each = .{ .once = &.{
6353 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6354 .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ },
6355 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6356 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6357 .{ ._, ._p, .j, .@"0f", ._, ._, ._ },
6358 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6359 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
6360 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6361 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6362 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6363 .{ ._, ._b, .j, .@"1f", ._, ._, ._ },
6364 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
6365 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6366 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
6367 } },
6368 }, .{
6369 .required_features = .{ .x87, null, null, null },
6370 .src_constraints = .{
6371 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6372 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6373 },
6374 .patterns = &.{
6375 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
6376 .{ .src = .{ .mem, .to_x87 } },
6377 .{ .src = .{ .to_x87, .to_x87 } },
6378 },
6379 .extra_temps = .{
6380 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6381 .{ .type = .u8, .kind = .{ .reg = .ah } },
6382 .unused,
6383 .unused,
6384 .unused,
6385 .unused,
6386 .unused,
6387 .unused,
6388 .unused,
6389 },
6390 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
6391 .clobbers = .{ .eflags = true },
6392 .each = .{ .once = &.{
6393 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6394 .{ ._, .f_, .xam, ._, ._, ._, ._ },
6395 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6396 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
6397 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
6398 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6399 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
6400 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
6401 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
6402 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
6403 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
6404 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
6405 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6406 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
6407 } },
6408 }, .{
6409 .required_features = .{ .x87, .cmov, null, null },
6410 .src_constraints = .{
6411 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6412 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6413 },
6414 .patterns = &.{
6415 .{ .src = .{ .to_mem, .to_mem } },
6416 },
6417 .extra_temps = .{
6418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6419 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6420 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6421 .unused,
6422 .unused,
6423 .unused,
6424 .unused,
6425 .unused,
6426 .unused,
6427 },
6428 .dst_temps = .{.mem},
6429 .clobbers = .{ .eflags = true },
6430 .each = .{ .once = &.{
6431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6432 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6433 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6434 .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ },
6435 .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ },
6436 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6437 .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ },
6438 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6439 .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ },
6440 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6441 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6444 } },
6445 }, .{
6446 .required_features = .{ .sahf, .x87, null, null },
6447 .src_constraints = .{
6448 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6449 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6450 },
6451 .patterns = &.{
6452 .{ .src = .{ .to_mem, .to_mem } },
6453 },
6454 .extra_temps = .{
6455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6456 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6457 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6458 .{ .type = .u8, .kind = .{ .reg = .ah } },
6459 .unused,
6460 .unused,
6461 .unused,
6462 .unused,
6463 .unused,
6464 },
6465 .dst_temps = .{.mem},
6466 .clobbers = .{ .eflags = true },
6467 .each = .{ .once = &.{
6468 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6469 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6470 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6471 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
6472 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6473 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6474 .{ ._, ._p, .j, .@"1f", ._, ._, ._ },
6475 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6476 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
6477 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6478 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6479 .{ ._, ._, .sahf, ._, ._, ._, ._ },
6480 .{ ._, ._b, .j, .@"2f", ._, ._, ._ },
6481 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
6482 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
6483 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6484 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6485 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6487 } },
6488 }, .{
6489 .required_features = .{ .x87, null, null, null },
6490 .src_constraints = .{
6491 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6492 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6493 },
6494 .patterns = &.{
6495 .{ .src = .{ .to_mem, .to_mem } },
6496 },
6497 .extra_temps = .{
6498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6499 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6500 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6501 .{ .type = .u8, .kind = .{ .reg = .ah } },
6502 .unused,
6503 .unused,
6504 .unused,
6505 .unused,
6506 .unused,
6507 },
6508 .dst_temps = .{.mem},
6509 .clobbers = .{ .eflags = true },
6510 .each = .{ .once = &.{
6511 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6512 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
6513 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6514 .{ ._, .f_, .xam, ._, ._, ._, ._ },
6515 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6516 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
6517 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
6518 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6519 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
6520 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
6521 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
6522 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
6523 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
6524 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
6525 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
6526 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
6527 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
6528 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6529 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6530 } },
6531 }, .{
6532 .required_features = .{ .sse, null, null, null },
6533 .src_constraints = .{
6534 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6535 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
6536 },
6537 .patterns = &.{
6538 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
6539 },
6540 .call_frame = .{ .alignment = .@"16" },
6541 .extra_temps = .{
6542 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6543 .unused,
6544 .unused,
6545 .unused,
6546 .unused,
6547 .unused,
6548 .unused,
6549 .unused,
6550 .unused,
6551 },
6552 .dst_temps = .{.{ .ref = .src0 }},
6553 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6554 .each = .{ .once = &.{
6555 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6556 } },
6557 }, .{
6558 .required_features = .{ .avx, null, null, null },
6559 .src_constraints = .{
6560 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6561 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6562 },
6563 .patterns = &.{
6564 .{ .src = .{ .to_mem, .to_mem } },
6565 },
6566 .call_frame = .{ .alignment = .@"16" },
6567 .extra_temps = .{
6568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6569 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6570 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6572 .unused,
6573 .unused,
6574 .unused,
6575 .unused,
6576 .unused,
6577 },
6578 .dst_temps = .{.mem},
6579 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6580 .each = .{ .once = &.{
6581 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6582 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6583 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6584 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6585 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6586 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6588 } },
6589 }, .{
6590 .required_features = .{ .sse2, null, null, null },
6591 .src_constraints = .{
6592 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6593 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6594 },
6595 .patterns = &.{
6596 .{ .src = .{ .to_mem, .to_mem } },
6597 },
6598 .call_frame = .{ .alignment = .@"16" },
6599 .extra_temps = .{
6600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6601 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6602 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6604 .unused,
6605 .unused,
6606 .unused,
6607 .unused,
6608 .unused,
6609 },
6610 .dst_temps = .{.mem},
6611 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6612 .each = .{ .once = &.{
6613 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6614 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6615 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6616 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6617 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6618 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6620 } },
6621 }, .{
6622 .required_features = .{ .sse, null, null, null },
6623 .src_constraints = .{
6624 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6625 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6626 },
6627 .patterns = &.{
6628 .{ .src = .{ .to_mem, .to_mem } },
6629 },
6630 .call_frame = .{ .alignment = .@"16" },
6631 .extra_temps = .{
6632 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6633 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
6634 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
6635 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
6636 .unused,
6637 .unused,
6638 .unused,
6639 .unused,
6640 .unused,
6641 },
6642 .dst_temps = .{.mem},
6643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6644 .each = .{ .once = &.{
6645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6646 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6647 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6648 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6649 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6028 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
66506029 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
66516030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
66526031 } },
......@@ -6661,455 +6040,7677 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
66616040 };
66626041 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
66636042 },
6664 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
6043 .div_trunc, .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else fallback: {
66656044 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
6045 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, air_tag);
66666046 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
66676047 var res: [1]Temp = undefined;
6668 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
6669 .required_features = .{ .cmov, null, null, null },
6670 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
6671 .patterns = &.{
6672 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6673 },
6674 .dst_temps = .{.{ .ref = .src0 }},
6675 .clobbers = .{ .eflags = true },
6676 .each = .{ .once = &.{
6677 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6678 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
6679 } },
6680 }, .{
6681 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
6682 .patterns = &.{
6683 .{ .src = .{ .to_mut_gpr, .mem } },
6684 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6685 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6686 },
6687 .dst_temps = .{.{ .ref = .src0 }},
6688 .clobbers = .{ .eflags = true },
6689 .each = .{ .once = &.{
6690 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6691 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6692 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
6693 } },
6694 }, .{
6695 .required_features = .{ .cmov, null, null, null },
6696 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
6697 .patterns = &.{
6698 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6699 },
6700 .dst_temps = .{.{ .ref = .src0 }},
6701 .clobbers = .{ .eflags = true },
6702 .each = .{ .once = &.{
6703 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6704 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
6705 } },
6706 }, .{
6707 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
6708 .patterns = &.{
6709 .{ .src = .{ .to_mut_gpr, .mem } },
6710 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6711 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6712 },
6713 .dst_temps = .{.{ .ref = .src0 }},
6714 .clobbers = .{ .eflags = true },
6715 .each = .{ .once = &.{
6716 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
6717 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6718 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
6719 } },
6720 }, .{
6721 .required_features = .{ .cmov, null, null, null },
6722 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
6723 .patterns = &.{
6724 .{ .src = .{ .to_mut_gpr, .mem } },
6725 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6726 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6727 },
6728 .dst_temps = .{.{ .ref = .src0 }},
6729 .clobbers = .{ .eflags = true },
6730 .each = .{ .once = &.{
6731 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6732 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },
6733 } },
6734 }, .{
6735 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
6736 .patterns = &.{
6737 .{ .src = .{ .to_mut_gpr, .mem } },
6738 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6739 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6740 },
6741 .dst_temps = .{.{ .ref = .src0 }},
6742 .clobbers = .{ .eflags = true },
6743 .each = .{ .once = &.{
6744 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6745 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6746 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
6747 } },
6748 }, .{
6749 .required_features = .{ .cmov, null, null, null },
6750 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
6751 .patterns = &.{
6752 .{ .src = .{ .to_mut_gpr, .mem } },
6753 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6754 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6755 },
6756 .dst_temps = .{.{ .ref = .src0 }},
6757 .clobbers = .{ .eflags = true },
6758 .each = .{ .once = &.{
6759 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6760 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },
6761 } },
6762 }, .{
6763 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
6764 .patterns = &.{
6765 .{ .src = .{ .to_mut_gpr, .mem } },
6766 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6767 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6768 },
6769 .dst_temps = .{.{ .ref = .src0 }},
6770 .clobbers = .{ .eflags = true },
6771 .each = .{ .once = &.{
6772 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
6773 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6774 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
6775 } },
6776 }, .{
6777 .required_features = .{ .cmov, null, null, null },
6778 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
6779 .patterns = &.{
6780 .{ .src = .{ .to_mut_gpr, .mem } },
6781 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6782 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6783 },
6784 .dst_temps = .{.{ .ref = .src0 }},
6785 .clobbers = .{ .eflags = true },
6786 .each = .{ .once = &.{
6787 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6788 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
6789 } },
6790 }, .{
6791 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
6792 .patterns = &.{
6793 .{ .src = .{ .to_mut_gpr, .mem } },
6794 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6795 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6796 },
6797 .dst_temps = .{.{ .ref = .src0 }},
6798 .clobbers = .{ .eflags = true },
6799 .each = .{ .once = &.{
6800 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6801 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6802 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
6803 } },
6804 }, .{
6805 .required_features = .{ .cmov, null, null, null },
6806 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
6807 .patterns = &.{
6808 .{ .src = .{ .to_mut_gpr, .mem } },
6809 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6810 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6811 },
6812 .dst_temps = .{.{ .ref = .src0 }},
6813 .clobbers = .{ .eflags = true },
6814 .each = .{ .once = &.{
6815 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6816 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
6817 } },
6818 }, .{
6819 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
6820 .patterns = &.{
6821 .{ .src = .{ .to_mut_gpr, .mem } },
6822 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6823 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6824 },
6825 .dst_temps = .{.{ .ref = .src0 }},
6826 .clobbers = .{ .eflags = true },
6827 .each = .{ .once = &.{
6828 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
6829 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6830 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
6831 } },
6832 }, .{
6833 .required_features = .{ .@"64bit", .cmov, null, null },
6834 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
6835 .patterns = &.{
6836 .{ .src = .{ .to_mut_gpr, .mem } },
6837 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6838 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6839 },
6840 .dst_temps = .{.{ .ref = .src0 }},
6841 .clobbers = .{ .eflags = true },
6842 .each = .{ .once = &.{
6843 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6844 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },
6845 } },
6846 }, .{
6847 .required_features = .{ .@"64bit", null, null, null },
6848 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
6849 .patterns = &.{
6850 .{ .src = .{ .to_mut_gpr, .mem } },
6851 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6852 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6853 },
6854 .dst_temps = .{.{ .ref = .src0 }},
6855 .clobbers = .{ .eflags = true },
6856 .each = .{ .once = &.{
6857 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6858 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6859 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
6860 } },
6861 }, .{
6862 .required_features = .{ .@"64bit", .cmov, null, null },
6863 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
6864 .patterns = &.{
6865 .{ .src = .{ .to_mut_gpr, .mem } },
6866 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6867 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6868 },
6869 .dst_temps = .{.{ .ref = .src0 }},
6870 .clobbers = .{ .eflags = true },
6871 .each = .{ .once = &.{
6872 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6873 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },
6874 } },
6875 }, .{
6876 .required_features = .{ .@"64bit", null, null, null },
6877 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
6878 .patterns = &.{
6879 .{ .src = .{ .to_mut_gpr, .mem } },
6880 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
6881 .{ .src = .{ .to_mut_gpr, .to_gpr } },
6882 },
6883 .dst_temps = .{.{ .ref = .src0 }},
6884 .clobbers = .{ .eflags = true },
6885 .each = .{ .once = &.{
6886 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
6887 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
6888 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
6889 } },
6890 }, .{
6891 .required_features = .{ .@"64bit", .cmov, null, null },
6892 .src_constraints = .{ .any_signed_int, .any_signed_int },
6893 .patterns = &.{
6894 .{ .src = .{ .to_mem, .to_mem } },
6895 },
6896 .extra_temps = .{
6897 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6898 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6899 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6900 .unused,
6901 .unused,
6902 .unused,
6903 .unused,
6904 .unused,
6905 .unused,
6906 },
6907 .dst_temps = .{.mem},
6908 .clobbers = .{ .eflags = true },
6909 .each = .{ .once = &.{
6910 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
6911 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6912 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6913 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6914 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6915 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6916 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
6917 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
6918 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6919 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
6920 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },
6921 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6922 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6923 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6924 } },
6925 }, .{
6926 .required_features = .{ .@"64bit", null, null, null },
6927 .src_constraints = .{ .any_signed_int, .any_signed_int },
6928 .patterns = &.{
6929 .{ .src = .{ .to_mem, .to_mem } },
6930 },
6931 .extra_temps = .{
6932 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6933 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6934 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6935 .unused,
6936 .unused,
6937 .unused,
6938 .unused,
6939 .unused,
6940 .unused,
6941 },
6942 .dst_temps = .{.mem},
6943 .clobbers = .{ .eflags = true },
6944 .each = .{ .once = &.{
6945 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
6946 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6947 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6948 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
6949 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6950 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6951 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
6952 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
6953 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6954 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
6955 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
6956 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6957 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6958 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6959 } },
6960 }, .{
6961 .required_features = .{ .@"64bit", .cmov, null, null },
6962 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
6963 .patterns = &.{
6964 .{ .src = .{ .to_mem, .to_mem } },
6965 },
6966 .extra_temps = .{
6967 .{ .type = .isize, .kind = .{ .reg = .rsi } },
6968 .{ .type = .u64, .kind = .{ .reg = .rdi } },
6969 .{ .type = .u64, .kind = .{ .reg = .rcx } },
6970 .unused,
6971 .unused,
6972 .unused,
6973 .unused,
6974 .unused,
6975 .unused,
6976 },
6977 .dst_temps = .{.mem},
6978 .clobbers = .{ .eflags = true },
6979 .each = .{ .once = &.{
6980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
6981 .{ ._, ._c, .cl, ._, ._, ._, ._ },
6982 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
6983 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
6984 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
6985 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
6986 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
6987 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
6988 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },
6989 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
6990 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
6991 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
6992 } },
6993 }, .{
6994 .required_features = .{ .@"64bit", null, null, null },
6995 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },
6996 .patterns = &.{
6997 .{ .src = .{ .to_mem, .to_mem } },
6998 },
6999 .extra_temps = .{
7000 .{ .type = .isize, .kind = .{ .reg = .rsi } },
7001 .{ .type = .u64, .kind = .{ .reg = .rdi } },
7002 .{ .type = .u64, .kind = .{ .reg = .rcx } },
7003 .unused,
7004 .unused,
7005 .unused,
7006 .unused,
7007 .unused,
7008 .unused,
7009 },
7010 .dst_temps = .{.mem},
7011 .clobbers = .{ .eflags = true },
7012 .each = .{ .once = &.{
7013 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
7014 .{ ._, ._c, .cl, ._, ._, ._, ._ },
7015 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
7016 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
7017 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
7018 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
7019 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
7020 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
7021 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
7022 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
7023 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
7024 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
7025 } },
7026 }, .{
7027 .required_features = .{ .avx, null, null, null },
7028 .src_constraints = .{
7029 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7030 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7031 },
7032 .patterns = &.{
7033 .{ .src = .{ .to_sse, .mem } },
7034 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7035 .{ .src = .{ .to_sse, .to_sse } },
7036 },
7037 .dst_temps = .{.{ .rc = .sse }},
7038 .each = .{ .once = &.{
7039 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },
7040 } },
7041 }, .{
7042 .required_features = .{ .sse4_1, null, null, null },
7043 .src_constraints = .{
7044 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7045 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7046 },
7047 .patterns = &.{
7048 .{ .src = .{ .to_mut_sse, .mem } },
7049 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7050 .{ .src = .{ .to_mut_sse, .to_sse } },
7051 },
7052 .dst_temps = .{.{ .ref = .src0 }},
7053 .each = .{ .once = &.{
7054 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },
7055 } },
7056 }, .{
7057 .required_features = .{ .sse2, null, null, null },
7058 .src_constraints = .{
7059 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7060 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
7061 },
7062 .patterns = &.{
7063 .{ .src = .{ .to_mut_sse, .mem } },
7064 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7065 .{ .src = .{ .to_mut_sse, .to_sse } },
7066 },
7067 .dst_temps = .{.{ .rc = .sse }},
7068 .each = .{ .once = &.{
7069 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },
7070 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },
7071 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
7072 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
7073 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
7074 } },
7075 }, .{
7076 .required_features = .{ .avx2, null, null, null },
7077 .src_constraints = .{
7078 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
7079 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
7080 },
7081 .patterns = &.{
7082 .{ .src = .{ .to_sse, .mem } },
7083 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7084 .{ .src = .{ .to_sse, .to_sse } },
7085 },
7086 .dst_temps = .{.{ .rc = .sse }},
7087 .each = .{ .once = &.{
7088 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },
7089 } },
7090 }, .{
7091 .required_features = .{ .avx2, null, null, null },
7092 .src_constraints = .{
7093 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
7094 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
7095 },
7096 .patterns = &.{
7097 .{ .src = .{ .to_mem, .to_mem } },
7098 },
7099 .extra_temps = .{
7100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7101 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
7102 .unused,
7103 .unused,
7104 .unused,
7105 .unused,
7106 .unused,
7107 .unused,
7108 .unused,
7109 },
7110 .dst_temps = .{.mem},
7111 .clobbers = .{ .eflags = true },
7112 .each = .{ .once = &.{
6048 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
6049 else => unreachable,
6050 .div_trunc => .zero,
6051 .div_floor => .down,
6052 })) {
6053 else => unreachable,
6054 inline .zero, .down => |direction| comptime &.{ .{
6055 .required_features = .{ .f16c, null, null, null },
6056 .src_constraints = .{
6057 .{ .scalar_float = .{ .of = .word, .is = .word } },
6058 .{ .scalar_float = .{ .of = .word, .is = .word } },
6059 .any,
6060 },
6061 .patterns = &.{
6062 .{ .src = .{ .to_sse, .to_sse, .none } },
6063 },
6064 .extra_temps = .{
6065 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6066 .unused,
6067 .unused,
6068 .unused,
6069 .unused,
6070 .unused,
6071 .unused,
6072 .unused,
6073 .unused,
6074 },
6075 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6076 .each = .{ .once = &.{
6077 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6078 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6079 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
6080 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6081 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6082 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6083 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6084 } },
6085 }, .{
6086 .required_features = .{ .sse, null, null, null },
6087 .src_constraints = .{
6088 .{ .scalar_float = .{ .of = .word, .is = .word } },
6089 .{ .scalar_float = .{ .of = .word, .is = .word } },
6090 .any,
6091 },
6092 .patterns = &.{
6093 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6094 },
6095 .call_frame = .{ .alignment = .@"16" },
6096 .extra_temps = .{
6097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6099 else => unreachable,
6100 .zero => "__trunch",
6101 .down => "__floorh",
6102 } } } },
6103 .unused,
6104 .unused,
6105 .unused,
6106 .unused,
6107 .unused,
6108 .unused,
6109 .unused,
6110 },
6111 .dst_temps = .{.{ .ref = .src0 }},
6112 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6113 .each = .{ .once = &.{
6114 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6115 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6116 } },
6117 }, .{
6118 .required_features = .{ .f16c, null, null, null },
6119 .src_constraints = .{
6120 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6121 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6122 .any,
6123 },
6124 .patterns = &.{
6125 .{ .src = .{ .mem, .mem, .none } },
6126 .{ .src = .{ .to_sse, .mem, .none } },
6127 .{ .src = .{ .mem, .to_sse, .none } },
6128 .{ .src = .{ .to_sse, .to_sse, .none } },
6129 },
6130 .extra_temps = .{
6131 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6132 .unused,
6133 .unused,
6134 .unused,
6135 .unused,
6136 .unused,
6137 .unused,
6138 .unused,
6139 .unused,
6140 },
6141 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6142 .each = .{ .once = &.{
6143 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6144 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6145 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
6146 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6147 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6148 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6149 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6150 } },
6151 }, .{
6152 .required_features = .{ .f16c, null, null, null },
6153 .src_constraints = .{
6154 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6155 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6156 .any,
6157 },
6158 .patterns = &.{
6159 .{ .src = .{ .mem, .mem, .none } },
6160 .{ .src = .{ .to_sse, .mem, .none } },
6161 .{ .src = .{ .mem, .to_sse, .none } },
6162 .{ .src = .{ .to_sse, .to_sse, .none } },
6163 },
6164 .extra_temps = .{
6165 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6166 .unused,
6167 .unused,
6168 .unused,
6169 .unused,
6170 .unused,
6171 .unused,
6172 .unused,
6173 .unused,
6174 },
6175 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6176 .each = .{ .once = &.{
6177 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
6178 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
6179 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
6180 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6181 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
6182 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6183 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6184 } },
6185 }, .{
6186 .required_features = .{ .f16c, null, null, null },
6187 .src_constraints = .{
6188 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6189 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6190 .any,
6191 },
6192 .patterns = &.{
6193 .{ .src = .{ .to_mem, .to_mem, .none } },
6194 },
6195 .extra_temps = .{
6196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6197 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6198 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6199 .unused,
6200 .unused,
6201 .unused,
6202 .unused,
6203 .unused,
6204 .unused,
6205 },
6206 .dst_temps = .{.mem},
6207 .clobbers = .{ .eflags = true },
6208 .each = .{ .once = &.{
6209 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6210 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6211 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6212 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
6213 .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ },
6214 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
6215 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6216 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
6217 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6218 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6219 } },
6220 }, .{
6221 .required_features = .{ .avx, null, null, null },
6222 .src_constraints = .{
6223 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6224 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6225 .any,
6226 },
6227 .patterns = &.{
6228 .{ .src = .{ .to_mem, .to_mem, .none } },
6229 },
6230 .call_frame = .{ .alignment = .@"16" },
6231 .extra_temps = .{
6232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6233 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6234 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6237 else => unreachable,
6238 .zero => "__trunch",
6239 .down => "__floorh",
6240 } } } },
6241 .unused,
6242 .unused,
6243 .unused,
6244 .unused,
6245 },
6246 .dst_temps = .{.mem},
6247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6248 .each = .{ .once = &.{
6249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6250 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
6251 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
6252 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
6253 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6254 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6255 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6256 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6258 } },
6259 }, .{
6260 .required_features = .{ .sse4_1, null, null, null },
6261 .src_constraints = .{
6262 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6263 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6264 .any,
6265 },
6266 .patterns = &.{
6267 .{ .src = .{ .to_mem, .to_mem, .none } },
6268 },
6269 .call_frame = .{ .alignment = .@"16" },
6270 .extra_temps = .{
6271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6272 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6273 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6274 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6276 else => unreachable,
6277 .zero => "__trunch",
6278 .down => "__floorh",
6279 } } } },
6280 .unused,
6281 .unused,
6282 .unused,
6283 .unused,
6284 },
6285 .dst_temps = .{.mem},
6286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6287 .each = .{ .once = &.{
6288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6289 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6290 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6291 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6292 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6293 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6294 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6295 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6296 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6298 } },
6299 }, .{
6300 .required_features = .{ .sse2, null, null, null },
6301 .src_constraints = .{
6302 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6303 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6304 .any,
6305 },
6306 .patterns = &.{
6307 .{ .src = .{ .to_mem, .to_mem, .none } },
6308 },
6309 .call_frame = .{ .alignment = .@"16" },
6310 .extra_temps = .{
6311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6313 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6314 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6316 else => unreachable,
6317 .zero => "__trunch",
6318 .down => "__floorh",
6319 } } } },
6320 .{ .type = .f16, .kind = .{ .reg = .ax } },
6321 .unused,
6322 .unused,
6323 .unused,
6324 },
6325 .dst_temps = .{.mem},
6326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6327 .each = .{ .once = &.{
6328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6329 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6330 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6331 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6332 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6333 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6334 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6335 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
6336 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
6337 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6338 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6339 } },
6340 }, .{
6341 .required_features = .{ .sse, null, null, null },
6342 .src_constraints = .{
6343 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6344 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6345 .any,
6346 },
6347 .patterns = &.{
6348 .{ .src = .{ .to_mem, .to_mem, .none } },
6349 },
6350 .call_frame = .{ .alignment = .@"16" },
6351 .extra_temps = .{
6352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6353 .{ .type = .f16, .kind = .{ .reg = .ax } },
6354 .{ .type = .f32, .kind = .mem },
6355 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6356 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6358 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6359 else => unreachable,
6360 .zero => "__trunch",
6361 .down => "__floorh",
6362 } } } },
6363 .unused,
6364 .unused,
6365 },
6366 .dst_temps = .{.mem},
6367 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6368 .each = .{ .once = &.{
6369 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6370 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
6371 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6372 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
6373 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
6374 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6375 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
6376 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
6377 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
6378 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
6379 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
6380 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
6381 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6383 } },
6384 }, .{
6385 .required_features = .{ .avx, null, null, null },
6386 .src_constraints = .{
6387 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6388 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6389 .any,
6390 },
6391 .patterns = &.{
6392 .{ .src = .{ .to_sse, .mem, .none } },
6393 .{ .src = .{ .to_sse, .to_sse, .none } },
6394 },
6395 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6396 .each = .{ .once = &.{
6397 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
6398 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6399 } },
6400 }, .{
6401 .required_features = .{ .sse4_1, null, null, null },
6402 .src_constraints = .{
6403 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6404 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6405 .any,
6406 },
6407 .patterns = &.{
6408 .{ .src = .{ .to_mut_sse, .mem, .none } },
6409 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6410 },
6411 .dst_temps = .{.{ .ref = .src0 }},
6412 .each = .{ .once = &.{
6413 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
6414 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6415 } },
6416 }, .{
6417 .required_features = .{ .sse, null, null, null },
6418 .src_constraints = .{
6419 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6420 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
6421 .any,
6422 },
6423 .patterns = &.{
6424 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
6425 },
6426 .call_frame = .{ .alignment = .@"16" },
6427 .extra_temps = .{
6428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6429 else => unreachable,
6430 .zero => "truncf",
6431 .down => "floorf",
6432 } } } },
6433 .unused,
6434 .unused,
6435 .unused,
6436 .unused,
6437 .unused,
6438 .unused,
6439 .unused,
6440 .unused,
6441 },
6442 .dst_temps = .{.{ .ref = .src0 }},
6443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6444 .each = .{ .once = &.{
6445 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
6446 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6447 } },
6448 }, .{
6449 .required_features = .{ .avx, null, null, null },
6450 .src_constraints = .{
6451 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6452 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6453 .any,
6454 },
6455 .patterns = &.{
6456 .{ .src = .{ .to_sse, .mem, .none } },
6457 .{ .src = .{ .to_sse, .to_sse, .none } },
6458 },
6459 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6460 .each = .{ .once = &.{
6461 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
6462 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6463 } },
6464 }, .{
6465 .required_features = .{ .sse4_1, null, null, null },
6466 .src_constraints = .{
6467 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6468 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
6469 .any,
6470 },
6471 .patterns = &.{
6472 .{ .src = .{ .to_mut_sse, .mem, .none } },
6473 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6474 },
6475 .dst_temps = .{.{ .ref = .src0 }},
6476 .each = .{ .once = &.{
6477 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
6478 .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6479 } },
6480 }, .{
6481 .required_features = .{ .sse, null, null, null },
6482 .src_constraints = .{
6483 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
6484 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
6485 .any,
6486 },
6487 .patterns = &.{
6488 .{ .src = .{ .to_mem, .to_mem, .none } },
6489 },
6490 .call_frame = .{ .alignment = .@"16" },
6491 .extra_temps = .{
6492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6493 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
6494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6495 else => unreachable,
6496 .zero => "truncf",
6497 .down => "floorf",
6498 } } } },
6499 .unused,
6500 .unused,
6501 .unused,
6502 .unused,
6503 .unused,
6504 .unused,
6505 },
6506 .dst_temps = .{.mem},
6507 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6508 .each = .{ .once = &.{
6509 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6510 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
6511 .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
6512 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6513 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6514 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
6515 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6516 } },
6517 }, .{
6518 .required_features = .{ .avx, null, null, null },
6519 .src_constraints = .{
6520 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
6521 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
6522 .any,
6523 },
6524 .patterns = &.{
6525 .{ .src = .{ .to_sse, .mem, .none } },
6526 .{ .src = .{ .to_sse, .to_sse, .none } },
6527 },
6528 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6529 .each = .{ .once = &.{
6530 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
6531 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6532 } },
6533 }, .{
6534 .required_features = .{ .avx, null, null, null },
6535 .src_constraints = .{
6536 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
6537 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
6538 .any,
6539 },
6540 .patterns = &.{
6541 .{ .src = .{ .to_mem, .to_mem, .none } },
6542 },
6543 .extra_temps = .{
6544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6545 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6546 .unused,
6547 .unused,
6548 .unused,
6549 .unused,
6550 .unused,
6551 .unused,
6552 .unused,
6553 },
6554 .dst_temps = .{.mem},
6555 .clobbers = .{ .eflags = true },
6556 .each = .{ .once = &.{
6557 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6558 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
6559 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
6560 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6561 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
6562 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6563 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6564 } },
6565 }, .{
6566 .required_features = .{ .sse4_1, null, null, null },
6567 .src_constraints = .{
6568 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
6569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
6570 .any,
6571 },
6572 .patterns = &.{
6573 .{ .src = .{ .to_mem, .to_mem, .none } },
6574 },
6575 .extra_temps = .{
6576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6577 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
6578 .unused,
6579 .unused,
6580 .unused,
6581 .unused,
6582 .unused,
6583 .unused,
6584 .unused,
6585 },
6586 .dst_temps = .{.mem},
6587 .clobbers = .{ .eflags = true },
6588 .each = .{ .once = &.{
6589 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6590 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6591 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6592 .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6593 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6594 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6595 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6596 } },
6597 }, .{
6598 .required_features = .{ .avx, null, null, null },
6599 .src_constraints = .{
6600 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6601 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6602 .any,
6603 },
6604 .patterns = &.{
6605 .{ .src = .{ .to_sse, .mem, .none } },
6606 .{ .src = .{ .to_sse, .to_sse, .none } },
6607 },
6608 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6609 .each = .{ .once = &.{
6610 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
6611 .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) },
6612 } },
6613 }, .{
6614 .required_features = .{ .sse4_1, null, null, null },
6615 .src_constraints = .{
6616 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6617 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6618 .any,
6619 },
6620 .patterns = &.{
6621 .{ .src = .{ .to_mut_sse, .mem, .none } },
6622 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6623 },
6624 .dst_temps = .{.{ .ref = .src0 }},
6625 .each = .{ .once = &.{
6626 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
6627 .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6628 } },
6629 }, .{
6630 .required_features = .{ .sse2, null, null, null },
6631 .src_constraints = .{
6632 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6633 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6634 .any,
6635 },
6636 .patterns = &.{
6637 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
6638 },
6639 .call_frame = .{ .alignment = .@"16" },
6640 .extra_temps = .{
6641 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6642 else => unreachable,
6643 .zero => "trunc",
6644 .down => "floor",
6645 } } } },
6646 .unused,
6647 .unused,
6648 .unused,
6649 .unused,
6650 .unused,
6651 .unused,
6652 .unused,
6653 .unused,
6654 },
6655 .dst_temps = .{.{ .ref = .src0 }},
6656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6657 .each = .{ .once = &.{
6658 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
6659 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6660 } },
6661 }, .{
6662 .required_features = .{ .sse, null, null, null },
6663 .src_constraints = .{
6664 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6665 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
6666 .any,
6667 },
6668 .patterns = &.{
6669 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6670 },
6671 .call_frame = .{ .alignment = .@"16" },
6672 .extra_temps = .{
6673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
6674 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6675 else => unreachable,
6676 .zero => "trunc",
6677 .down => "floor",
6678 } } } },
6679 .unused,
6680 .unused,
6681 .unused,
6682 .unused,
6683 .unused,
6684 .unused,
6685 .unused,
6686 },
6687 .dst_temps = .{.{ .ref = .src0 }},
6688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6689 .each = .{ .once = &.{
6690 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6691 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6692 } },
6693 }, .{
6694 .required_features = .{ .avx, null, null, null },
6695 .src_constraints = .{
6696 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6697 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6698 .any,
6699 },
6700 .patterns = &.{
6701 .{ .src = .{ .to_sse, .mem, .none } },
6702 .{ .src = .{ .to_sse, .to_sse, .none } },
6703 },
6704 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6705 .each = .{ .once = &.{
6706 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
6707 .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6708 } },
6709 }, .{
6710 .required_features = .{ .sse4_1, null, null, null },
6711 .src_constraints = .{
6712 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6713 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
6714 .any,
6715 },
6716 .patterns = &.{
6717 .{ .src = .{ .to_mut_sse, .mem, .none } },
6718 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
6719 },
6720 .dst_temps = .{.{ .ref = .src0 }},
6721 .each = .{ .once = &.{
6722 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
6723 .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6724 } },
6725 }, .{
6726 .required_features = .{ .avx, null, null, null },
6727 .src_constraints = .{
6728 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6729 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
6730 .any,
6731 },
6732 .patterns = &.{
6733 .{ .src = .{ .to_sse, .mem, .none } },
6734 .{ .src = .{ .to_sse, .to_sse, .none } },
6735 },
6736 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6737 .each = .{ .once = &.{
6738 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
6739 .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6740 } },
6741 }, .{
6742 .required_features = .{ .avx, null, null, null },
6743 .src_constraints = .{
6744 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6745 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
6746 .any,
6747 },
6748 .patterns = &.{
6749 .{ .src = .{ .to_mem, .to_mem, .none } },
6750 },
6751 .extra_temps = .{
6752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6753 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
6754 .unused,
6755 .unused,
6756 .unused,
6757 .unused,
6758 .unused,
6759 .unused,
6760 .unused,
6761 },
6762 .dst_temps = .{.mem},
6763 .clobbers = .{ .eflags = true },
6764 .each = .{ .once = &.{
6765 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6766 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
6767 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
6768 .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6769 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
6770 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6771 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6772 } },
6773 }, .{
6774 .required_features = .{ .sse4_1, null, null, null },
6775 .src_constraints = .{
6776 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6777 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
6778 .any,
6779 },
6780 .patterns = &.{
6781 .{ .src = .{ .to_mem, .to_mem, .none } },
6782 },
6783 .extra_temps = .{
6784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6785 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
6786 .unused,
6787 .unused,
6788 .unused,
6789 .unused,
6790 .unused,
6791 .unused,
6792 .unused,
6793 },
6794 .dst_temps = .{.mem},
6795 .clobbers = .{ .eflags = true },
6796 .each = .{ .once = &.{
6797 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6798 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6799 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6800 .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6801 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6802 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6803 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6804 } },
6805 }, .{
6806 .required_features = .{ .sse2, null, null, null },
6807 .src_constraints = .{
6808 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6809 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6810 .any,
6811 },
6812 .patterns = &.{
6813 .{ .src = .{ .to_mem, .to_mem, .none } },
6814 },
6815 .call_frame = .{ .alignment = .@"16" },
6816 .extra_temps = .{
6817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6818 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6819 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6820 else => unreachable,
6821 .zero => "trunc",
6822 .down => "floor",
6823 } } } },
6824 .unused,
6825 .unused,
6826 .unused,
6827 .unused,
6828 .unused,
6829 .unused,
6830 },
6831 .dst_temps = .{.mem},
6832 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6833 .each = .{ .once = &.{
6834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6835 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
6836 .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
6837 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6838 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6839 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6841 } },
6842 }, .{
6843 .required_features = .{ .sse, null, null, null },
6844 .src_constraints = .{
6845 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6846 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
6847 .any,
6848 },
6849 .patterns = &.{
6850 .{ .src = .{ .to_mem, .to_mem, .none } },
6851 },
6852 .call_frame = .{ .alignment = .@"16" },
6853 .extra_temps = .{
6854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6855 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
6856 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
6857 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
6858 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6859 else => unreachable,
6860 .zero => "trunc",
6861 .down => "floor",
6862 } } } },
6863 .unused,
6864 .unused,
6865 .unused,
6866 .unused,
6867 },
6868 .dst_temps = .{.mem},
6869 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6870 .each = .{ .once = &.{
6871 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6872 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
6873 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
6874 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
6875 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
6876 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6877 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6878 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
6879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6881 } },
6882 }, .{
6883 .required_features = .{ .x87, null, null, null },
6884 .src_constraints = .{
6885 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6886 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6887 .any,
6888 },
6889 .patterns = &.{
6890 .{ .src = .{ .mem, .mem, .none } },
6891 },
6892 .call_frame = .{ .size = 16, .alignment = .@"16" },
6893 .extra_temps = .{
6894 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6895 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6896 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
6897 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6898 else => unreachable,
6899 .zero => "__truncx",
6900 .down => "__floorx",
6901 } } } },
6902 .unused,
6903 .unused,
6904 .unused,
6905 .unused,
6906 .unused,
6907 },
6908 .dst_temps = .{.{ .reg = .st0 }},
6909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6910 .each = .{ .once = &.{
6911 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6912 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
6913 .{ ._, .f_p, .div, ._, ._, ._, ._ },
6914 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
6915 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6916 } },
6917 }, .{
6918 .required_features = .{ .x87, null, null, null },
6919 .src_constraints = .{
6920 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6921 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6922 .any,
6923 },
6924 .patterns = &.{
6925 .{ .src = .{ .to_x87, .mem, .none } },
6926 },
6927 .call_frame = .{ .size = 16, .alignment = .@"16" },
6928 .extra_temps = .{
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 .unused,
6941 .unused,
6942 },
6943 .dst_temps = .{.{ .reg = .st0 }},
6944 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6945 .each = .{ .once = &.{
6946 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6947 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
6948 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
6949 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6950 } },
6951 }, .{
6952 .required_features = .{ .x87, null, null, null },
6953 .src_constraints = .{
6954 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6955 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
6956 .any,
6957 },
6958 .patterns = &.{
6959 .{ .src = .{ .mem, .to_x87, .none } },
6960 .{ .src = .{ .to_x87, .to_x87, .none } },
6961 },
6962 .call_frame = .{ .size = 16, .alignment = .@"16" },
6963 .extra_temps = .{
6964 .{ .type = .f80, .kind = .{ .reg = .st7 } },
6965 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
6966 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6967 else => unreachable,
6968 .zero => "__truncx",
6969 .down => "__floorx",
6970 } } } },
6971 .unused,
6972 .unused,
6973 .unused,
6974 .unused,
6975 .unused,
6976 .unused,
6977 },
6978 .dst_temps = .{.{ .reg = .st0 }},
6979 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6980 .each = .{ .once = &.{
6981 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
6982 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
6983 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
6984 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
6985 } },
6986 }, .{
6987 .required_features = .{ .x87, null, null, null },
6988 .src_constraints = .{
6989 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6990 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
6991 .any,
6992 },
6993 .patterns = &.{
6994 .{ .src = .{ .mem, .mem, .none } },
6995 },
6996 .call_frame = .{ .size = 16, .alignment = .@"16" },
6997 .extra_temps = .{
6998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6999 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7000 .{ .type = .f80, .kind = .{ .reg = .st7 } },
7001 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7002 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7003 else => unreachable,
7004 .zero => "__truncx",
7005 .down => "__floorx",
7006 } } } },
7007 .unused,
7008 .unused,
7009 .unused,
7010 .unused,
7011 },
7012 .dst_temps = .{.mem},
7013 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7014 .each = .{ .once = &.{
7015 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7016 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
7017 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
7018 .{ ._, .f_p, .div, ._, ._, ._, ._ },
7019 .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ },
7020 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7021 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
7022 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
7023 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7025 } },
7026 }, .{
7027 .required_features = .{ .sse, null, null, null },
7028 .src_constraints = .{
7029 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
7030 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
7031 .any,
7032 },
7033 .patterns = &.{
7034 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
7035 },
7036 .call_frame = .{ .alignment = .@"16" },
7037 .extra_temps = .{
7038 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7040 else => unreachable,
7041 .zero => "truncq",
7042 .down => "floorq",
7043 } } } },
7044 .unused,
7045 .unused,
7046 .unused,
7047 .unused,
7048 .unused,
7049 .unused,
7050 .unused,
7051 },
7052 .dst_temps = .{.{ .ref = .src0 }},
7053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7054 .each = .{ .once = &.{
7055 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7056 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
7057 } },
7058 }, .{
7059 .required_features = .{ .avx, null, null, null },
7060 .src_constraints = .{
7061 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7062 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7063 .any,
7064 },
7065 .patterns = &.{
7066 .{ .src = .{ .to_mem, .to_mem, .none } },
7067 },
7068 .call_frame = .{ .alignment = .@"16" },
7069 .extra_temps = .{
7070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7071 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7072 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7074 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7075 else => unreachable,
7076 .zero => "truncq",
7077 .down => "floorq",
7078 } } } },
7079 .unused,
7080 .unused,
7081 .unused,
7082 .unused,
7083 },
7084 .dst_temps = .{.mem},
7085 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7086 .each = .{ .once = &.{
7087 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7088 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7089 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7090 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7091 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7092 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7093 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7095 } },
7096 }, .{
7097 .required_features = .{ .sse2, null, null, null },
7098 .src_constraints = .{
7099 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7100 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7101 .any,
7102 },
7103 .patterns = &.{
7104 .{ .src = .{ .to_mem, .to_mem, .none } },
7105 },
7106 .call_frame = .{ .alignment = .@"16" },
7107 .extra_temps = .{
7108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7109 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7110 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7111 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7112 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7113 else => unreachable,
7114 .zero => "truncq",
7115 .down => "floorq",
7116 } } } },
7117 .unused,
7118 .unused,
7119 .unused,
7120 .unused,
7121 },
7122 .dst_temps = .{.mem},
7123 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7124 .each = .{ .once = &.{
7125 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7126 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7127 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7128 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7129 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7130 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7131 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7133 } },
7134 }, .{
7135 .required_features = .{ .sse, null, null, null },
7136 .src_constraints = .{
7137 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7138 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
7139 .any,
7140 },
7141 .patterns = &.{
7142 .{ .src = .{ .to_mem, .to_mem, .none } },
7143 },
7144 .call_frame = .{ .alignment = .@"16" },
7145 .extra_temps = .{
7146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7147 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7148 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
7149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
7150 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7151 else => unreachable,
7152 .zero => "truncq",
7153 .down => "floorq",
7154 } } } },
7155 .unused,
7156 .unused,
7157 .unused,
7158 .unused,
7159 },
7160 .dst_temps = .{.mem},
7161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7162 .each = .{ .once = &.{
7163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7164 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7165 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7166 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7167 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7168 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7169 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7170 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7171 } },
7172 } },
7173 }) catch |err| switch (err) {
7174 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
7175 @tagName(air_tag),
7176 cg.typeOf(bin_op.lhs).fmt(pt),
7177 ops[0].tracking(cg),
7178 ops[1].tracking(cg),
7179 }),
7180 else => |e| return e,
7181 };
7182 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
7183 },
7184 .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
7185 else => unreachable,
7186 .div_trunc_optimized => .div_trunc,
7187 .div_floor_optimized => .div_floor,
7188 }) else {
7189 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
7190 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
7191 var res: [1]Temp = undefined;
7192 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
7193 else => unreachable,
7194 .div_trunc_optimized => .zero,
7195 .div_floor_optimized => .down,
7196 })) {
7197 else => unreachable,
7198 inline .zero, .down => |direction| comptime &.{ .{
7199 .required_features = .{ .f16c, null, null, null },
7200 .src_constraints = .{
7201 .{ .scalar_float = .{ .of = .word, .is = .word } },
7202 .{ .scalar_float = .{ .of = .word, .is = .word } },
7203 .any,
7204 },
7205 .patterns = &.{
7206 .{ .src = .{ .to_sse, .to_sse, .none } },
7207 },
7208 .extra_temps = .{
7209 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7210 .unused,
7211 .unused,
7212 .unused,
7213 .unused,
7214 .unused,
7215 .unused,
7216 .unused,
7217 .unused,
7218 },
7219 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7220 .each = .{ .once = &.{
7221 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
7222 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
7223 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
7224 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7225 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
7226 } },
7227 }, .{
7228 .required_features = .{ .sse, null, null, null },
7229 .src_constraints = .{
7230 .{ .scalar_float = .{ .of = .word, .is = .word } },
7231 .{ .scalar_float = .{ .of = .word, .is = .word } },
7232 .any,
7233 },
7234 .patterns = &.{
7235 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
7236 },
7237 .call_frame = .{ .alignment = .@"16" },
7238 .extra_temps = .{
7239 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7241 else => unreachable,
7242 .zero => "__trunch",
7243 .down => "__floorh",
7244 } } } },
7245 .unused,
7246 .unused,
7247 .unused,
7248 .unused,
7249 .unused,
7250 .unused,
7251 .unused,
7252 },
7253 .dst_temps = .{.{ .ref = .src0 }},
7254 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7255 .each = .{ .once = &.{
7256 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7257 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
7258 } },
7259 }, .{
7260 .required_features = .{ .f16c, null, null, null },
7261 .src_constraints = .{
7262 .{ .scalar_float = .{ .of = .qword, .is = .word } },
7263 .{ .scalar_float = .{ .of = .qword, .is = .word } },
7264 .any,
7265 },
7266 .patterns = &.{
7267 .{ .src = .{ .mem, .mem, .none } },
7268 .{ .src = .{ .to_sse, .mem, .none } },
7269 .{ .src = .{ .mem, .to_sse, .none } },
7270 .{ .src = .{ .to_sse, .to_sse, .none } },
7271 },
7272 .extra_temps = .{
7273 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7274 .unused,
7275 .unused,
7276 .unused,
7277 .unused,
7278 .unused,
7279 .unused,
7280 .unused,
7281 .unused,
7282 },
7283 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7284 .each = .{ .once = &.{
7285 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
7286 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
7287 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
7288 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7289 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
7290 } },
7291 }, .{
7292 .required_features = .{ .f16c, null, null, null },
7293 .src_constraints = .{
7294 .{ .scalar_float = .{ .of = .xword, .is = .word } },
7295 .{ .scalar_float = .{ .of = .xword, .is = .word } },
7296 .any,
7297 },
7298 .patterns = &.{
7299 .{ .src = .{ .mem, .mem, .none } },
7300 .{ .src = .{ .to_sse, .mem, .none } },
7301 .{ .src = .{ .mem, .to_sse, .none } },
7302 .{ .src = .{ .to_sse, .to_sse, .none } },
7303 },
7304 .extra_temps = .{
7305 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
7306 .unused,
7307 .unused,
7308 .unused,
7309 .unused,
7310 .unused,
7311 .unused,
7312 .unused,
7313 .unused,
7314 },
7315 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7316 .each = .{ .once = &.{
7317 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
7318 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
7319 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
7320 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7321 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
7322 } },
7323 }, .{
7324 .required_features = .{ .f16c, null, null, null },
7325 .src_constraints = .{
7326 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
7327 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
7328 .any,
7329 },
7330 .patterns = &.{
7331 .{ .src = .{ .to_mem, .to_mem, .none } },
7332 },
7333 .extra_temps = .{
7334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7335 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7336 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7337 .unused,
7338 .unused,
7339 .unused,
7340 .unused,
7341 .unused,
7342 .unused,
7343 },
7344 .dst_temps = .{.mem},
7345 .clobbers = .{ .eflags = true },
7346 .each = .{ .once = &.{
7347 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7348 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7349 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7350 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
7351 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7352 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
7353 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7355 } },
7356 }, .{
7357 .required_features = .{ .avx, null, null, null },
7358 .src_constraints = .{
7359 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7360 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7361 .any,
7362 },
7363 .patterns = &.{
7364 .{ .src = .{ .to_mem, .to_mem, .none } },
7365 },
7366 .call_frame = .{ .alignment = .@"16" },
7367 .extra_temps = .{
7368 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7369 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7370 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7371 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7372 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7373 else => unreachable,
7374 .zero => "__trunch",
7375 .down => "__floorh",
7376 } } } },
7377 .unused,
7378 .unused,
7379 .unused,
7380 .unused,
7381 },
7382 .dst_temps = .{.mem},
7383 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7384 .each = .{ .once = &.{
7385 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7386 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
7387 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
7388 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
7389 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7390 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7391 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
7392 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7393 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7394 } },
7395 }, .{
7396 .required_features = .{ .sse4_1, null, null, null },
7397 .src_constraints = .{
7398 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7399 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7400 .any,
7401 },
7402 .patterns = &.{
7403 .{ .src = .{ .to_mem, .to_mem, .none } },
7404 },
7405 .call_frame = .{ .alignment = .@"16" },
7406 .extra_temps = .{
7407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7408 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7409 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7410 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7411 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7412 else => unreachable,
7413 .zero => "__trunch",
7414 .down => "__floorh",
7415 } } } },
7416 .unused,
7417 .unused,
7418 .unused,
7419 .unused,
7420 },
7421 .dst_temps = .{.mem},
7422 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7423 .each = .{ .once = &.{
7424 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7425 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
7426 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
7427 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7428 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7429 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7430 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7431 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
7432 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7433 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7434 } },
7435 }, .{
7436 .required_features = .{ .sse2, null, null, null },
7437 .src_constraints = .{
7438 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7439 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7440 .any,
7441 },
7442 .patterns = &.{
7443 .{ .src = .{ .to_mem, .to_mem, .none } },
7444 },
7445 .call_frame = .{ .alignment = .@"16" },
7446 .extra_temps = .{
7447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7448 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7449 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7451 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7452 else => unreachable,
7453 .zero => "__trunch",
7454 .down => "__floorh",
7455 } } } },
7456 .{ .type = .f16, .kind = .{ .reg = .ax } },
7457 .unused,
7458 .unused,
7459 .unused,
7460 },
7461 .dst_temps = .{.mem},
7462 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7463 .each = .{ .once = &.{
7464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7465 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
7466 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
7467 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7468 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
7469 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7470 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7471 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
7472 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
7473 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7474 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7475 } },
7476 }, .{
7477 .required_features = .{ .sse, null, null, null },
7478 .src_constraints = .{
7479 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7480 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
7481 .any,
7482 },
7483 .patterns = &.{
7484 .{ .src = .{ .to_mem, .to_mem, .none } },
7485 },
7486 .call_frame = .{ .alignment = .@"16" },
7487 .extra_temps = .{
7488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7489 .{ .type = .f16, .kind = .{ .reg = .ax } },
7490 .{ .type = .f32, .kind = .mem },
7491 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7492 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
7493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
7494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7495 else => unreachable,
7496 .zero => "__trunch",
7497 .down => "__floorh",
7498 } } } },
7499 .unused,
7500 .unused,
7501 },
7502 .dst_temps = .{.mem},
7503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7504 .each = .{ .once = &.{
7505 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7506 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
7507 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
7508 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
7509 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
7510 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
7511 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
7512 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
7513 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
7514 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
7515 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
7516 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
7517 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7519 } },
7520 }, .{
7521 .required_features = .{ .avx, null, null, null },
7522 .src_constraints = .{
7523 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7524 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7525 .any,
7526 },
7527 .patterns = &.{
7528 .{ .src = .{ .to_sse, .mem, .none } },
7529 .{ .src = .{ .to_sse, .to_sse, .none } },
7530 },
7531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7532 .each = .{ .once = &.{
7533 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
7534 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7535 } },
7536 }, .{
7537 .required_features = .{ .sse4_1, null, null, null },
7538 .src_constraints = .{
7539 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7540 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7541 .any,
7542 },
7543 .patterns = &.{
7544 .{ .src = .{ .to_mut_sse, .mem, .none } },
7545 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7546 },
7547 .dst_temps = .{.{ .ref = .src0 }},
7548 .each = .{ .once = &.{
7549 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7550 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7551 } },
7552 }, .{
7553 .required_features = .{ .sse, null, null, null },
7554 .src_constraints = .{
7555 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7556 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7557 .any,
7558 },
7559 .patterns = &.{
7560 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7561 },
7562 .call_frame = .{ .alignment = .@"16" },
7563 .extra_temps = .{
7564 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7565 else => unreachable,
7566 .zero => "truncf",
7567 .down => "floorf",
7568 } } } },
7569 .unused,
7570 .unused,
7571 .unused,
7572 .unused,
7573 .unused,
7574 .unused,
7575 .unused,
7576 .unused,
7577 },
7578 .dst_temps = .{.{ .ref = .src0 }},
7579 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7580 .each = .{ .once = &.{
7581 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7582 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7583 } },
7584 }, .{
7585 .required_features = .{ .avx, null, null, null },
7586 .src_constraints = .{
7587 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7588 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7589 .any,
7590 },
7591 .patterns = &.{
7592 .{ .src = .{ .to_sse, .mem, .none } },
7593 .{ .src = .{ .to_sse, .to_sse, .none } },
7594 },
7595 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7596 .each = .{ .once = &.{
7597 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
7598 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7599 } },
7600 }, .{
7601 .required_features = .{ .sse4_1, null, null, null },
7602 .src_constraints = .{
7603 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7604 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7605 .any,
7606 },
7607 .patterns = &.{
7608 .{ .src = .{ .to_mut_sse, .mem, .none } },
7609 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7610 },
7611 .dst_temps = .{.{ .ref = .src0 }},
7612 .each = .{ .once = &.{
7613 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
7614 .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7615 } },
7616 }, .{
7617 .required_features = .{ .sse, null, null, null },
7618 .src_constraints = .{
7619 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7620 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7621 .any,
7622 },
7623 .patterns = &.{
7624 .{ .src = .{ .to_mem, .to_mem, .none } },
7625 },
7626 .call_frame = .{ .alignment = .@"16" },
7627 .extra_temps = .{
7628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7629 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
7630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7631 else => unreachable,
7632 .zero => "truncf",
7633 .down => "floorf",
7634 } } } },
7635 .unused,
7636 .unused,
7637 .unused,
7638 .unused,
7639 .unused,
7640 .unused,
7641 },
7642 .dst_temps = .{.mem},
7643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7644 .each = .{ .once = &.{
7645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7646 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
7647 .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
7648 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7649 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7650 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
7651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7652 } },
7653 }, .{
7654 .required_features = .{ .avx, null, null, null },
7655 .src_constraints = .{
7656 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
7657 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
7658 .any,
7659 },
7660 .patterns = &.{
7661 .{ .src = .{ .to_sse, .mem, .none } },
7662 .{ .src = .{ .to_sse, .to_sse, .none } },
7663 },
7664 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7665 .each = .{ .once = &.{
7666 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
7667 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7668 } },
7669 }, .{
7670 .required_features = .{ .avx, null, null, null },
7671 .src_constraints = .{
7672 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
7673 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
7674 .any,
7675 },
7676 .patterns = &.{
7677 .{ .src = .{ .to_mem, .to_mem, .none } },
7678 },
7679 .extra_temps = .{
7680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7681 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
7682 .unused,
7683 .unused,
7684 .unused,
7685 .unused,
7686 .unused,
7687 .unused,
7688 .unused,
7689 },
7690 .dst_temps = .{.mem},
7691 .clobbers = .{ .eflags = true },
7692 .each = .{ .once = &.{
7693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7694 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
7695 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
7696 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7697 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
7698 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
7699 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7700 } },
7701 }, .{
7702 .required_features = .{ .sse4_1, null, null, null },
7703 .src_constraints = .{
7704 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
7705 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
7706 .any,
7707 },
7708 .patterns = &.{
7709 .{ .src = .{ .to_mem, .to_mem, .none } },
7710 },
7711 .extra_temps = .{
7712 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7713 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
7714 .unused,
7715 .unused,
7716 .unused,
7717 .unused,
7718 .unused,
7719 .unused,
7720 .unused,
7721 },
7722 .dst_temps = .{.mem},
7723 .clobbers = .{ .eflags = true },
7724 .each = .{ .once = &.{
7725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7726 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7727 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7728 .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7729 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7730 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7732 } },
7733 }, .{
7734 .required_features = .{ .avx, null, null, null },
7735 .src_constraints = .{
7736 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7737 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7738 .any,
7739 },
7740 .patterns = &.{
7741 .{ .src = .{ .to_sse, .mem, .none } },
7742 .{ .src = .{ .to_sse, .to_sse, .none } },
7743 },
7744 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7745 .each = .{ .once = &.{
7746 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
7747 .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) },
7748 } },
7749 }, .{
7750 .required_features = .{ .sse4_1, null, null, null },
7751 .src_constraints = .{
7752 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7753 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7754 .any,
7755 },
7756 .patterns = &.{
7757 .{ .src = .{ .to_mut_sse, .mem, .none } },
7758 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7759 },
7760 .dst_temps = .{.{ .ref = .src0 }},
7761 .each = .{ .once = &.{
7762 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
7763 .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7764 } },
7765 }, .{
7766 .required_features = .{ .sse2, null, null, null },
7767 .src_constraints = .{
7768 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7769 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7770 .any,
7771 },
7772 .patterns = &.{
7773 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7774 },
7775 .call_frame = .{ .alignment = .@"16" },
7776 .extra_temps = .{
7777 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7778 else => unreachable,
7779 .zero => "trunc",
7780 .down => "floor",
7781 } } } },
7782 .unused,
7783 .unused,
7784 .unused,
7785 .unused,
7786 .unused,
7787 .unused,
7788 .unused,
7789 .unused,
7790 },
7791 .dst_temps = .{.{ .ref = .src0 }},
7792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7793 .each = .{ .once = &.{
7794 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
7795 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7796 } },
7797 }, .{
7798 .required_features = .{ .sse, null, null, null },
7799 .src_constraints = .{
7800 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7801 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
7802 .any,
7803 },
7804 .patterns = &.{
7805 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
7806 },
7807 .call_frame = .{ .alignment = .@"16" },
7808 .extra_temps = .{
7809 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
7810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7811 else => unreachable,
7812 .zero => "trunc",
7813 .down => "floor",
7814 } } } },
7815 .unused,
7816 .unused,
7817 .unused,
7818 .unused,
7819 .unused,
7820 .unused,
7821 .unused,
7822 },
7823 .dst_temps = .{.{ .ref = .src0 }},
7824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7825 .each = .{ .once = &.{
7826 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7827 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
7828 } },
7829 }, .{
7830 .required_features = .{ .avx, null, null, null },
7831 .src_constraints = .{
7832 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7833 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7834 .any,
7835 },
7836 .patterns = &.{
7837 .{ .src = .{ .to_sse, .mem, .none } },
7838 .{ .src = .{ .to_sse, .to_sse, .none } },
7839 },
7840 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7841 .each = .{ .once = &.{
7842 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
7843 .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7844 } },
7845 }, .{
7846 .required_features = .{ .sse4_1, null, null, null },
7847 .src_constraints = .{
7848 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7849 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
7850 .any,
7851 },
7852 .patterns = &.{
7853 .{ .src = .{ .to_mut_sse, .mem, .none } },
7854 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7855 },
7856 .dst_temps = .{.{ .ref = .src0 }},
7857 .each = .{ .once = &.{
7858 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
7859 .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7860 } },
7861 }, .{
7862 .required_features = .{ .avx, null, null, null },
7863 .src_constraints = .{
7864 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
7865 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
7866 .any,
7867 },
7868 .patterns = &.{
7869 .{ .src = .{ .to_sse, .mem, .none } },
7870 .{ .src = .{ .to_sse, .to_sse, .none } },
7871 },
7872 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7873 .each = .{ .once = &.{
7874 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
7875 .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7876 } },
7877 }, .{
7878 .required_features = .{ .avx, null, null, null },
7879 .src_constraints = .{
7880 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
7881 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
7882 .any,
7883 },
7884 .patterns = &.{
7885 .{ .src = .{ .to_mem, .to_mem, .none } },
7886 },
7887 .extra_temps = .{
7888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7889 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
7890 .unused,
7891 .unused,
7892 .unused,
7893 .unused,
7894 .unused,
7895 .unused,
7896 .unused,
7897 },
7898 .dst_temps = .{.mem},
7899 .clobbers = .{ .eflags = true },
7900 .each = .{ .once = &.{
7901 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7902 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
7903 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
7904 .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7905 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
7906 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
7907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7908 } },
7909 }, .{
7910 .required_features = .{ .sse4_1, null, null, null },
7911 .src_constraints = .{
7912 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
7913 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
7914 .any,
7915 },
7916 .patterns = &.{
7917 .{ .src = .{ .to_mem, .to_mem, .none } },
7918 },
7919 .extra_temps = .{
7920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7921 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
7922 .unused,
7923 .unused,
7924 .unused,
7925 .unused,
7926 .unused,
7927 .unused,
7928 .unused,
7929 },
7930 .dst_temps = .{.mem},
7931 .clobbers = .{ .eflags = true },
7932 .each = .{ .once = &.{
7933 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7934 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
7935 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
7936 .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7937 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7938 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7939 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7940 } },
7941 }, .{
7942 .required_features = .{ .sse2, null, null, null },
7943 .src_constraints = .{
7944 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7945 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7946 .any,
7947 },
7948 .patterns = &.{
7949 .{ .src = .{ .to_mem, .to_mem, .none } },
7950 },
7951 .call_frame = .{ .alignment = .@"16" },
7952 .extra_temps = .{
7953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7954 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
7955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7956 else => unreachable,
7957 .zero => "trunc",
7958 .down => "floor",
7959 } } } },
7960 .unused,
7961 .unused,
7962 .unused,
7963 .unused,
7964 .unused,
7965 .unused,
7966 },
7967 .dst_temps = .{.mem},
7968 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7969 .each = .{ .once = &.{
7970 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
7971 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
7972 .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
7973 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7974 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
7975 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
7976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7977 } },
7978 }, .{
7979 .required_features = .{ .sse, null, null, null },
7980 .src_constraints = .{
7981 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7982 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
7983 .any,
7984 },
7985 .patterns = &.{
7986 .{ .src = .{ .to_mem, .to_mem, .none } },
7987 },
7988 .call_frame = .{ .alignment = .@"16" },
7989 .extra_temps = .{
7990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7991 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
7992 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
7993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
7994 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7995 else => unreachable,
7996 .zero => "trunc",
7997 .down => "floor",
7998 } } } },
7999 .unused,
8000 .unused,
8001 .unused,
8002 .unused,
8003 },
8004 .dst_temps = .{.mem},
8005 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8006 .each = .{ .once = &.{
8007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8008 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
8009 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
8010 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8011 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8012 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8013 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8014 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8015 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8016 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8017 } },
8018 }, .{
8019 .required_features = .{ .x87, null, null, null },
8020 .src_constraints = .{
8021 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8022 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8023 .any,
8024 },
8025 .patterns = &.{
8026 .{ .src = .{ .mem, .mem, .none } },
8027 },
8028 .call_frame = .{ .size = 16, .alignment = .@"16" },
8029 .extra_temps = .{
8030 .{ .type = .f80, .kind = .{ .reg = .st6 } },
8031 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8032 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8033 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8034 else => unreachable,
8035 .zero => "__truncx",
8036 .down => "__floorx",
8037 } } } },
8038 .unused,
8039 .unused,
8040 .unused,
8041 .unused,
8042 .unused,
8043 },
8044 .dst_temps = .{.{ .reg = .st0 }},
8045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8046 .each = .{ .once = &.{
8047 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
8048 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
8049 .{ ._, .f_p, .div, ._, ._, ._, ._ },
8050 .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ },
8051 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8052 } },
8053 }, .{
8054 .required_features = .{ .x87, null, null, null },
8055 .src_constraints = .{
8056 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8057 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8058 .any,
8059 },
8060 .patterns = &.{
8061 .{ .src = .{ .to_x87, .mem, .none } },
8062 },
8063 .call_frame = .{ .size = 16, .alignment = .@"16" },
8064 .extra_temps = .{
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 .unused,
8077 .unused,
8078 },
8079 .dst_temps = .{.{ .reg = .st0 }},
8080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8081 .each = .{ .once = &.{
8082 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
8083 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
8084 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
8085 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8086 } },
8087 }, .{
8088 .required_features = .{ .x87, null, null, null },
8089 .src_constraints = .{
8090 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8091 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8092 .any,
8093 },
8094 .patterns = &.{
8095 .{ .src = .{ .mem, .to_x87, .none } },
8096 .{ .src = .{ .to_x87, .to_x87, .none } },
8097 },
8098 .call_frame = .{ .size = 16, .alignment = .@"16" },
8099 .extra_temps = .{
8100 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8101 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8103 else => unreachable,
8104 .zero => "__truncx",
8105 .down => "__floorx",
8106 } } } },
8107 .unused,
8108 .unused,
8109 .unused,
8110 .unused,
8111 .unused,
8112 .unused,
8113 },
8114 .dst_temps = .{.{ .reg = .st0 }},
8115 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8116 .each = .{ .once = &.{
8117 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
8118 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
8119 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
8120 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8121 } },
8122 }, .{
8123 .required_features = .{ .x87, null, null, null },
8124 .src_constraints = .{
8125 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8127 .any,
8128 },
8129 .patterns = &.{
8130 .{ .src = .{ .mem, .mem, .none } },
8131 },
8132 .call_frame = .{ .size = 16, .alignment = .@"16" },
8133 .extra_temps = .{
8134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8135 .{ .type = .f80, .kind = .{ .reg = .st6 } },
8136 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8137 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8138 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8139 else => unreachable,
8140 .zero => "__truncx",
8141 .down => "__floorx",
8142 } } } },
8143 .unused,
8144 .unused,
8145 .unused,
8146 .unused,
8147 },
8148 .dst_temps = .{.mem},
8149 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8150 .each = .{ .once = &.{
8151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8152 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8153 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8154 .{ ._, .f_p, .div, ._, ._, ._, ._ },
8155 .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ },
8156 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8157 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8158 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8159 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8161 } },
8162 }, .{
8163 .required_features = .{ .sse, null, null, null },
8164 .src_constraints = .{
8165 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8166 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8167 .any,
8168 },
8169 .patterns = &.{
8170 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8171 },
8172 .call_frame = .{ .alignment = .@"16" },
8173 .extra_temps = .{
8174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8175 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8176 else => unreachable,
8177 .zero => "truncq",
8178 .down => "floorq",
8179 } } } },
8180 .unused,
8181 .unused,
8182 .unused,
8183 .unused,
8184 .unused,
8185 .unused,
8186 .unused,
8187 },
8188 .dst_temps = .{.{ .ref = .src0 }},
8189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8190 .each = .{ .once = &.{
8191 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8192 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8193 } },
8194 }, .{
8195 .required_features = .{ .avx, null, null, null },
8196 .src_constraints = .{
8197 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8198 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8199 .any,
8200 },
8201 .patterns = &.{
8202 .{ .src = .{ .to_mem, .to_mem, .none } },
8203 },
8204 .call_frame = .{ .alignment = .@"16" },
8205 .extra_temps = .{
8206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8207 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8208 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8210 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8211 else => unreachable,
8212 .zero => "truncq",
8213 .down => "floorq",
8214 } } } },
8215 .unused,
8216 .unused,
8217 .unused,
8218 .unused,
8219 },
8220 .dst_temps = .{.mem},
8221 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8222 .each = .{ .once = &.{
8223 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8224 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8225 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8226 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8227 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8228 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8229 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8231 } },
8232 }, .{
8233 .required_features = .{ .sse2, null, null, null },
8234 .src_constraints = .{
8235 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8236 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8237 .any,
8238 },
8239 .patterns = &.{
8240 .{ .src = .{ .to_mem, .to_mem, .none } },
8241 },
8242 .call_frame = .{ .alignment = .@"16" },
8243 .extra_temps = .{
8244 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8245 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8246 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8247 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8248 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8249 else => unreachable,
8250 .zero => "truncq",
8251 .down => "floorq",
8252 } } } },
8253 .unused,
8254 .unused,
8255 .unused,
8256 .unused,
8257 },
8258 .dst_temps = .{.mem},
8259 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8260 .each = .{ .once = &.{
8261 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8262 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8263 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8264 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8265 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8266 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8267 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8269 } },
8270 }, .{
8271 .required_features = .{ .sse, null, null, null },
8272 .src_constraints = .{
8273 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8274 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8275 .any,
8276 },
8277 .patterns = &.{
8278 .{ .src = .{ .to_mem, .to_mem, .none } },
8279 },
8280 .call_frame = .{ .alignment = .@"16" },
8281 .extra_temps = .{
8282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8283 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8284 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8285 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
8286 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
8287 else => unreachable,
8288 .zero => "truncq",
8289 .down => "floorq",
8290 } } } },
8291 .unused,
8292 .unused,
8293 .unused,
8294 .unused,
8295 },
8296 .dst_temps = .{.mem},
8297 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8298 .each = .{ .once = &.{
8299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8300 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8301 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8302 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8303 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8304 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8305 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8306 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8307 } },
8308 } },
8309 }) catch |err| switch (err) {
8310 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
8311 @tagName(air_tag),
8312 cg.typeOf(bin_op.lhs).fmt(pt),
8313 ops[0].tracking(cg),
8314 ops[1].tracking(cg),
8315 }),
8316 else => |e| return e,
8317 };
8318 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
8319 },
8320 .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else fallback: {
8321 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
8322 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .rem);
8323 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
8324 var res: [1]Temp = undefined;
8325 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
8326 .required_features = .{ .sse, null, null, null },
8327 .src_constraints = .{
8328 .{ .scalar_float = .{ .of = .word, .is = .word } },
8329 .{ .scalar_float = .{ .of = .word, .is = .word } },
8330 .any,
8331 },
8332 .patterns = &.{
8333 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8334 },
8335 .call_frame = .{ .alignment = .@"16" },
8336 .extra_temps = .{
8337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8338 .unused,
8339 .unused,
8340 .unused,
8341 .unused,
8342 .unused,
8343 .unused,
8344 .unused,
8345 .unused,
8346 },
8347 .dst_temps = .{.{ .ref = .src0 }},
8348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8349 .each = .{ .once = &.{
8350 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8351 } },
8352 }, .{
8353 .required_features = .{ .avx, null, null, null },
8354 .src_constraints = .{
8355 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8356 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8357 .any,
8358 },
8359 .patterns = &.{
8360 .{ .src = .{ .to_mem, .to_mem, .none } },
8361 },
8362 .call_frame = .{ .alignment = .@"16" },
8363 .extra_temps = .{
8364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8365 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8366 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8368 .unused,
8369 .unused,
8370 .unused,
8371 .unused,
8372 .unused,
8373 },
8374 .dst_temps = .{.mem},
8375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8376 .each = .{ .once = &.{
8377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8378 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
8379 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
8380 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
8381 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8382 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
8383 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8385 } },
8386 }, .{
8387 .required_features = .{ .sse4_1, 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 = .xmm0 } },
8400 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8402 .unused,
8403 .unused,
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:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
8413 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
8414 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8415 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8416 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8417 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
8418 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8420 } },
8421 }, .{
8422 .required_features = .{ .sse2, null, null, null },
8423 .src_constraints = .{
8424 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8425 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8426 .any,
8427 },
8428 .patterns = &.{
8429 .{ .src = .{ .to_mem, .to_mem, .none } },
8430 },
8431 .call_frame = .{ .alignment = .@"16" },
8432 .extra_temps = .{
8433 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8434 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8435 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8436 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8437 .{ .type = .f16, .kind = .{ .reg = .ax } },
8438 .unused,
8439 .unused,
8440 .unused,
8441 .unused,
8442 },
8443 .dst_temps = .{.mem},
8444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8445 .each = .{ .once = &.{
8446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8447 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
8448 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
8449 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8450 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
8451 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8452 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
8453 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
8454 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8456 } },
8457 }, .{
8458 .required_features = .{ .sse, null, null, null },
8459 .src_constraints = .{
8460 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8461 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
8462 .any,
8463 },
8464 .patterns = &.{
8465 .{ .src = .{ .to_mem, .to_mem, .none } },
8466 },
8467 .call_frame = .{ .alignment = .@"16" },
8468 .extra_temps = .{
8469 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8470 .{ .type = .f16, .kind = .{ .reg = .ax } },
8471 .{ .type = .f32, .kind = .mem },
8472 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8473 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
8474 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
8475 .unused,
8476 .unused,
8477 .unused,
8478 },
8479 .dst_temps = .{.mem},
8480 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8481 .each = .{ .once = &.{
8482 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8483 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
8484 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8485 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8486 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
8487 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8488 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
8489 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
8490 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
8491 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
8492 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
8493 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
8494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8495 } },
8496 }, .{
8497 .required_features = .{ .sse, null, null, null },
8498 .src_constraints = .{
8499 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
8500 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
8501 .any,
8502 },
8503 .patterns = &.{
8504 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8505 },
8506 .call_frame = .{ .alignment = .@"16" },
8507 .extra_temps = .{
8508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8509 .unused,
8510 .unused,
8511 .unused,
8512 .unused,
8513 .unused,
8514 .unused,
8515 .unused,
8516 .unused,
8517 },
8518 .dst_temps = .{.{ .ref = .src0 }},
8519 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8520 .each = .{ .once = &.{
8521 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8522 } },
8523 }, .{
8524 .required_features = .{ .avx, null, null, null },
8525 .src_constraints = .{
8526 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8527 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8528 .any,
8529 },
8530 .patterns = &.{
8531 .{ .src = .{ .to_mem, .to_mem, .none } },
8532 },
8533 .call_frame = .{ .alignment = .@"16" },
8534 .extra_temps = .{
8535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8536 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
8537 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
8538 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8539 .unused,
8540 .unused,
8541 .unused,
8542 .unused,
8543 .unused,
8544 },
8545 .dst_temps = .{.mem},
8546 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8547 .each = .{ .once = &.{
8548 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8549 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
8550 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
8551 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8552 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8553 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
8554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8555 } },
8556 }, .{
8557 .required_features = .{ .sse, null, null, null },
8558 .src_constraints = .{
8559 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8560 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
8561 .any,
8562 },
8563 .patterns = &.{
8564 .{ .src = .{ .to_mem, .to_mem, .none } },
8565 },
8566 .call_frame = .{ .alignment = .@"16" },
8567 .extra_temps = .{
8568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8569 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
8570 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
8571 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
8572 .unused,
8573 .unused,
8574 .unused,
8575 .unused,
8576 .unused,
8577 },
8578 .dst_temps = .{.mem},
8579 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8580 .each = .{ .once = &.{
8581 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8582 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
8583 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
8584 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8585 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8586 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
8587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8588 } },
8589 }, .{
8590 .required_features = .{ .sse, null, null, null },
8591 .src_constraints = .{
8592 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
8593 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
8594 .any,
8595 },
8596 .patterns = &.{
8597 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8598 },
8599 .call_frame = .{ .alignment = .@"16" },
8600 .extra_temps = .{
8601 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8602 .unused,
8603 .unused,
8604 .unused,
8605 .unused,
8606 .unused,
8607 .unused,
8608 .unused,
8609 .unused,
8610 },
8611 .dst_temps = .{.{ .ref = .src0 }},
8612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8613 .each = .{ .once = &.{
8614 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8615 } },
8616 }, .{
8617 .required_features = .{ .avx, null, null, null },
8618 .src_constraints = .{
8619 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8620 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8621 .any,
8622 },
8623 .patterns = &.{
8624 .{ .src = .{ .to_mem, .to_mem, .none } },
8625 },
8626 .call_frame = .{ .alignment = .@"16" },
8627 .extra_temps = .{
8628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8629 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8630 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8631 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8632 .unused,
8633 .unused,
8634 .unused,
8635 .unused,
8636 .unused,
8637 },
8638 .dst_temps = .{.mem},
8639 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8640 .each = .{ .once = &.{
8641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8642 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8643 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8644 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8645 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8646 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8647 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8648 } },
8649 }, .{
8650 .required_features = .{ .sse2, null, null, null },
8651 .src_constraints = .{
8652 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8653 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8654 .any,
8655 },
8656 .patterns = &.{
8657 .{ .src = .{ .to_mem, .to_mem, .none } },
8658 },
8659 .call_frame = .{ .alignment = .@"16" },
8660 .extra_temps = .{
8661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8662 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8663 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8665 .unused,
8666 .unused,
8667 .unused,
8668 .unused,
8669 .unused,
8670 },
8671 .dst_temps = .{.mem},
8672 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8673 .each = .{ .once = &.{
8674 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8675 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8676 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8677 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8678 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8679 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8680 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8681 } },
8682 }, .{
8683 .required_features = .{ .sse, null, null, null },
8684 .src_constraints = .{
8685 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8686 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
8687 .any,
8688 },
8689 .patterns = &.{
8690 .{ .src = .{ .to_mem, .to_mem, .none } },
8691 },
8692 .call_frame = .{ .alignment = .@"16" },
8693 .extra_temps = .{
8694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8695 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
8696 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
8697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
8698 .unused,
8699 .unused,
8700 .unused,
8701 .unused,
8702 .unused,
8703 },
8704 .dst_temps = .{.mem},
8705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8706 .each = .{ .once = &.{
8707 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8708 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
8709 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
8710 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
8711 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
8712 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8713 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8714 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
8715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8716 } },
8717 }, .{
8718 .required_features = .{ .avx, .x87, null, null },
8719 .src_constraints = .{
8720 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8721 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8722 .any,
8723 },
8724 .patterns = &.{
8725 .{ .src = .{ .to_mem, .to_mem, .none } },
8726 },
8727 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8728 .extra_temps = .{
8729 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8730 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8732 .unused,
8733 .unused,
8734 .unused,
8735 .unused,
8736 .unused,
8737 .unused,
8738 },
8739 .dst_temps = .{.{ .reg = .st0 }},
8740 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8741 .each = .{ .once = &.{
8742 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
8743 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
8744 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
8745 .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8746 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8747 } },
8748 }, .{
8749 .required_features = .{ .sse2, .x87, null, null },
8750 .src_constraints = .{
8751 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8752 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8753 .any,
8754 },
8755 .patterns = &.{
8756 .{ .src = .{ .to_mem, .to_mem, .none } },
8757 },
8758 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8759 .extra_temps = .{
8760 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8761 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8762 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8763 .unused,
8764 .unused,
8765 .unused,
8766 .unused,
8767 .unused,
8768 .unused,
8769 },
8770 .dst_temps = .{.{ .reg = .st0 }},
8771 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8772 .each = .{ .once = &.{
8773 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
8774 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
8775 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ },
8776 .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8777 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8778 } },
8779 }, .{
8780 .required_features = .{ .sse, .x87, null, null },
8781 .src_constraints = .{
8782 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8783 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
8784 .any,
8785 },
8786 .patterns = &.{
8787 .{ .src = .{ .to_mem, .to_mem, .none } },
8788 },
8789 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8790 .extra_temps = .{
8791 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8792 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8794 .unused,
8795 .unused,
8796 .unused,
8797 .unused,
8798 .unused,
8799 .unused,
8800 },
8801 .dst_temps = .{.{ .reg = .st0 }},
8802 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8803 .each = .{ .once = &.{
8804 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
8805 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
8806 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
8807 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
8808 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8809 } },
8810 }, .{
8811 .required_features = .{ .avx, .x87, null, null },
8812 .src_constraints = .{
8813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8815 .any,
8816 },
8817 .patterns = &.{
8818 .{ .src = .{ .to_mem, .to_mem, .none } },
8819 },
8820 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8821 .extra_temps = .{
8822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8823 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8824 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8826 .unused,
8827 .unused,
8828 .unused,
8829 .unused,
8830 .unused,
8831 },
8832 .dst_temps = .{.mem},
8833 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8834 .each = .{ .once = &.{
8835 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8836 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8837 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8838 .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8839 .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8840 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8841 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8842 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8843 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8845 } },
8846 }, .{
8847 .required_features = .{ .sse2, .x87, null, null },
8848 .src_constraints = .{
8849 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8850 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8851 .any,
8852 },
8853 .patterns = &.{
8854 .{ .src = .{ .to_mem, .to_mem, .none } },
8855 },
8856 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8857 .extra_temps = .{
8858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8859 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8860 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8861 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8862 .unused,
8863 .unused,
8864 .unused,
8865 .unused,
8866 .unused,
8867 },
8868 .dst_temps = .{.mem},
8869 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8870 .each = .{ .once = &.{
8871 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8872 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8873 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8874 .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8875 .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8876 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8877 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8878 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8879 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8881 } },
8882 }, .{
8883 .required_features = .{ .sse, .x87, null, null },
8884 .src_constraints = .{
8885 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8886 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
8887 .any,
8888 },
8889 .patterns = &.{
8890 .{ .src = .{ .to_mem, .to_mem, .none } },
8891 },
8892 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
8893 .extra_temps = .{
8894 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8895 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8896 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8897 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
8898 .unused,
8899 .unused,
8900 .unused,
8901 .unused,
8902 .unused,
8903 },
8904 .dst_temps = .{.mem},
8905 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8906 .each = .{ .once = &.{
8907 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8908 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8909 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
8910 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8911 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
8912 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8913 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
8914 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
8915 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8917 } },
8918 }, .{
8919 .required_features = .{ .sse, null, null, null },
8920 .src_constraints = .{
8921 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8922 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
8923 .any,
8924 },
8925 .patterns = &.{
8926 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
8927 },
8928 .call_frame = .{ .alignment = .@"16" },
8929 .extra_temps = .{
8930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8931 .unused,
8932 .unused,
8933 .unused,
8934 .unused,
8935 .unused,
8936 .unused,
8937 .unused,
8938 .unused,
8939 },
8940 .dst_temps = .{.{ .ref = .src0 }},
8941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8942 .each = .{ .once = &.{
8943 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8944 } },
8945 }, .{
8946 .required_features = .{ .avx, null, null, null },
8947 .src_constraints = .{
8948 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8949 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8950 .any,
8951 },
8952 .patterns = &.{
8953 .{ .src = .{ .to_mem, .to_mem, .none } },
8954 },
8955 .call_frame = .{ .alignment = .@"16" },
8956 .extra_temps = .{
8957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8958 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8959 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8960 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8961 .unused,
8962 .unused,
8963 .unused,
8964 .unused,
8965 .unused,
8966 },
8967 .dst_temps = .{.mem},
8968 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8969 .each = .{ .once = &.{
8970 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
8971 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
8972 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
8973 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8974 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
8975 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
8976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
8977 } },
8978 }, .{
8979 .required_features = .{ .sse2, null, null, null },
8980 .src_constraints = .{
8981 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8982 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
8983 .any,
8984 },
8985 .patterns = &.{
8986 .{ .src = .{ .to_mem, .to_mem, .none } },
8987 },
8988 .call_frame = .{ .alignment = .@"16" },
8989 .extra_temps = .{
8990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8991 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8992 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
8993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
8994 .unused,
8995 .unused,
8996 .unused,
8997 .unused,
8998 .unused,
8999 },
9000 .dst_temps = .{.mem},
9001 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9002 .each = .{ .once = &.{
9003 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9004 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
9005 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
9006 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9007 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9008 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9010 } },
9011 }, .{
9012 .required_features = .{ .sse, null, null, null },
9013 .src_constraints = .{
9014 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
9015 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
9016 .any,
9017 },
9018 .patterns = &.{
9019 .{ .src = .{ .to_mem, .to_mem, .none } },
9020 },
9021 .call_frame = .{ .alignment = .@"16" },
9022 .extra_temps = .{
9023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9024 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
9025 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
9026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
9027 .unused,
9028 .unused,
9029 .unused,
9030 .unused,
9031 .unused,
9032 },
9033 .dst_temps = .{.mem},
9034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9035 .each = .{ .once = &.{
9036 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
9037 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
9038 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
9039 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9040 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
9041 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9043 } },
9044 } }) catch |err| switch (err) {
9045 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
9046 @tagName(air_tag),
9047 cg.typeOf(bin_op.lhs).fmt(pt),
9048 ops[0].tracking(cg),
9049 ops[1].tracking(cg),
9050 }),
9051 else => |e| return e,
9052 };
9053 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
9054 },
9055 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
9056 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
9057 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
9058 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
9059 try ops[0].toSlicePtr(cg);
9060 var res: [1]Temp = undefined;
9061 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
9062 .patterns = &.{
9063 .{ .src = .{ .to_gpr, .simm32, .none } },
9064 },
9065 .dst_temps = .{.{ .rc = .general_purpose }},
9066 .each = .{ .once = &.{
9067 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
9068 } },
9069 }, .{
9070 .dst_constraints = .{.{ .elem_size_is = 1 }},
9071 .patterns = &.{
9072 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9073 },
9074 .dst_temps = .{.{ .rc = .general_purpose }},
9075 .each = .{ .once = &.{
9076 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
9077 } },
9078 }, .{
9079 .dst_constraints = .{.{ .elem_size_is = 2 }},
9080 .patterns = &.{
9081 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9082 },
9083 .dst_temps = .{.{ .rc = .general_purpose }},
9084 .each = .{ .once = &.{
9085 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
9086 } },
9087 }, .{
9088 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
9089 .patterns = &.{
9090 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9091 },
9092 .dst_temps = .{.{ .rc = .general_purpose }},
9093 .each = .{ .once = &.{
9094 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
9095 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9096 } },
9097 }, .{
9098 .dst_constraints = .{.{ .elem_size_is = 4 }},
9099 .patterns = &.{
9100 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9101 },
9102 .dst_temps = .{.{ .rc = .general_purpose }},
9103 .each = .{ .once = &.{
9104 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
9105 } },
9106 }, .{
9107 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
9108 .patterns = &.{
9109 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9110 },
9111 .dst_temps = .{.{ .ref = .src1 }},
9112 .each = .{ .once = &.{
9113 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
9114 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9115 } },
9116 }, .{
9117 .required_features = .{ .@"64bit", null, null, null },
9118 .dst_constraints = .{.{ .elem_size_is = 8 }},
9119 .patterns = &.{
9120 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9121 },
9122 .dst_temps = .{.{ .rc = .general_purpose }},
9123 .each = .{ .once = &.{
9124 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
9125 } },
9126 }, .{
9127 .required_features = .{ .@"64bit", null, null, null },
9128 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
9129 .patterns = &.{
9130 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9131 },
9132 .dst_temps = .{.{ .ref = .src1 }},
9133 .each = .{ .once = &.{
9134 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
9135 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9136 } },
9137 }, .{
9138 .dst_constraints = .{.po2_elem_size},
9139 .patterns = &.{
9140 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9141 },
9142 .dst_temps = .{.{ .ref = .src1 }},
9143 .clobbers = .{ .eflags = true },
9144 .each = .{ .once = &.{
9145 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
9146 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
9147 } },
9148 }, .{
9149 .patterns = &.{
9150 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9151 },
9152 .dst_temps = .{.{ .rc = .general_purpose }},
9153 .clobbers = .{ .eflags = true },
9154 .each = .{ .once = &.{
9155 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
9156 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9157 } },
9158 } }) catch |err| switch (err) {
9159 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
9160 @tagName(air_tag),
9161 cg.typeOf(bin_op.lhs).fmt(pt),
9162 ops[0].tracking(cg),
9163 ops[1].tracking(cg),
9164 }),
9165 else => |e| return e,
9166 } else { // hack around Sema OPV bugs
9167 res[0] = ops[0];
9168 }
9169 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
9170 },
9171 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
9172 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
9173 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
9174 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
9175 try ops[0].toSlicePtr(cg);
9176 var res: [1]Temp = undefined;
9177 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{
9178 .patterns = &.{
9179 .{ .src = .{ .to_gpr, .simm32, .none } },
9180 },
9181 .dst_temps = .{.{ .rc = .general_purpose }},
9182 .each = .{ .once = &.{
9183 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },
9184 } },
9185 }, .{
9186 .dst_constraints = .{.{ .elem_size_is = 1 }},
9187 .patterns = &.{
9188 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9189 },
9190 .dst_temps = .{.{ .ref = .src1 }},
9191 .clobbers = .{ .eflags = true },
9192 .each = .{ .once = &.{
9193 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
9194 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
9195 } },
9196 }, .{
9197 .dst_constraints = .{.{ .elem_size_is = 2 }},
9198 .patterns = &.{
9199 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9200 },
9201 .dst_temps = .{.{ .ref = .src1 }},
9202 .clobbers = .{ .eflags = true },
9203 .each = .{ .once = &.{
9204 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
9205 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
9206 } },
9207 }, .{
9208 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
9209 .patterns = &.{
9210 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9211 },
9212 .dst_temps = .{.{ .rc = .general_purpose }},
9213 .clobbers = .{ .eflags = true },
9214 .each = .{ .once = &.{
9215 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
9216 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
9217 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9218 } },
9219 }, .{
9220 .dst_constraints = .{.{ .elem_size_is = 4 }},
9221 .patterns = &.{
9222 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9223 },
9224 .dst_temps = .{.{ .ref = .src1 }},
9225 .clobbers = .{ .eflags = true },
9226 .each = .{ .once = &.{
9227 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
9228 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
9229 } },
9230 }, .{
9231 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
9232 .patterns = &.{
9233 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9234 },
9235 .dst_temps = .{.{ .rc = .general_purpose }},
9236 .clobbers = .{ .eflags = true },
9237 .each = .{ .once = &.{
9238 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
9239 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
9240 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9241 } },
9242 }, .{
9243 .required_features = .{ .@"64bit", null, null, null },
9244 .dst_constraints = .{.{ .elem_size_is = 8 }},
9245 .patterns = &.{
9246 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9247 },
9248 .dst_temps = .{.{ .ref = .src1 }},
9249 .clobbers = .{ .eflags = true },
9250 .each = .{ .once = &.{
9251 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
9252 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
9253 } },
9254 }, .{
9255 .required_features = .{ .@"64bit", null, null, null },
9256 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},
9257 .patterns = &.{
9258 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9259 },
9260 .dst_temps = .{.{ .rc = .general_purpose }},
9261 .clobbers = .{ .eflags = true },
9262 .each = .{ .once = &.{
9263 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
9264 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
9265 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9266 } },
9267 }, .{
9268 .dst_constraints = .{.po2_elem_size},
9269 .patterns = &.{
9270 .{ .src = .{ .to_gpr, .to_mut_gpr, .none } },
9271 },
9272 .dst_temps = .{.{ .ref = .src1 }},
9273 .clobbers = .{ .eflags = true },
9274 .each = .{ .once = &.{
9275 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
9276 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
9277 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
9278 } },
9279 }, .{
9280 .patterns = &.{
9281 .{ .src = .{ .to_gpr, .to_gpr, .none } },
9282 },
9283 .dst_temps = .{.{ .rc = .general_purpose }},
9284 .clobbers = .{ .eflags = true },
9285 .each = .{ .once = &.{
9286 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
9287 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
9288 } },
9289 } }) catch |err| switch (err) {
9290 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
9291 @tagName(air_tag),
9292 cg.typeOf(bin_op.lhs).fmt(pt),
9293 ops[0].tracking(cg),
9294 ops[1].tracking(cg),
9295 }),
9296 else => |e| return e,
9297 } else {
9298 // hack around Sema OPV bugs
9299 res[0] = ops[0];
9300 }
9301 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
9302 },
9303 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
9304 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
9305 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
9306 var res: [1]Temp = undefined;
9307 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
9308 .required_features = .{ .cmov, null, null, null },
9309 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
9310 .patterns = &.{
9311 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9312 },
9313 .dst_temps = .{.{ .ref = .src0 }},
9314 .clobbers = .{ .eflags = true },
9315 .each = .{ .once = &.{
9316 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
9317 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
9318 } },
9319 }, .{
9320 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
9321 .patterns = &.{
9322 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9323 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9324 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9325 },
9326 .dst_temps = .{.{ .ref = .src0 }},
9327 .clobbers = .{ .eflags = true },
9328 .each = .{ .once = &.{
9329 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
9330 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
9331 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
9332 } },
9333 }, .{
9334 .required_features = .{ .cmov, null, null, null },
9335 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
9336 .patterns = &.{
9337 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9338 },
9339 .dst_temps = .{.{ .ref = .src0 }},
9340 .clobbers = .{ .eflags = true },
9341 .each = .{ .once = &.{
9342 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
9343 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
9344 } },
9345 }, .{
9346 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
9347 .patterns = &.{
9348 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9349 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9350 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9351 },
9352 .dst_temps = .{.{ .ref = .src0 }},
9353 .clobbers = .{ .eflags = true },
9354 .each = .{ .once = &.{
9355 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
9356 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
9357 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
9358 } },
9359 }, .{
9360 .required_features = .{ .cmov, null, null, null },
9361 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
9362 .patterns = &.{
9363 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9364 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9365 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9366 },
9367 .dst_temps = .{.{ .ref = .src0 }},
9368 .clobbers = .{ .eflags = true },
9369 .each = .{ .once = &.{
9370 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
9371 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
9372 } },
9373 }, .{
9374 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
9375 .patterns = &.{
9376 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9377 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9378 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9379 },
9380 .dst_temps = .{.{ .ref = .src0 }},
9381 .clobbers = .{ .eflags = true },
9382 .each = .{ .once = &.{
9383 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
9384 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
9385 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
9386 } },
9387 }, .{
9388 .required_features = .{ .cmov, null, null, null },
9389 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
9390 .patterns = &.{
9391 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9392 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9393 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9394 },
9395 .dst_temps = .{.{ .ref = .src0 }},
9396 .clobbers = .{ .eflags = true },
9397 .each = .{ .once = &.{
9398 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
9399 .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ },
9400 } },
9401 }, .{
9402 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
9403 .patterns = &.{
9404 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9405 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9406 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9407 },
9408 .dst_temps = .{.{ .ref = .src0 }},
9409 .clobbers = .{ .eflags = true },
9410 .each = .{ .once = &.{
9411 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
9412 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
9413 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
9414 } },
9415 }, .{
9416 .required_features = .{ .cmov, null, null, null },
9417 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
9418 .patterns = &.{
9419 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9420 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9421 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9422 },
9423 .dst_temps = .{.{ .ref = .src0 }},
9424 .clobbers = .{ .eflags = true },
9425 .each = .{ .once = &.{
9426 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
9427 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
9428 } },
9429 }, .{
9430 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
9431 .patterns = &.{
9432 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9433 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9434 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9435 },
9436 .dst_temps = .{.{ .ref = .src0 }},
9437 .clobbers = .{ .eflags = true },
9438 .each = .{ .once = &.{
9439 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
9440 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
9441 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
9442 } },
9443 }, .{
9444 .required_features = .{ .cmov, null, null, null },
9445 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
9446 .patterns = &.{
9447 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9448 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9449 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9450 },
9451 .dst_temps = .{.{ .ref = .src0 }},
9452 .clobbers = .{ .eflags = true },
9453 .each = .{ .once = &.{
9454 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
9455 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
9456 } },
9457 }, .{
9458 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
9459 .patterns = &.{
9460 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9461 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9462 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9463 },
9464 .dst_temps = .{.{ .ref = .src0 }},
9465 .clobbers = .{ .eflags = true },
9466 .each = .{ .once = &.{
9467 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
9468 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
9469 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
9470 } },
9471 }, .{
9472 .required_features = .{ .@"64bit", .cmov, null, null },
9473 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
9474 .patterns = &.{
9475 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9476 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9477 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9478 },
9479 .dst_temps = .{.{ .ref = .src0 }},
9480 .clobbers = .{ .eflags = true },
9481 .each = .{ .once = &.{
9482 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
9483 .{ ._, ._l, .cmov, .dst0q, .src1q, ._, ._ },
9484 } },
9485 }, .{
9486 .required_features = .{ .@"64bit", null, null, null },
9487 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
9488 .patterns = &.{
9489 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9490 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9491 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9492 },
9493 .dst_temps = .{.{ .ref = .src0 }},
9494 .clobbers = .{ .eflags = true },
9495 .each = .{ .once = &.{
9496 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
9497 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
9498 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
9499 } },
9500 }, .{
9501 .required_features = .{ .@"64bit", .cmov, null, null },
9502 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
9503 .patterns = &.{
9504 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9505 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9506 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9507 },
9508 .dst_temps = .{.{ .ref = .src0 }},
9509 .clobbers = .{ .eflags = true },
9510 .each = .{ .once = &.{
9511 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
9512 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },
9513 } },
9514 }, .{
9515 .required_features = .{ .@"64bit", null, null, null },
9516 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
9517 .patterns = &.{
9518 .{ .src = .{ .to_mut_gpr, .mem, .none } },
9519 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
9520 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
9521 },
9522 .dst_temps = .{.{ .ref = .src0 }},
9523 .clobbers = .{ .eflags = true },
9524 .each = .{ .once = &.{
9525 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
9526 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
9527 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
9528 } },
9529 }, .{
9530 .required_features = .{ .@"64bit", .cmov, null, null },
9531 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
9532 .patterns = &.{
9533 .{ .src = .{ .to_mem, .to_mem, .none } },
9534 },
9535 .extra_temps = .{
9536 .{ .type = .isize, .kind = .{ .reg = .rsi } },
9537 .{ .type = .u64, .kind = .{ .reg = .rdi } },
9538 .{ .type = .u64, .kind = .{ .reg = .rcx } },
9539 .unused,
9540 .unused,
9541 .unused,
9542 .unused,
9543 .unused,
9544 .unused,
9545 },
9546 .dst_temps = .{.mem},
9547 .clobbers = .{ .eflags = true },
9548 .each = .{ .once = &.{
9549 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
9550 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9551 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
9552 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
9553 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9554 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9555 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
9556 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
9557 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
9558 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
9559 .{ ._, ._l, .cmov, .tmp0p, .tmp1p, ._, ._ },
9560 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
9561 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
9562 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
9563 } },
9564 }, .{
9565 .required_features = .{ .@"64bit", null, null, null },
9566 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
9567 .patterns = &.{
9568 .{ .src = .{ .to_mem, .to_mem, .none } },
9569 },
9570 .extra_temps = .{
9571 .{ .type = .isize, .kind = .{ .reg = .rsi } },
9572 .{ .type = .u64, .kind = .{ .reg = .rdi } },
9573 .{ .type = .u64, .kind = .{ .reg = .rcx } },
9574 .unused,
9575 .unused,
9576 .unused,
9577 .unused,
9578 .unused,
9579 .unused,
9580 },
9581 .dst_temps = .{.mem},
9582 .clobbers = .{ .eflags = true },
9583 .each = .{ .once = &.{
9584 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
9585 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9586 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
9587 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
9588 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9589 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9590 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
9591 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
9592 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
9593 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },
9594 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
9595 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
9596 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
9597 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
9598 } },
9599 }, .{
9600 .required_features = .{ .@"64bit", .cmov, null, null },
9601 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
9602 .patterns = &.{
9603 .{ .src = .{ .to_mem, .to_mem, .none } },
9604 },
9605 .extra_temps = .{
9606 .{ .type = .isize, .kind = .{ .reg = .rsi } },
9607 .{ .type = .u64, .kind = .{ .reg = .rdi } },
9608 .{ .type = .u64, .kind = .{ .reg = .rcx } },
9609 .unused,
9610 .unused,
9611 .unused,
9612 .unused,
9613 .unused,
9614 .unused,
9615 },
9616 .dst_temps = .{.mem},
9617 .clobbers = .{ .eflags = true },
9618 .each = .{ .once = &.{
9619 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
9620 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9621 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
9622 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
9623 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9624 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9625 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
9626 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
9627 .{ ._, ._b, .cmov, .tmp0p, .tmp1p, ._, ._ },
9628 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
9629 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
9630 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
9631 } },
9632 }, .{
9633 .required_features = .{ .@"64bit", null, null, null },
9634 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
9635 .patterns = &.{
9636 .{ .src = .{ .to_mem, .to_mem, .none } },
9637 },
9638 .extra_temps = .{
9639 .{ .type = .isize, .kind = .{ .reg = .rsi } },
9640 .{ .type = .u64, .kind = .{ .reg = .rdi } },
9641 .{ .type = .u64, .kind = .{ .reg = .rcx } },
9642 .unused,
9643 .unused,
9644 .unused,
9645 .unused,
9646 .unused,
9647 .unused,
9648 },
9649 .dst_temps = .{.mem},
9650 .clobbers = .{ .eflags = true },
9651 .each = .{ .once = &.{
9652 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
9653 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9654 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
9655 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
9656 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9657 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9658 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
9659 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
9660 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
9661 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
9662 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
9663 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
9664 } },
9665 }, .{
9666 .required_features = .{ .avx, null, null, null },
9667 .src_constraints = .{
9668 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9669 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9670 .any,
9671 },
9672 .patterns = &.{
9673 .{ .src = .{ .to_sse, .mem, .none } },
9674 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
9675 .{ .src = .{ .to_sse, .to_sse, .none } },
9676 },
9677 .dst_temps = .{.{ .rc = .sse }},
9678 .each = .{ .once = &.{
9679 .{ ._, .vp_b, .maxs, .dst0x, .src0x, .src1x, ._ },
9680 } },
9681 }, .{
9682 .required_features = .{ .sse4_1, null, null, null },
9683 .src_constraints = .{
9684 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9685 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9686 .any,
9687 },
9688 .patterns = &.{
9689 .{ .src = .{ .to_mut_sse, .mem, .none } },
9690 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9691 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9692 },
9693 .dst_temps = .{.{ .ref = .src0 }},
9694 .each = .{ .once = &.{
9695 .{ ._, .p_b, .maxs, .dst0x, .src1x, ._, ._ },
9696 } },
9697 }, .{
9698 .required_features = .{ .sse2, null, null, null },
9699 .src_constraints = .{
9700 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9701 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
9702 .any,
9703 },
9704 .patterns = &.{
9705 .{ .src = .{ .to_mut_sse, .mem, .none } },
9706 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9707 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9708 },
9709 .dst_temps = .{.{ .rc = .sse }},
9710 .each = .{ .once = &.{
9711 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
9712 .{ ._, .p_b, .cmpgt, .dst0x, .src1x, ._, ._ },
9713 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
9714 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
9715 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
9716 } },
9717 }, .{
9718 .required_features = .{ .avx2, null, null, null },
9719 .src_constraints = .{
9720 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
9721 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
9722 .any,
9723 },
9724 .patterns = &.{
9725 .{ .src = .{ .to_sse, .mem, .none } },
9726 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
9727 .{ .src = .{ .to_sse, .to_sse, .none } },
9728 },
9729 .dst_temps = .{.{ .rc = .sse }},
9730 .each = .{ .once = &.{
9731 .{ ._, .vp_b, .maxs, .dst0y, .src0y, .src1y, ._ },
9732 } },
9733 }, .{
9734 .required_features = .{ .avx2, null, null, null },
9735 .src_constraints = .{
9736 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
9737 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
9738 .any,
9739 },
9740 .patterns = &.{
9741 .{ .src = .{ .to_mem, .to_mem, .none } },
9742 },
9743 .extra_temps = .{
9744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9745 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
9746 .unused,
9747 .unused,
9748 .unused,
9749 .unused,
9750 .unused,
9751 .unused,
9752 .unused,
9753 },
9754 .dst_temps = .{.mem},
9755 .clobbers = .{ .eflags = true },
9756 .each = .{ .once = &.{
9757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9758 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
9759 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
9760 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
9761 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9763 } },
9764 }, .{
9765 .required_features = .{ .avx, null, null, null },
9766 .src_constraints = .{
9767 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9768 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9769 .any,
9770 },
9771 .patterns = &.{
9772 .{ .src = .{ .to_mem, .to_mem, .none } },
9773 },
9774 .extra_temps = .{
9775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9776 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
9777 .unused,
9778 .unused,
9779 .unused,
9780 .unused,
9781 .unused,
9782 .unused,
9783 .unused,
9784 },
9785 .dst_temps = .{.mem},
9786 .clobbers = .{ .eflags = true },
9787 .each = .{ .once = &.{
9788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9789 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
9790 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
9791 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
9792 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9794 } },
9795 }, .{
9796 .required_features = .{ .sse4_1, null, null, null },
9797 .src_constraints = .{
9798 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9799 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9800 .any,
9801 },
9802 .patterns = &.{
9803 .{ .src = .{ .to_mem, .to_mem, .none } },
9804 },
9805 .extra_temps = .{
9806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9807 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
9808 .unused,
9809 .unused,
9810 .unused,
9811 .unused,
9812 .unused,
9813 .unused,
9814 .unused,
9815 },
9816 .dst_temps = .{.mem},
9817 .clobbers = .{ .eflags = true },
9818 .each = .{ .once = &.{
9819 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9820 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
9821 .{ ._, .p_b, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9822 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
9823 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9824 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9825 } },
9826 }, .{
9827 .required_features = .{ .sse2, null, null, null },
9828 .src_constraints = .{
9829 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9830 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
9831 .any,
9832 },
9833 .patterns = &.{
9834 .{ .src = .{ .to_mem, .to_mem, .none } },
9835 },
9836 .extra_temps = .{
9837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9838 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
9839 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
9840 .unused,
9841 .unused,
9842 .unused,
9843 .unused,
9844 .unused,
9845 .unused,
9846 },
9847 .dst_temps = .{.mem},
9848 .clobbers = .{ .eflags = true },
9849 .each = .{ .once = &.{
9850 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9851 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
9852 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
9853 .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9854 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
9855 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9856 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
9857 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
9858 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9859 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9860 } },
9861 }, .{
9862 .required_features = .{ .cmov, .slow_incdec, null, null },
9863 .src_constraints = .{
9864 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9865 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9866 .any,
9867 },
9868 .patterns = &.{
9869 .{ .src = .{ .to_mem, .to_mem, .none } },
9870 },
9871 .extra_temps = .{
9872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9873 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9874 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9875 .unused,
9876 .unused,
9877 .unused,
9878 .unused,
9879 .unused,
9880 .unused,
9881 },
9882 .dst_temps = .{.mem},
9883 .clobbers = .{ .eflags = true },
9884 .each = .{ .once = &.{
9885 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9886 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
9887 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9888 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
9889 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
9890 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
9891 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9892 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9893 } },
9894 }, .{
9895 .required_features = .{ .cmov, null, null, null },
9896 .src_constraints = .{
9897 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9898 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9899 .any,
9900 },
9901 .patterns = &.{
9902 .{ .src = .{ .to_mem, .to_mem, .none } },
9903 },
9904 .extra_temps = .{
9905 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9906 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9907 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9908 .unused,
9909 .unused,
9910 .unused,
9911 .unused,
9912 .unused,
9913 .unused,
9914 },
9915 .dst_temps = .{.mem},
9916 .clobbers = .{ .eflags = true },
9917 .each = .{ .once = &.{
9918 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9919 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
9920 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9921 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
9922 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
9923 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
9924 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9925 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9926 } },
9927 }, .{
9928 .required_features = .{ .slow_incdec, null, null, null },
9929 .src_constraints = .{
9930 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9931 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9932 .any,
9933 },
9934 .patterns = &.{
9935 .{ .src = .{ .to_mem, .to_mem, .none } },
9936 },
9937 .extra_temps = .{
9938 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9939 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9940 .unused,
9941 .unused,
9942 .unused,
9943 .unused,
9944 .unused,
9945 .unused,
9946 .unused,
9947 },
9948 .dst_temps = .{.mem},
9949 .clobbers = .{ .eflags = true },
9950 .each = .{ .once = &.{
9951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9952 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
9953 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9954 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
9955 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9956 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
9957 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
9958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9959 } },
9960 }, .{
9961 .src_constraints = .{
9962 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9963 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
9964 .any,
9965 },
9966 .patterns = &.{
9967 .{ .src = .{ .to_mem, .to_mem, .none } },
9968 },
9969 .extra_temps = .{
9970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9971 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
9972 .unused,
9973 .unused,
9974 .unused,
9975 .unused,
9976 .unused,
9977 .unused,
9978 .unused,
9979 },
9980 .dst_temps = .{.mem},
9981 .clobbers = .{ .eflags = true },
9982 .each = .{ .once = &.{
9983 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9984 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
9985 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9986 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
9987 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
9988 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
9989 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
9990 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
9991 } },
9992 }, .{
9993 .required_features = .{ .sse, .mmx, null, null },
9994 .src_constraints = .{
9995 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
9996 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
9997 .any,
9998 },
9999 .patterns = &.{
10000 .{ .src = .{ .to_mut_mmx, .mem, .none } },
10001 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
10002 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
10003 },
10004 .dst_temps = .{.{ .ref = .src0 }},
10005 .each = .{ .once = &.{
10006 .{ ._, .p_b, .maxu, .dst0q, .src1q, ._, ._ },
10007 } },
10008 }, .{
10009 .required_features = .{ .avx, null, null, null },
10010 .src_constraints = .{
10011 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10012 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10013 .any,
10014 },
10015 .patterns = &.{
10016 .{ .src = .{ .to_sse, .mem, .none } },
10017 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10018 .{ .src = .{ .to_sse, .to_sse, .none } },
10019 },
10020 .dst_temps = .{.{ .rc = .sse }},
10021 .each = .{ .once = &.{
10022 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },
10023 } },
10024 }, .{
10025 .required_features = .{ .sse2, null, null, null },
10026 .src_constraints = .{
10027 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10028 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10029 .any,
10030 },
10031 .patterns = &.{
10032 .{ .src = .{ .to_mut_sse, .mem, .none } },
10033 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10034 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10035 },
10036 .dst_temps = .{.{ .ref = .src0 }},
10037 .each = .{ .once = &.{
10038 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },
10039 } },
10040 }, .{
10041 .required_features = .{ .avx2, null, null, null },
10042 .src_constraints = .{
10043 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
10044 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
10045 .any,
10046 },
10047 .patterns = &.{
10048 .{ .src = .{ .to_sse, .mem, .none } },
10049 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10050 .{ .src = .{ .to_sse, .to_sse, .none } },
10051 },
10052 .dst_temps = .{.{ .rc = .sse }},
10053 .each = .{ .once = &.{
10054 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },
10055 } },
10056 }, .{
10057 .required_features = .{ .avx2, null, null, null },
10058 .src_constraints = .{
10059 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
10060 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
10061 .any,
10062 },
10063 .patterns = &.{
10064 .{ .src = .{ .to_mem, .to_mem, .none } },
10065 },
10066 .extra_temps = .{
10067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10068 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
10069 .unused,
10070 .unused,
10071 .unused,
10072 .unused,
10073 .unused,
10074 .unused,
10075 .unused,
10076 },
10077 .dst_temps = .{.mem},
10078 .clobbers = .{ .eflags = true },
10079 .each = .{ .once = &.{
10080 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10081 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
10082 .{ ._, .vp_b, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
10083 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10084 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
10085 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10086 } },
10087 }, .{
10088 .required_features = .{ .avx, null, null, null },
10089 .src_constraints = .{
10090 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10091 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10092 .any,
10093 },
10094 .patterns = &.{
10095 .{ .src = .{ .to_mem, .to_mem, .none } },
10096 },
10097 .extra_temps = .{
10098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10099 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
10100 .unused,
10101 .unused,
10102 .unused,
10103 .unused,
10104 .unused,
10105 .unused,
10106 .unused,
10107 },
10108 .dst_temps = .{.mem},
10109 .clobbers = .{ .eflags = true },
10110 .each = .{ .once = &.{
10111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10112 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10113 .{ ._, .vp_b, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
10114 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10115 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10117 } },
10118 }, .{
10119 .required_features = .{ .sse2, null, null, null },
10120 .src_constraints = .{
10121 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10122 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
10123 .any,
10124 },
10125 .patterns = &.{
10126 .{ .src = .{ .to_mem, .to_mem, .none } },
10127 },
10128 .extra_temps = .{
10129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10130 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
10131 .unused,
10132 .unused,
10133 .unused,
10134 .unused,
10135 .unused,
10136 .unused,
10137 .unused,
10138 },
10139 .dst_temps = .{.mem},
10140 .clobbers = .{ .eflags = true },
10141 .each = .{ .once = &.{
10142 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10143 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10144 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10145 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10146 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10147 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10148 } },
10149 }, .{
10150 .required_features = .{ .cmov, .slow_incdec, null, null },
10151 .src_constraints = .{
10152 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10153 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10154 .any,
10155 },
10156 .patterns = &.{
10157 .{ .src = .{ .to_mem, .to_mem, .none } },
10158 },
10159 .extra_temps = .{
10160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10161 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10162 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10163 .unused,
10164 .unused,
10165 .unused,
10166 .unused,
10167 .unused,
10168 .unused,
10169 },
10170 .dst_temps = .{.mem},
10171 .clobbers = .{ .eflags = true },
10172 .each = .{ .once = &.{
10173 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10174 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
10175 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10176 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
10177 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
10178 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
10179 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
10180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10181 } },
10182 }, .{
10183 .required_features = .{ .cmov, null, null, null },
10184 .src_constraints = .{
10185 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10186 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10187 .any,
10188 },
10189 .patterns = &.{
10190 .{ .src = .{ .to_mem, .to_mem, .none } },
10191 },
10192 .extra_temps = .{
10193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10194 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10195 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10196 .unused,
10197 .unused,
10198 .unused,
10199 .unused,
10200 .unused,
10201 .unused,
10202 },
10203 .dst_temps = .{.mem},
10204 .clobbers = .{ .eflags = true },
10205 .each = .{ .once = &.{
10206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10207 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
10208 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10209 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },
10210 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },
10211 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
10212 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
10213 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
10214 } },
10215 }, .{
10216 .required_features = .{ .slow_incdec, null, null, null },
10217 .src_constraints = .{
10218 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10219 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10220 .any,
10221 },
10222 .patterns = &.{
10223 .{ .src = .{ .to_mem, .to_mem, .none } },
10224 },
10225 .extra_temps = .{
10226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10227 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10228 .unused,
10229 .unused,
10230 .unused,
10231 .unused,
10232 .unused,
10233 .unused,
10234 .unused,
10235 },
10236 .dst_temps = .{.mem},
10237 .clobbers = .{ .eflags = true },
10238 .each = .{ .once = &.{
10239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10240 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
10241 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10242 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
10243 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10244 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
10245 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
10246 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10247 } },
10248 }, .{
10249 .src_constraints = .{
10250 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10251 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
10252 .any,
10253 },
10254 .patterns = &.{
10255 .{ .src = .{ .to_mem, .to_mem, .none } },
10256 },
10257 .extra_temps = .{
10258 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10259 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
10260 .unused,
10261 .unused,
10262 .unused,
10263 .unused,
10264 .unused,
10265 .unused,
10266 .unused,
10267 },
10268 .dst_temps = .{.mem},
10269 .clobbers = .{ .eflags = true },
10270 .each = .{ .once = &.{
10271 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10272 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
10273 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10274 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
10275 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
10276 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
10277 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
10278 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
10279 } },
10280 }, .{
10281 .required_features = .{ .sse, .mmx, null, null },
10282 .src_constraints = .{
10283 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
10284 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
10285 .any,
10286 },
10287 .patterns = &.{
10288 .{ .src = .{ .to_mut_mmx, .mem, .none } },
10289 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
10290 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
10291 },
10292 .dst_temps = .{.{ .ref = .src0 }},
10293 .each = .{ .once = &.{
10294 .{ ._, .p_w, .maxs, .dst0q, .src1q, ._, ._ },
10295 } },
10296 }, .{
10297 .required_features = .{ .avx, null, null, null },
10298 .src_constraints = .{
10299 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
10300 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
10301 .any,
10302 },
10303 .patterns = &.{
10304 .{ .src = .{ .to_sse, .mem, .none } },
10305 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10306 .{ .src = .{ .to_sse, .to_sse, .none } },
10307 },
10308 .dst_temps = .{.{ .rc = .sse }},
10309 .each = .{ .once = &.{
10310 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },
10311 } },
10312 }, .{
10313 .required_features = .{ .sse2, null, null, null },
10314 .src_constraints = .{
10315 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
10316 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
10317 .any,
10318 },
10319 .patterns = &.{
10320 .{ .src = .{ .to_mut_sse, .mem, .none } },
10321 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10322 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10323 },
10324 .dst_temps = .{.{ .ref = .src0 }},
10325 .each = .{ .once = &.{
10326 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },
10327 } },
10328 }, .{
10329 .required_features = .{ .avx2, null, null, null },
10330 .src_constraints = .{
10331 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
10332 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
10333 .any,
10334 },
10335 .patterns = &.{
10336 .{ .src = .{ .to_sse, .mem, .none } },
10337 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10338 .{ .src = .{ .to_sse, .to_sse, .none } },
10339 },
10340 .dst_temps = .{.{ .rc = .sse }},
10341 .each = .{ .once = &.{
10342 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },
10343 } },
10344 }, .{
10345 .required_features = .{ .avx2, null, null, null },
10346 .src_constraints = .{
10347 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
10348 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
10349 .any,
10350 },
10351 .patterns = &.{
10352 .{ .src = .{ .to_mem, .to_mem, .none } },
10353 },
10354 .extra_temps = .{
10355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10356 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
10357 .unused,
10358 .unused,
10359 .unused,
10360 .unused,
10361 .unused,
10362 .unused,
10363 .unused,
10364 },
10365 .dst_temps = .{.mem},
10366 .clobbers = .{ .eflags = true },
10367 .each = .{ .once = &.{
10368 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10369 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
10370 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
10371 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10372 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
10373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10374 } },
10375 }, .{
10376 .required_features = .{ .avx, null, null, null },
10377 .src_constraints = .{
10378 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
10379 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
10380 .any,
10381 },
10382 .patterns = &.{
10383 .{ .src = .{ .to_mem, .to_mem, .none } },
10384 },
10385 .extra_temps = .{
10386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10387 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
10388 .unused,
10389 .unused,
10390 .unused,
10391 .unused,
10392 .unused,
10393 .unused,
10394 .unused,
10395 },
10396 .dst_temps = .{.mem},
10397 .clobbers = .{ .eflags = true },
10398 .each = .{ .once = &.{
10399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10400 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10401 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
10402 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10403 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10404 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10405 } },
10406 }, .{
10407 .required_features = .{ .sse2, null, null, null },
10408 .src_constraints = .{
10409 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
10410 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
10411 .any,
10412 },
10413 .patterns = &.{
10414 .{ .src = .{ .to_mem, .to_mem, .none } },
10415 },
10416 .extra_temps = .{
10417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10418 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
10419 .unused,
10420 .unused,
10421 .unused,
10422 .unused,
10423 .unused,
10424 .unused,
10425 .unused,
10426 },
10427 .dst_temps = .{.mem},
10428 .clobbers = .{ .eflags = true },
10429 .each = .{ .once = &.{
10430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10431 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10432 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10433 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10434 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10436 } },
10437 }, .{
10438 .required_features = .{ .cmov, null, null, null },
10439 .src_constraints = .{
10440 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
10441 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
10442 .any,
10443 },
10444 .patterns = &.{
10445 .{ .src = .{ .to_mem, .to_mem, .none } },
10446 },
10447 .extra_temps = .{
10448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10449 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
10450 .unused,
10451 .unused,
10452 .unused,
10453 .unused,
10454 .unused,
10455 .unused,
10456 .unused,
10457 },
10458 .dst_temps = .{.mem},
10459 .clobbers = .{ .eflags = true },
10460 .each = .{ .once = &.{
10461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10462 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
10463 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10464 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10465 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
10466 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
10467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10468 } },
10469 }, .{
10470 .src_constraints = .{
10471 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
10472 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
10473 .any,
10474 },
10475 .patterns = &.{
10476 .{ .src = .{ .to_mem, .to_mem, .none } },
10477 },
10478 .extra_temps = .{
10479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10480 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
10481 .unused,
10482 .unused,
10483 .unused,
10484 .unused,
10485 .unused,
10486 .unused,
10487 .unused,
10488 },
10489 .dst_temps = .{.mem},
10490 .clobbers = .{ .eflags = true },
10491 .each = .{ .once = &.{
10492 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10493 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
10494 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10495 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
10496 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10497 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
10498 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
10499 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10500 } },
10501 }, .{
10502 .required_features = .{ .avx, null, null, null },
10503 .src_constraints = .{
10504 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10506 .any,
10507 },
10508 .patterns = &.{
10509 .{ .src = .{ .to_sse, .mem, .none } },
10510 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10511 .{ .src = .{ .to_sse, .to_sse, .none } },
10512 },
10513 .dst_temps = .{.{ .rc = .sse }},
10514 .each = .{ .once = &.{
10515 .{ ._, .vp_w, .maxu, .dst0x, .src0x, .src1x, ._ },
10516 } },
10517 }, .{
10518 .required_features = .{ .sse4_1, null, null, null },
10519 .src_constraints = .{
10520 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10521 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10522 .any,
10523 },
10524 .patterns = &.{
10525 .{ .src = .{ .to_mut_sse, .mem, .none } },
10526 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10527 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10528 },
10529 .dst_temps = .{.{ .ref = .src0 }},
10530 .each = .{ .once = &.{
10531 .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ },
10532 } },
10533 }, .{
10534 .required_features = .{ .sse2, null, null, null },
10535 .src_constraints = .{
10536 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10538 .any,
10539 },
10540 .patterns = &.{
10541 .{ .src = .{ .to_mut_sse, .mem, .none } },
10542 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10543 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10544 },
10545 .dst_temps = .{.{ .ref = .src0 }},
10546 .each = .{ .once = &.{
10547 .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ },
10548 .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ },
10549 } },
10550 }, .{
10551 .required_features = .{ .avx2, null, null, null },
10552 .src_constraints = .{
10553 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
10554 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
10555 .any,
10556 },
10557 .patterns = &.{
10558 .{ .src = .{ .to_sse, .mem, .none } },
10559 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10560 .{ .src = .{ .to_sse, .to_sse, .none } },
10561 },
10562 .dst_temps = .{.{ .rc = .sse }},
10563 .each = .{ .once = &.{
10564 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },
10565 } },
10566 }, .{
10567 .required_features = .{ .avx2, null, null, null },
10568 .src_constraints = .{
10569 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
10570 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
10571 .any,
10572 },
10573 .patterns = &.{
10574 .{ .src = .{ .to_mem, .to_mem, .none } },
10575 },
10576 .extra_temps = .{
10577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10578 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
10579 .unused,
10580 .unused,
10581 .unused,
10582 .unused,
10583 .unused,
10584 .unused,
10585 .unused,
10586 },
10587 .dst_temps = .{.mem},
10588 .clobbers = .{ .eflags = true },
10589 .each = .{ .once = &.{
10590 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10591 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
10592 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
10593 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10594 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
10595 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10596 } },
10597 }, .{
10598 .required_features = .{ .avx, null, null, null },
10599 .src_constraints = .{
10600 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10601 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10602 .any,
10603 },
10604 .patterns = &.{
10605 .{ .src = .{ .to_mem, .to_mem, .none } },
10606 },
10607 .extra_temps = .{
10608 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10609 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
10610 .unused,
10611 .unused,
10612 .unused,
10613 .unused,
10614 .unused,
10615 .unused,
10616 .unused,
10617 },
10618 .dst_temps = .{.mem},
10619 .clobbers = .{ .eflags = true },
10620 .each = .{ .once = &.{
10621 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10622 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10623 .{ ._, .vp_w, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
10624 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10625 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10626 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10627 } },
10628 }, .{
10629 .required_features = .{ .sse4_1, null, null, null },
10630 .src_constraints = .{
10631 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10632 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10633 .any,
10634 },
10635 .patterns = &.{
10636 .{ .src = .{ .to_mem, .to_mem, .none } },
10637 },
10638 .extra_temps = .{
10639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10640 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
10641 .unused,
10642 .unused,
10643 .unused,
10644 .unused,
10645 .unused,
10646 .unused,
10647 .unused,
10648 },
10649 .dst_temps = .{.mem},
10650 .clobbers = .{ .eflags = true },
10651 .each = .{ .once = &.{
10652 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10653 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10654 .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10655 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10656 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10658 } },
10659 }, .{
10660 .required_features = .{ .sse2, null, null, null },
10661 .src_constraints = .{
10662 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10663 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
10664 .any,
10665 },
10666 .patterns = &.{
10667 .{ .src = .{ .to_mem, .to_mem, .none } },
10668 },
10669 .extra_temps = .{
10670 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10671 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
10672 .unused,
10673 .unused,
10674 .unused,
10675 .unused,
10676 .unused,
10677 .unused,
10678 .unused,
10679 },
10680 .dst_temps = .{.mem},
10681 .clobbers = .{ .eflags = true },
10682 .each = .{ .once = &.{
10683 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10684 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10685 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10686 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10687 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10688 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10689 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10690 } },
10691 }, .{
10692 .required_features = .{ .cmov, null, null, null },
10693 .src_constraints = .{
10694 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
10695 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
10696 .any,
10697 },
10698 .patterns = &.{
10699 .{ .src = .{ .to_mem, .to_mem, .none } },
10700 },
10701 .extra_temps = .{
10702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10703 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
10704 .unused,
10705 .unused,
10706 .unused,
10707 .unused,
10708 .unused,
10709 .unused,
10710 .unused,
10711 },
10712 .dst_temps = .{.mem},
10713 .clobbers = .{ .eflags = true },
10714 .each = .{ .once = &.{
10715 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10716 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
10717 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10718 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10719 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
10720 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
10721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10722 } },
10723 }, .{
10724 .src_constraints = .{
10725 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
10726 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
10727 .any,
10728 },
10729 .patterns = &.{
10730 .{ .src = .{ .to_mem, .to_mem, .none } },
10731 },
10732 .extra_temps = .{
10733 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10734 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
10735 .unused,
10736 .unused,
10737 .unused,
10738 .unused,
10739 .unused,
10740 .unused,
10741 .unused,
10742 },
10743 .dst_temps = .{.mem},
10744 .clobbers = .{ .eflags = true },
10745 .each = .{ .once = &.{
10746 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10747 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
10748 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10749 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
10750 .{ ._, ._, .mov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
10751 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
10752 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
10753 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10754 } },
10755 }, .{
10756 .required_features = .{ .avx, null, null, null },
10757 .src_constraints = .{
10758 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10759 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10760 .any,
10761 },
10762 .patterns = &.{
10763 .{ .src = .{ .to_sse, .mem, .none } },
10764 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10765 .{ .src = .{ .to_sse, .to_sse, .none } },
10766 },
10767 .dst_temps = .{.{ .rc = .sse }},
10768 .each = .{ .once = &.{
10769 .{ ._, .vp_d, .maxs, .dst0x, .src0x, .src1x, ._ },
10770 } },
10771 }, .{
10772 .required_features = .{ .sse4_1, null, null, null },
10773 .src_constraints = .{
10774 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10775 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10776 .any,
10777 },
10778 .patterns = &.{
10779 .{ .src = .{ .to_mut_sse, .mem, .none } },
10780 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10781 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10782 },
10783 .dst_temps = .{.{ .ref = .src0 }},
10784 .each = .{ .once = &.{
10785 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },
10786 } },
10787 }, .{
10788 .required_features = .{ .sse2, null, null, null },
10789 .src_constraints = .{
10790 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10791 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
10792 .any,
10793 },
10794 .patterns = &.{
10795 .{ .src = .{ .to_mut_sse, .mem, .none } },
10796 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
10797 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
10798 },
10799 .dst_temps = .{.{ .rc = .sse }},
10800 .each = .{ .once = &.{
10801 .{ ._, ._dqa, .mov, .dst0x, .src0x, ._, ._ },
10802 .{ ._, .p_d, .cmpgt, .dst0x, .src1x, ._, ._ },
10803 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
10804 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
10805 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
10806 } },
10807 }, .{
10808 .required_features = .{ .avx2, null, null, null },
10809 .src_constraints = .{
10810 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
10811 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
10812 .any,
10813 },
10814 .patterns = &.{
10815 .{ .src = .{ .to_sse, .mem, .none } },
10816 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
10817 .{ .src = .{ .to_sse, .to_sse, .none } },
10818 },
10819 .dst_temps = .{.{ .rc = .sse }},
10820 .each = .{ .once = &.{
10821 .{ ._, .vp_d, .maxs, .dst0y, .src0y, .src1y, ._ },
10822 } },
10823 }, .{
10824 .required_features = .{ .avx2, null, null, null },
10825 .src_constraints = .{
10826 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
10827 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
10828 .any,
10829 },
10830 .patterns = &.{
10831 .{ .src = .{ .to_mem, .to_mem, .none } },
10832 },
10833 .extra_temps = .{
10834 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10835 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
10836 .unused,
10837 .unused,
10838 .unused,
10839 .unused,
10840 .unused,
10841 .unused,
10842 .unused,
10843 },
10844 .dst_temps = .{.mem},
10845 .clobbers = .{ .eflags = true },
10846 .each = .{ .once = &.{
10847 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10848 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
10849 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
10850 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10851 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
10852 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10853 } },
10854 }, .{
10855 .required_features = .{ .avx, null, null, null },
10856 .src_constraints = .{
10857 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10858 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10859 .any,
10860 },
10861 .patterns = &.{
10862 .{ .src = .{ .to_mem, .to_mem, .none } },
10863 },
10864 .extra_temps = .{
10865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10866 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
10867 .unused,
10868 .unused,
10869 .unused,
10870 .unused,
10871 .unused,
10872 .unused,
10873 .unused,
10874 },
10875 .dst_temps = .{.mem},
10876 .clobbers = .{ .eflags = true },
10877 .each = .{ .once = &.{
10878 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10879 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10880 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
10881 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10882 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10883 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10884 } },
10885 }, .{
10886 .required_features = .{ .sse4_1, null, null, null },
10887 .src_constraints = .{
10888 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10889 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10890 .any,
10891 },
10892 .patterns = &.{
10893 .{ .src = .{ .to_mem, .to_mem, .none } },
10894 },
10895 .extra_temps = .{
10896 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10897 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
10898 .unused,
10899 .unused,
10900 .unused,
10901 .unused,
10902 .unused,
10903 .unused,
10904 .unused,
10905 },
10906 .dst_temps = .{.mem},
10907 .clobbers = .{ .eflags = true },
10908 .each = .{ .once = &.{
10909 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10910 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10911 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10912 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10913 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10914 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10915 } },
10916 }, .{
10917 .required_features = .{ .sse2, null, null, null },
10918 .src_constraints = .{
10919 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10920 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
10921 .any,
10922 },
10923 .patterns = &.{
10924 .{ .src = .{ .to_mem, .to_mem, .none } },
10925 },
10926 .extra_temps = .{
10927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10928 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
10929 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
10930 .unused,
10931 .unused,
10932 .unused,
10933 .unused,
10934 .unused,
10935 .unused,
10936 },
10937 .dst_temps = .{.mem},
10938 .clobbers = .{ .eflags = true },
10939 .each = .{ .once = &.{
10940 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10941 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10942 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
10943 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10944 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },
10945 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10946 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },
10947 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10948 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10949 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10950 } },
10951 }, .{
10952 .required_features = .{ .cmov, null, null, null },
10953 .src_constraints = .{
10954 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
10955 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
10956 .any,
10957 },
10958 .patterns = &.{
10959 .{ .src = .{ .to_mem, .to_mem, .none } },
10960 },
10961 .extra_temps = .{
10962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10963 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
10964 .unused,
10965 .unused,
10966 .unused,
10967 .unused,
10968 .unused,
10969 .unused,
10970 .unused,
10971 },
10972 .dst_temps = .{.mem},
10973 .clobbers = .{ .eflags = true },
10974 .each = .{ .once = &.{
10975 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10976 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
10977 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
10978 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
10979 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
10980 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
10981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10982 } },
10983 }, .{
10984 .src_constraints = .{
10985 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
10986 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
10987 .any,
10988 },
10989 .patterns = &.{
10990 .{ .src = .{ .to_mem, .to_mem, .none } },
10991 },
10992 .extra_temps = .{
10993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
10994 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
10995 .unused,
10996 .unused,
10997 .unused,
10998 .unused,
10999 .unused,
11000 .unused,
11001 .unused,
11002 },
11003 .dst_temps = .{.mem},
11004 .clobbers = .{ .eflags = true },
11005 .each = .{ .once = &.{
11006 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11007 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
11008 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11009 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
11010 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11011 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
11012 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
11013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11014 } },
11015 }, .{
11016 .required_features = .{ .avx, null, null, null },
11017 .src_constraints = .{
11018 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11019 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11020 .any,
11021 },
11022 .patterns = &.{
11023 .{ .src = .{ .to_sse, .mem, .none } },
11024 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11025 .{ .src = .{ .to_sse, .to_sse, .none } },
11026 },
11027 .dst_temps = .{.{ .rc = .sse }},
11028 .each = .{ .once = &.{
11029 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },
11030 } },
11031 }, .{
11032 .required_features = .{ .sse4_1, null, null, null },
11033 .src_constraints = .{
11034 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11035 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11036 .any,
11037 },
11038 .patterns = &.{
11039 .{ .src = .{ .to_mut_sse, .mem, .none } },
11040 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11041 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11042 },
11043 .dst_temps = .{.{ .ref = .src0 }},
11044 .each = .{ .once = &.{
11045 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },
11046 } },
11047 }, .{
11048 .required_features = .{ .sse2, null, null, null },
11049 .src_constraints = .{
11050 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11051 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11052 .any,
11053 },
11054 .patterns = &.{
11055 .{ .src = .{ .to_mut_sse, .mem, .none } },
11056 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11057 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11058 },
11059 .extra_temps = .{
11060 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
11061 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
11062 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11063 .unused,
11064 .unused,
11065 .unused,
11066 .unused,
11067 .unused,
11068 .unused,
11069 },
11070 .dst_temps = .{.{ .rc = .sse }},
11071 .each = .{ .once = &.{
11072 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11073 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
11074 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
11075 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
11076 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
11077 .{ ._, .p_d, .cmpgt, .dst0x, .tmp2x, ._, ._ },
11078 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
11079 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
11080 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
11081 } },
11082 }, .{
11083 .required_features = .{ .avx2, null, null, null },
11084 .src_constraints = .{
11085 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
11086 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
11087 .any,
11088 },
11089 .patterns = &.{
11090 .{ .src = .{ .to_sse, .mem, .none } },
11091 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11092 .{ .src = .{ .to_sse, .to_sse, .none } },
11093 },
11094 .dst_temps = .{.{ .rc = .sse }},
11095 .each = .{ .once = &.{
11096 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },
11097 } },
11098 }, .{
11099 .required_features = .{ .avx2, null, null, null },
11100 .src_constraints = .{
11101 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
11102 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
11103 .any,
11104 },
11105 .patterns = &.{
11106 .{ .src = .{ .to_mem, .to_mem, .none } },
11107 },
11108 .extra_temps = .{
11109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11110 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
11111 .unused,
11112 .unused,
11113 .unused,
11114 .unused,
11115 .unused,
11116 .unused,
11117 .unused,
11118 },
11119 .dst_temps = .{.mem},
11120 .clobbers = .{ .eflags = true },
11121 .each = .{ .once = &.{
11122 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11123 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
11124 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
11125 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
11126 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
11127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11128 } },
11129 }, .{
11130 .required_features = .{ .avx, null, null, null },
11131 .src_constraints = .{
11132 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11133 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11134 .any,
11135 },
11136 .patterns = &.{
11137 .{ .src = .{ .to_mem, .to_mem, .none } },
11138 },
11139 .extra_temps = .{
11140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11141 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11142 .unused,
11143 .unused,
11144 .unused,
11145 .unused,
11146 .unused,
11147 .unused,
11148 .unused,
11149 },
11150 .dst_temps = .{.mem},
11151 .clobbers = .{ .eflags = true },
11152 .each = .{ .once = &.{
11153 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11154 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11155 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },
11156 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11157 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11159 } },
11160 }, .{
11161 .required_features = .{ .sse4_1, null, null, null },
11162 .src_constraints = .{
11163 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11164 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11165 .any,
11166 },
11167 .patterns = &.{
11168 .{ .src = .{ .to_mem, .to_mem, .none } },
11169 },
11170 .extra_temps = .{
11171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11172 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11173 .unused,
11174 .unused,
11175 .unused,
11176 .unused,
11177 .unused,
11178 .unused,
11179 .unused,
11180 },
11181 .dst_temps = .{.mem},
11182 .clobbers = .{ .eflags = true },
11183 .each = .{ .once = &.{
11184 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11185 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11186 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11187 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11188 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11190 } },
11191 }, .{
11192 .required_features = .{ .sse2, null, null, null },
11193 .src_constraints = .{
11194 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11195 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
11196 .any,
11197 },
11198 .patterns = &.{
11199 .{ .src = .{ .to_mem, .to_mem, .none } },
11200 },
11201 .extra_temps = .{
11202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11203 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
11204 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11205 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11206 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11207 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11208 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
11209 .unused,
11210 .unused,
11211 },
11212 .dst_temps = .{.mem},
11213 .clobbers = .{ .eflags = true },
11214 .each = .{ .once = &.{
11215 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11216 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
11217 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11218 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11219 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11220 .{ ._, ._dqa, .mov, .tmp5x, .tmp3x, ._, ._ },
11221 .{ ._, ._dqa, .mov, .tmp6x, .tmp4x, ._, ._ },
11222 .{ ._, .p_, .xor, .tmp5x, .tmp2x, ._, ._ },
11223 .{ ._, .p_, .xor, .tmp6x, .tmp2x, ._, ._ },
11224 .{ ._, .p_d, .cmpgt, .tmp5x, .tmp6x, ._, ._ },
11225 .{ ._, .p_, .@"and", .tmp3x, .tmp5x, ._, ._ },
11226 .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ },
11227 .{ ._, .p_, .@"or", .tmp3x, .tmp5x, ._, ._ },
11228 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
11229 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11231 } },
11232 }, .{
11233 .required_features = .{ .cmov, null, null, null },
11234 .src_constraints = .{
11235 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
11236 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
11237 .any,
11238 },
11239 .patterns = &.{
11240 .{ .src = .{ .to_mem, .to_mem, .none } },
11241 },
11242 .extra_temps = .{
11243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
11245 .unused,
11246 .unused,
11247 .unused,
11248 .unused,
11249 .unused,
11250 .unused,
11251 .unused,
11252 },
11253 .dst_temps = .{.mem},
11254 .clobbers = .{ .eflags = true },
11255 .each = .{ .once = &.{
11256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11257 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
11258 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11259 .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11260 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
11261 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
11262 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11263 } },
11264 }, .{
11265 .src_constraints = .{
11266 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
11267 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
11268 .any,
11269 },
11270 .patterns = &.{
11271 .{ .src = .{ .to_mem, .to_mem, .none } },
11272 },
11273 .extra_temps = .{
11274 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11275 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
11276 .unused,
11277 .unused,
11278 .unused,
11279 .unused,
11280 .unused,
11281 .unused,
11282 .unused,
11283 },
11284 .dst_temps = .{.mem},
11285 .clobbers = .{ .eflags = true },
11286 .each = .{ .once = &.{
11287 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11288 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
11289 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11290 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
11291 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
11292 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
11293 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
11294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11295 } },
11296 }, .{
11297 .required_features = .{ .avx, null, null, null },
11298 .src_constraints = .{
11299 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
11300 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
11301 .any,
11302 },
11303 .patterns = &.{
11304 .{ .src = .{ .to_sse, .to_sse, .none } },
11305 },
11306 .dst_temps = .{.{ .rc = .sse }},
11307 .each = .{ .once = &.{
11308 .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ },
11309 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
11310 } },
11311 }, .{
11312 .required_features = .{ .sse4_2, null, null, null },
11313 .src_constraints = .{
11314 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
11315 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
11316 .any,
11317 },
11318 .patterns = &.{
11319 .{ .src = .{ .to_mut_sse, .mem, .none } },
11320 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11321 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11322 },
11323 .extra_temps = .{
11324 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
11325 .unused,
11326 .unused,
11327 .unused,
11328 .unused,
11329 .unused,
11330 .unused,
11331 .unused,
11332 .unused,
11333 },
11334 .dst_temps = .{.{ .ref = .src0 }},
11335 .each = .{ .once = &.{
11336 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },
11337 .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ },
11338 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ },
11339 } },
11340 }, .{
11341 .required_features = .{ .avx2, null, null, null },
11342 .src_constraints = .{
11343 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
11344 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
11345 .any,
11346 },
11347 .patterns = &.{
11348 .{ .src = .{ .to_sse, .to_sse, .none } },
11349 },
11350 .dst_temps = .{.{ .rc = .sse }},
11351 .each = .{ .once = &.{
11352 .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ },
11353 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
11354 } },
11355 }, .{
11356 .required_features = .{ .avx2, null, null, null },
11357 .src_constraints = .{
11358 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
11359 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
11360 .any,
11361 },
11362 .patterns = &.{
11363 .{ .src = .{ .to_mem, .to_mem, .none } },
11364 },
11365 .extra_temps = .{
11366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11367 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
11368 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
11369 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
11370 .unused,
11371 .unused,
11372 .unused,
11373 .unused,
11374 .unused,
11375 },
11376 .dst_temps = .{.mem},
11377 .clobbers = .{ .eflags = true },
11378 .each = .{ .once = &.{
11379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11380 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
11381 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
11382 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },
11383 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
11384 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
11385 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
11386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11387 } },
11388 }, .{
11389 .required_features = .{ .avx, null, null, null },
11390 .src_constraints = .{
11391 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
11392 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
11393 .any,
11394 },
11395 .patterns = &.{
11396 .{ .src = .{ .to_mem, .to_mem, .none } },
11397 },
11398 .extra_temps = .{
11399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11400 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
11401 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
11402 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
11403 .unused,
11404 .unused,
11405 .unused,
11406 .unused,
11407 .unused,
11408 },
11409 .dst_temps = .{.mem},
11410 .clobbers = .{ .eflags = true },
11411 .each = .{ .once = &.{
11412 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11413 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11414 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11415 .{ ._, .vp_q, .cmpgt, .tmp3x, .tmp2x, .tmp1x, ._ },
11416 .{ ._, .vp_b, .blendv, .tmp1x, .tmp1x, .tmp2x, .tmp3x },
11417 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11418 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11420 } },
11421 }, .{
11422 .required_features = .{ .sse4_2, null, null, null },
11423 .src_constraints = .{
11424 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
11425 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
11426 .any,
11427 },
11428 .patterns = &.{
11429 .{ .src = .{ .to_mem, .to_mem, .none } },
11430 },
11431 .extra_temps = .{
11432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11433 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
11434 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
11435 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
11436 .unused,
11437 .unused,
11438 .unused,
11439 .unused,
11440 .unused,
11441 },
11442 .dst_temps = .{.mem},
11443 .clobbers = .{ .eflags = true },
11444 .each = .{ .once = &.{
11445 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11446 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11447 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11448 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
11449 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },
11450 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
11451 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
11452 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11454 } },
11455 }, .{
11456 .required_features = .{ .@"64bit", .cmov, null, null },
11457 .src_constraints = .{
11458 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
11459 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
11460 .any,
11461 },
11462 .patterns = &.{
11463 .{ .src = .{ .to_mem, .to_mem, .none } },
11464 },
11465 .extra_temps = .{
11466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11467 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
11468 .unused,
11469 .unused,
11470 .unused,
11471 .unused,
11472 .unused,
11473 .unused,
11474 .unused,
11475 },
11476 .dst_temps = .{.mem},
11477 .clobbers = .{ .eflags = true },
11478 .each = .{ .once = &.{
11479 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11480 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11481 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11482 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11483 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
11484 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11486 } },
11487 }, .{
11488 .required_features = .{ .@"64bit", null, null, null },
11489 .src_constraints = .{
11490 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
11491 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
11492 .any,
11493 },
11494 .patterns = &.{
11495 .{ .src = .{ .to_mem, .to_mem, .none } },
11496 },
11497 .extra_temps = .{
11498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11499 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
11500 .unused,
11501 .unused,
11502 .unused,
11503 .unused,
11504 .unused,
11505 .unused,
11506 .unused,
11507 },
11508 .dst_temps = .{.mem},
11509 .clobbers = .{ .eflags = true },
11510 .each = .{ .once = &.{
11511 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11512 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11513 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11514 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
11515 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11516 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
11517 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11519 } },
11520 }, .{
11521 .required_features = .{ .avx, null, null, null },
11522 .src_constraints = .{
11523 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11524 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11525 .any,
11526 },
11527 .patterns = &.{
11528 .{ .src = .{ .to_sse, .mem, .none } },
11529 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11530 .{ .src = .{ .to_sse, .to_sse, .none } },
11531 },
11532 .extra_temps = .{
11533 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
11534 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11535 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11536 .unused,
11537 .unused,
11538 .unused,
11539 .unused,
11540 .unused,
11541 .unused,
11542 },
11543 .dst_temps = .{.{ .rc = .sse }},
11544 .each = .{ .once = &.{
11545 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11546 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
11547 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
11548 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
11549 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
11550 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
11551 } },
11552 }, .{
11553 .required_features = .{ .sse4_2, null, null, null },
11554 .src_constraints = .{
11555 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11556 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11557 .any,
11558 },
11559 .patterns = &.{
11560 .{ .src = .{ .to_mut_sse, .mem, .none } },
11561 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
11562 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
11563 },
11564 .extra_temps = .{
11565 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
11566 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11567 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11568 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
11569 .unused,
11570 .unused,
11571 .unused,
11572 .unused,
11573 .unused,
11574 },
11575 .dst_temps = .{.{ .ref = .src0 }},
11576 .each = .{ .once = &.{
11577 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11578 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
11579 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
11580 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
11581 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
11582 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp2x, ._, ._ },
11583 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp3x, ._ },
11584 } },
11585 }, .{
11586 .required_features = .{ .avx2, null, null, null },
11587 .src_constraints = .{
11588 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
11589 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
11590 .any,
11591 },
11592 .patterns = &.{
11593 .{ .src = .{ .to_sse, .mem, .none } },
11594 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
11595 .{ .src = .{ .to_sse, .to_sse, .none } },
11596 },
11597 .extra_temps = .{
11598 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
11599 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11600 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11601 .unused,
11602 .unused,
11603 .unused,
11604 .unused,
11605 .unused,
11606 .unused,
11607 },
11608 .dst_temps = .{.{ .rc = .sse }},
11609 .each = .{ .once = &.{
11610 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11611 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
11612 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
11613 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
11614 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
11615 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
11616 } },
11617 }, .{
11618 .required_features = .{ .avx2, null, null, null },
11619 .src_constraints = .{
11620 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
11621 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
11622 .any,
11623 },
11624 .patterns = &.{
11625 .{ .src = .{ .to_mem, .to_mem, .none } },
11626 },
11627 .extra_temps = .{
11628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11629 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11630 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11631 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11632 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11633 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11634 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
11635 .unused,
11636 .unused,
11637 },
11638 .dst_temps = .{.mem},
11639 .clobbers = .{ .eflags = true },
11640 .each = .{ .once = &.{
11641 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11642 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
11643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11644 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
11645 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
11646 .{ ._, .vp_, .xor, .tmp5y, .tmp3y, .tmp2y, ._ },
11647 .{ ._, .vp_, .xor, .tmp6y, .tmp4y, .tmp2y, ._ },
11648 .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp6y, .tmp5y, ._ },
11649 .{ ._, .vp_b, .blendv, .tmp3y, .tmp3y, .tmp4y, .tmp5y },
11650 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
11651 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
11652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11653 } },
11654 }, .{
11655 .required_features = .{ .avx, null, null, null },
11656 .src_constraints = .{
11657 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11658 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11659 .any,
11660 },
11661 .patterns = &.{
11662 .{ .src = .{ .to_mem, .to_mem, .none } },
11663 },
11664 .extra_temps = .{
11665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11666 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11667 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11668 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11669 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11670 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11671 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11672 .unused,
11673 .unused,
11674 },
11675 .dst_temps = .{.mem},
11676 .clobbers = .{ .eflags = true },
11677 .each = .{ .once = &.{
11678 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11679 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
11680 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11681 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11682 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11683 .{ ._, .vp_, .xor, .tmp5x, .tmp3x, .tmp2x, ._ },
11684 .{ ._, .vp_, .xor, .tmp6x, .tmp4x, .tmp2x, ._ },
11685 .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp6x, .tmp5x, ._ },
11686 .{ ._, .vp_b, .blendv, .tmp3x, .tmp3x, .tmp4x, .tmp5x },
11687 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
11688 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11689 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11690 } },
11691 }, .{
11692 .required_features = .{ .sse4_2, null, null, null },
11693 .src_constraints = .{
11694 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11695 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
11696 .any,
11697 },
11698 .patterns = &.{
11699 .{ .src = .{ .to_mem, .to_mem, .none } },
11700 },
11701 .extra_temps = .{
11702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11703 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },
11704 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11705 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11706 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11707 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
11708 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },
11709 .unused,
11710 .unused,
11711 },
11712 .dst_temps = .{.mem},
11713 .clobbers = .{ .eflags = true },
11714 .each = .{ .once = &.{
11715 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11716 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
11717 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11718 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
11719 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
11720 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
11721 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
11722 .{ ._, .p_, .xor, .tmp5x, .tmp3x, ._, ._ },
11723 .{ ._, .p_, .xor, .tmp6x, .tmp4x, ._, ._ },
11724 .{ ._, .p_q, .cmpgt, .tmp6x, .tmp5x, ._, ._ },
11725 .{ ._, .p_b, .blendv, .tmp3x, .tmp4x, .tmp6x, ._ },
11726 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
11727 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
11728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11729 } },
11730 }, .{
11731 .required_features = .{ .@"64bit", .cmov, null, null },
11732 .src_constraints = .{
11733 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
11734 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
11735 .any,
11736 },
11737 .patterns = &.{
11738 .{ .src = .{ .to_mem, .to_mem, .none } },
11739 },
11740 .extra_temps = .{
11741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11742 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
11743 .unused,
11744 .unused,
11745 .unused,
11746 .unused,
11747 .unused,
11748 .unused,
11749 .unused,
11750 },
11751 .dst_temps = .{.mem},
11752 .clobbers = .{ .eflags = true },
11753 .each = .{ .once = &.{
11754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11755 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11756 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11757 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11758 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
11759 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11760 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11761 } },
11762 }, .{
11763 .required_features = .{ .@"64bit", null, null, null },
11764 .src_constraints = .{
11765 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
11766 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
11767 .any,
11768 },
11769 .patterns = &.{
11770 .{ .src = .{ .to_mem, .to_mem, .none } },
11771 },
11772 .extra_temps = .{
11773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11774 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
11775 .unused,
11776 .unused,
11777 .unused,
11778 .unused,
11779 .unused,
11780 .unused,
11781 .unused,
11782 },
11783 .dst_temps = .{.mem},
11784 .clobbers = .{ .eflags = true },
11785 .each = .{ .once = &.{
11786 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11787 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11788 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11789 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
11790 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11791 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
11792 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11794 } },
11795 }, .{
11796 .required_features = .{ .@"64bit", .cmov, null, null },
11797 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
11798 .patterns = &.{
11799 .{ .src = .{ .to_mem, .to_mem, .none } },
11800 },
11801 .extra_temps = .{
11802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11803 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11804 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11805 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11806 .unused,
11807 .unused,
11808 .unused,
11809 .unused,
11810 .unused,
11811 },
11812 .dst_temps = .{.mem},
11813 .clobbers = .{ .eflags = true },
11814 .each = .{ .once = &.{
11815 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11816 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
11817 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11818 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11819 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11820 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
11821 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
11822 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
11823 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11824 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11825 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11826 .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11827 .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ },
11828 .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11829 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11830 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11831 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11833 } },
11834 }, .{
11835 .required_features = .{ .@"64bit", null, null, null },
11836 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
11837 .patterns = &.{
11838 .{ .src = .{ .to_mem, .to_mem, .none } },
11839 },
11840 .extra_temps = .{
11841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11842 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11843 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11844 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11845 .unused,
11846 .unused,
11847 .unused,
11848 .unused,
11849 .unused,
11850 },
11851 .dst_temps = .{.mem},
11852 .clobbers = .{ .eflags = true },
11853 .each = .{ .once = &.{
11854 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11855 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },
11856 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11857 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11858 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11859 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
11860 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
11861 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
11862 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11863 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11864 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11865 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },
11866 .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11867 .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },
11868 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11869 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11870 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
11871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11872 } },
11873 }, .{
11874 .required_features = .{ .@"64bit", .cmov, null, null },
11875 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
11876 .patterns = &.{
11877 .{ .src = .{ .to_mem, .to_mem, .none } },
11878 },
11879 .extra_temps = .{
11880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11881 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11882 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11883 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11884 .unused,
11885 .unused,
11886 .unused,
11887 .unused,
11888 .unused,
11889 },
11890 .dst_temps = .{.mem},
11891 .clobbers = .{ .eflags = true },
11892 .each = .{ .once = &.{
11893 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11894 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11895 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11896 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11897 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11898 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
11899 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
11900 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
11901 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
11902 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
11903 .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ },
11904 .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
11905 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11906 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11907 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
11908 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11909 } },
11910 }, .{
11911 .required_features = .{ .@"64bit", null, null, null },
11912 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
11913 .patterns = &.{
11914 .{ .src = .{ .to_mem, .to_mem, .none } },
11915 },
11916 .extra_temps = .{
11917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
11918 .{ .type = .isize, .kind = .{ .reg = .rsi } },
11919 .{ .type = .u64, .kind = .{ .reg = .rdi } },
11920 .{ .type = .u64, .kind = .{ .reg = .rcx } },
11921 .unused,
11922 .unused,
11923 .unused,
11924 .unused,
11925 .unused,
11926 },
11927 .dst_temps = .{.mem},
11928 .clobbers = .{ .eflags = true },
11929 .each = .{ .once = &.{
11930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
11931 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11932 .{ ._, ._c, .cl, ._, ._, ._, ._ },
11933 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
11934 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
11935 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
11936 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
11937 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
11938 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
11939 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
11940 .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ },
11941 .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ },
11942 .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ },
11943 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
11944 .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ },
11945 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
11946 } },
11947 }, .{
11948 .required_features = .{ .f16c, null, null, null },
11949 .src_constraints = .{
11950 .{ .scalar_float = .{ .of = .word, .is = .word } },
11951 .{ .scalar_float = .{ .of = .word, .is = .word } },
11952 .any,
11953 },
11954 .patterns = &.{
11955 .{ .src = .{ .to_sse, .to_sse, .none } },
11956 },
11957 .extra_temps = .{
11958 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
11959 .{ .type = .f32, .kind = .{ .rc = .sse } },
11960 .unused,
11961 .unused,
11962 .unused,
11963 .unused,
11964 .unused,
11965 .unused,
11966 .unused,
11967 },
11968 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
11969 .each = .{ .once = &.{
11970 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
11971 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
11972 .{ ._, .v_ss, .cmp, .tmp1x, .dst0d, .dst0x, .vp(.unord) },
11973 .{ ._, .v_ss, .max, .dst0x, .tmp0d, .dst0x, ._ },
11974 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
11975 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
11976 } },
11977 }, .{
11978 .required_features = .{ .sse, null, null, null },
11979 .src_constraints = .{
11980 .{ .scalar_float = .{ .of = .word, .is = .word } },
11981 .{ .scalar_float = .{ .of = .word, .is = .word } },
11982 .any,
11983 },
11984 .patterns = &.{
11985 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
11986 },
11987 .call_frame = .{ .alignment = .@"16" },
11988 .extra_temps = .{
11989 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
11990 .unused,
11991 .unused,
11992 .unused,
11993 .unused,
11994 .unused,
11995 .unused,
11996 .unused,
11997 .unused,
11998 },
11999 .dst_temps = .{.{ .ref = .src0 }},
12000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12001 .each = .{ .once = &.{
12002 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
12003 } },
12004 }, .{
12005 .required_features = .{ .f16c, null, null, null },
12006 .src_constraints = .{
12007 .{ .scalar_float = .{ .of = .qword, .is = .word } },
12008 .{ .scalar_float = .{ .of = .qword, .is = .word } },
12009 .any,
12010 },
12011 .patterns = &.{
12012 .{ .src = .{ .mem, .mem, .none } },
12013 .{ .src = .{ .to_sse, .mem, .none } },
12014 .{ .src = .{ .mem, .to_sse, .none } },
12015 .{ .src = .{ .to_sse, .to_sse, .none } },
12016 },
12017 .extra_temps = .{
12018 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
12019 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12020 .unused,
12021 .unused,
12022 .unused,
12023 .unused,
12024 .unused,
12025 .unused,
12026 .unused,
12027 },
12028 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12029 .each = .{ .once = &.{
12030 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
12031 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
12032 .{ ._, .v_ps, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
12033 .{ ._, .v_ps, .max, .dst0x, .tmp0x, .dst0x, ._ },
12034 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
12035 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
12036 } },
12037 }, .{
12038 .required_features = .{ .f16c, null, null, null },
12039 .src_constraints = .{
12040 .{ .scalar_float = .{ .of = .xword, .is = .word } },
12041 .{ .scalar_float = .{ .of = .xword, .is = .word } },
12042 .any,
12043 },
12044 .patterns = &.{
12045 .{ .src = .{ .mem, .mem, .none } },
12046 .{ .src = .{ .to_sse, .mem, .none } },
12047 .{ .src = .{ .mem, .to_sse, .none } },
12048 .{ .src = .{ .to_sse, .to_sse, .none } },
12049 },
12050 .extra_temps = .{
12051 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
12052 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12053 .unused,
12054 .unused,
12055 .unused,
12056 .unused,
12057 .unused,
12058 .unused,
12059 .unused,
12060 },
12061 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12062 .each = .{ .once = &.{
12063 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
12064 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
12065 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
12066 .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ },
12067 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
12068 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
12069 } },
12070 }, .{
12071 .required_features = .{ .f16c, null, null, null },
12072 .src_constraints = .{
12073 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
12074 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
12075 .any,
12076 },
12077 .patterns = &.{
12078 .{ .src = .{ .to_mem, .to_mem, .none } },
12079 },
12080 .extra_temps = .{
12081 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12082 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12083 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12084 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12085 .unused,
12086 .unused,
12087 .unused,
12088 .unused,
12089 .unused,
12090 },
12091 .dst_temps = .{.mem},
12092 .clobbers = .{ .eflags = true },
12093 .each = .{ .once = &.{
12094 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12095 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12096 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12097 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
12098 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
12099 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
12100 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
12101 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12102 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12103 } },
12104 }, .{
12105 .required_features = .{ .avx, null, null, null },
12106 .src_constraints = .{
12107 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12108 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12109 .any,
12110 },
12111 .patterns = &.{
12112 .{ .src = .{ .to_mem, .to_mem, .none } },
12113 },
12114 .call_frame = .{ .alignment = .@"16" },
12115 .extra_temps = .{
12116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12117 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
12118 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
12119 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
12120 .unused,
12121 .unused,
12122 .unused,
12123 .unused,
12124 .unused,
12125 },
12126 .dst_temps = .{.mem},
12127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12128 .each = .{ .once = &.{
12129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12130 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
12131 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
12132 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
12133 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
12134 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
12135 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12137 } },
12138 }, .{
12139 .required_features = .{ .sse4_1, null, null, null },
12140 .src_constraints = .{
12141 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12142 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12143 .any,
12144 },
12145 .patterns = &.{
12146 .{ .src = .{ .to_mem, .to_mem, .none } },
12147 },
12148 .call_frame = .{ .alignment = .@"16" },
12149 .extra_temps = .{
12150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12151 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
12152 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
12153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
12154 .unused,
12155 .unused,
12156 .unused,
12157 .unused,
12158 .unused,
12159 },
12160 .dst_temps = .{.mem},
12161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12162 .each = .{ .once = &.{
12163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12164 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
12165 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
12166 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
12167 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
12168 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
12169 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
12170 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12172 } },
12173 }, .{
12174 .required_features = .{ .sse2, null, null, null },
12175 .src_constraints = .{
12176 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12177 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12178 .any,
12179 },
12180 .patterns = &.{
12181 .{ .src = .{ .to_mem, .to_mem, .none } },
12182 },
12183 .call_frame = .{ .alignment = .@"16" },
12184 .extra_temps = .{
12185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
12187 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
12188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
12189 .{ .type = .f16, .kind = .{ .reg = .ax } },
12190 .unused,
12191 .unused,
12192 .unused,
12193 .unused,
12194 },
12195 .dst_temps = .{.mem},
12196 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12197 .each = .{ .once = &.{
12198 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12199 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
12200 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
12201 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
12202 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
12203 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
12204 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
12205 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
12206 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12208 } },
12209 }, .{
12210 .required_features = .{ .sse, null, null, null },
12211 .src_constraints = .{
12212 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12213 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
12214 .any,
12215 },
12216 .patterns = &.{
12217 .{ .src = .{ .to_mem, .to_mem, .none } },
12218 },
12219 .call_frame = .{ .alignment = .@"16" },
12220 .extra_temps = .{
12221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12222 .{ .type = .f16, .kind = .{ .reg = .ax } },
12223 .{ .type = .f32, .kind = .mem },
12224 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
12225 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
12226 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
12227 .unused,
12228 .unused,
12229 .unused,
12230 },
12231 .dst_temps = .{.mem},
12232 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12233 .each = .{ .once = &.{
12234 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12235 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
12236 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
12237 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
12238 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },
12239 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
12240 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
12241 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
12242 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
12243 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
12244 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
12245 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
12246 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12247 } },
12248 }, .{
12249 .required_features = .{ .avx, null, null, null },
12250 .src_constraints = .{
12251 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12252 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12253 .any,
12254 },
12255 .patterns = &.{
12256 .{ .src = .{ .to_sse, .to_sse, .none } },
12257 },
12258 .extra_temps = .{
12259 .{ .type = .f32, .kind = .{ .rc = .sse } },
12260 .unused,
12261 .unused,
12262 .unused,
12263 .unused,
12264 .unused,
12265 .unused,
12266 .unused,
12267 .unused,
12268 },
12269 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12270 .each = .{ .once = &.{
12271 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
12272 .{ ._, .v_ss, .max, .dst0x, .src1x, .src0d, ._ },
12273 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
12274 } },
12275 }, .{
12276 .required_features = .{ .sse4_1, null, null, null },
12277 .src_constraints = .{
12278 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12279 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12280 .any,
12281 },
12282 .patterns = &.{
12283 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
12284 },
12285 .dst_temps = .{.{ .rc = .sse }},
12286 .each = .{ .once = &.{
12287 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
12288 .{ ._, ._ss, .max, .dst0x, .src0d, ._, ._ },
12289 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
12290 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
12291 } },
12292 }, .{
12293 .required_features = .{ .sse, null, null, null },
12294 .src_constraints = .{
12295 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12296 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
12297 .any,
12298 },
12299 .patterns = &.{
12300 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12301 },
12302 .extra_temps = .{
12303 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12304 .unused,
12305 .unused,
12306 .unused,
12307 .unused,
12308 .unused,
12309 .unused,
12310 .unused,
12311 .unused,
12312 },
12313 .dst_temps = .{.{ .ref = .src0 }},
12314 .each = .{ .once = &.{
12315 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
12316 .{ ._, ._ss, .max, .tmp0x, .src0d, ._, ._ },
12317 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
12318 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
12319 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
12320 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
12321 } },
12322 }, .{
12323 .required_features = .{ .avx, null, null, null },
12324 .src_constraints = .{
12325 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12326 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12327 .any,
12328 },
12329 .patterns = &.{
12330 .{ .src = .{ .to_sse, .to_sse, .none } },
12331 },
12332 .extra_temps = .{
12333 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12334 .unused,
12335 .unused,
12336 .unused,
12337 .unused,
12338 .unused,
12339 .unused,
12340 .unused,
12341 .unused,
12342 },
12343 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12344 .each = .{ .once = &.{
12345 .{ ._, .v_ps, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
12346 .{ ._, .v_ps, .max, .dst0x, .src1x, .src0x, ._ },
12347 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
12348 } },
12349 }, .{
12350 .required_features = .{ .sse4_1, null, null, null },
12351 .src_constraints = .{
12352 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12353 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12354 .any,
12355 },
12356 .patterns = &.{
12357 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
12358 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
12359 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
12360 },
12361 .dst_temps = .{.{ .rc = .sse }},
12362 .each = .{ .once = &.{
12363 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
12364 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },
12365 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
12366 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
12367 } },
12368 }, .{
12369 .required_features = .{ .sse, null, null, null },
12370 .src_constraints = .{
12371 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12372 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
12373 .any,
12374 },
12375 .patterns = &.{
12376 .{ .src = .{ .to_mut_sse, .mem, .none } },
12377 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12378 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12379 },
12380 .extra_temps = .{
12381 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12382 .unused,
12383 .unused,
12384 .unused,
12385 .unused,
12386 .unused,
12387 .unused,
12388 .unused,
12389 .unused,
12390 },
12391 .dst_temps = .{.{ .ref = .src0 }},
12392 .each = .{ .once = &.{
12393 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
12394 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },
12395 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
12396 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
12397 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
12398 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
12399 } },
12400 }, .{
12401 .required_features = .{ .avx, null, null, null },
12402 .src_constraints = .{
12403 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
12404 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
12405 .any,
12406 },
12407 .patterns = &.{
12408 .{ .src = .{ .to_sse, .to_sse, .none } },
12409 },
12410 .extra_temps = .{
12411 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12412 .unused,
12413 .unused,
12414 .unused,
12415 .unused,
12416 .unused,
12417 .unused,
12418 .unused,
12419 .unused,
12420 },
12421 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12422 .each = .{ .once = &.{
12423 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
12424 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
12425 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
12426 } },
12427 }, .{
12428 .required_features = .{ .avx, null, null, null },
12429 .src_constraints = .{
12430 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
12431 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
12432 .any,
12433 },
12434 .patterns = &.{
12435 .{ .src = .{ .to_mem, .to_mem, .none } },
12436 },
12437 .extra_temps = .{
12438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12439 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12440 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12441 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
12442 .unused,
12443 .unused,
12444 .unused,
12445 .unused,
12446 .unused,
12447 },
12448 .dst_temps = .{.mem},
12449 .clobbers = .{ .eflags = true },
12450 .each = .{ .once = &.{
12451 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12452 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12453 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
12454 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
12455 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
12456 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
12457 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12458 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12459 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12460 } },
12461 }, .{
12462 .required_features = .{ .sse4_1, null, null, null },
12463 .src_constraints = .{
12464 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
12465 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
12466 .any,
12467 },
12468 .patterns = &.{
12469 .{ .src = .{ .to_mem, .to_mem, .none } },
12470 },
12471 .extra_temps = .{
12472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12473 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
12474 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12475 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12476 .unused,
12477 .unused,
12478 .unused,
12479 .unused,
12480 .unused,
12481 },
12482 .dst_temps = .{.mem},
12483 .clobbers = .{ .eflags = true },
12484 .each = .{ .once = &.{
12485 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12486 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12487 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12488 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
12489 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
12490 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
12491 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
12492 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
12493 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12495 } },
12496 }, .{
12497 .required_features = .{ .sse, null, null, null },
12498 .src_constraints = .{
12499 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
12500 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
12501 .any,
12502 },
12503 .patterns = &.{
12504 .{ .src = .{ .to_mem, .to_mem, .none } },
12505 },
12506 .extra_temps = .{
12507 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12508 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12509 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12510 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
12511 .unused,
12512 .unused,
12513 .unused,
12514 .unused,
12515 .unused,
12516 },
12517 .dst_temps = .{.mem},
12518 .clobbers = .{ .eflags = true },
12519 .each = .{ .once = &.{
12520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12521 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12522 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12523 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
12524 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },
12525 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
12526 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
12527 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
12528 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
12529 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12530 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12532 } },
12533 }, .{
12534 .required_features = .{ .avx, null, null, null },
12535 .src_constraints = .{
12536 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12537 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12538 .any,
12539 },
12540 .patterns = &.{
12541 .{ .src = .{ .to_sse, .to_sse, .none } },
12542 },
12543 .extra_temps = .{
12544 .{ .type = .f64, .kind = .{ .rc = .sse } },
12545 .unused,
12546 .unused,
12547 .unused,
12548 .unused,
12549 .unused,
12550 .unused,
12551 .unused,
12552 .unused,
12553 },
12554 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12555 .each = .{ .once = &.{
12556 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
12557 .{ ._, .v_sd, .max, .dst0x, .src1x, .src0q, ._ },
12558 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
12559 } },
12560 }, .{
12561 .required_features = .{ .sse4_1, null, null, null },
12562 .src_constraints = .{
12563 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12564 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12565 .any,
12566 },
12567 .patterns = &.{
12568 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
12569 },
12570 .dst_temps = .{.{ .rc = .sse }},
12571 .each = .{ .once = &.{
12572 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
12573 .{ ._, ._sd, .max, .dst0x, .src0q, ._, ._ },
12574 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
12575 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
12576 } },
12577 }, .{
12578 .required_features = .{ .sse2, null, null, null },
12579 .src_constraints = .{
12580 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12581 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12582 .any,
12583 },
12584 .patterns = &.{
12585 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12586 },
12587 .extra_temps = .{
12588 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12589 .unused,
12590 .unused,
12591 .unused,
12592 .unused,
12593 .unused,
12594 .unused,
12595 .unused,
12596 .unused,
12597 },
12598 .dst_temps = .{.{ .ref = .src0 }},
12599 .each = .{ .once = &.{
12600 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
12601 .{ ._, ._sd, .max, .tmp0x, .src0q, ._, ._ },
12602 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
12603 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
12604 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
12605 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
12606 } },
12607 }, .{
12608 .required_features = .{ .sse, null, null, null },
12609 .src_constraints = .{
12610 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12611 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
12612 .any,
12613 },
12614 .patterns = &.{
12615 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
12616 },
12617 .call_frame = .{ .alignment = .@"16" },
12618 .extra_temps = .{
12619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
12620 .unused,
12621 .unused,
12622 .unused,
12623 .unused,
12624 .unused,
12625 .unused,
12626 .unused,
12627 .unused,
12628 },
12629 .dst_temps = .{.{ .ref = .src0 }},
12630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12631 .each = .{ .once = &.{
12632 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
12633 } },
12634 }, .{
12635 .required_features = .{ .avx, null, null, null },
12636 .src_constraints = .{
12637 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12638 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12639 .any,
12640 },
12641 .patterns = &.{
12642 .{ .src = .{ .to_sse, .to_sse, .none } },
12643 },
12644 .extra_temps = .{
12645 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12646 .unused,
12647 .unused,
12648 .unused,
12649 .unused,
12650 .unused,
12651 .unused,
12652 .unused,
12653 .unused,
12654 },
12655 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12656 .each = .{ .once = &.{
12657 .{ ._, .v_pd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
12658 .{ ._, .v_pd, .max, .dst0x, .src1x, .src0x, ._ },
12659 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
12660 } },
12661 }, .{
12662 .required_features = .{ .sse4_1, null, null, null },
12663 .src_constraints = .{
12664 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12665 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12666 .any,
12667 },
12668 .patterns = &.{
12669 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
12670 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
12671 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
12672 },
12673 .dst_temps = .{.{ .rc = .sse }},
12674 .each = .{ .once = &.{
12675 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
12676 .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ },
12677 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
12678 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
12679 } },
12680 }, .{
12681 .required_features = .{ .sse2, null, null, null },
12682 .src_constraints = .{
12683 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12684 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
12685 .any,
12686 },
12687 .patterns = &.{
12688 .{ .src = .{ .to_mut_sse, .mem, .none } },
12689 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
12690 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
12691 },
12692 .extra_temps = .{
12693 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12694 .unused,
12695 .unused,
12696 .unused,
12697 .unused,
12698 .unused,
12699 .unused,
12700 .unused,
12701 .unused,
12702 },
12703 .dst_temps = .{.{ .ref = .src0 }},
12704 .each = .{ .once = &.{
12705 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
12706 .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ },
12707 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
12708 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
12709 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
12710 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
12711 } },
12712 }, .{
12713 .required_features = .{ .avx, null, null, null },
12714 .src_constraints = .{
12715 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
12716 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
12717 .any,
12718 },
12719 .patterns = &.{
12720 .{ .src = .{ .to_sse, .to_sse, .none } },
12721 },
12722 .extra_temps = .{
12723 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
12724 .unused,
12725 .unused,
12726 .unused,
12727 .unused,
12728 .unused,
12729 .unused,
12730 .unused,
12731 .unused,
12732 },
12733 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
12734 .each = .{ .once = &.{
12735 .{ ._, .v_pd, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },
12736 .{ ._, .v_pd, .max, .dst0y, .src1y, .src0y, ._ },
12737 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
12738 } },
12739 }, .{
12740 .required_features = .{ .avx, null, null, null },
12741 .src_constraints = .{
12742 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
12743 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
12744 .any,
12745 },
12746 .patterns = &.{
12747 .{ .src = .{ .to_mem, .to_mem, .none } },
12748 },
12749 .extra_temps = .{
12750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12751 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
12752 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
12753 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
12754 .unused,
12755 .unused,
12756 .unused,
12757 .unused,
12758 .unused,
12759 },
12760 .dst_temps = .{.mem},
12761 .clobbers = .{ .eflags = true },
12762 .each = .{ .once = &.{
12763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12764 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
12765 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
12766 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
12767 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
12768 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
12769 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
12770 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
12771 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12772 } },
12773 }, .{
12774 .required_features = .{ .sse4_1, null, null, null },
12775 .src_constraints = .{
12776 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
12777 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
12778 .any,
12779 },
12780 .patterns = &.{
12781 .{ .src = .{ .to_mem, .to_mem, .none } },
12782 },
12783 .extra_temps = .{
12784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12785 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
12786 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12787 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12788 .unused,
12789 .unused,
12790 .unused,
12791 .unused,
12792 .unused,
12793 },
12794 .dst_temps = .{.mem},
12795 .clobbers = .{ .eflags = true },
12796 .each = .{ .once = &.{
12797 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12798 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12799 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12800 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
12801 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
12802 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
12803 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
12804 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
12805 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12807 } },
12808 }, .{
12809 .required_features = .{ .sse2, null, null, null },
12810 .src_constraints = .{
12811 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
12812 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
12813 .any,
12814 },
12815 .patterns = &.{
12816 .{ .src = .{ .to_mem, .to_mem, .none } },
12817 },
12818 .extra_temps = .{
12819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12820 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12821 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12822 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
12823 .unused,
12824 .unused,
12825 .unused,
12826 .unused,
12827 .unused,
12828 },
12829 .dst_temps = .{.mem},
12830 .clobbers = .{ .eflags = true },
12831 .each = .{ .once = &.{
12832 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12833 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
12834 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
12835 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
12836 .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ },
12837 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
12838 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
12839 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
12840 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
12841 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
12842 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
12843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12844 } },
12845 }, .{
12846 .required_features = .{ .sse, null, null, null },
12847 .src_constraints = .{
12848 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
12849 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
12850 .any,
12851 },
12852 .patterns = &.{
12853 .{ .src = .{ .to_mem, .to_mem, .none } },
12854 },
12855 .call_frame = .{ .alignment = .@"16" },
12856 .extra_temps = .{
12857 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
12858 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
12859 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
12860 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
12861 .unused,
12862 .unused,
12863 .unused,
12864 .unused,
12865 .unused,
12866 },
12867 .dst_temps = .{.mem},
12868 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
12869 .each = .{ .once = &.{
12870 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
12871 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
12872 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
12873 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
12874 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
12875 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
12876 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
12877 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
12878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12879 } },
12880 }, .{
12881 .required_features = .{ .x87, .cmov, null, null },
12882 .src_constraints = .{
12883 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12884 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12885 .any,
12886 },
12887 .patterns = &.{
12888 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
12889 .{ .src = .{ .mem, .to_x87, .none } },
12890 .{ .src = .{ .to_x87, .to_x87, .none } },
12891 },
12892 .extra_temps = .{
12893 .{ .type = .f80, .kind = .{ .reg = .st7 } },
12894 .unused,
12895 .unused,
12896 .unused,
12897 .unused,
12898 .unused,
12899 .unused,
12900 .unused,
12901 .unused,
12902 },
12903 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
12904 .clobbers = .{ .eflags = true },
12905 .each = .{ .once = &.{
12906 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
12907 .{ ._, .f_, .ucomi, .tmp0t, .tmp0t, ._, ._ },
12908 .{ ._, .f_u, .cmov, .tmp0t, .src1t, ._, ._ },
12909 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12910 .{ ._, .f_, .ucomi, .tmp0t, .src1t, ._, ._ },
12911 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12912 .{ ._, .f_nb, .cmov, .tmp0t, .src1t, ._, ._ },
12913 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
12914 } },
12915 }, .{
12916 .required_features = .{ .sahf, .x87, null, null },
12917 .src_constraints = .{
12918 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12919 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12920 .any,
12921 },
12922 .patterns = &.{
12923 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
12924 .{ .src = .{ .mem, .to_x87, .none } },
12925 .{ .src = .{ .to_x87, .to_x87, .none } },
12926 },
12927 .extra_temps = .{
12928 .{ .type = .f80, .kind = .{ .reg = .st7 } },
12929 .{ .type = .u8, .kind = .{ .reg = .ah } },
12930 .unused,
12931 .unused,
12932 .unused,
12933 .unused,
12934 .unused,
12935 .unused,
12936 .unused,
12937 },
12938 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
12939 .clobbers = .{ .eflags = true },
12940 .each = .{ .once = &.{
12941 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
12942 .{ ._, .f_, .ucom, .tmp0t, ._, ._, ._ },
12943 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
12944 .{ ._, ._, .sahf, ._, ._, ._, ._ },
12945 .{ ._, ._p, .j, .@"0f", ._, ._, ._ },
12946 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12947 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
12948 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
12949 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12950 .{ ._, ._, .sahf, ._, ._, ._, ._ },
12951 .{ ._, ._b, .j, .@"1f", ._, ._, ._ },
12952 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
12953 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
12954 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
12955 } },
12956 }, .{
12957 .required_features = .{ .x87, null, null, null },
12958 .src_constraints = .{
12959 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12960 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
12961 .any,
12962 },
12963 .patterns = &.{
12964 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
12965 .{ .src = .{ .mem, .to_x87, .none } },
12966 .{ .src = .{ .to_x87, .to_x87, .none } },
12967 },
12968 .extra_temps = .{
12969 .{ .type = .f80, .kind = .{ .reg = .st7 } },
12970 .{ .type = .u8, .kind = .{ .reg = .ah } },
12971 .unused,
12972 .unused,
12973 .unused,
12974 .unused,
12975 .unused,
12976 .unused,
12977 .unused,
12978 },
12979 .dst_temps = .{.{ .mut_rc = .{ .ref = .src1, .rc = .x87 } }},
12980 .clobbers = .{ .eflags = true },
12981 .each = .{ .once = &.{
12982 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
12983 .{ ._, .f_, .xam, ._, ._, ._, ._ },
12984 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
12985 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
12986 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
12987 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12988 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
12989 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
12990 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
12991 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
12992 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
12993 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
12994 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
12995 .{ .@"1:", .f_p, .st, .dst0t, ._, ._, ._ },
12996 } },
12997 }, .{
12998 .required_features = .{ .x87, .cmov, null, null },
12999 .src_constraints = .{
13000 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13002 .any,
13003 },
13004 .patterns = &.{
13005 .{ .src = .{ .to_mem, .to_mem, .none } },
13006 },
13007 .extra_temps = .{
13008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13009 .{ .type = .f80, .kind = .{ .reg = .st6 } },
13010 .{ .type = .f80, .kind = .{ .reg = .st7 } },
13011 .unused,
13012 .unused,
13013 .unused,
13014 .unused,
13015 .unused,
13016 .unused,
13017 },
13018 .dst_temps = .{.mem},
13019 .clobbers = .{ .eflags = true },
13020 .each = .{ .once = &.{
13021 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13022 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
13023 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
13024 .{ ._, .f_, .ucomi, .tmp1t, .tmp1t, ._, ._ },
13025 .{ ._, .f_u, .cmov, .tmp1t, .tmp2t, ._, ._ },
13026 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13027 .{ ._, .f_, .ucomi, .tmp1t, .tmp2t, ._, ._ },
13028 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13029 .{ ._, .f_nb, .cmov, .tmp1t, .tmp2t, ._, ._ },
13030 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
13031 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
13032 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13034 } },
13035 }, .{
13036 .required_features = .{ .sahf, .x87, null, null },
13037 .src_constraints = .{
13038 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13039 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13040 .any,
13041 },
13042 .patterns = &.{
13043 .{ .src = .{ .to_mem, .to_mem, .none } },
13044 },
13045 .extra_temps = .{
13046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13047 .{ .type = .f80, .kind = .{ .reg = .st6 } },
13048 .{ .type = .f80, .kind = .{ .reg = .st7 } },
13049 .{ .type = .u8, .kind = .{ .reg = .ah } },
13050 .unused,
13051 .unused,
13052 .unused,
13053 .unused,
13054 .unused,
13055 },
13056 .dst_temps = .{.mem},
13057 .clobbers = .{ .eflags = true },
13058 .each = .{ .once = &.{
13059 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13060 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
13061 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
13062 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
13063 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
13064 .{ ._, ._, .sahf, ._, ._, ._, ._ },
13065 .{ ._, ._p, .j, .@"1f", ._, ._, ._ },
13066 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13067 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
13068 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
13069 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13070 .{ ._, ._, .sahf, ._, ._, ._, ._ },
13071 .{ ._, ._b, .j, .@"2f", ._, ._, ._ },
13072 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
13073 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
13074 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
13075 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
13076 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13077 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13078 } },
13079 }, .{
13080 .required_features = .{ .x87, null, null, null },
13081 .src_constraints = .{
13082 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13083 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
13084 .any,
13085 },
13086 .patterns = &.{
13087 .{ .src = .{ .to_mem, .to_mem, .none } },
13088 },
13089 .extra_temps = .{
13090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13091 .{ .type = .f80, .kind = .{ .reg = .st6 } },
13092 .{ .type = .f80, .kind = .{ .reg = .st7 } },
13093 .{ .type = .u8, .kind = .{ .reg = .ah } },
13094 .unused,
13095 .unused,
13096 .unused,
13097 .unused,
13098 .unused,
13099 },
13100 .dst_temps = .{.mem},
13101 .clobbers = .{ .eflags = true },
13102 .each = .{ .once = &.{
13103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13104 .{ .@"0:", .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
13105 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
13106 .{ ._, .f_, .xam, ._, ._, ._, ._ },
13107 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
13108 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
13109 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
13110 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13111 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
13112 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
13113 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
13114 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
13115 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
13116 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
13117 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
13118 .{ .@"2:", .f_p, .st, .memia(.dst0t, .tmp0, .add_size), ._, ._, ._ },
13119 .{ ._, .f_p, .st, .tmp2t, ._, ._, ._ },
13120 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13122 } },
13123 }, .{
13124 .required_features = .{ .sse, null, null, null },
13125 .src_constraints = .{
13126 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
13127 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
13128 .any,
13129 },
13130 .patterns = &.{
13131 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
13132 },
13133 .call_frame = .{ .alignment = .@"16" },
13134 .extra_temps = .{
13135 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
13136 .unused,
13137 .unused,
13138 .unused,
13139 .unused,
13140 .unused,
13141 .unused,
13142 .unused,
13143 .unused,
13144 },
13145 .dst_temps = .{.{ .ref = .src0 }},
13146 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
13147 .each = .{ .once = &.{
13148 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
13149 } },
13150 }, .{
13151 .required_features = .{ .avx, null, null, null },
13152 .src_constraints = .{
13153 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13154 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13155 .any,
13156 },
13157 .patterns = &.{
13158 .{ .src = .{ .to_mem, .to_mem, .none } },
13159 },
13160 .call_frame = .{ .alignment = .@"16" },
13161 .extra_temps = .{
13162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13163 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
13164 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
13165 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
13166 .unused,
13167 .unused,
13168 .unused,
13169 .unused,
13170 .unused,
13171 },
13172 .dst_temps = .{.mem},
13173 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
13174 .each = .{ .once = &.{
13175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13176 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13177 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13178 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
13179 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13180 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13181 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13182 } },
13183 }, .{
13184 .required_features = .{ .sse2, null, null, null },
13185 .src_constraints = .{
13186 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13187 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13188 .any,
13189 },
13190 .patterns = &.{
13191 .{ .src = .{ .to_mem, .to_mem, .none } },
13192 },
13193 .call_frame = .{ .alignment = .@"16" },
13194 .extra_temps = .{
13195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13196 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
13197 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
13198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
13199 .unused,
13200 .unused,
13201 .unused,
13202 .unused,
13203 .unused,
13204 },
13205 .dst_temps = .{.mem},
13206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
13207 .each = .{ .once = &.{
13208 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13209 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13210 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13211 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
13212 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13213 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13215 } },
13216 }, .{
13217 .required_features = .{ .sse, null, null, null },
13218 .src_constraints = .{
13219 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13220 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
13221 .any,
13222 },
13223 .patterns = &.{
13224 .{ .src = .{ .to_mem, .to_mem, .none } },
13225 },
13226 .call_frame = .{ .alignment = .@"16" },
13227 .extra_temps = .{
13228 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13229 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
13230 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
13231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
13232 .unused,
13233 .unused,
13234 .unused,
13235 .unused,
13236 .unused,
13237 },
13238 .dst_temps = .{.mem},
13239 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
13240 .each = .{ .once = &.{
13241 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
13242 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
13243 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
13244 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
13245 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
13246 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
13247 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13248 } },
13249 } }) catch |err| switch (err) {
13250 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
13251 @tagName(air_tag),
13252 cg.typeOf(bin_op.lhs).fmt(pt),
13253 ops[0].tracking(cg),
13254 ops[1].tracking(cg),
13255 }),
13256 else => |e| return e,
13257 };
13258 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
13259 },
13260 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
13261 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
13262 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
13263 var res: [1]Temp = undefined;
13264 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
13265 .required_features = .{ .cmov, null, null, null },
13266 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
13267 .patterns = &.{
13268 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13269 },
13270 .dst_temps = .{.{ .ref = .src0 }},
13271 .clobbers = .{ .eflags = true },
13272 .each = .{ .once = &.{
13273 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
13274 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
13275 } },
13276 }, .{
13277 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
13278 .patterns = &.{
13279 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13280 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13281 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13282 },
13283 .dst_temps = .{.{ .ref = .src0 }},
13284 .clobbers = .{ .eflags = true },
13285 .each = .{ .once = &.{
13286 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
13287 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
13288 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
13289 } },
13290 }, .{
13291 .required_features = .{ .cmov, null, null, null },
13292 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
13293 .patterns = &.{
13294 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13295 },
13296 .dst_temps = .{.{ .ref = .src0 }},
13297 .clobbers = .{ .eflags = true },
13298 .each = .{ .once = &.{
13299 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
13300 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
13301 } },
13302 }, .{
13303 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
13304 .patterns = &.{
13305 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13306 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13307 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13308 },
13309 .dst_temps = .{.{ .ref = .src0 }},
13310 .clobbers = .{ .eflags = true },
13311 .each = .{ .once = &.{
13312 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
13313 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
13314 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
13315 } },
13316 }, .{
13317 .required_features = .{ .cmov, null, null, null },
13318 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
13319 .patterns = &.{
13320 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13321 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13322 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13323 },
13324 .dst_temps = .{.{ .ref = .src0 }},
13325 .clobbers = .{ .eflags = true },
13326 .each = .{ .once = &.{
13327 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
13328 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },
13329 } },
13330 }, .{
13331 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
13332 .patterns = &.{
13333 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13334 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13335 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13336 },
13337 .dst_temps = .{.{ .ref = .src0 }},
13338 .clobbers = .{ .eflags = true },
13339 .each = .{ .once = &.{
13340 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
13341 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
13342 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
13343 } },
13344 }, .{
13345 .required_features = .{ .cmov, null, null, null },
13346 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
13347 .patterns = &.{
13348 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13349 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13350 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13351 },
13352 .dst_temps = .{.{ .ref = .src0 }},
13353 .clobbers = .{ .eflags = true },
13354 .each = .{ .once = &.{
13355 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
13356 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },
13357 } },
13358 }, .{
13359 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
13360 .patterns = &.{
13361 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13362 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13363 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13364 },
13365 .dst_temps = .{.{ .ref = .src0 }},
13366 .clobbers = .{ .eflags = true },
13367 .each = .{ .once = &.{
13368 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
13369 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
13370 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },
13371 } },
13372 }, .{
13373 .required_features = .{ .cmov, null, null, null },
13374 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
13375 .patterns = &.{
13376 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13377 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13378 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13379 },
13380 .dst_temps = .{.{ .ref = .src0 }},
13381 .clobbers = .{ .eflags = true },
13382 .each = .{ .once = &.{
13383 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
13384 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },
13385 } },
13386 }, .{
13387 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
13388 .patterns = &.{
13389 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13390 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13391 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13392 },
13393 .dst_temps = .{.{ .ref = .src0 }},
13394 .clobbers = .{ .eflags = true },
13395 .each = .{ .once = &.{
13396 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
13397 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
13398 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
13399 } },
13400 }, .{
13401 .required_features = .{ .cmov, null, null, null },
13402 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
13403 .patterns = &.{
13404 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13405 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13406 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13407 },
13408 .dst_temps = .{.{ .ref = .src0 }},
13409 .clobbers = .{ .eflags = true },
13410 .each = .{ .once = &.{
13411 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
13412 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },
13413 } },
13414 }, .{
13415 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
13416 .patterns = &.{
13417 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13418 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13419 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13420 },
13421 .dst_temps = .{.{ .ref = .src0 }},
13422 .clobbers = .{ .eflags = true },
13423 .each = .{ .once = &.{
13424 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
13425 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
13426 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },
13427 } },
13428 }, .{
13429 .required_features = .{ .@"64bit", .cmov, null, null },
13430 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
13431 .patterns = &.{
13432 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13433 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13434 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13435 },
13436 .dst_temps = .{.{ .ref = .src0 }},
13437 .clobbers = .{ .eflags = true },
13438 .each = .{ .once = &.{
13439 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
13440 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },
13441 } },
13442 }, .{
13443 .required_features = .{ .@"64bit", null, null, null },
13444 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
13445 .patterns = &.{
13446 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13447 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13448 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13449 },
13450 .dst_temps = .{.{ .ref = .src0 }},
13451 .clobbers = .{ .eflags = true },
13452 .each = .{ .once = &.{
13453 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
13454 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
13455 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
13456 } },
13457 }, .{
13458 .required_features = .{ .@"64bit", .cmov, null, null },
13459 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
13460 .patterns = &.{
13461 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13462 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13463 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13464 },
13465 .dst_temps = .{.{ .ref = .src0 }},
13466 .clobbers = .{ .eflags = true },
13467 .each = .{ .once = &.{
13468 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
13469 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },
13470 } },
13471 }, .{
13472 .required_features = .{ .@"64bit", null, null, null },
13473 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
13474 .patterns = &.{
13475 .{ .src = .{ .to_mut_gpr, .mem, .none } },
13476 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
13477 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
13478 },
13479 .dst_temps = .{.{ .ref = .src0 }},
13480 .clobbers = .{ .eflags = true },
13481 .each = .{ .once = &.{
13482 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },
13483 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
13484 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },
13485 } },
13486 }, .{
13487 .required_features = .{ .@"64bit", .cmov, null, null },
13488 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
13489 .patterns = &.{
13490 .{ .src = .{ .to_mem, .to_mem, .none } },
13491 },
13492 .extra_temps = .{
13493 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13494 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13495 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13496 .unused,
13497 .unused,
13498 .unused,
13499 .unused,
13500 .unused,
13501 .unused,
13502 },
13503 .dst_temps = .{.mem},
13504 .clobbers = .{ .eflags = true },
13505 .each = .{ .once = &.{
13506 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
13507 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13508 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
13509 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
13510 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
13511 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13512 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
13513 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
13514 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
13515 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
13516 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },
13517 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
13518 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
13519 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13520 } },
13521 }, .{
13522 .required_features = .{ .@"64bit", null, null, null },
13523 .src_constraints = .{ .any_signed_int, .any_signed_int, .any },
13524 .patterns = &.{
13525 .{ .src = .{ .to_mem, .to_mem, .none } },
13526 },
13527 .extra_temps = .{
13528 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13529 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13530 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13531 .unused,
13532 .unused,
13533 .unused,
13534 .unused,
13535 .unused,
13536 .unused,
13537 },
13538 .dst_temps = .{.mem},
13539 .clobbers = .{ .eflags = true },
13540 .each = .{ .once = &.{
13541 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },
13542 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13543 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
13544 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
13545 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
13546 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13547 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
13548 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },
13549 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
13550 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },
13551 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
13552 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
13553 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
13554 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13555 } },
13556 }, .{
13557 .required_features = .{ .@"64bit", .cmov, null, null },
13558 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
13559 .patterns = &.{
13560 .{ .src = .{ .to_mem, .to_mem, .none } },
13561 },
13562 .extra_temps = .{
13563 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13564 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13565 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13566 .unused,
13567 .unused,
13568 .unused,
13569 .unused,
13570 .unused,
13571 .unused,
13572 },
13573 .dst_temps = .{.mem},
13574 .clobbers = .{ .eflags = true },
13575 .each = .{ .once = &.{
13576 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
13577 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13578 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
13579 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
13580 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
13581 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13582 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
13583 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
13584 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },
13585 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
13586 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
13587 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13588 } },
13589 }, .{
13590 .required_features = .{ .@"64bit", null, null, null },
13591 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any },
13592 .patterns = &.{
13593 .{ .src = .{ .to_mem, .to_mem, .none } },
13594 },
13595 .extra_temps = .{
13596 .{ .type = .isize, .kind = .{ .reg = .rsi } },
13597 .{ .type = .u64, .kind = .{ .reg = .rdi } },
13598 .{ .type = .u64, .kind = .{ .reg = .rcx } },
13599 .unused,
13600 .unused,
13601 .unused,
13602 .unused,
13603 .unused,
13604 .unused,
13605 },
13606 .dst_temps = .{.mem},
13607 .clobbers = .{ .eflags = true },
13608 .each = .{ .once = &.{
13609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },
13610 .{ ._, ._c, .cl, ._, ._, ._, ._ },
13611 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },
13612 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },
13613 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
13614 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
13615 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
13616 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },
13617 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },
13618 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
13619 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
13620 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
13621 } },
13622 }, .{
13623 .required_features = .{ .avx, null, null, null },
13624 .src_constraints = .{
13625 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13626 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13627 .any,
13628 },
13629 .patterns = &.{
13630 .{ .src = .{ .to_sse, .mem, .none } },
13631 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13632 .{ .src = .{ .to_sse, .to_sse, .none } },
13633 },
13634 .dst_temps = .{.{ .rc = .sse }},
13635 .each = .{ .once = &.{
13636 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },
13637 } },
13638 }, .{
13639 .required_features = .{ .sse4_1, null, null, null },
13640 .src_constraints = .{
13641 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13642 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13643 .any,
13644 },
13645 .patterns = &.{
13646 .{ .src = .{ .to_mut_sse, .mem, .none } },
13647 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13648 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13649 },
13650 .dst_temps = .{.{ .ref = .src0 }},
13651 .each = .{ .once = &.{
13652 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },
13653 } },
13654 }, .{
13655 .required_features = .{ .sse2, null, null, null },
13656 .src_constraints = .{
13657 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13658 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },
13659 .any,
13660 },
13661 .patterns = &.{
13662 .{ .src = .{ .to_mut_sse, .mem, .none } },
13663 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13664 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
13665 },
13666 .dst_temps = .{.{ .rc = .sse }},
13667 .each = .{ .once = &.{
13668 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },
13669 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },
13670 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },
13671 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },
13672 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },
13673 } },
13674 }, .{
13675 .required_features = .{ .avx2, null, null, null },
13676 .src_constraints = .{
13677 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
13678 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },
13679 .any,
13680 },
13681 .patterns = &.{
13682 .{ .src = .{ .to_sse, .mem, .none } },
13683 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13684 .{ .src = .{ .to_sse, .to_sse, .none } },
13685 },
13686 .dst_temps = .{.{ .rc = .sse }},
13687 .each = .{ .once = &.{
13688 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },
13689 } },
13690 }, .{
13691 .required_features = .{ .avx2, null, null, null },
13692 .src_constraints = .{
13693 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
13694 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },
13695 .any,
13696 },
13697 .patterns = &.{
13698 .{ .src = .{ .to_mem, .to_mem, .none } },
13699 },
13700 .extra_temps = .{
13701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13702 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
13703 .unused,
13704 .unused,
13705 .unused,
13706 .unused,
13707 .unused,
13708 .unused,
13709 .unused,
13710 },
13711 .dst_temps = .{.mem},
13712 .clobbers = .{ .eflags = true },
13713 .each = .{ .once = &.{
711313714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
711413715 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
711513716 .{ ._, .vp_b, .mins, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },
......@@ -7122,9 +13723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
712213723 .src_constraints = .{
712313724 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
712413725 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13726 .any,
712513727 },
712613728 .patterns = &.{
7127 .{ .src = .{ .to_mem, .to_mem } },
13729 .{ .src = .{ .to_mem, .to_mem, .none } },
712813730 },
712913731 .extra_temps = .{
713013732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7152,9 +13754,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
715213754 .src_constraints = .{
715313755 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
715413756 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13757 .any,
715513758 },
715613759 .patterns = &.{
7157 .{ .src = .{ .to_mem, .to_mem } },
13760 .{ .src = .{ .to_mem, .to_mem, .none } },
715813761 },
715913762 .extra_temps = .{
716013763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7182,9 +13785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
718213785 .src_constraints = .{
718313786 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
718413787 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13788 .any,
718513789 },
718613790 .patterns = &.{
7187 .{ .src = .{ .to_mem, .to_mem } },
13791 .{ .src = .{ .to_mem, .to_mem, .none } },
718813792 },
718913793 .extra_temps = .{
719013794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7216,9 +13820,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
721613820 .src_constraints = .{
721713821 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
721813822 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13823 .any,
721913824 },
722013825 .patterns = &.{
7221 .{ .src = .{ .to_mem, .to_mem } },
13826 .{ .src = .{ .to_mem, .to_mem, .none } },
722213827 },
722313828 .extra_temps = .{
722413829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7248,9 +13853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
724813853 .src_constraints = .{
724913854 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
725013855 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13856 .any,
725113857 },
725213858 .patterns = &.{
7253 .{ .src = .{ .to_mem, .to_mem } },
13859 .{ .src = .{ .to_mem, .to_mem, .none } },
725413860 },
725513861 .extra_temps = .{
725613862 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7280,9 +13886,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
728013886 .src_constraints = .{
728113887 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
728213888 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13889 .any,
728313890 },
728413891 .patterns = &.{
7285 .{ .src = .{ .to_mem, .to_mem } },
13892 .{ .src = .{ .to_mem, .to_mem, .none } },
728613893 },
728713894 .extra_temps = .{
728813895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7311,9 +13918,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
731113918 .src_constraints = .{
731213919 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
731313920 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13921 .any,
731413922 },
731513923 .patterns = &.{
7316 .{ .src = .{ .to_mem, .to_mem } },
13924 .{ .src = .{ .to_mem, .to_mem, .none } },
731713925 },
731813926 .extra_temps = .{
731913927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7343,11 +13951,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
734313951 .src_constraints = .{
734413952 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
734513953 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
13954 .any,
734613955 },
734713956 .patterns = &.{
7348 .{ .src = .{ .to_mut_mmx, .mem } },
7349 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
7350 .{ .src = .{ .to_mut_mmx, .to_mmx } },
13957 .{ .src = .{ .to_mut_mmx, .mem, .none } },
13958 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
13959 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
735113960 },
735213961 .dst_temps = .{.{ .ref = .src0 }},
735313962 .each = .{ .once = &.{
......@@ -7358,11 +13967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
735813967 .src_constraints = .{
735913968 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
736013969 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
13970 .any,
736113971 },
736213972 .patterns = &.{
7363 .{ .src = .{ .to_sse, .mem } },
7364 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7365 .{ .src = .{ .to_sse, .to_sse } },
13973 .{ .src = .{ .to_sse, .mem, .none } },
13974 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
13975 .{ .src = .{ .to_sse, .to_sse, .none } },
736613976 },
736713977 .dst_temps = .{.{ .rc = .sse }},
736813978 .each = .{ .once = &.{
......@@ -7373,11 +13983,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
737313983 .src_constraints = .{
737413984 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
737513985 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
13986 .any,
737613987 },
737713988 .patterns = &.{
7378 .{ .src = .{ .to_mut_sse, .mem } },
7379 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7380 .{ .src = .{ .to_mut_sse, .to_sse } },
13989 .{ .src = .{ .to_mut_sse, .mem, .none } },
13990 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
13991 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
738113992 },
738213993 .dst_temps = .{.{ .ref = .src0 }},
738313994 .each = .{ .once = &.{
......@@ -7388,11 +13999,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
738813999 .src_constraints = .{
738914000 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
739014001 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
14002 .any,
739114003 },
739214004 .patterns = &.{
7393 .{ .src = .{ .to_sse, .mem } },
7394 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7395 .{ .src = .{ .to_sse, .to_sse } },
14005 .{ .src = .{ .to_sse, .mem, .none } },
14006 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14007 .{ .src = .{ .to_sse, .to_sse, .none } },
739614008 },
739714009 .dst_temps = .{.{ .rc = .sse }},
739814010 .each = .{ .once = &.{
......@@ -7403,9 +14015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
740314015 .src_constraints = .{
740414016 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
740514017 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
14018 .any,
740614019 },
740714020 .patterns = &.{
7408 .{ .src = .{ .to_mem, .to_mem } },
14021 .{ .src = .{ .to_mem, .to_mem, .none } },
740914022 },
741014023 .extra_temps = .{
741114024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7433,9 +14046,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
743314046 .src_constraints = .{
743414047 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
743514048 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
14049 .any,
743614050 },
743714051 .patterns = &.{
7438 .{ .src = .{ .to_mem, .to_mem } },
14052 .{ .src = .{ .to_mem, .to_mem, .none } },
743914053 },
744014054 .extra_temps = .{
744114055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7463,9 +14077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
746314077 .src_constraints = .{
746414078 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
746514079 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
14080 .any,
746614081 },
746714082 .patterns = &.{
7468 .{ .src = .{ .to_mem, .to_mem } },
14083 .{ .src = .{ .to_mem, .to_mem, .none } },
746914084 },
747014085 .extra_temps = .{
747114086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7493,9 +14108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
749314108 .src_constraints = .{
749414109 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
749514110 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14111 .any,
749614112 },
749714113 .patterns = &.{
7498 .{ .src = .{ .to_mem, .to_mem } },
14114 .{ .src = .{ .to_mem, .to_mem, .none } },
749914115 },
750014116 .extra_temps = .{
750114117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7525,9 +14141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
752514141 .src_constraints = .{
752614142 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
752714143 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14144 .any,
752814145 },
752914146 .patterns = &.{
7530 .{ .src = .{ .to_mem, .to_mem } },
14147 .{ .src = .{ .to_mem, .to_mem, .none } },
753114148 },
753214149 .extra_temps = .{
753314150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7557,9 +14174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
755714174 .src_constraints = .{
755814175 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
755914176 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14177 .any,
756014178 },
756114179 .patterns = &.{
7562 .{ .src = .{ .to_mem, .to_mem } },
14180 .{ .src = .{ .to_mem, .to_mem, .none } },
756314181 },
756414182 .extra_temps = .{
756514183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7588,9 +14206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
758814206 .src_constraints = .{
758914207 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
759014208 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14209 .any,
759114210 },
759214211 .patterns = &.{
7593 .{ .src = .{ .to_mem, .to_mem } },
14212 .{ .src = .{ .to_mem, .to_mem, .none } },
759414213 },
759514214 .extra_temps = .{
759614215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7620,11 +14239,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
762014239 .src_constraints = .{
762114240 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
762214241 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
14242 .any,
762314243 },
762414244 .patterns = &.{
7625 .{ .src = .{ .to_mut_mmx, .mem } },
7626 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
7627 .{ .src = .{ .to_mut_mmx, .to_mmx } },
14245 .{ .src = .{ .to_mut_mmx, .mem, .none } },
14246 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
14247 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
762814248 },
762914249 .dst_temps = .{.{ .ref = .src0 }},
763014250 .each = .{ .once = &.{
......@@ -7635,11 +14255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
763514255 .src_constraints = .{
763614256 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
763714257 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
14258 .any,
763814259 },
763914260 .patterns = &.{
7640 .{ .src = .{ .to_sse, .mem } },
7641 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7642 .{ .src = .{ .to_sse, .to_sse } },
14261 .{ .src = .{ .to_sse, .mem, .none } },
14262 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14263 .{ .src = .{ .to_sse, .to_sse, .none } },
764314264 },
764414265 .dst_temps = .{.{ .rc = .sse }},
764514266 .each = .{ .once = &.{
......@@ -7650,11 +14271,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
765014271 .src_constraints = .{
765114272 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
765214273 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
14274 .any,
765314275 },
765414276 .patterns = &.{
7655 .{ .src = .{ .to_mut_sse, .mem } },
7656 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7657 .{ .src = .{ .to_mut_sse, .to_sse } },
14277 .{ .src = .{ .to_mut_sse, .mem, .none } },
14278 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14279 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
765814280 },
765914281 .dst_temps = .{.{ .ref = .src0 }},
766014282 .each = .{ .once = &.{
......@@ -7665,11 +14287,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
766514287 .src_constraints = .{
766614288 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
766714289 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
14290 .any,
766814291 },
766914292 .patterns = &.{
7670 .{ .src = .{ .to_sse, .mem } },
7671 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7672 .{ .src = .{ .to_sse, .to_sse } },
14293 .{ .src = .{ .to_sse, .mem, .none } },
14294 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14295 .{ .src = .{ .to_sse, .to_sse, .none } },
767314296 },
767414297 .dst_temps = .{.{ .rc = .sse }},
767514298 .each = .{ .once = &.{
......@@ -7680,9 +14303,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
768014303 .src_constraints = .{
768114304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
768214305 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
14306 .any,
768314307 },
768414308 .patterns = &.{
7685 .{ .src = .{ .to_mem, .to_mem } },
14309 .{ .src = .{ .to_mem, .to_mem, .none } },
768614310 },
768714311 .extra_temps = .{
768814312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7710,9 +14334,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
771014334 .src_constraints = .{
771114335 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
771214336 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
14337 .any,
771314338 },
771414339 .patterns = &.{
7715 .{ .src = .{ .to_mem, .to_mem } },
14340 .{ .src = .{ .to_mem, .to_mem, .none } },
771614341 },
771714342 .extra_temps = .{
771814343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7740,9 +14365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
774014365 .src_constraints = .{
774114366 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
774214367 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
14368 .any,
774314369 },
774414370 .patterns = &.{
7745 .{ .src = .{ .to_mem, .to_mem } },
14371 .{ .src = .{ .to_mem, .to_mem, .none } },
774614372 },
774714373 .extra_temps = .{
774814374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7770,9 +14396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
777014396 .src_constraints = .{
777114397 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
777214398 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
14399 .any,
777314400 },
777414401 .patterns = &.{
7775 .{ .src = .{ .to_mem, .to_mem } },
14402 .{ .src = .{ .to_mem, .to_mem, .none } },
777614403 },
777714404 .extra_temps = .{
777814405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7800,9 +14427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
780014427 .src_constraints = .{
780114428 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
780214429 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
14430 .any,
780314431 },
780414432 .patterns = &.{
7805 .{ .src = .{ .to_mem, .to_mem } },
14433 .{ .src = .{ .to_mem, .to_mem, .none } },
780614434 },
780714435 .extra_temps = .{
780814436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7832,11 +14460,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
783214460 .src_constraints = .{
783314461 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
783414462 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14463 .any,
783514464 },
783614465 .patterns = &.{
7837 .{ .src = .{ .to_sse, .mem } },
7838 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7839 .{ .src = .{ .to_sse, .to_sse } },
14466 .{ .src = .{ .to_sse, .mem, .none } },
14467 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14468 .{ .src = .{ .to_sse, .to_sse, .none } },
784014469 },
784114470 .dst_temps = .{.{ .rc = .sse }},
784214471 .each = .{ .once = &.{
......@@ -7847,11 +14476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
784714476 .src_constraints = .{
784814477 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
784914478 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14479 .any,
785014480 },
785114481 .patterns = &.{
7852 .{ .src = .{ .to_mut_sse, .mem } },
7853 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7854 .{ .src = .{ .to_mut_sse, .to_sse } },
14482 .{ .src = .{ .to_mut_sse, .mem, .none } },
14483 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14484 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
785514485 },
785614486 .dst_temps = .{.{ .ref = .src0 }},
785714487 .each = .{ .once = &.{
......@@ -7862,11 +14492,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
786214492 .src_constraints = .{
786314493 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
786414494 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14495 .any,
786514496 },
786614497 .patterns = &.{
7867 .{ .src = .{ .to_mut_sse, .mem } },
7868 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
7869 .{ .src = .{ .to_mut_sse, .to_sse } },
14498 .{ .src = .{ .to_mut_sse, .mem, .none } },
14499 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14500 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
787014501 },
787114502 .dst_temps = .{.{ .rc = .sse }},
787214503 .each = .{ .once = &.{
......@@ -7879,11 +14510,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
787914510 .src_constraints = .{
788014511 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
788114512 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
14513 .any,
788214514 },
788314515 .patterns = &.{
7884 .{ .src = .{ .to_sse, .mem } },
7885 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
7886 .{ .src = .{ .to_sse, .to_sse } },
14516 .{ .src = .{ .to_sse, .mem, .none } },
14517 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14518 .{ .src = .{ .to_sse, .to_sse, .none } },
788714519 },
788814520 .dst_temps = .{.{ .rc = .sse }},
788914521 .each = .{ .once = &.{
......@@ -7894,9 +14526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
789414526 .src_constraints = .{
789514527 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
789614528 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
14529 .any,
789714530 },
789814531 .patterns = &.{
7899 .{ .src = .{ .to_mem, .to_mem } },
14532 .{ .src = .{ .to_mem, .to_mem, .none } },
790014533 },
790114534 .extra_temps = .{
790214535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7924,9 +14557,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
792414557 .src_constraints = .{
792514558 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
792614559 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14560 .any,
792714561 },
792814562 .patterns = &.{
7929 .{ .src = .{ .to_mem, .to_mem } },
14563 .{ .src = .{ .to_mem, .to_mem, .none } },
793014564 },
793114565 .extra_temps = .{
793214566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7954,9 +14588,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
795414588 .src_constraints = .{
795514589 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
795614590 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14591 .any,
795714592 },
795814593 .patterns = &.{
7959 .{ .src = .{ .to_mem, .to_mem } },
14594 .{ .src = .{ .to_mem, .to_mem, .none } },
796014595 },
796114596 .extra_temps = .{
796214597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -7984,9 +14619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
798414619 .src_constraints = .{
798514620 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
798614621 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14622 .any,
798714623 },
798814624 .patterns = &.{
7989 .{ .src = .{ .to_mem, .to_mem } },
14625 .{ .src = .{ .to_mem, .to_mem, .none } },
799014626 },
799114627 .extra_temps = .{
799214628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8016,9 +14652,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
801614652 .src_constraints = .{
801714653 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
801814654 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
14655 .any,
801914656 },
802014657 .patterns = &.{
8021 .{ .src = .{ .to_mem, .to_mem } },
14658 .{ .src = .{ .to_mem, .to_mem, .none } },
802214659 },
802314660 .extra_temps = .{
802414661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8046,9 +14683,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
804614683 .src_constraints = .{
804714684 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
804814685 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
14686 .any,
804914687 },
805014688 .patterns = &.{
8051 .{ .src = .{ .to_mem, .to_mem } },
14689 .{ .src = .{ .to_mem, .to_mem, .none } },
805214690 },
805314691 .extra_temps = .{
805414692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8078,11 +14716,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
807814716 .src_constraints = .{
807914717 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
808014718 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14719 .any,
808114720 },
808214721 .patterns = &.{
8083 .{ .src = .{ .to_sse, .mem } },
8084 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8085 .{ .src = .{ .to_sse, .to_sse } },
14722 .{ .src = .{ .to_sse, .mem, .none } },
14723 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14724 .{ .src = .{ .to_sse, .to_sse, .none } },
808614725 },
808714726 .dst_temps = .{.{ .rc = .sse }},
808814727 .each = .{ .once = &.{
......@@ -8093,11 +14732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
809314732 .src_constraints = .{
809414733 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
809514734 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14735 .any,
809614736 },
809714737 .patterns = &.{
8098 .{ .src = .{ .to_mut_sse, .mem } },
8099 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8100 .{ .src = .{ .to_mut_sse, .to_sse } },
14738 .{ .src = .{ .to_mut_sse, .mem, .none } },
14739 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14740 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
810114741 },
810214742 .dst_temps = .{.{ .ref = .src0 }},
810314743 .each = .{ .once = &.{
......@@ -8108,11 +14748,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
810814748 .src_constraints = .{
810914749 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
811014750 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14751 .any,
811114752 },
811214753 .patterns = &.{
8113 .{ .src = .{ .to_mut_sse, .mem } },
8114 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8115 .{ .src = .{ .to_mut_sse, .to_sse } },
14754 .{ .src = .{ .to_mut_sse, .mem, .none } },
14755 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
14756 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
811614757 },
811714758 .dst_temps = .{.{ .rc = .sse }},
811814759 .each = .{ .once = &.{
......@@ -8127,11 +14768,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
812714768 .src_constraints = .{
812814769 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
812914770 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
14771 .any,
813014772 },
813114773 .patterns = &.{
8132 .{ .src = .{ .to_sse, .mem } },
8133 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8134 .{ .src = .{ .to_sse, .to_sse } },
14774 .{ .src = .{ .to_sse, .mem, .none } },
14775 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14776 .{ .src = .{ .to_sse, .to_sse, .none } },
813514777 },
813614778 .dst_temps = .{.{ .rc = .sse }},
813714779 .each = .{ .once = &.{
......@@ -8142,9 +14784,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
814214784 .src_constraints = .{
814314785 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
814414786 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
14787 .any,
814514788 },
814614789 .patterns = &.{
8147 .{ .src = .{ .to_mem, .to_mem } },
14790 .{ .src = .{ .to_mem, .to_mem, .none } },
814814791 },
814914792 .extra_temps = .{
815014793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8172,9 +14815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
817214815 .src_constraints = .{
817314816 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
817414817 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14818 .any,
817514819 },
817614820 .patterns = &.{
8177 .{ .src = .{ .to_mem, .to_mem } },
14821 .{ .src = .{ .to_mem, .to_mem, .none } },
817814822 },
817914823 .extra_temps = .{
818014824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8202,9 +14846,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
820214846 .src_constraints = .{
820314847 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
820414848 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14849 .any,
820514850 },
820614851 .patterns = &.{
8207 .{ .src = .{ .to_mem, .to_mem } },
14852 .{ .src = .{ .to_mem, .to_mem, .none } },
820814853 },
820914854 .extra_temps = .{
821014855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8232,9 +14877,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
823214877 .src_constraints = .{
823314878 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
823414879 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14880 .any,
823514881 },
823614882 .patterns = &.{
8237 .{ .src = .{ .to_mem, .to_mem } },
14883 .{ .src = .{ .to_mem, .to_mem, .none } },
823814884 },
823914885 .extra_temps = .{
824014886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8266,9 +14912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
826614912 .src_constraints = .{
826714913 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
826814914 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
14915 .any,
826914916 },
827014917 .patterns = &.{
8271 .{ .src = .{ .to_mem, .to_mem } },
14918 .{ .src = .{ .to_mem, .to_mem, .none } },
827214919 },
827314920 .extra_temps = .{
827414921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8296,9 +14943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
829614943 .src_constraints = .{
829714944 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
829814945 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
14946 .any,
829914947 },
830014948 .patterns = &.{
8301 .{ .src = .{ .to_mem, .to_mem } },
14949 .{ .src = .{ .to_mem, .to_mem, .none } },
830214950 },
830314951 .extra_temps = .{
830414952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8328,11 +14976,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
832814976 .src_constraints = .{
832914977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
833014978 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
14979 .any,
833114980 },
833214981 .patterns = &.{
8333 .{ .src = .{ .to_sse, .mem } },
8334 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8335 .{ .src = .{ .to_sse, .to_sse } },
14982 .{ .src = .{ .to_sse, .mem, .none } },
14983 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
14984 .{ .src = .{ .to_sse, .to_sse, .none } },
833614985 },
833714986 .dst_temps = .{.{ .rc = .sse }},
833814987 .each = .{ .once = &.{
......@@ -8343,11 +14992,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
834314992 .src_constraints = .{
834414993 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
834514994 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
14995 .any,
834614996 },
834714997 .patterns = &.{
8348 .{ .src = .{ .to_mut_sse, .mem } },
8349 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8350 .{ .src = .{ .to_mut_sse, .to_sse } },
14998 .{ .src = .{ .to_mut_sse, .mem, .none } },
14999 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15000 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
835115001 },
835215002 .dst_temps = .{.{ .ref = .src0 }},
835315003 .each = .{ .once = &.{
......@@ -8358,11 +15008,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
835815008 .src_constraints = .{
835915009 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
836015010 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15011 .any,
836115012 },
836215013 .patterns = &.{
8363 .{ .src = .{ .to_mut_sse, .mem } },
8364 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8365 .{ .src = .{ .to_mut_sse, .to_sse } },
15014 .{ .src = .{ .to_mut_sse, .mem, .none } },
15015 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15016 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
836615017 },
836715018 .extra_temps = .{
836815019 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8392,11 +15043,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
839215043 .src_constraints = .{
839315044 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
839415045 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
15046 .any,
839515047 },
839615048 .patterns = &.{
8397 .{ .src = .{ .to_sse, .mem } },
8398 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8399 .{ .src = .{ .to_sse, .to_sse } },
15049 .{ .src = .{ .to_sse, .mem, .none } },
15050 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15051 .{ .src = .{ .to_sse, .to_sse, .none } },
840015052 },
840115053 .dst_temps = .{.{ .rc = .sse }},
840215054 .each = .{ .once = &.{
......@@ -8407,9 +15059,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
840715059 .src_constraints = .{
840815060 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
840915061 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
15062 .any,
841015063 },
841115064 .patterns = &.{
8412 .{ .src = .{ .to_mem, .to_mem } },
15065 .{ .src = .{ .to_mem, .to_mem, .none } },
841315066 },
841415067 .extra_temps = .{
841515068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8437,9 +15090,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
843715090 .src_constraints = .{
843815091 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
843915092 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15093 .any,
844015094 },
844115095 .patterns = &.{
8442 .{ .src = .{ .to_mem, .to_mem } },
15096 .{ .src = .{ .to_mem, .to_mem, .none } },
844315097 },
844415098 .extra_temps = .{
844515099 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8467,9 +15121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
846715121 .src_constraints = .{
846815122 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
846915123 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15124 .any,
847015125 },
847115126 .patterns = &.{
8472 .{ .src = .{ .to_mem, .to_mem } },
15127 .{ .src = .{ .to_mem, .to_mem, .none } },
847315128 },
847415129 .extra_temps = .{
847515130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8497,9 +15152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
849715152 .src_constraints = .{
849815153 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
849915154 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15155 .any,
850015156 },
850115157 .patterns = &.{
8502 .{ .src = .{ .to_mem, .to_mem } },
15158 .{ .src = .{ .to_mem, .to_mem, .none } },
850315159 },
850415160 .extra_temps = .{
850515161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8537,9 +15193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
853715193 .src_constraints = .{
853815194 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
853915195 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
15196 .any,
854015197 },
854115198 .patterns = &.{
8542 .{ .src = .{ .to_mem, .to_mem } },
15199 .{ .src = .{ .to_mem, .to_mem, .none } },
854315200 },
854415201 .extra_temps = .{
854515202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8567,9 +15224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
856715224 .src_constraints = .{
856815225 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
856915226 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
15227 .any,
857015228 },
857115229 .patterns = &.{
8572 .{ .src = .{ .to_mem, .to_mem } },
15230 .{ .src = .{ .to_mem, .to_mem, .none } },
857315231 },
857415232 .extra_temps = .{
857515233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8599,11 +15257,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
859915257 .src_constraints = .{
860015258 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
860115259 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
15260 .any,
860215261 },
860315262 .patterns = &.{
8604 .{ .src = .{ .to_sse, .mem } },
8605 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8606 .{ .src = .{ .to_sse, .to_sse } },
15263 .{ .src = .{ .to_sse, .mem, .none } },
15264 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15265 .{ .src = .{ .to_sse, .to_sse, .none } },
860715266 },
860815267 .dst_temps = .{.{ .rc = .sse }},
860915268 .each = .{ .once = &.{
......@@ -8615,11 +15274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
861515274 .src_constraints = .{
861615275 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
861715276 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
15277 .any,
861815278 },
861915279 .patterns = &.{
8620 .{ .src = .{ .to_mut_sse, .mem } },
8621 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8622 .{ .src = .{ .to_mut_sse, .to_sse } },
15280 .{ .src = .{ .to_mut_sse, .mem, .none } },
15281 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15282 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
862315283 },
862415284 .extra_temps = .{
862515285 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
......@@ -8643,11 +15303,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
864315303 .src_constraints = .{
864415304 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
864515305 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
15306 .any,
864615307 },
864715308 .patterns = &.{
8648 .{ .src = .{ .to_sse, .mem } },
8649 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8650 .{ .src = .{ .to_sse, .to_sse } },
15309 .{ .src = .{ .to_sse, .mem, .none } },
15310 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15311 .{ .src = .{ .to_sse, .to_sse, .none } },
865115312 },
865215313 .dst_temps = .{.{ .rc = .sse }},
865315314 .each = .{ .once = &.{
......@@ -8659,9 +15320,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
865915320 .src_constraints = .{
866015321 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
866115322 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
15323 .any,
866215324 },
866315325 .patterns = &.{
8664 .{ .src = .{ .to_mem, .to_mem } },
15326 .{ .src = .{ .to_mem, .to_mem, .none } },
866515327 },
866615328 .extra_temps = .{
866715329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8691,9 +15353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
869115353 .src_constraints = .{
869215354 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
869315355 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
15356 .any,
869415357 },
869515358 .patterns = &.{
8696 .{ .src = .{ .to_mem, .to_mem } },
15359 .{ .src = .{ .to_mem, .to_mem, .none } },
869715360 },
869815361 .extra_temps = .{
869915362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8723,9 +15386,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
872315386 .src_constraints = .{
872415387 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
872515388 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
15389 .any,
872615390 },
872715391 .patterns = &.{
8728 .{ .src = .{ .to_mem, .to_mem } },
15392 .{ .src = .{ .to_mem, .to_mem, .none } },
872915393 },
873015394 .extra_temps = .{
873115395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8756,9 +15420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
875615420 .src_constraints = .{
875715421 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
875815422 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
15423 .any,
875915424 },
876015425 .patterns = &.{
8761 .{ .src = .{ .to_mem, .to_mem } },
15426 .{ .src = .{ .to_mem, .to_mem, .none } },
876215427 },
876315428 .extra_temps = .{
876415429 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8787,9 +15452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
878715452 .src_constraints = .{
878815453 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
878915454 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
15455 .any,
879015456 },
879115457 .patterns = &.{
8792 .{ .src = .{ .to_mem, .to_mem } },
15458 .{ .src = .{ .to_mem, .to_mem, .none } },
879315459 },
879415460 .extra_temps = .{
879515461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8819,11 +15485,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
881915485 .src_constraints = .{
882015486 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
882115487 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15488 .any,
882215489 },
882315490 .patterns = &.{
8824 .{ .src = .{ .to_sse, .mem } },
8825 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8826 .{ .src = .{ .to_sse, .to_sse } },
15491 .{ .src = .{ .to_sse, .mem, .none } },
15492 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15493 .{ .src = .{ .to_sse, .to_sse, .none } },
882715494 },
882815495 .extra_temps = .{
882915496 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8850,11 +15517,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
885015517 .src_constraints = .{
885115518 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
885215519 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15520 .any,
885315521 },
885415522 .patterns = &.{
8855 .{ .src = .{ .to_mut_sse, .mem } },
8856 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
8857 .{ .src = .{ .to_mut_sse, .to_sse } },
15523 .{ .src = .{ .to_mut_sse, .mem, .none } },
15524 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
15525 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
885815526 },
885915527 .extra_temps = .{
886015528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8882,11 +15550,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
888215550 .src_constraints = .{
888315551 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
888415552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
15553 .any,
888515554 },
888615555 .patterns = &.{
8887 .{ .src = .{ .to_sse, .mem } },
8888 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
8889 .{ .src = .{ .to_sse, .to_sse } },
15556 .{ .src = .{ .to_sse, .mem, .none } },
15557 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
15558 .{ .src = .{ .to_sse, .to_sse, .none } },
889015559 },
889115560 .extra_temps = .{
889215561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -8913,9 +15582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
891315582 .src_constraints = .{
891415583 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
891515584 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
15585 .any,
891615586 },
891715587 .patterns = &.{
8918 .{ .src = .{ .to_mem, .to_mem } },
15588 .{ .src = .{ .to_mem, .to_mem, .none } },
891915589 },
892015590 .extra_temps = .{
892115591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8949,9 +15619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
894915619 .src_constraints = .{
895015620 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
895115621 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15622 .any,
895215623 },
895315624 .patterns = &.{
8954 .{ .src = .{ .to_mem, .to_mem } },
15625 .{ .src = .{ .to_mem, .to_mem, .none } },
895515626 },
895615627 .extra_temps = .{
895715628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -8985,9 +15656,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
898515656 .src_constraints = .{
898615657 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
898715658 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15659 .any,
898815660 },
898915661 .patterns = &.{
8990 .{ .src = .{ .to_mem, .to_mem } },
15662 .{ .src = .{ .to_mem, .to_mem, .none } },
899115663 },
899215664 .extra_temps = .{
899315665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9023,9 +15695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
902315695 .src_constraints = .{
902415696 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
902515697 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
15698 .any,
902615699 },
902715700 .patterns = &.{
9028 .{ .src = .{ .to_mem, .to_mem } },
15701 .{ .src = .{ .to_mem, .to_mem, .none } },
902915702 },
903015703 .extra_temps = .{
903115704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9054,9 +15727,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
905415727 .src_constraints = .{
905515728 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
905615729 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
15730 .any,
905715731 },
905815732 .patterns = &.{
9059 .{ .src = .{ .to_mem, .to_mem } },
15733 .{ .src = .{ .to_mem, .to_mem, .none } },
906015734 },
906115735 .extra_temps = .{
906215736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9083,9 +15757,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
908315757 } },
908415758 }, .{
908515759 .required_features = .{ .@"64bit", .cmov, null, null },
9086 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
15760 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
908715761 .patterns = &.{
9088 .{ .src = .{ .to_mem, .to_mem } },
15762 .{ .src = .{ .to_mem, .to_mem, .none } },
908915763 },
909015764 .extra_temps = .{
909115765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9122,9 +15796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
912215796 } },
912315797 }, .{
912415798 .required_features = .{ .@"64bit", null, null, null },
9125 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },
15799 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any },
912615800 .patterns = &.{
9127 .{ .src = .{ .to_mem, .to_mem } },
15801 .{ .src = .{ .to_mem, .to_mem, .none } },
912815802 },
912915803 .extra_temps = .{
913015804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9161,9 +15835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
916115835 } },
916215836 }, .{
916315837 .required_features = .{ .@"64bit", .cmov, null, null },
9164 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
15838 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
916515839 .patterns = &.{
9166 .{ .src = .{ .to_mem, .to_mem } },
15840 .{ .src = .{ .to_mem, .to_mem, .none } },
916715841 },
916815842 .extra_temps = .{
916915843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9198,9 +15872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
919815872 } },
919915873 }, .{
920015874 .required_features = .{ .@"64bit", null, null, null },
9201 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },
15875 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any },
920215876 .patterns = &.{
9203 .{ .src = .{ .to_mem, .to_mem } },
15877 .{ .src = .{ .to_mem, .to_mem, .none } },
920415878 },
920515879 .extra_temps = .{
920615880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9238,9 +15912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
923815912 .src_constraints = .{
923915913 .{ .scalar_float = .{ .of = .word, .is = .word } },
924015914 .{ .scalar_float = .{ .of = .word, .is = .word } },
15915 .any,
924115916 },
924215917 .patterns = &.{
9243 .{ .src = .{ .to_sse, .to_sse } },
15918 .{ .src = .{ .to_sse, .to_sse, .none } },
924415919 },
924515920 .extra_temps = .{
924615921 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
......@@ -9257,8 +15932,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
925715932 .each = .{ .once = &.{
925815933 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
925915934 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
9260 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },
9261 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ },
15935 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) },
15936 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ },
926215937 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
926315938 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
926415939 } },
......@@ -9267,9 +15942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
926715942 .src_constraints = .{
926815943 .{ .scalar_float = .{ .of = .word, .is = .word } },
926915944 .{ .scalar_float = .{ .of = .word, .is = .word } },
15945 .any,
927015946 },
927115947 .patterns = &.{
9272 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
15948 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
927315949 },
927415950 .call_frame = .{ .alignment = .@"16" },
927515951 .extra_temps = .{
......@@ -9293,16 +15969,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
929315969 .src_constraints = .{
929415970 .{ .scalar_float = .{ .of = .qword, .is = .word } },
929515971 .{ .scalar_float = .{ .of = .qword, .is = .word } },
15972 .any,
929615973 },
929715974 .patterns = &.{
9298 .{ .src = .{ .mem, .mem } },
9299 .{ .src = .{ .to_sse, .mem } },
9300 .{ .src = .{ .mem, .to_sse } },
9301 .{ .src = .{ .to_sse, .to_sse } },
15975 .{ .src = .{ .mem, .mem, .none } },
15976 .{ .src = .{ .to_sse, .mem, .none } },
15977 .{ .src = .{ .mem, .to_sse, .none } },
15978 .{ .src = .{ .to_sse, .to_sse, .none } },
930215979 },
930315980 .extra_temps = .{
9304 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9305 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },
15981 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
15982 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
930615983 .unused,
930715984 .unused,
930815985 .unused,
......@@ -9325,16 +16002,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
932516002 .src_constraints = .{
932616003 .{ .scalar_float = .{ .of = .xword, .is = .word } },
932716004 .{ .scalar_float = .{ .of = .xword, .is = .word } },
16005 .any,
932816006 },
932916007 .patterns = &.{
9330 .{ .src = .{ .mem, .mem } },
9331 .{ .src = .{ .to_sse, .mem } },
9332 .{ .src = .{ .mem, .to_sse } },
9333 .{ .src = .{ .to_sse, .to_sse } },
16008 .{ .src = .{ .mem, .mem, .none } },
16009 .{ .src = .{ .to_sse, .mem, .none } },
16010 .{ .src = .{ .mem, .to_sse, .none } },
16011 .{ .src = .{ .to_sse, .to_sse, .none } },
933416012 },
933516013 .extra_temps = .{
9336 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9337 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
16014 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
16015 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
933816016 .unused,
933916017 .unused,
934016018 .unused,
......@@ -9350,22 +16028,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
935016028 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
935116029 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },
935216030 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
9353 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },
16031 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
935416032 } },
935516033 }, .{
935616034 .required_features = .{ .f16c, null, null, null },
935716035 .src_constraints = .{
935816036 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
935916037 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
16038 .any,
936016039 },
936116040 .patterns = &.{
9362 .{ .src = .{ .to_mem, .to_mem } },
16041 .{ .src = .{ .to_mem, .to_mem, .none } },
936316042 },
936416043 .extra_temps = .{
936516044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9366 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
9367 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
9368 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
16045 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
16046 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
16047 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
936916048 .unused,
937016049 .unused,
937116050 .unused,
......@@ -9390,9 +16069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
939016069 .src_constraints = .{
939116070 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
939216071 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16072 .any,
939316073 },
939416074 .patterns = &.{
9395 .{ .src = .{ .to_mem, .to_mem } },
16075 .{ .src = .{ .to_mem, .to_mem, .none } },
939616076 },
939716077 .call_frame = .{ .alignment = .@"16" },
939816078 .extra_temps = .{
......@@ -9423,9 +16103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
942316103 .src_constraints = .{
942416104 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
942516105 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16106 .any,
942616107 },
942716108 .patterns = &.{
9428 .{ .src = .{ .to_mem, .to_mem } },
16109 .{ .src = .{ .to_mem, .to_mem, .none } },
942916110 },
943016111 .call_frame = .{ .alignment = .@"16" },
943116112 .extra_temps = .{
......@@ -9457,9 +16138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
945716138 .src_constraints = .{
945816139 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
945916140 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16141 .any,
946016142 },
946116143 .patterns = &.{
9462 .{ .src = .{ .to_mem, .to_mem } },
16144 .{ .src = .{ .to_mem, .to_mem, .none } },
946316145 },
946416146 .call_frame = .{ .alignment = .@"16" },
946516147 .extra_temps = .{
......@@ -9492,9 +16174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
949216174 .src_constraints = .{
949316175 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
949416176 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16177 .any,
949516178 },
949616179 .patterns = &.{
9497 .{ .src = .{ .to_mem, .to_mem } },
16180 .{ .src = .{ .to_mem, .to_mem, .none } },
949816181 },
949916182 .call_frame = .{ .alignment = .@"16" },
950016183 .extra_temps = .{
......@@ -9530,9 +16213,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
953016213 .src_constraints = .{
953116214 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
953216215 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16216 .any,
953316217 },
953416218 .patterns = &.{
9535 .{ .src = .{ .to_sse, .to_sse } },
16219 .{ .src = .{ .to_sse, .to_sse, .none } },
953616220 },
953716221 .extra_temps = .{
953816222 .{ .type = .f32, .kind = .{ .rc = .sse } },
......@@ -9547,8 +16231,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
954716231 },
954816232 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
954916233 .each = .{ .once = &.{
9550 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
9551 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ },
16234 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
16235 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ },
955216236 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
955316237 } },
955416238 }, .{
......@@ -9556,15 +16240,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
955616240 .src_constraints = .{
955716241 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
955816242 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16243 .any,
955916244 },
956016245 .patterns = &.{
9561 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
16246 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
956216247 },
956316248 .dst_temps = .{.{ .rc = .sse }},
956416249 .each = .{ .once = &.{
956516250 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9566 .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ },
9567 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },
16251 .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ },
16252 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
956816253 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
956916254 } },
957016255 }, .{
......@@ -9572,9 +16257,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
957216257 .src_constraints = .{
957316258 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
957416259 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16260 .any,
957516261 },
957616262 .patterns = &.{
9577 .{ .src = .{ .to_mut_sse, .to_sse } },
16263 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
957816264 },
957916265 .extra_temps = .{
958016266 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9590,8 +16276,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
959016276 .dst_temps = .{.{ .ref = .src0 }},
959116277 .each = .{ .once = &.{
959216278 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9593 .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ },
9594 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
16279 .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ },
16280 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
959516281 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
959616282 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
959716283 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9601,9 +16287,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
960116287 .src_constraints = .{
960216288 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
960316289 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16290 .any,
960416291 },
960516292 .patterns = &.{
9606 .{ .src = .{ .to_sse, .to_sse } },
16293 .{ .src = .{ .to_sse, .to_sse, .none } },
960716294 },
960816295 .extra_temps = .{
960916296 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9627,17 +16314,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
962716314 .src_constraints = .{
962816315 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
962916316 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16317 .any,
963016318 },
963116319 .patterns = &.{
9632 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
9633 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
9634 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
16320 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
16321 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
16322 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
963516323 },
963616324 .dst_temps = .{.{ .rc = .sse }},
963716325 .each = .{ .once = &.{
963816326 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
963916327 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },
9640 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },
16328 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
964116329 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
964216330 } },
964316331 }, .{
......@@ -9645,11 +16333,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
964516333 .src_constraints = .{
964616334 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
964716335 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16336 .any,
964816337 },
964916338 .patterns = &.{
9650 .{ .src = .{ .to_mut_sse, .mem } },
9651 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
9652 .{ .src = .{ .to_mut_sse, .to_sse } },
16339 .{ .src = .{ .to_mut_sse, .mem, .none } },
16340 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16341 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
965316342 },
965416343 .extra_temps = .{
965516344 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
......@@ -9666,7 +16355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
966616355 .each = .{ .once = &.{
966716356 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
966816357 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },
9669 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
16358 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
967016359 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
967116360 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
967216361 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9676,9 +16365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
967616365 .src_constraints = .{
967716366 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
967816367 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
16368 .any,
967916369 },
968016370 .patterns = &.{
9681 .{ .src = .{ .to_sse, .to_sse } },
16371 .{ .src = .{ .to_sse, .to_sse, .none } },
968216372 },
968316373 .extra_temps = .{
968416374 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
......@@ -9702,9 +16392,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
970216392 .src_constraints = .{
970316393 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
970416394 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
16395 .any,
970516396 },
970616397 .patterns = &.{
9707 .{ .src = .{ .to_mem, .to_mem } },
16398 .{ .src = .{ .to_mem, .to_mem, .none } },
970816399 },
970916400 .extra_temps = .{
971016401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9735,9 +16426,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
973516426 .src_constraints = .{
973616427 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
973716428 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
16429 .any,
973816430 },
973916431 .patterns = &.{
9740 .{ .src = .{ .to_mem, .to_mem } },
16432 .{ .src = .{ .to_mem, .to_mem, .none } },
974116433 },
974216434 .extra_temps = .{
974316435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9758,7 +16450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
975816450 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
975916451 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
976016452 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9761 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
16453 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
976216454 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
976316455 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
976416456 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
......@@ -9769,9 +16461,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
976916461 .src_constraints = .{
977016462 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
977116463 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
16464 .any,
977216465 },
977316466 .patterns = &.{
9774 .{ .src = .{ .to_mem, .to_mem } },
16467 .{ .src = .{ .to_mem, .to_mem, .none } },
977516468 },
977616469 .extra_temps = .{
977716470 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -9792,7 +16485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
979216485 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
979316486 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
979416487 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9795 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
16488 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
979616489 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
979716490 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
979816491 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
......@@ -9805,9 +16498,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
980516498 .src_constraints = .{
980616499 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
980716500 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16501 .any,
980816502 },
980916503 .patterns = &.{
9810 .{ .src = .{ .to_sse, .to_sse } },
16504 .{ .src = .{ .to_sse, .to_sse, .none } },
981116505 },
981216506 .extra_temps = .{
981316507 .{ .type = .f64, .kind = .{ .rc = .sse } },
......@@ -9822,8 +16516,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
982216516 },
982316517 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
982416518 .each = .{ .once = &.{
9825 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },
9826 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ },
16519 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
16520 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ },
982716521 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
982816522 } },
982916523 }, .{
......@@ -9831,15 +16525,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
983116525 .src_constraints = .{
983216526 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
983316527 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16528 .any,
983416529 },
983516530 .patterns = &.{
9836 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
16531 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
983716532 },
983816533 .dst_temps = .{.{ .rc = .sse }},
983916534 .each = .{ .once = &.{
984016535 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9841 .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ },
9842 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
16536 .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ },
16537 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
984316538 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
984416539 } },
984516540 }, .{
......@@ -9847,9 +16542,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
984716542 .src_constraints = .{
984816543 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
984916544 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16545 .any,
985016546 },
985116547 .patterns = &.{
9852 .{ .src = .{ .to_mut_sse, .to_sse } },
16548 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
985316549 },
985416550 .extra_temps = .{
985516551 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9865,8 +16561,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
986516561 .dst_temps = .{.{ .ref = .src0 }},
986616562 .each = .{ .once = &.{
986716563 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9868 .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ },
9869 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
16564 .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ },
16565 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
987016566 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
987116567 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
987216568 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9876,9 +16572,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
987616572 .src_constraints = .{
987716573 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
987816574 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16575 .any,
987916576 },
988016577 .patterns = &.{
9881 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
16578 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
988216579 },
988316580 .call_frame = .{ .alignment = .@"16" },
988416581 .extra_temps = .{
......@@ -9902,9 +16599,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
990216599 .src_constraints = .{
990316600 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
990416601 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16602 .any,
990516603 },
990616604 .patterns = &.{
9907 .{ .src = .{ .to_sse, .to_sse } },
16605 .{ .src = .{ .to_sse, .to_sse, .none } },
990816606 },
990916607 .extra_temps = .{
991016608 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9928,17 +16626,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
992816626 .src_constraints = .{
992916627 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
993016628 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16629 .any,
993116630 },
993216631 .patterns = &.{
9933 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },
9934 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },
9935 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },
16632 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
16633 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
16634 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
993616635 },
993716636 .dst_temps = .{.{ .rc = .sse }},
993816637 .each = .{ .once = &.{
993916638 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
994016639 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },
9941 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },
16640 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
994216641 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
994316642 } },
994416643 }, .{
......@@ -9946,11 +16645,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
994616645 .src_constraints = .{
994716646 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
994816647 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16648 .any,
994916649 },
995016650 .patterns = &.{
9951 .{ .src = .{ .to_mut_sse, .mem } },
9952 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
9953 .{ .src = .{ .to_mut_sse, .to_sse } },
16651 .{ .src = .{ .to_mut_sse, .mem, .none } },
16652 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
16653 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
995416654 },
995516655 .extra_temps = .{
995616656 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
......@@ -9967,7 +16667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
996716667 .each = .{ .once = &.{
996816668 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
996916669 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },
9970 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },
16670 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
997116671 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
997216672 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
997316673 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
......@@ -9977,9 +16677,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
997716677 .src_constraints = .{
997816678 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
997916679 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
16680 .any,
998016681 },
998116682 .patterns = &.{
9982 .{ .src = .{ .to_sse, .to_sse } },
16683 .{ .src = .{ .to_sse, .to_sse, .none } },
998316684 },
998416685 .extra_temps = .{
998516686 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
......@@ -10003,9 +16704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1000316704 .src_constraints = .{
1000416705 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
1000516706 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
16707 .any,
1000616708 },
1000716709 .patterns = &.{
10008 .{ .src = .{ .to_mem, .to_mem } },
16710 .{ .src = .{ .to_mem, .to_mem, .none } },
1000916711 },
1001016712 .extra_temps = .{
1001116713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10036,9 +16738,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1003616738 .src_constraints = .{
1003716739 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1003816740 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
16741 .any,
1003916742 },
1004016743 .patterns = &.{
10041 .{ .src = .{ .to_mem, .to_mem } },
16744 .{ .src = .{ .to_mem, .to_mem, .none } },
1004216745 },
1004316746 .extra_temps = .{
1004416747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10059,7 +16762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1005916762 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1006016763 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
1006116764 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10062 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
16765 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
1006316766 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
1006416767 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
1006516768 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
......@@ -10070,9 +16773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1007016773 .src_constraints = .{
1007116774 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1007216775 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
16776 .any,
1007316777 },
1007416778 .patterns = &.{
10075 .{ .src = .{ .to_mem, .to_mem } },
16779 .{ .src = .{ .to_mem, .to_mem, .none } },
1007616780 },
1007716781 .extra_temps = .{
1007816782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10093,7 +16797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1009316797 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1009416798 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
1009516799 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10096 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },
16800 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
1009716801 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
1009816802 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
1009916803 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
......@@ -10106,9 +16810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1010616810 .src_constraints = .{
1010716811 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1010816812 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
16813 .any,
1010916814 },
1011016815 .patterns = &.{
10111 .{ .src = .{ .to_mem, .to_mem } },
16816 .{ .src = .{ .to_mem, .to_mem, .none } },
1011216817 },
1011316818 .call_frame = .{ .alignment = .@"16" },
1011416819 .extra_temps = .{
......@@ -10140,11 +16845,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1014016845 .src_constraints = .{
1014116846 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1014216847 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16848 .any,
1014316849 },
1014416850 .patterns = &.{
10145 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10146 .{ .src = .{ .mem, .to_x87 } },
10147 .{ .src = .{ .to_x87, .to_x87 } },
16851 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
16852 .{ .src = .{ .mem, .to_x87, .none } },
16853 .{ .src = .{ .to_x87, .to_x87, .none } },
1014816854 },
1014916855 .extra_temps = .{
1015016856 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10172,11 +16878,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1017216878 .src_constraints = .{
1017316879 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1017416880 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16881 .any,
1017516882 },
1017616883 .patterns = &.{
10177 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10178 .{ .src = .{ .mem, .to_x87 } },
10179 .{ .src = .{ .to_x87, .to_x87 } },
16884 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
16885 .{ .src = .{ .mem, .to_x87, .none } },
16886 .{ .src = .{ .to_x87, .to_x87, .none } },
1018016887 },
1018116888 .extra_temps = .{
1018216889 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10210,11 +16917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1021016917 .src_constraints = .{
1021116918 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
1021216919 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16920 .any,
1021316921 },
1021416922 .patterns = &.{
10215 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
10216 .{ .src = .{ .mem, .to_x87 } },
10217 .{ .src = .{ .to_x87, .to_x87 } },
16923 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
16924 .{ .src = .{ .mem, .to_x87, .none } },
16925 .{ .src = .{ .to_x87, .to_x87, .none } },
1021816926 },
1021916927 .extra_temps = .{
1022016928 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -10248,9 +16956,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1024816956 .src_constraints = .{
1024916957 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1025016958 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
16959 .any,
1025116960 },
1025216961 .patterns = &.{
10253 .{ .src = .{ .to_mem, .to_mem } },
16962 .{ .src = .{ .to_mem, .to_mem, .none } },
1025416963 },
1025516964 .extra_temps = .{
1025616965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10283,9 +16992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1028316992 .src_constraints = .{
1028416993 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1028516994 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
16995 .any,
1028616996 },
1028716997 .patterns = &.{
10288 .{ .src = .{ .to_mem, .to_mem } },
16998 .{ .src = .{ .to_mem, .to_mem, .none } },
1028916999 },
1029017000 .extra_temps = .{
1029117001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10324,9 +17034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1032417034 .src_constraints = .{
1032517035 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1032617036 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
17037 .any,
1032717038 },
1032817039 .patterns = &.{
10329 .{ .src = .{ .to_mem, .to_mem } },
17040 .{ .src = .{ .to_mem, .to_mem, .none } },
1033017041 },
1033117042 .extra_temps = .{
1033217043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10365,9 +17076,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1036517076 .src_constraints = .{
1036617077 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
1036717078 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
17079 .any,
1036817080 },
1036917081 .patterns = &.{
10370 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
17082 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
1037117083 },
1037217084 .call_frame = .{ .alignment = .@"16" },
1037317085 .extra_temps = .{
......@@ -10391,9 +17103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1039117103 .src_constraints = .{
1039217104 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1039317105 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17106 .any,
1039417107 },
1039517108 .patterns = &.{
10396 .{ .src = .{ .to_mem, .to_mem } },
17109 .{ .src = .{ .to_mem, .to_mem, .none } },
1039717110 },
1039817111 .call_frame = .{ .alignment = .@"16" },
1039917112 .extra_temps = .{
......@@ -10423,9 +17136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1042317136 .src_constraints = .{
1042417137 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1042517138 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17139 .any,
1042617140 },
1042717141 .patterns = &.{
10428 .{ .src = .{ .to_mem, .to_mem } },
17142 .{ .src = .{ .to_mem, .to_mem, .none } },
1042917143 },
1043017144 .call_frame = .{ .alignment = .@"16" },
1043117145 .extra_temps = .{
......@@ -10455,9 +17169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1045517169 .src_constraints = .{
1045617170 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1045717171 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17172 .any,
1045817173 },
1045917174 .patterns = &.{
10460 .{ .src = .{ .to_mem, .to_mem } },
17175 .{ .src = .{ .to_mem, .to_mem, .none } },
1046117176 },
1046217177 .call_frame = .{ .alignment = .@"16" },
1046317178 .extra_temps = .{
......@@ -10529,17 +17244,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1052917244 })) {
1053017245 else => unreachable,
1053117246 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{
10532 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },
17247 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
1053317248 .patterns = &.{
10534 .{ .src = .{ .mut_mem, .imm8 } },
10535 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },
10536 .{ .src = .{ .to_mut_gpr, .imm8 } },
10537 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },
10538 .{ .src = .{ .mut_mem, .to_gpr } },
10539 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10540 .{ .src = .{ .to_mut_gpr, .mem } },
10541 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10542 .{ .src = .{ .to_mut_gpr, .to_gpr } },
17249 .{ .src = .{ .mut_mem, .imm8, .none } },
17250 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
17251 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
17252 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17253 .{ .src = .{ .mut_mem, .to_gpr, .none } },
17254 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
17255 .{ .src = .{ .to_mut_gpr, .mem, .none } },
17256 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17257 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1054317258 },
1054417259 .dst_temps = .{.{ .ref = .src0 }},
1054517260 .clobbers = .{ .eflags = true },
......@@ -10547,17 +17262,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1054717262 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },
1054817263 } },
1054917264 }, .{
10550 .src_constraints = .{ .{ .size = .word }, .{ .size = .word } },
17265 .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any },
1055117266 .patterns = &.{
10552 .{ .src = .{ .mut_mem, .imm16 } },
10553 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },
10554 .{ .src = .{ .to_mut_gpr, .imm16 } },
10555 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },
10556 .{ .src = .{ .mut_mem, .to_gpr } },
10557 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10558 .{ .src = .{ .to_mut_gpr, .mem } },
10559 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10560 .{ .src = .{ .to_mut_gpr, .to_gpr } },
17267 .{ .src = .{ .mut_mem, .imm16, .none } },
17268 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
17269 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
17270 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17271 .{ .src = .{ .mut_mem, .to_gpr, .none } },
17272 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
17273 .{ .src = .{ .to_mut_gpr, .mem, .none } },
17274 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17275 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1056117276 },
1056217277 .dst_temps = .{.{ .ref = .src0 }},
1056317278 .clobbers = .{ .eflags = true },
......@@ -10565,17 +17280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1056517280 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },
1056617281 } },
1056717282 }, .{
10568 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } },
17283 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any },
1056917284 .patterns = &.{
10570 .{ .src = .{ .mut_mem, .imm32 } },
10571 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },
10572 .{ .src = .{ .to_mut_gpr, .imm32 } },
10573 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
10574 .{ .src = .{ .mut_mem, .to_gpr } },
10575 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10576 .{ .src = .{ .to_mut_gpr, .mem } },
10577 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10578 .{ .src = .{ .to_mut_gpr, .to_gpr } },
17285 .{ .src = .{ .mut_mem, .imm32, .none } },
17286 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
17287 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
17288 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17289 .{ .src = .{ .mut_mem, .to_gpr, .none } },
17290 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
17291 .{ .src = .{ .to_mut_gpr, .mem, .none } },
17292 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17293 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1057917294 },
1058017295 .dst_temps = .{.{ .ref = .src0 }},
1058117296 .clobbers = .{ .eflags = true },
......@@ -10584,17 +17299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1058417299 } },
1058517300 }, .{
1058617301 .required_features = .{ .@"64bit", null, null, null },
10587 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },
17302 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
1058817303 .patterns = &.{
10589 .{ .src = .{ .mut_mem, .simm32 } },
10590 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },
10591 .{ .src = .{ .to_mut_gpr, .simm32 } },
10592 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
10593 .{ .src = .{ .mut_mem, .to_gpr } },
10594 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
10595 .{ .src = .{ .to_mut_gpr, .mem } },
10596 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
10597 .{ .src = .{ .to_mut_gpr, .to_gpr } },
17304 .{ .src = .{ .mut_mem, .simm32, .none } },
17305 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
17306 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
17307 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17308 .{ .src = .{ .mut_mem, .to_gpr, .none } },
17309 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
17310 .{ .src = .{ .to_mut_gpr, .mem, .none } },
17311 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
17312 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1059817313 },
1059917314 .dst_temps = .{.{ .ref = .src0 }},
1060017315 .clobbers = .{ .eflags = true },
......@@ -10603,11 +17318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1060317318 } },
1060417319 }, .{
1060517320 .required_features = .{ .mmx, null, null, null },
10606 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },
17321 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
1060717322 .patterns = &.{
10608 .{ .src = .{ .to_mut_mm, .mem } },
10609 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
10610 .{ .src = .{ .to_mut_mm, .to_mm } },
17323 .{ .src = .{ .to_mut_mm, .mem, .none } },
17324 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
17325 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1061117326 },
1061217327 .dst_temps = .{.{ .ref = .src0 }},
1061317328 .each = .{ .once = &.{
......@@ -10615,11 +17330,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1061517330 } },
1061617331 }, .{
1061717332 .required_features = .{ .avx, null, null, null },
10618 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
17333 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1061917334 .patterns = &.{
10620 .{ .src = .{ .to_xmm, .mem } },
10621 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
10622 .{ .src = .{ .to_xmm, .to_xmm } },
17335 .{ .src = .{ .to_xmm, .mem, .none } },
17336 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
17337 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1062317338 },
1062417339 .dst_temps = .{.{ .rc = .sse }},
1062517340 .each = .{ .once = &.{
......@@ -10627,11 +17342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1062717342 } },
1062817343 }, .{
1062917344 .required_features = .{ .sse2, null, null, null },
10630 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
17345 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1063117346 .patterns = &.{
10632 .{ .src = .{ .to_mut_xmm, .mem } },
10633 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
10634 .{ .src = .{ .to_mut_xmm, .to_xmm } },
17347 .{ .src = .{ .to_mut_xmm, .mem, .none } },
17348 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
17349 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1063517350 },
1063617351 .dst_temps = .{.{ .ref = .src0 }},
1063717352 .each = .{ .once = &.{
......@@ -10639,11 +17354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1063917354 } },
1064017355 }, .{
1064117356 .required_features = .{ .sse, null, null, null },
10642 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },
17357 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
1064317358 .patterns = &.{
10644 .{ .src = .{ .to_mut_xmm, .mem } },
10645 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
10646 .{ .src = .{ .to_mut_xmm, .to_xmm } },
17359 .{ .src = .{ .to_mut_xmm, .mem, .none } },
17360 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
17361 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1064717362 },
1064817363 .dst_temps = .{.{ .ref = .src0 }},
1064917364 .each = .{ .once = &.{
......@@ -10651,11 +17366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1065117366 } },
1065217367 }, .{
1065317368 .required_features = .{ .avx2, null, null, null },
10654 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },
17369 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
1065517370 .patterns = &.{
10656 .{ .src = .{ .to_ymm, .mem } },
10657 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
10658 .{ .src = .{ .to_ymm, .to_ymm } },
17371 .{ .src = .{ .to_ymm, .mem, .none } },
17372 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
17373 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1065917374 },
1066017375 .dst_temps = .{.{ .rc = .sse }},
1066117376 .each = .{ .once = &.{
......@@ -10663,11 +17378,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1066317378 } },
1066417379 }, .{
1066517380 .required_features = .{ .avx, null, null, null },
10666 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },
17381 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
1066717382 .patterns = &.{
10668 .{ .src = .{ .to_ymm, .mem } },
10669 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
10670 .{ .src = .{ .to_ymm, .to_ymm } },
17383 .{ .src = .{ .to_ymm, .mem, .none } },
17384 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
17385 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1067117386 },
1067217387 .dst_temps = .{.{ .rc = .sse }},
1067317388 .each = .{ .once = &.{
......@@ -10675,9 +17390,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1067517390 } },
1067617391 }, .{
1067717392 .required_features = .{ .avx2, null, null, null },
10678 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } },
17393 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any },
1067917394 .patterns = &.{
10680 .{ .src = .{ .to_mem, .to_mem } },
17395 .{ .src = .{ .to_mem, .to_mem, .none } },
1068117396 },
1068217397 .extra_temps = .{
1068317398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10702,9 +17417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1070217417 } },
1070317418 }, .{
1070417419 .required_features = .{ .avx, null, null, null },
10705 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } },
17420 .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any },
1070617421 .patterns = &.{
10707 .{ .src = .{ .to_mem, .to_mem } },
17422 .{ .src = .{ .to_mem, .to_mem, .none } },
1070817423 },
1070917424 .extra_temps = .{
1071017425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10729,9 +17444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1072917444 } },
1073017445 }, .{
1073117446 .required_features = .{ .avx, null, null, null },
10732 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },
17447 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
1073317448 .patterns = &.{
10734 .{ .src = .{ .to_mem, .to_mem } },
17449 .{ .src = .{ .to_mem, .to_mem, .none } },
1073517450 },
1073617451 .extra_temps = .{
1073717452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10756,9 +17471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1075617471 } },
1075717472 }, .{
1075817473 .required_features = .{ .sse2, null, null, null },
10759 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },
17474 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
1076017475 .patterns = &.{
10761 .{ .src = .{ .to_mem, .to_mem } },
17476 .{ .src = .{ .to_mem, .to_mem, .none } },
1076217477 },
1076317478 .extra_temps = .{
1076417479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10783,9 +17498,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1078317498 } },
1078417499 }, .{
1078517500 .required_features = .{ .sse, null, null, null },
10786 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } },
17501 .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any },
1078717502 .patterns = &.{
10788 .{ .src = .{ .to_mem, .to_mem } },
17503 .{ .src = .{ .to_mem, .to_mem, .none } },
1078917504 },
1079017505 .extra_temps = .{
1079117506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10810,9 +17525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1081017525 } },
1081117526 }, .{
1081217527 .required_features = .{ .mmx, null, null, null },
10813 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },
17528 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
1081417529 .patterns = &.{
10815 .{ .src = .{ .to_mem, .to_mem } },
17530 .{ .src = .{ .to_mem, .to_mem, .none } },
1081617531 },
1081717532 .extra_temps = .{
1081817533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10836,9 +17551,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1083617551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1083717552 } },
1083817553 }, .{
10839 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },
17554 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
1084017555 .patterns = &.{
10841 .{ .src = .{ .to_mem, .to_mem } },
17556 .{ .src = .{ .to_mem, .to_mem, .none } },
1084217557 },
1084317558 .extra_temps = .{
1084417559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -10878,20 +17593,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1087817593 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
1087917594 var res: [1]Temp = undefined;
1088017595 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
10881 .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any },
17596 .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any },
1088217597 .patterns = &.{
10883 .{ .src = .{ .mut_mem, .none } },
10884 .{ .src = .{ .to_mut_gpr, .none } },
17598 .{ .src = .{ .mut_mem, .none, .none } },
17599 .{ .src = .{ .to_mut_gpr, .none, .none } },
1088517600 },
1088617601 .dst_temps = .{.{ .ref = .src0 }},
1088717602 .each = .{ .once = &.{
1088817603 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
1088917604 } },
1089017605 }, .{
10891 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
17606 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1089217607 .patterns = &.{
10893 .{ .src = .{ .mut_mem, .none } },
10894 .{ .src = .{ .to_mut_gpr, .none } },
17608 .{ .src = .{ .mut_mem, .none, .none } },
17609 .{ .src = .{ .to_mut_gpr, .none, .none } },
1089517610 },
1089617611 .dst_temps = .{.{ .ref = .src0 }},
1089717612 .clobbers = .{ .eflags = true },
......@@ -10899,20 +17614,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1089917614 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },
1090017615 } },
1090117616 }, .{
10902 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any },
17617 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any },
1090317618 .patterns = &.{
10904 .{ .src = .{ .mut_mem, .none } },
10905 .{ .src = .{ .to_mut_gpr, .none } },
17619 .{ .src = .{ .mut_mem, .none, .none } },
17620 .{ .src = .{ .to_mut_gpr, .none, .none } },
1090617621 },
1090717622 .dst_temps = .{.{ .ref = .src0 }},
1090817623 .each = .{ .once = &.{
1090917624 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
1091017625 } },
1091117626 }, .{
10912 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
17627 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1091317628 .patterns = &.{
10914 .{ .src = .{ .mut_mem, .none } },
10915 .{ .src = .{ .to_mut_gpr, .none } },
17629 .{ .src = .{ .mut_mem, .none, .none } },
17630 .{ .src = .{ .to_mut_gpr, .none, .none } },
1091617631 },
1091717632 .dst_temps = .{.{ .ref = .src0 }},
1091817633 .clobbers = .{ .eflags = true },
......@@ -10920,20 +17635,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1092017635 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },
1092117636 } },
1092217637 }, .{
10923 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any },
17638 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any },
1092417639 .patterns = &.{
10925 .{ .src = .{ .mut_mem, .none } },
10926 .{ .src = .{ .to_mut_gpr, .none } },
17640 .{ .src = .{ .mut_mem, .none, .none } },
17641 .{ .src = .{ .to_mut_gpr, .none, .none } },
1092717642 },
1092817643 .dst_temps = .{.{ .ref = .src0 }},
1092917644 .each = .{ .once = &.{
1093017645 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
1093117646 } },
1093217647 }, .{
10933 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
17648 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1093417649 .patterns = &.{
10935 .{ .src = .{ .mut_mem, .none } },
10936 .{ .src = .{ .to_mut_gpr, .none } },
17650 .{ .src = .{ .mut_mem, .none, .none } },
17651 .{ .src = .{ .to_mut_gpr, .none, .none } },
1093717652 },
1093817653 .dst_temps = .{.{ .ref = .src0 }},
1093917654 .clobbers = .{ .eflags = true },
......@@ -10942,10 +17657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1094217657 } },
1094317658 }, .{
1094417659 .required_features = .{ .@"64bit", null, null, null },
10945 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any },
17660 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any },
1094617661 .patterns = &.{
10947 .{ .src = .{ .mut_mem, .none } },
10948 .{ .src = .{ .to_mut_gpr, .none } },
17662 .{ .src = .{ .mut_mem, .none, .none } },
17663 .{ .src = .{ .to_mut_gpr, .none, .none } },
1094917664 },
1095017665 .dst_temps = .{.{ .ref = .src0 }},
1095117666 .each = .{ .once = &.{
......@@ -10953,10 +17668,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1095317668 } },
1095417669 }, .{
1095517670 .required_features = .{ .@"64bit", null, null, null },
10956 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
17671 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1095717672 .patterns = &.{
10958 .{ .src = .{ .mem, .none } },
10959 .{ .src = .{ .to_gpr, .none } },
17673 .{ .src = .{ .mem, .none, .none } },
17674 .{ .src = .{ .to_gpr, .none, .none } },
1096017675 },
1096117676 .dst_temps = .{.{ .rc = .general_purpose }},
1096217677 .each = .{ .once = &.{
......@@ -10965,10 +17680,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1096517680 } },
1096617681 }, .{
1096717682 .required_features = .{ .mmx, null, null, null },
10968 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any },
17683 .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any },
1096917684 .patterns = &.{
10970 .{ .src = .{ .mem, .none } },
10971 .{ .src = .{ .to_mm, .none } },
17685 .{ .src = .{ .mem, .none, .none } },
17686 .{ .src = .{ .to_mm, .none, .none } },
1097217687 },
1097317688 .dst_temps = .{.{ .rc = .mmx }},
1097417689 .each = .{ .once = &.{
......@@ -10977,9 +17692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1097717692 } },
1097817693 }, .{
1097917694 .required_features = .{ .mmx, null, null, null },
10980 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
17695 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1098117696 .patterns = &.{
10982 .{ .src = .{ .to_mut_mm, .none } },
17697 .{ .src = .{ .to_mut_mm, .none, .none } },
1098317698 },
1098417699 .extra_temps = .{
1098517700 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -10999,10 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1099917714 } },
1100017715 }, .{
1100117716 .required_features = .{ .avx, null, null, null },
11002 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any },
17717 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any },
1100317718 .patterns = &.{
11004 .{ .src = .{ .mem, .none } },
11005 .{ .src = .{ .to_xmm, .none } },
17719 .{ .src = .{ .mem, .none, .none } },
17720 .{ .src = .{ .to_xmm, .none, .none } },
1100617721 },
1100717722 .dst_temps = .{.{ .rc = .sse }},
1100817723 .each = .{ .once = &.{
......@@ -11011,9 +17726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1101117726 } },
1101217727 }, .{
1101317728 .required_features = .{ .avx, null, null, null },
11014 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },
17729 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
1101517730 .patterns = &.{
11016 .{ .src = .{ .to_xmm, .none } },
17731 .{ .src = .{ .to_xmm, .none, .none } },
1101717732 },
1101817733 .extra_temps = .{
1101917734 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11033,10 +17748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1103317748 } },
1103417749 }, .{
1103517750 .required_features = .{ .sse2, null, null, null },
11036 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any },
17751 .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any },
1103717752 .patterns = &.{
11038 .{ .src = .{ .mem, .none } },
11039 .{ .src = .{ .to_xmm, .none } },
17753 .{ .src = .{ .mem, .none, .none } },
17754 .{ .src = .{ .to_xmm, .none, .none } },
1104017755 },
1104117756 .dst_temps = .{.{ .rc = .sse }},
1104217757 .each = .{ .once = &.{
......@@ -11045,9 +17760,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1104517760 } },
1104617761 }, .{
1104717762 .required_features = .{ .sse2, null, null, null },
11048 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },
17763 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
1104917764 .patterns = &.{
11050 .{ .src = .{ .to_mut_xmm, .none } },
17765 .{ .src = .{ .to_mut_xmm, .none, .none } },
1105117766 },
1105217767 .extra_temps = .{
1105317768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11067,9 +17782,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1106717782 } },
1106817783 }, .{
1106917784 .required_features = .{ .sse, null, null, null },
11070 .src_constraints = .{ .{ .int = .xword }, .any },
17785 .src_constraints = .{ .{ .int = .xword }, .any, .any },
1107117786 .patterns = &.{
11072 .{ .src = .{ .to_mut_xmm, .none } },
17787 .{ .src = .{ .to_mut_xmm, .none, .none } },
1107317788 },
1107417789 .extra_temps = .{
1107517790 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11089,10 +17804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1108917804 } },
1109017805 }, .{
1109117806 .required_features = .{ .avx2, null, null, null },
11092 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any },
17807 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any },
1109317808 .patterns = &.{
11094 .{ .src = .{ .mem, .none } },
11095 .{ .src = .{ .to_ymm, .none } },
17809 .{ .src = .{ .mem, .none, .none } },
17810 .{ .src = .{ .to_ymm, .none, .none } },
1109617811 },
1109717812 .dst_temps = .{.{ .rc = .sse }},
1109817813 .each = .{ .once = &.{
......@@ -11101,9 +17816,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1110117816 } },
1110217817 }, .{
1110317818 .required_features = .{ .avx2, null, null, null },
11104 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },
17819 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
1110517820 .patterns = &.{
11106 .{ .src = .{ .to_ymm, .none } },
17821 .{ .src = .{ .to_ymm, .none, .none } },
1110717822 },
1110817823 .extra_temps = .{
1110917824 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11123,10 +17838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1112317838 } },
1112417839 }, .{
1112517840 .required_features = .{ .avx, null, null, null },
11126 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any },
17841 .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any },
1112717842 .patterns = &.{
11128 .{ .src = .{ .mem, .none } },
11129 .{ .src = .{ .to_ymm, .none } },
17843 .{ .src = .{ .mem, .none, .none } },
17844 .{ .src = .{ .to_ymm, .none, .none } },
1113017845 },
1113117846 .dst_temps = .{.{ .rc = .sse }},
1113217847 .each = .{ .once = &.{
......@@ -11135,9 +17850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1113517850 } },
1113617851 }, .{
1113717852 .required_features = .{ .avx, null, null, null },
11138 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },
17853 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
1113917854 .patterns = &.{
11140 .{ .src = .{ .to_ymm, .none } },
17855 .{ .src = .{ .to_ymm, .none, .none } },
1114117856 },
1114217857 .extra_temps = .{
1114317858 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11157,9 +17872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1115717872 } },
1115817873 }, .{
1115917874 .required_features = .{ .avx2, null, null, null },
11160 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any },
17875 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any },
1116117876 .patterns = &.{
11162 .{ .src = .{ .to_mem, .none } },
17877 .{ .src = .{ .to_mem, .none, .none } },
1116317878 },
1116417879 .extra_temps = .{
1116517880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11186,9 +17901,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1118617901 } },
1118717902 }, .{
1118817903 .required_features = .{ .avx2, null, null, null },
11189 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any },
17904 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
1119017905 .patterns = &.{
11191 .{ .src = .{ .to_mem, .none } },
17906 .{ .src = .{ .to_mem, .none, .none } },
1119217907 },
1119317908 .extra_temps = .{
1119417909 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11213,9 +17928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1121317928 } },
1121417929 }, .{
1121517930 .required_features = .{ .avx, null, null, null },
11216 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any },
17931 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any },
1121717932 .patterns = &.{
11218 .{ .src = .{ .to_mem, .none } },
17933 .{ .src = .{ .to_mem, .none, .none } },
1121917934 },
1122017935 .extra_temps = .{
1122117936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11242,9 +17957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1124217957 } },
1124317958 }, .{
1124417959 .required_features = .{ .avx, null, null, null },
11245 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any },
17960 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
1124617961 .patterns = &.{
11247 .{ .src = .{ .to_mem, .none } },
17962 .{ .src = .{ .to_mem, .none, .none } },
1124817963 },
1124917964 .extra_temps = .{
1125017965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11269,9 +17984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1126917984 } },
1127017985 }, .{
1127117986 .required_features = .{ .avx, null, null, null },
11272 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
17987 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1127317988 .patterns = &.{
11274 .{ .src = .{ .to_mem, .none } },
17989 .{ .src = .{ .to_mem, .none, .none } },
1127517990 },
1127617991 .extra_temps = .{
1127717992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11296,9 +18011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1129618011 } },
1129718012 }, .{
1129818013 .required_features = .{ .sse2, null, null, null },
11299 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
18014 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1130018015 .patterns = &.{
11301 .{ .src = .{ .to_mem, .none } },
18016 .{ .src = .{ .to_mem, .none, .none } },
1130218017 },
1130318018 .extra_temps = .{
1130418019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11324,9 +18039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1132418039 } },
1132518040 }, .{
1132618041 .required_features = .{ .@"64bit", null, null, null },
11327 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
18042 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1132818043 .patterns = &.{
11329 .{ .src = .{ .mut_mem, .none } },
18044 .{ .src = .{ .mut_mem, .none, .none } },
1133018045 },
1133118046 .extra_temps = .{
1133218047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11350,9 +18065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1135018065 } },
1135118066 }, .{
1135218067 .required_features = .{ .@"64bit", null, null, null },
11353 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
18068 .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1135418069 .patterns = &.{
11355 .{ .src = .{ .to_mem, .none } },
18070 .{ .src = .{ .to_mem, .none, .none } },
1135618071 },
1135718072 .extra_temps = .{
1135818073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11377,9 +18092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1137718092 } },
1137818093 }, .{
1137918094 .required_features = .{ .@"64bit", null, null, null },
11380 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any },
18095 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1138118096 .patterns = &.{
11382 .{ .src = .{ .mut_mem, .none } },
18097 .{ .src = .{ .mut_mem, .none, .none } },
1138318098 },
1138418099 .extra_temps = .{
1138518100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11404,9 +18119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1140418119 } },
1140518120 }, .{
1140618121 .required_features = .{ .@"64bit", null, null, null },
11407 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any },
18122 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1140818123 .patterns = &.{
11409 .{ .src = .{ .to_mem, .none } },
18124 .{ .src = .{ .to_mem, .none, .none } },
1141018125 },
1141118126 .extra_temps = .{
1141218127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11436,9 +18151,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1143618151 } },
1143718152 }, .{
1143818153 .required_features = .{ .@"64bit", null, null, null },
11439 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
18154 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
1144018155 .patterns = &.{
11441 .{ .src = .{ .mut_mem, .none } },
18156 .{ .src = .{ .mut_mem, .none, .none } },
1144218157 },
1144318158 .extra_temps = .{
1144418159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11463,9 +18178,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1146318178 } },
1146418179 }, .{
1146518180 .required_features = .{ .@"64bit", null, null, null },
11466 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
18181 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
1146718182 .patterns = &.{
11468 .{ .src = .{ .to_mem, .none } },
18183 .{ .src = .{ .to_mem, .none, .none } },
1146918184 },
1147018185 .extra_temps = .{
1147118186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11491,9 +18206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1149118206 } },
1149218207 }, .{
1149318208 .required_features = .{ .@"64bit", null, null, null },
11494 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any },
18209 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
1149518210 .patterns = &.{
11496 .{ .src = .{ .mut_mem, .none } },
18211 .{ .src = .{ .mut_mem, .none, .none } },
1149718212 },
1149818213 .extra_temps = .{
1149918214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11517,9 +18232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1151718232 } },
1151818233 }, .{
1151918234 .required_features = .{ .@"64bit", null, null, null },
11520 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any },
18235 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
1152118236 .patterns = &.{
11522 .{ .src = .{ .to_mem, .none } },
18237 .{ .src = .{ .to_mem, .none, .none } },
1152318238 },
1152418239 .extra_temps = .{
1152518240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11548,9 +18263,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1154818263 } },
1154918264 }, .{
1155018265 .required_features = .{ .@"64bit", null, null, null },
11551 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any },
18266 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1155218267 .patterns = &.{
11553 .{ .src = .{ .mut_mem, .none } },
18268 .{ .src = .{ .mut_mem, .none, .none } },
1155418269 },
1155518270 .extra_temps = .{
1155618271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11575,9 +18290,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1157518290 } },
1157618291 }, .{
1157718292 .required_features = .{ .@"64bit", null, null, null },
11578 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any },
18293 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1157918294 .patterns = &.{
11580 .{ .src = .{ .to_mem, .none } },
18295 .{ .src = .{ .to_mem, .none, .none } },
1158118296 },
1158218297 .extra_temps = .{
1158318298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11607,9 +18322,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1160718322 } },
1160818323 }, .{
1160918324 .required_features = .{ .@"64bit", null, null, null },
11610 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any },
18325 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any },
1161118326 .patterns = &.{
11612 .{ .src = .{ .mut_mem, .none } },
18327 .{ .src = .{ .mut_mem, .none, .none } },
1161318328 },
1161418329 .extra_temps = .{
1161518330 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11633,9 +18348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1163318348 } },
1163418349 }, .{
1163518350 .required_features = .{ .@"64bit", null, null, null },
11636 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any },
18351 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any },
1163718352 .patterns = &.{
11638 .{ .src = .{ .to_mem, .none } },
18353 .{ .src = .{ .to_mem, .none, .none } },
1163918354 },
1164018355 .extra_temps = .{
1164118356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11664,9 +18379,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1166418379 } },
1166518380 }, .{
1166618381 .required_features = .{ .@"64bit", null, null, null },
11667 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },
18382 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1166818383 .patterns = &.{
11669 .{ .src = .{ .mut_mem, .none } },
18384 .{ .src = .{ .mut_mem, .none, .none } },
1167018385 },
1167118386 .extra_temps = .{
1167218387 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11692,9 +18407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1169218407 } },
1169318408 }, .{
1169418409 .required_features = .{ .@"64bit", null, null, null },
11695 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },
18410 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1169618411 .patterns = &.{
11697 .{ .src = .{ .to_mem, .none } },
18412 .{ .src = .{ .to_mem, .none, .none } },
1169818413 },
1169918414 .extra_temps = .{
1170018415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11723,9 +18438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1172318438 } },
1172418439 }, .{
1172518440 .required_features = .{ .@"64bit", null, null, null },
11726 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },
18441 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1172718442 .patterns = &.{
11728 .{ .src = .{ .mut_mem, .none } },
18443 .{ .src = .{ .mut_mem, .none, .none } },
1172918444 },
1173018445 .extra_temps = .{
1173118446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11750,9 +18465,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1175018465 } },
1175118466 }, .{
1175218467 .required_features = .{ .@"64bit", null, null, null },
11753 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },
18468 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1175418469 .patterns = &.{
11755 .{ .src = .{ .to_mem, .none } },
18470 .{ .src = .{ .to_mem, .none, .none } },
1175618471 },
1175718472 .extra_temps = .{
1175818473 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11780,10 +18495,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1178018495 } },
1178118496 }, .{
1178218497 .required_features = .{ .mmx, null, null, null },
11783 .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any },
18498 .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any },
1178418499 .patterns = &.{
11785 .{ .src = .{ .mem, .none } },
11786 .{ .src = .{ .to_mm, .none } },
18500 .{ .src = .{ .mem, .none, .none } },
18501 .{ .src = .{ .to_mm, .none, .none } },
1178718502 },
1178818503 .dst_temps = .{.{ .rc = .mmx }},
1178918504 .each = .{ .once = &.{
......@@ -11792,9 +18507,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1179218507 } },
1179318508 }, .{
1179418509 .required_features = .{ .mmx, null, null, null },
11795 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any },
18510 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any },
1179618511 .patterns = &.{
11797 .{ .src = .{ .to_mut_mm, .none } },
18512 .{ .src = .{ .to_mut_mm, .none, .none } },
1179818513 },
1179918514 .extra_temps = .{
1180018515 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11814,10 +18529,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1181418529 } },
1181518530 }, .{
1181618531 .required_features = .{ .avx, null, null, null },
11817 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any },
18532 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any },
1181818533 .patterns = &.{
11819 .{ .src = .{ .mem, .none } },
11820 .{ .src = .{ .to_xmm, .none } },
18534 .{ .src = .{ .mem, .none, .none } },
18535 .{ .src = .{ .to_xmm, .none, .none } },
1182118536 },
1182218537 .dst_temps = .{.{ .rc = .sse }},
1182318538 .each = .{ .once = &.{
......@@ -11826,9 +18541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1182618541 } },
1182718542 }, .{
1182818543 .required_features = .{ .avx, null, null, null },
11829 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },
18544 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
1183018545 .patterns = &.{
11831 .{ .src = .{ .to_xmm, .none } },
18546 .{ .src = .{ .to_xmm, .none, .none } },
1183218547 },
1183318548 .extra_temps = .{
1183418549 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11848,10 +18563,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1184818563 } },
1184918564 }, .{
1185018565 .required_features = .{ .sse2, null, null, null },
11851 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any },
18566 .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any },
1185218567 .patterns = &.{
11853 .{ .src = .{ .mem, .none } },
11854 .{ .src = .{ .to_xmm, .none } },
18568 .{ .src = .{ .mem, .none, .none } },
18569 .{ .src = .{ .to_xmm, .none, .none } },
1185518570 },
1185618571 .dst_temps = .{.{ .rc = .sse }},
1185718572 .each = .{ .once = &.{
......@@ -11860,9 +18575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1186018575 } },
1186118576 }, .{
1186218577 .required_features = .{ .sse2, null, null, null },
11863 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },
18578 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
1186418579 .patterns = &.{
11865 .{ .src = .{ .to_mut_xmm, .none } },
18580 .{ .src = .{ .to_mut_xmm, .none, .none } },
1186618581 },
1186718582 .extra_temps = .{
1186818583 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11882,9 +18597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1188218597 } },
1188318598 }, .{
1188418599 .required_features = .{ .sse, null, null, null },
11885 .src_constraints = .{ .{ .vec = .xword }, .any },
18600 .src_constraints = .{ .{ .vec = .xword }, .any, .any },
1188618601 .patterns = &.{
11887 .{ .src = .{ .to_mut_xmm, .none } },
18602 .{ .src = .{ .to_mut_xmm, .none, .none } },
1188818603 },
1188918604 .extra_temps = .{
1189018605 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11904,10 +18619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1190418619 } },
1190518620 }, .{
1190618621 .required_features = .{ .avx2, null, null, null },
11907 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any },
18622 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any },
1190818623 .patterns = &.{
11909 .{ .src = .{ .mem, .none } },
11910 .{ .src = .{ .to_ymm, .none } },
18624 .{ .src = .{ .mem, .none, .none } },
18625 .{ .src = .{ .to_ymm, .none, .none } },
1191118626 },
1191218627 .dst_temps = .{.{ .rc = .sse }},
1191318628 .each = .{ .once = &.{
......@@ -11916,9 +18631,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1191618631 } },
1191718632 }, .{
1191818633 .required_features = .{ .avx2, null, null, null },
11919 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },
18634 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
1192018635 .patterns = &.{
11921 .{ .src = .{ .to_ymm, .none } },
18636 .{ .src = .{ .to_ymm, .none, .none } },
1192218637 },
1192318638 .extra_temps = .{
1192418639 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11938,10 +18653,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1193818653 } },
1193918654 }, .{
1194018655 .required_features = .{ .avx, null, null, null },
11941 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any },
18656 .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any },
1194218657 .patterns = &.{
11943 .{ .src = .{ .mem, .none } },
11944 .{ .src = .{ .to_ymm, .none } },
18658 .{ .src = .{ .mem, .none, .none } },
18659 .{ .src = .{ .to_ymm, .none, .none } },
1194518660 },
1194618661 .dst_temps = .{.{ .rc = .sse }},
1194718662 .each = .{ .once = &.{
......@@ -11950,9 +18665,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1195018665 } },
1195118666 }, .{
1195218667 .required_features = .{ .avx, null, null, null },
11953 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },
18668 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
1195418669 .patterns = &.{
11955 .{ .src = .{ .to_ymm, .none } },
18670 .{ .src = .{ .to_ymm, .none, .none } },
1195618671 },
1195718672 .extra_temps = .{
1195818673 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -11973,7 +18688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1197318688 }, .{
1197418689 .required_features = .{ .@"64bit", null, null, null },
1197518690 .patterns = &.{
11976 .{ .src = .{ .to_mem, .none } },
18691 .{ .src = .{ .to_mem, .none, .none } },
1197718692 },
1197818693 .extra_temps = .{
1197918694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -11999,7 +18714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1199918714 } },
1200018715 }, .{
1200118716 .patterns = &.{
12002 .{ .src = .{ .to_mem, .none } },
18717 .{ .src = .{ .to_mem, .none, .none } },
1200318718 },
1200418719 .extra_temps = .{
1200518720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -12089,10 +18804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1208918804 var res: [1]Temp = undefined;
1209018805 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
1209118806 .required_features = .{ .slow_incdec, null, null, null },
12092 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },
18807 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
1209318808 .patterns = &.{
12094 .{ .src = .{ .mut_mem, .none } },
12095 .{ .src = .{ .to_mut_gpr, .none } },
18809 .{ .src = .{ .mut_mem, .none, .none } },
18810 .{ .src = .{ .to_mut_gpr, .none, .none } },
1209618811 },
1209718812 .dst_temps = .{.{ .ref = .src0 }},
1209818813 .clobbers = .{ .eflags = true },
......@@ -12100,10 +18815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1210018815 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },
1210118816 } },
1210218817 }, .{
12103 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },
18818 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
1210418819 .patterns = &.{
12105 .{ .src = .{ .mut_mem, .none } },
12106 .{ .src = .{ .to_mut_gpr, .none } },
18820 .{ .src = .{ .mut_mem, .none, .none } },
18821 .{ .src = .{ .to_mut_gpr, .none, .none } },
1210718822 },
1210818823 .dst_temps = .{.{ .ref = .src0 }},
1210918824 .clobbers = .{ .eflags = true },
......@@ -12111,10 +18826,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1211118826 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },
1211218827 } },
1211318828 }, .{
12114 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any },
18829 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any },
1211518830 .patterns = &.{
12116 .{ .src = .{ .mut_mem, .none } },
12117 .{ .src = .{ .to_mut_gpr, .none } },
18831 .{ .src = .{ .mut_mem, .none, .none } },
18832 .{ .src = .{ .to_mut_gpr, .none, .none } },
1211818833 },
1211918834 .dst_temps = .{.{ .ref = .src0 }},
1212018835 .clobbers = .{ .eflags = true },
......@@ -12123,10 +18838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1212318838 } },
1212418839 }, .{
1212518840 .required_features = .{ .lzcnt, null, null, null },
12126 .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any },
18841 .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any, .any },
1212718842 .patterns = &.{
12128 .{ .src = .{ .mem, .none } },
12129 .{ .src = .{ .to_gpr, .none } },
18843 .{ .src = .{ .mem, .none, .none } },
18844 .{ .src = .{ .to_gpr, .none, .none } },
1213018845 },
1213118846 .dst_temps = .{.{ .rc = .general_purpose }},
1213218847 .clobbers = .{ .eflags = true },
......@@ -12137,10 +18852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1213718852 } },
1213818853 }, .{
1213918854 .required_features = .{ .lzcnt, null, null, null },
12140 .src_constraints = .{ .{ .signed_int = .byte }, .any },
18855 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1214118856 .patterns = &.{
12142 .{ .src = .{ .mem, .none } },
12143 .{ .src = .{ .to_gpr, .none } },
18857 .{ .src = .{ .mem, .none, .none } },
18858 .{ .src = .{ .to_gpr, .none, .none } },
1214418859 },
1214518860 .dst_temps = .{.{ .rc = .general_purpose }},
1214618861 .clobbers = .{ .eflags = true },
......@@ -12152,9 +18867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1215218867 } },
1215318868 }, .{
1215418869 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12155 .src_constraints = .{ .{ .exact_int = 16 }, .any },
18870 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
1215618871 .patterns = &.{
12157 .{ .src = .{ .to_mut_gpr, .none } },
18872 .{ .src = .{ .to_mut_gpr, .none, .none } },
1215818873 },
1215918874 .dst_temps = .{.{ .ref = .src0 }},
1216018875 .clobbers = .{ .eflags = true },
......@@ -12163,10 +18878,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1216318878 } },
1216418879 }, .{
1216518880 .required_features = .{ .lzcnt, null, null, null },
12166 .src_constraints = .{ .{ .exact_int = 16 }, .any },
18881 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
1216718882 .patterns = &.{
12168 .{ .src = .{ .mem, .none } },
12169 .{ .src = .{ .to_gpr, .none } },
18883 .{ .src = .{ .mem, .none, .none } },
18884 .{ .src = .{ .to_gpr, .none, .none } },
1217018885 },
1217118886 .dst_temps = .{.{ .rc = .general_purpose }},
1217218887 .clobbers = .{ .eflags = true },
......@@ -12175,9 +18890,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1217518890 } },
1217618891 }, .{
1217718892 .required_features = .{ .lzcnt, null, null, null },
12178 .src_constraints = .{ .{ .signed_int = .word }, .any },
18893 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1217918894 .patterns = &.{
12180 .{ .src = .{ .to_mut_gpr, .none } },
18895 .{ .src = .{ .to_mut_gpr, .none, .none } },
1218118896 },
1218218897 .dst_temps = .{.{ .ref = .src0 }},
1218318898 .clobbers = .{ .eflags = true },
......@@ -12188,9 +18903,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1218818903 } },
1218918904 }, .{
1219018905 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12191 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
18906 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1219218907 .patterns = &.{
12193 .{ .src = .{ .to_mut_gpr, .none } },
18908 .{ .src = .{ .to_mut_gpr, .none, .none } },
1219418909 },
1219518910 .dst_temps = .{.{ .ref = .src0 }},
1219618911 .clobbers = .{ .eflags = true },
......@@ -12200,10 +18915,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1220018915 } },
1220118916 }, .{
1220218917 .required_features = .{ .lzcnt, null, null, null },
12203 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
18918 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1220418919 .patterns = &.{
12205 .{ .src = .{ .mem, .none } },
12206 .{ .src = .{ .to_gpr, .none } },
18920 .{ .src = .{ .mem, .none, .none } },
18921 .{ .src = .{ .to_gpr, .none, .none } },
1220718922 },
1220818923 .dst_temps = .{.{ .rc = .general_purpose }},
1220918924 .clobbers = .{ .eflags = true },
......@@ -12213,9 +18928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1221318928 } },
1221418929 }, .{
1221518930 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12216 .src_constraints = .{ .{ .exact_int = 32 }, .any },
18931 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
1221718932 .patterns = &.{
12218 .{ .src = .{ .to_mut_gpr, .none } },
18933 .{ .src = .{ .to_mut_gpr, .none, .none } },
1221918934 },
1222018935 .dst_temps = .{.{ .ref = .src0 }},
1222118936 .clobbers = .{ .eflags = true },
......@@ -12224,10 +18939,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1222418939 } },
1222518940 }, .{
1222618941 .required_features = .{ .lzcnt, null, null, null },
12227 .src_constraints = .{ .{ .exact_int = 32 }, .any },
18942 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
1222818943 .patterns = &.{
12229 .{ .src = .{ .mem, .none } },
12230 .{ .src = .{ .to_gpr, .none } },
18944 .{ .src = .{ .mem, .none, .none } },
18945 .{ .src = .{ .to_gpr, .none, .none } },
1223118946 },
1223218947 .dst_temps = .{.{ .rc = .general_purpose }},
1223318948 .clobbers = .{ .eflags = true },
......@@ -12236,9 +18951,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1223618951 } },
1223718952 }, .{
1223818953 .required_features = .{ .lzcnt, null, null, null },
12239 .src_constraints = .{ .{ .signed_int = .dword }, .any },
18954 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1224018955 .patterns = &.{
12241 .{ .src = .{ .to_mut_gpr, .none } },
18956 .{ .src = .{ .to_mut_gpr, .none, .none } },
1224218957 },
1224318958 .dst_temps = .{.{ .ref = .src0 }},
1224418959 .clobbers = .{ .eflags = true },
......@@ -12249,9 +18964,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1224918964 } },
1225018965 }, .{
1225118966 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12252 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
18967 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1225318968 .patterns = &.{
12254 .{ .src = .{ .to_mut_gpr, .none } },
18969 .{ .src = .{ .to_mut_gpr, .none, .none } },
1225518970 },
1225618971 .dst_temps = .{.{ .ref = .src0 }},
1225718972 .clobbers = .{ .eflags = true },
......@@ -12261,10 +18976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1226118976 } },
1226218977 }, .{
1226318978 .required_features = .{ .lzcnt, null, null, null },
12264 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
18979 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1226518980 .patterns = &.{
12266 .{ .src = .{ .mem, .none } },
12267 .{ .src = .{ .to_gpr, .none } },
18981 .{ .src = .{ .mem, .none, .none } },
18982 .{ .src = .{ .to_gpr, .none, .none } },
1226818983 },
1226918984 .dst_temps = .{.{ .rc = .general_purpose }},
1227018985 .clobbers = .{ .eflags = true },
......@@ -12274,9 +18989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1227418989 } },
1227518990 }, .{
1227618991 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12277 .src_constraints = .{ .{ .exact_int = 64 }, .any },
18992 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
1227818993 .patterns = &.{
12279 .{ .src = .{ .to_mut_gpr, .none } },
18994 .{ .src = .{ .to_mut_gpr, .none, .none } },
1228018995 },
1228118996 .dst_temps = .{.{ .ref = .src0 }},
1228218997 .clobbers = .{ .eflags = true },
......@@ -12285,10 +19000,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1228519000 } },
1228619001 }, .{
1228719002 .required_features = .{ .@"64bit", .lzcnt, null, null },
12288 .src_constraints = .{ .{ .exact_int = 64 }, .any },
19003 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
1228919004 .patterns = &.{
12290 .{ .src = .{ .mem, .none } },
12291 .{ .src = .{ .to_gpr, .none } },
19005 .{ .src = .{ .mem, .none, .none } },
19006 .{ .src = .{ .to_gpr, .none, .none } },
1229219007 },
1229319008 .dst_temps = .{.{ .rc = .general_purpose }},
1229419009 .clobbers = .{ .eflags = true },
......@@ -12297,10 +19012,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1229719012 } },
1229819013 }, .{
1229919014 .required_features = .{ .@"64bit", .lzcnt, null, null },
12300 .src_constraints = .{ .{ .signed_int = .qword }, .any },
19015 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1230119016 .patterns = &.{
12302 .{ .src = .{ .mem, .none } },
12303 .{ .src = .{ .to_gpr, .none } },
19017 .{ .src = .{ .mem, .none, .none } },
19018 .{ .src = .{ .to_gpr, .none, .none } },
1230419019 },
1230519020 .dst_temps = .{.{ .rc = .general_purpose }},
1230619021 .clobbers = .{ .eflags = true },
......@@ -12312,9 +19027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1231219027 } },
1231319028 }, .{
1231419029 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12315 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19030 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1231619031 .patterns = &.{
12317 .{ .src = .{ .to_mut_gpr, .none } },
19032 .{ .src = .{ .to_mut_gpr, .none, .none } },
1231819033 },
1231919034 .dst_temps = .{.{ .ref = .src0 }},
1232019035 .clobbers = .{ .eflags = true },
......@@ -12324,10 +19039,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1232419039 } },
1232519040 }, .{
1232619041 .required_features = .{ .@"64bit", .lzcnt, null, null },
12327 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19042 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1232819043 .patterns = &.{
12329 .{ .src = .{ .mem, .none } },
12330 .{ .src = .{ .to_gpr, .none } },
19044 .{ .src = .{ .mem, .none, .none } },
19045 .{ .src = .{ .to_gpr, .none, .none } },
1233119046 },
1233219047 .dst_temps = .{.{ .rc = .general_purpose }},
1233319048 .clobbers = .{ .eflags = true },
......@@ -12337,10 +19052,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1233719052 } },
1233819053 }, .{
1233919054 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12340 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },
19055 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
1234119056 .patterns = &.{
12342 .{ .src = .{ .mem, .none } },
12343 .{ .src = .{ .to_gpr, .none } },
19057 .{ .src = .{ .mem, .none, .none } },
19058 .{ .src = .{ .to_gpr, .none, .none } },
1234419059 },
1234519060 .extra_temps = .{
1234619061 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12364,10 +19079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1236419079 } },
1236519080 }, .{
1236619081 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12367 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },
19082 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
1236819083 .patterns = &.{
12369 .{ .src = .{ .mem, .none } },
12370 .{ .src = .{ .to_gpr, .none } },
19084 .{ .src = .{ .mem, .none, .none } },
19085 .{ .src = .{ .to_gpr, .none, .none } },
1237119086 },
1237219087 .extra_temps = .{
1237319088 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12392,10 +19107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1239219107 } },
1239319108 }, .{
1239419109 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12395 .src_constraints = .{ .{ .signed_int = .byte }, .any },
19110 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1239619111 .patterns = &.{
12397 .{ .src = .{ .mem, .none } },
12398 .{ .src = .{ .to_gpr, .none } },
19112 .{ .src = .{ .mem, .none, .none } },
19113 .{ .src = .{ .to_gpr, .none, .none } },
1239919114 },
1240019115 .extra_temps = .{
1240119116 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12421,10 +19136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1242119136 } },
1242219137 }, .{
1242319138 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12424 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
19139 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1242519140 .patterns = &.{
12426 .{ .src = .{ .mem, .none } },
12427 .{ .src = .{ .to_gpr, .none } },
19141 .{ .src = .{ .mem, .none, .none } },
19142 .{ .src = .{ .to_gpr, .none, .none } },
1242819143 },
1242919144 .extra_temps = .{
1243019145 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12449,10 +19164,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1244919164 } },
1245019165 }, .{
1245119166 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12452 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },
19167 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
1245319168 .patterns = &.{
12454 .{ .src = .{ .mem, .none } },
12455 .{ .src = .{ .to_gpr, .none } },
19169 .{ .src = .{ .mem, .none, .none } },
19170 .{ .src = .{ .to_gpr, .none, .none } },
1245619171 },
1245719172 .dst_temps = .{.{ .rc = .general_purpose }},
1245819173 .clobbers = .{ .eflags = true },
......@@ -12465,10 +19180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1246519180 } },
1246619181 }, .{
1246719182 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12468 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },
19183 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
1246919184 .patterns = &.{
12470 .{ .src = .{ .mem, .none } },
12471 .{ .src = .{ .to_gpr, .none } },
19185 .{ .src = .{ .mem, .none, .none } },
19186 .{ .src = .{ .to_gpr, .none, .none } },
1247219187 },
1247319188 .dst_temps = .{.{ .rc = .general_purpose }},
1247419189 .clobbers = .{ .eflags = true },
......@@ -12482,10 +19197,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1248219197 } },
1248319198 }, .{
1248419199 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12485 .src_constraints = .{ .{ .signed_int = .byte }, .any },
19200 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1248619201 .patterns = &.{
12487 .{ .src = .{ .mem, .none } },
12488 .{ .src = .{ .to_gpr, .none } },
19202 .{ .src = .{ .mem, .none, .none } },
19203 .{ .src = .{ .to_gpr, .none, .none } },
1248919204 },
1249019205 .extra_temps = .{
1249119206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12511,10 +19226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1251119226 } },
1251219227 }, .{
1251319228 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12514 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
19229 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1251519230 .patterns = &.{
12516 .{ .src = .{ .mem, .none } },
12517 .{ .src = .{ .to_gpr, .none } },
19231 .{ .src = .{ .mem, .none, .none } },
19232 .{ .src = .{ .to_gpr, .none, .none } },
1251819233 },
1251919234 .extra_temps = .{
1252019235 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12538,10 +19253,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1253819253 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },
1253919254 } },
1254019255 }, .{
12541 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },
19256 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
1254219257 .patterns = &.{
12543 .{ .src = .{ .mem, .none } },
12544 .{ .src = .{ .to_gpr, .none } },
19258 .{ .src = .{ .mem, .none, .none } },
19259 .{ .src = .{ .to_gpr, .none, .none } },
1254519260 },
1254619261 .extra_temps = .{
1254719262 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12563,10 +19278,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1256319278 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1256419279 } },
1256519280 }, .{
12566 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },
19281 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
1256719282 .patterns = &.{
12568 .{ .src = .{ .mem, .none } },
12569 .{ .src = .{ .to_gpr, .none } },
19283 .{ .src = .{ .mem, .none, .none } },
19284 .{ .src = .{ .to_gpr, .none, .none } },
1257019285 },
1257119286 .extra_temps = .{
1257219287 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12589,10 +19304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1258919304 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1259019305 } },
1259119306 }, .{
12592 .src_constraints = .{ .{ .signed_int = .byte }, .any },
19307 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
1259319308 .patterns = &.{
12594 .{ .src = .{ .mem, .none } },
12595 .{ .src = .{ .to_gpr, .none } },
19309 .{ .src = .{ .mem, .none, .none } },
19310 .{ .src = .{ .to_gpr, .none, .none } },
1259619311 },
1259719312 .extra_temps = .{
1259819313 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12616,10 +19331,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1261619331 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1261719332 } },
1261819333 }, .{
12619 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },
19334 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
1262019335 .patterns = &.{
12621 .{ .src = .{ .mem, .none } },
12622 .{ .src = .{ .to_gpr, .none } },
19336 .{ .src = .{ .mem, .none, .none } },
19337 .{ .src = .{ .to_gpr, .none, .none } },
1262319338 },
1262419339 .extra_temps = .{
1262519340 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12643,9 +19358,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1264319358 } },
1264419359 }, .{
1264519360 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12646 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },
19361 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
1264719362 .patterns = &.{
12648 .{ .src = .{ .to_mut_gpr, .none } },
19363 .{ .src = .{ .to_mut_gpr, .none, .none } },
1264919364 },
1265019365 .dst_temps = .{.{ .rc = .general_purpose }},
1265119366 .clobbers = .{ .eflags = true },
......@@ -12657,9 +19372,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1265719372 } },
1265819373 }, .{
1265919374 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12660 .src_constraints = .{ .{ .signed_int = .word }, .any },
19375 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1266119376 .patterns = &.{
12662 .{ .src = .{ .to_mut_gpr, .none } },
19377 .{ .src = .{ .to_mut_gpr, .none, .none } },
1266319378 },
1266419379 .dst_temps = .{.{ .rc = .general_purpose }},
1266519380 .clobbers = .{ .eflags = true },
......@@ -12673,9 +19388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1267319388 } },
1267419389 }, .{
1267519390 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12676 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
19391 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1267719392 .patterns = &.{
12678 .{ .src = .{ .to_mut_gpr, .none } },
19393 .{ .src = .{ .to_mut_gpr, .none, .none } },
1267919394 },
1268019395 .dst_temps = .{.{ .rc = .general_purpose }},
1268119396 .clobbers = .{ .eflags = true },
......@@ -12688,9 +19403,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1268819403 } },
1268919404 }, .{
1269019405 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12691 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },
19406 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
1269219407 .patterns = &.{
12693 .{ .src = .{ .to_mut_gpr, .none } },
19408 .{ .src = .{ .to_mut_gpr, .none, .none } },
1269419409 },
1269519410 .dst_temps = .{.{ .ref = .src0 }},
1269619411 .clobbers = .{ .eflags = true },
......@@ -12702,9 +19417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1270219417 } },
1270319418 }, .{
1270419419 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12705 .src_constraints = .{ .{ .signed_int = .word }, .any },
19420 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1270619421 .patterns = &.{
12707 .{ .src = .{ .to_mut_gpr, .none } },
19422 .{ .src = .{ .to_mut_gpr, .none, .none } },
1270819423 },
1270919424 .dst_temps = .{.{ .rc = .general_purpose }},
1271019425 .clobbers = .{ .eflags = true },
......@@ -12718,9 +19433,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1271819433 } },
1271919434 }, .{
1272019435 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12721 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
19436 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1272219437 .patterns = &.{
12723 .{ .src = .{ .to_mut_gpr, .none } },
19438 .{ .src = .{ .to_mut_gpr, .none, .none } },
1272419439 },
1272519440 .dst_temps = .{.{ .rc = .general_purpose }},
1272619441 .clobbers = .{ .eflags = true },
......@@ -12732,10 +19447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1273219447 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
1273319448 } },
1273419449 }, .{
12735 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },
19450 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
1273619451 .patterns = &.{
12737 .{ .src = .{ .mem, .none } },
12738 .{ .src = .{ .to_gpr, .none } },
19452 .{ .src = .{ .mem, .none, .none } },
19453 .{ .src = .{ .to_gpr, .none, .none } },
1273919454 },
1274019455 .dst_temps = .{.{ .rc = .general_purpose }},
1274119456 .clobbers = .{ .eflags = true },
......@@ -12745,9 +19460,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1274519460 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1274619461 } },
1274719462 }, .{
12748 .src_constraints = .{ .{ .signed_int = .word }, .any },
19463 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
1274919464 .patterns = &.{
12750 .{ .src = .{ .to_mut_gpr, .none } },
19465 .{ .src = .{ .to_mut_gpr, .none, .none } },
1275119466 },
1275219467 .extra_temps = .{
1275319468 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
......@@ -12770,10 +19485,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1277019485 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1277119486 } },
1277219487 }, .{
12773 .src_constraints = .{ .{ .unsigned_int = .word }, .any },
19488 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
1277419489 .patterns = &.{
12775 .{ .src = .{ .mem, .none } },
12776 .{ .src = .{ .to_gpr, .none } },
19490 .{ .src = .{ .mem, .none, .none } },
19491 .{ .src = .{ .to_gpr, .none, .none } },
1277719492 },
1277819493 .extra_temps = .{
1277919494 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
......@@ -12796,9 +19511,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1279619511 } },
1279719512 }, .{
1279819513 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12799 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },
19514 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
1280019515 .patterns = &.{
12801 .{ .src = .{ .to_mut_gpr, .none } },
19516 .{ .src = .{ .to_mut_gpr, .none, .none } },
1280219517 },
1280319518 .dst_temps = .{.{ .rc = .general_purpose }},
1280419519 .clobbers = .{ .eflags = true },
......@@ -12810,9 +19525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1281019525 } },
1281119526 }, .{
1281219527 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12813 .src_constraints = .{ .{ .signed_int = .dword }, .any },
19528 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1281419529 .patterns = &.{
12815 .{ .src = .{ .to_mut_gpr, .none } },
19530 .{ .src = .{ .to_mut_gpr, .none, .none } },
1281619531 },
1281719532 .dst_temps = .{.{ .rc = .general_purpose }},
1281819533 .clobbers = .{ .eflags = true },
......@@ -12826,9 +19541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1282619541 } },
1282719542 }, .{
1282819543 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
12829 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
19544 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1283019545 .patterns = &.{
12831 .{ .src = .{ .to_mut_gpr, .none } },
19546 .{ .src = .{ .to_mut_gpr, .none, .none } },
1283219547 },
1283319548 .dst_temps = .{.{ .rc = .general_purpose }},
1283419549 .clobbers = .{ .eflags = true },
......@@ -12841,9 +19556,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1284119556 } },
1284219557 }, .{
1284319558 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12844 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },
19559 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
1284519560 .patterns = &.{
12846 .{ .src = .{ .to_mut_gpr, .none } },
19561 .{ .src = .{ .to_mut_gpr, .none, .none } },
1284719562 },
1284819563 .dst_temps = .{.{ .ref = .src0 }},
1284919564 .clobbers = .{ .eflags = true },
......@@ -12855,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1285519570 } },
1285619571 }, .{
1285719572 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12858 .src_constraints = .{ .{ .signed_int = .dword }, .any },
19573 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1285919574 .patterns = &.{
12860 .{ .src = .{ .to_mut_gpr, .none } },
19575 .{ .src = .{ .to_mut_gpr, .none, .none } },
1286119576 },
1286219577 .dst_temps = .{.{ .rc = .general_purpose }},
1286319578 .clobbers = .{ .eflags = true },
......@@ -12871,9 +19586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1287119586 } },
1287219587 }, .{
1287319588 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
12874 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
19589 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1287519590 .patterns = &.{
12876 .{ .src = .{ .to_mut_gpr, .none } },
19591 .{ .src = .{ .to_mut_gpr, .none, .none } },
1287719592 },
1287819593 .dst_temps = .{.{ .rc = .general_purpose }},
1287919594 .clobbers = .{ .eflags = true },
......@@ -12885,10 +19600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1288519600 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
1288619601 } },
1288719602 }, .{
12888 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },
19603 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
1288919604 .patterns = &.{
12890 .{ .src = .{ .mem, .none } },
12891 .{ .src = .{ .to_gpr, .none } },
19605 .{ .src = .{ .mem, .none, .none } },
19606 .{ .src = .{ .to_gpr, .none, .none } },
1289219607 },
1289319608 .dst_temps = .{.{ .rc = .general_purpose }},
1289419609 .clobbers = .{ .eflags = true },
......@@ -12898,9 +19613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1289819613 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
1289919614 } },
1290019615 }, .{
12901 .src_constraints = .{ .{ .signed_int = .dword }, .any },
19616 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
1290219617 .patterns = &.{
12903 .{ .src = .{ .to_mut_gpr, .none } },
19618 .{ .src = .{ .to_mut_gpr, .none, .none } },
1290419619 },
1290519620 .extra_temps = .{
1290619621 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12923,10 +19638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1292319638 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
1292419639 } },
1292519640 }, .{
12926 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },
19641 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
1292719642 .patterns = &.{
12928 .{ .src = .{ .mem, .none } },
12929 .{ .src = .{ .to_gpr, .none } },
19643 .{ .src = .{ .mem, .none, .none } },
19644 .{ .src = .{ .to_gpr, .none, .none } },
1293019645 },
1293119646 .extra_temps = .{
1293219647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -12949,9 +19664,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1294919664 } },
1295019665 }, .{
1295119666 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12952 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },
19667 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
1295319668 .patterns = &.{
12954 .{ .src = .{ .to_mut_gpr, .none } },
19669 .{ .src = .{ .to_mut_gpr, .none, .none } },
1295519670 },
1295619671 .dst_temps = .{.{ .rc = .general_purpose }},
1295719672 .clobbers = .{ .eflags = true },
......@@ -12963,10 +19678,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1296319678 } },
1296419679 }, .{
1296519680 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12966 .src_constraints = .{ .{ .signed_int = .qword }, .any },
19681 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1296719682 .patterns = &.{
12968 .{ .src = .{ .mem, .none } },
12969 .{ .src = .{ .to_gpr, .none } },
19683 .{ .src = .{ .mem, .none, .none } },
19684 .{ .src = .{ .to_gpr, .none, .none } },
1297019685 },
1297119686 .extra_temps = .{
1297219687 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -12992,9 +19707,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1299219707 } },
1299319708 }, .{
1299419709 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
12995 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19710 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1299619711 .patterns = &.{
12997 .{ .src = .{ .to_mut_gpr, .none } },
19712 .{ .src = .{ .to_mut_gpr, .none, .none } },
1299819713 },
1299919714 .dst_temps = .{.{ .rc = .general_purpose }},
1300019715 .clobbers = .{ .eflags = true },
......@@ -13007,9 +19722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1300719722 } },
1300819723 }, .{
1300919724 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13010 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },
19725 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
1301119726 .patterns = &.{
13012 .{ .src = .{ .to_mut_gpr, .none } },
19727 .{ .src = .{ .to_mut_gpr, .none, .none } },
1301319728 },
1301419729 .dst_temps = .{.{ .ref = .src0 }},
1301519730 .clobbers = .{ .eflags = true },
......@@ -13021,10 +19736,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1302119736 } },
1302219737 }, .{
1302319738 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13024 .src_constraints = .{ .{ .signed_int = .qword }, .any },
19739 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1302519740 .patterns = &.{
13026 .{ .src = .{ .mem, .none } },
13027 .{ .src = .{ .to_gpr, .none } },
19741 .{ .src = .{ .mem, .none, .none } },
19742 .{ .src = .{ .to_gpr, .none, .none } },
1302819743 },
1302919744 .extra_temps = .{
1303019745 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13050,9 +19765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1305019765 } },
1305119766 }, .{
1305219767 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13053 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19768 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1305419769 .patterns = &.{
13055 .{ .src = .{ .to_mut_gpr, .none } },
19770 .{ .src = .{ .to_mut_gpr, .none, .none } },
1305619771 },
1305719772 .dst_temps = .{.{ .rc = .general_purpose }},
1305819773 .clobbers = .{ .eflags = true },
......@@ -13065,10 +19780,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1306519780 } },
1306619781 }, .{
1306719782 .required_features = .{ .@"64bit", null, null, null },
13068 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any },
19783 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any },
1306919784 .patterns = &.{
13070 .{ .src = .{ .mem, .none } },
13071 .{ .src = .{ .to_gpr, .none } },
19785 .{ .src = .{ .mem, .none, .none } },
19786 .{ .src = .{ .to_gpr, .none, .none } },
1307219787 },
1307319788 .dst_temps = .{.{ .rc = .general_purpose }},
1307419789 .clobbers = .{ .eflags = true },
......@@ -13079,10 +19794,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1307919794 } },
1308019795 }, .{
1308119796 .required_features = .{ .@"64bit", null, null, null },
13082 .src_constraints = .{ .{ .signed_int = .qword }, .any },
19797 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
1308319798 .patterns = &.{
13084 .{ .src = .{ .mem, .none } },
13085 .{ .src = .{ .to_gpr, .none } },
19799 .{ .src = .{ .mem, .none, .none } },
19800 .{ .src = .{ .to_gpr, .none, .none } },
1308619801 },
1308719802 .extra_temps = .{
1308819803 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13107,10 +19822,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1310719822 } },
1310819823 }, .{
1310919824 .required_features = .{ .@"64bit", null, null, null },
13110 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },
19825 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
1311119826 .patterns = &.{
13112 .{ .src = .{ .mem, .none } },
13113 .{ .src = .{ .to_gpr, .none } },
19827 .{ .src = .{ .mem, .none, .none } },
19828 .{ .src = .{ .to_gpr, .none, .none } },
1311419829 },
1311519830 .extra_temps = .{
1311619831 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
......@@ -13133,9 +19848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1313319848 } },
1313419849 }, .{
1313519850 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13136 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
19851 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1313719852 .patterns = &.{
13138 .{ .src = .{ .to_mem, .none } },
19853 .{ .src = .{ .to_mem, .none, .none } },
1313919854 },
1314019855 .extra_temps = .{
1314119856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13163,9 +19878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1316319878 } },
1316419879 }, .{
1316519880 .required_features = .{ .@"64bit", .lzcnt, null, null },
13166 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
19881 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1316719882 .patterns = &.{
13168 .{ .src = .{ .to_mem, .none } },
19883 .{ .src = .{ .to_mem, .none, .none } },
1316919884 },
1317019885 .extra_temps = .{
1317119886 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13192,9 +19907,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1319219907 } },
1319319908 }, .{
1319419909 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13195 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
19910 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1319619911 .patterns = &.{
13197 .{ .src = .{ .to_mem, .none } },
19912 .{ .src = .{ .to_mem, .none, .none } },
1319819913 },
1319919914 .extra_temps = .{
1320019915 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13223,9 +19938,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1322319938 } },
1322419939 }, .{
1322519940 .required_features = .{ .@"64bit", null, null, null },
13226 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
19941 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1322719942 .patterns = &.{
13228 .{ .src = .{ .to_mem, .none } },
19943 .{ .src = .{ .to_mem, .none, .none } },
1322919944 },
1323019945 .extra_temps = .{
1323119946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13253,9 +19968,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1325319968 } },
1325419969 }, .{
1325519970 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13256 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
19971 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1325719972 .patterns = &.{
13258 .{ .src = .{ .to_mem, .none } },
19973 .{ .src = .{ .to_mem, .none, .none } },
1325919974 },
1326019975 .extra_temps = .{
1326119976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13283,9 +19998,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1328319998 } },
1328419999 }, .{
1328520000 .required_features = .{ .@"64bit", .lzcnt, null, null },
13286 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20001 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1328720002 .patterns = &.{
13288 .{ .src = .{ .to_mem, .none } },
20003 .{ .src = .{ .to_mem, .none, .none } },
1328920004 },
1329020005 .extra_temps = .{
1329120006 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13312,9 +20027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1331220027 } },
1331320028 }, .{
1331420029 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
13315 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20030 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1331620031 .patterns = &.{
13317 .{ .src = .{ .to_mem, .none } },
20032 .{ .src = .{ .to_mem, .none, .none } },
1331820033 },
1331920034 .extra_temps = .{
1332020035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13343,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1334320058 } },
1334420059 }, .{
1334520060 .required_features = .{ .@"64bit", null, null, null },
13346 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20061 .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1334720062 .patterns = &.{
13348 .{ .src = .{ .to_mem, .none } },
20063 .{ .src = .{ .to_mem, .none, .none } },
1334920064 },
1335020065 .extra_temps = .{
1335120066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13373,9 +20088,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1337320088 } },
1337420089 }, .{
1337520090 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13376 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },
20091 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1337720092 .patterns = &.{
13378 .{ .src = .{ .to_mem, .none } },
20093 .{ .src = .{ .to_mem, .none, .none } },
1337920094 },
1338020095 .extra_temps = .{
1338120096 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13406,9 +20121,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1340620121 } },
1340720122 }, .{
1340820123 .required_features = .{ .@"64bit", .lzcnt, null, null },
13409 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },
20124 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1341020125 .patterns = &.{
13411 .{ .src = .{ .to_mem, .none } },
20126 .{ .src = .{ .to_mem, .none, .none } },
1341220127 },
1341320128 .extra_temps = .{
1341420129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13438,9 +20153,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1343820153 } },
1343920154 }, .{
1344020155 .required_features = .{ .@"64bit", null, null, null },
13441 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any },
20156 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1344220157 .patterns = &.{
13443 .{ .src = .{ .to_mem, .none } },
20158 .{ .src = .{ .to_mem, .none, .none } },
1344420159 },
1344520160 .extra_temps = .{
1344620161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13470,9 +20185,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1347020185 } },
1347120186 }, .{
1347220187 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
13473 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20188 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1347420189 .patterns = &.{
13475 .{ .src = .{ .to_mem, .none } },
20190 .{ .src = .{ .to_mem, .none, .none } },
1347620191 },
1347720192 .extra_temps = .{
1347820193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13503,9 +20218,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1350320218 } },
1350420219 }, .{
1350520220 .required_features = .{ .@"64bit", .lzcnt, null, null },
13506 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20221 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1350720222 .patterns = &.{
13508 .{ .src = .{ .to_mem, .none } },
20223 .{ .src = .{ .to_mem, .none, .none } },
1350920224 },
1351020225 .extra_temps = .{
1351120226 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13535,9 +20250,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1353520250 } },
1353620251 }, .{
1353720252 .required_features = .{ .@"64bit", null, null, null },
13538 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any },
20253 .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1353920254 .patterns = &.{
13540 .{ .src = .{ .to_mem, .none } },
20255 .{ .src = .{ .to_mem, .none, .none } },
1354120256 },
1354220257 .extra_temps = .{
1354320258 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -13567,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1356720282 } },
1356820283 }, .{
1356920284 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13570 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20285 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1357120286 .patterns = &.{
13572 .{ .src = .{ .to_mem, .none } },
20287 .{ .src = .{ .to_mem, .none, .none } },
1357320288 },
1357420289 .extra_temps = .{
1357520290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13596,9 +20311,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1359620311 } },
1359720312 }, .{
1359820313 .required_features = .{ .lzcnt, null, null, null },
13599 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20314 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1360020315 .patterns = &.{
13601 .{ .src = .{ .to_mem, .none } },
20316 .{ .src = .{ .to_mem, .none, .none } },
1360220317 },
1360320318 .extra_temps = .{
1360420319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13625,9 +20340,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1362520340 } },
1362620341 }, .{
1362720342 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13628 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20343 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1362920344 .patterns = &.{
13630 .{ .src = .{ .to_mem, .none } },
20345 .{ .src = .{ .to_mem, .none, .none } },
1363120346 },
1363220347 .extra_temps = .{
1363320348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13654,9 +20369,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1365420369 } },
1365520370 }, .{
1365620371 .required_features = .{ .lzcnt, null, null, null },
13657 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20372 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1365820373 .patterns = &.{
13659 .{ .src = .{ .to_mem, .none } },
20374 .{ .src = .{ .to_mem, .none, .none } },
1366020375 },
1366120376 .extra_temps = .{
1366220377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13683,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1368320398 } },
1368420399 }, .{
1368520400 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13686 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20401 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1368720402 .patterns = &.{
13688 .{ .src = .{ .to_mem, .none } },
20403 .{ .src = .{ .to_mem, .none, .none } },
1368920404 },
1369020405 .extra_temps = .{
1369120406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13712,9 +20427,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1371220427 } },
1371320428 }, .{
1371420429 .required_features = .{ .lzcnt, null, null, null },
13715 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20430 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1371620431 .patterns = &.{
13717 .{ .src = .{ .to_mem, .none } },
20432 .{ .src = .{ .to_mem, .none, .none } },
1371820433 },
1371920434 .extra_temps = .{
1372020435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13741,9 +20456,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1374120456 } },
1374220457 }, .{
1374320458 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },
13744 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
20459 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1374520460 .patterns = &.{
13746 .{ .src = .{ .to_mem, .none } },
20461 .{ .src = .{ .to_mem, .none, .none } },
1374720462 },
1374820463 .extra_temps = .{
1374920464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13770,9 +20485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1377020485 } },
1377120486 }, .{
1377220487 .required_features = .{ .@"64bit", .lzcnt, null, null },
13773 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
20488 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1377420489 .patterns = &.{
13775 .{ .src = .{ .to_mem, .none } },
20490 .{ .src = .{ .to_mem, .none, .none } },
1377620491 },
1377720492 .extra_temps = .{
1377820493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13799,9 +20514,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1379920514 } },
1380020515 }, .{
1380120516 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
13802 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20517 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1380320518 .patterns = &.{
13804 .{ .src = .{ .to_mem, .none } },
20519 .{ .src = .{ .to_mem, .none, .none } },
1380520520 },
1380620521 .extra_temps = .{
1380720522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13831,9 +20546,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1383120546 } },
1383220547 }, .{
1383320548 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
13834 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20549 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1383520550 .patterns = &.{
13836 .{ .src = .{ .to_mem, .none } },
20551 .{ .src = .{ .to_mem, .none, .none } },
1383720552 },
1383820553 .extra_temps = .{
1383920554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13863,9 +20578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1386320578 } },
1386420579 }, .{
1386520580 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
13866 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20581 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1386720582 .patterns = &.{
13868 .{ .src = .{ .to_mem, .none } },
20583 .{ .src = .{ .to_mem, .none, .none } },
1386920584 },
1387020585 .extra_temps = .{
1387120586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13895,9 +20610,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1389520610 } },
1389620611 }, .{
1389720612 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
13898 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20613 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1389920614 .patterns = &.{
13900 .{ .src = .{ .to_mem, .none } },
20615 .{ .src = .{ .to_mem, .none, .none } },
1390120616 },
1390220617 .extra_temps = .{
1390320618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13927,9 +20642,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1392720642 } },
1392820643 }, .{
1392920644 .required_features = .{ .slow_incdec, null, null, null },
13930 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20645 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1393120646 .patterns = &.{
13932 .{ .src = .{ .to_mem, .none } },
20647 .{ .src = .{ .to_mem, .none, .none } },
1393320648 },
1393420649 .extra_temps = .{
1393520650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13957,9 +20672,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1395720672 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1395820673 } },
1395920674 }, .{
13960 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },
20675 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
1396120676 .patterns = &.{
13962 .{ .src = .{ .to_mem, .none } },
20677 .{ .src = .{ .to_mem, .none, .none } },
1396320678 },
1396420679 .extra_temps = .{
1396520680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -13988,9 +20703,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1398820703 } },
1398920704 }, .{
1399020705 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
13991 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20706 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1399220707 .patterns = &.{
13993 .{ .src = .{ .to_mem, .none } },
20708 .{ .src = .{ .to_mem, .none, .none } },
1399420709 },
1399520710 .extra_temps = .{
1399620711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14020,9 +20735,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1402020735 } },
1402120736 }, .{
1402220737 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
14023 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20738 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1402420739 .patterns = &.{
14025 .{ .src = .{ .to_mem, .none } },
20740 .{ .src = .{ .to_mem, .none, .none } },
1402620741 },
1402720742 .extra_temps = .{
1402820743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14052,9 +20767,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1405220767 } },
1405320768 }, .{
1405420769 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
14055 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20770 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1405620771 .patterns = &.{
14057 .{ .src = .{ .to_mem, .none } },
20772 .{ .src = .{ .to_mem, .none, .none } },
1405820773 },
1405920774 .extra_temps = .{
1406020775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14084,9 +20799,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1408420799 } },
1408520800 }, .{
1408620801 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
14087 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20802 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1408820803 .patterns = &.{
14089 .{ .src = .{ .to_mem, .none } },
20804 .{ .src = .{ .to_mem, .none, .none } },
1409020805 },
1409120806 .extra_temps = .{
1409220807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14116,9 +20831,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1411620831 } },
1411720832 }, .{
1411820833 .required_features = .{ .slow_incdec, null, null, null },
14119 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20834 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1412020835 .patterns = &.{
14121 .{ .src = .{ .to_mem, .none } },
20836 .{ .src = .{ .to_mem, .none, .none } },
1412220837 },
1412320838 .extra_temps = .{
1412420839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14146,9 +20861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1414620861 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1414720862 } },
1414820863 }, .{
14149 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },
20864 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
1415020865 .patterns = &.{
14151 .{ .src = .{ .to_mem, .none } },
20866 .{ .src = .{ .to_mem, .none, .none } },
1415220867 },
1415320868 .extra_temps = .{
1415420869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14177,9 +20892,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1417720892 } },
1417820893 }, .{
1417920894 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },
14180 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20895 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1418120896 .patterns = &.{
14182 .{ .src = .{ .to_mem, .none } },
20897 .{ .src = .{ .to_mem, .none, .none } },
1418320898 },
1418420899 .extra_temps = .{
1418520900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14209,9 +20924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1420920924 } },
1421020925 }, .{
1421120926 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },
14212 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20927 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1421320928 .patterns = &.{
14214 .{ .src = .{ .to_mem, .none } },
20929 .{ .src = .{ .to_mem, .none, .none } },
1421520930 },
1421620931 .extra_temps = .{
1421720932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14241,9 +20956,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1424120956 } },
1424220957 }, .{
1424320958 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },
14244 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20959 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1424520960 .patterns = &.{
14246 .{ .src = .{ .to_mem, .none } },
20961 .{ .src = .{ .to_mem, .none, .none } },
1424720962 },
1424820963 .extra_temps = .{
1424920964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14273,9 +20988,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1427320988 } },
1427420989 }, .{
1427520990 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },
14276 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
20991 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1427720992 .patterns = &.{
14278 .{ .src = .{ .to_mem, .none } },
20993 .{ .src = .{ .to_mem, .none, .none } },
1427920994 },
1428020995 .extra_temps = .{
1428120996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14305,9 +21020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1430521020 } },
1430621021 }, .{
1430721022 .required_features = .{ .slow_incdec, null, null, null },
14308 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
21023 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1430921024 .patterns = &.{
14310 .{ .src = .{ .to_mem, .none } },
21025 .{ .src = .{ .to_mem, .none, .none } },
1431121026 },
1431221027 .extra_temps = .{
1431321028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14335,9 +21050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1433521050 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1433621051 } },
1433721052 }, .{
14338 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },
21053 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
1433921054 .patterns = &.{
14340 .{ .src = .{ .to_mem, .none } },
21055 .{ .src = .{ .to_mem, .none, .none } },
1434121056 },
1434221057 .extra_temps = .{
1434321058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14366,9 +21081,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1436621081 } },
1436721082 }, .{
1436821083 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec },
14369 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21084 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1437021085 .patterns = &.{
14371 .{ .src = .{ .to_mem, .none } },
21086 .{ .src = .{ .to_mem, .none, .none } },
1437221087 },
1437321088 .extra_temps = .{
1437421089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14398,9 +21113,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1439821113 } },
1439921114 }, .{
1440021115 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },
14401 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21116 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1440221117 .patterns = &.{
14403 .{ .src = .{ .to_mem, .none } },
21118 .{ .src = .{ .to_mem, .none, .none } },
1440421119 },
1440521120 .extra_temps = .{
1440621121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14430,9 +21145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1443021145 } },
1443121146 }, .{
1443221147 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null },
14433 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21148 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1443421149 .patterns = &.{
14435 .{ .src = .{ .to_mem, .none } },
21150 .{ .src = .{ .to_mem, .none, .none } },
1443621151 },
1443721152 .extra_temps = .{
1443821153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14462,9 +21177,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1446221177 } },
1446321178 }, .{
1446421179 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
14465 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21180 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1446621181 .patterns = &.{
14467 .{ .src = .{ .to_mem, .none } },
21182 .{ .src = .{ .to_mem, .none, .none } },
1446821183 },
1446921184 .extra_temps = .{
1447021185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14494,9 +21209,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1449421209 } },
1449521210 }, .{
1449621211 .required_features = .{ .@"64bit", .slow_incdec, null, null },
14497 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21212 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1449821213 .patterns = &.{
14499 .{ .src = .{ .to_mem, .none } },
21214 .{ .src = .{ .to_mem, .none, .none } },
1450021215 },
1450121216 .extra_temps = .{
1450221217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14525,9 +21240,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1452521240 } },
1452621241 }, .{
1452721242 .required_features = .{ .@"64bit", null, null, null },
14528 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },
21243 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
1452921244 .patterns = &.{
14530 .{ .src = .{ .to_mem, .none } },
21245 .{ .src = .{ .to_mem, .none, .none } },
1453121246 },
1453221247 .extra_temps = .{
1453321248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14556,10 +21271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1455621271 } },
1455721272 }, .{
1455821273 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14559 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21274 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1456021275 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1456121276 .patterns = &.{
14562 .{ .src = .{ .to_mem, .none } },
21277 .{ .src = .{ .to_mem, .none, .none } },
1456321278 },
1456421279 .extra_temps = .{
1456521280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14596,10 +21311,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1459621311 } },
1459721312 }, .{
1459821313 .required_features = .{ .@"64bit", .lzcnt, null, null },
14599 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21314 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1460021315 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1460121316 .patterns = &.{
14602 .{ .src = .{ .to_mem, .none } },
21317 .{ .src = .{ .to_mem, .none, .none } },
1460321318 },
1460421319 .extra_temps = .{
1460521320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14635,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1463521350 } },
1463621351 }, .{
1463721352 .required_features = .{ .@"64bit", null, null, null },
14638 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21353 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1463921354 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1464021355 .patterns = &.{
14641 .{ .src = .{ .to_mem, .none } },
21356 .{ .src = .{ .to_mem, .none, .none } },
1464221357 },
1464321358 .extra_temps = .{
1464421359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14674,10 +21389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1467421389 } },
1467521390 }, .{
1467621391 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14677 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21392 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1467821393 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1467921394 .patterns = &.{
14680 .{ .src = .{ .to_mem, .none } },
21395 .{ .src = .{ .to_mem, .none, .none } },
1468121396 },
1468221397 .extra_temps = .{
1468321398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14714,10 +21429,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1471421429 } },
1471521430 }, .{
1471621431 .required_features = .{ .@"64bit", .lzcnt, null, null },
14717 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21432 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1471821433 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1471921434 .patterns = &.{
14720 .{ .src = .{ .to_mem, .none } },
21435 .{ .src = .{ .to_mem, .none, .none } },
1472121436 },
1472221437 .extra_temps = .{
1472321438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14753,10 +21468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1475321468 } },
1475421469 }, .{
1475521470 .required_features = .{ .@"64bit", null, null, null },
14756 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21471 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1475721472 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1475821473 .patterns = &.{
14759 .{ .src = .{ .to_mem, .none } },
21474 .{ .src = .{ .to_mem, .none, .none } },
1476021475 },
1476121476 .extra_temps = .{
1476221477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14792,10 +21507,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1479221507 } },
1479321508 }, .{
1479421509 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14795 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21510 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1479621511 .dst_constraints = .{.{ .scalar_int_is = .word }},
1479721512 .patterns = &.{
14798 .{ .src = .{ .to_mem, .none } },
21513 .{ .src = .{ .to_mem, .none, .none } },
1479921514 },
1480021515 .extra_temps = .{
1480121516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14832,10 +21547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1483221547 } },
1483321548 }, .{
1483421549 .required_features = .{ .@"64bit", .lzcnt, null, null },
14835 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21550 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1483621551 .dst_constraints = .{.{ .scalar_int_is = .word }},
1483721552 .patterns = &.{
14838 .{ .src = .{ .to_mem, .none } },
21553 .{ .src = .{ .to_mem, .none, .none } },
1483921554 },
1484021555 .extra_temps = .{
1484121556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14871,10 +21586,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1487121586 } },
1487221587 }, .{
1487321588 .required_features = .{ .@"64bit", null, null, null },
14874 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
21589 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any },
1487521590 .dst_constraints = .{.{ .scalar_int_is = .word }},
1487621591 .patterns = &.{
14877 .{ .src = .{ .to_mem, .none } },
21592 .{ .src = .{ .to_mem, .none, .none } },
1487821593 },
1487921594 .extra_temps = .{
1488021595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14910,10 +21625,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1491021625 } },
1491121626 }, .{
1491221627 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14913 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21628 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1491421629 .dst_constraints = .{.{ .scalar_int_is = .word }},
1491521630 .patterns = &.{
14916 .{ .src = .{ .to_mem, .none } },
21631 .{ .src = .{ .to_mem, .none, .none } },
1491721632 },
1491821633 .extra_temps = .{
1491921634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14950,10 +21665,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1495021665 } },
1495121666 }, .{
1495221667 .required_features = .{ .@"64bit", .lzcnt, null, null },
14953 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21668 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1495421669 .dst_constraints = .{.{ .scalar_int_is = .word }},
1495521670 .patterns = &.{
14956 .{ .src = .{ .to_mem, .none } },
21671 .{ .src = .{ .to_mem, .none, .none } },
1495721672 },
1495821673 .extra_temps = .{
1495921674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -14989,10 +21704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1498921704 } },
1499021705 }, .{
1499121706 .required_features = .{ .@"64bit", null, null, null },
14992 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
21707 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
1499321708 .dst_constraints = .{.{ .scalar_int_is = .word }},
1499421709 .patterns = &.{
14995 .{ .src = .{ .to_mem, .none } },
21710 .{ .src = .{ .to_mem, .none, .none } },
1499621711 },
1499721712 .extra_temps = .{
1499821713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15005,50 +21720,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1500521720 .unused,
1500621721 .unused,
1500721722 },
15008 .dst_temps = .{.mem},
15009 .clobbers = .{ .eflags = true },
15010 .each = .{ .once = &.{
15011 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
15012 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
15013 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
15014 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15015 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
15016 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
15017 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15018 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
15019 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
15020 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
15021 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
15022 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
15023 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
15024 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
15025 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
15026 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
15027 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15028 } },
15029 } }) catch |err| switch (err) {
15030 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
15031 @tagName(air_tag),
15032 cg.typeOf(ty_op.operand).fmt(pt),
15033 ops[0].tracking(cg),
15034 }),
15035 else => |e| return e,
15036 };
15037 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
15038 },
15039
15040 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
15041 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
15042 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
15043 switch (extra.compareOperator()) {
15044 .eq, .neq => {},
15045 else => break :fallback try cg.airCmpVector(inst),
15046 }
15047 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
15048 var res: [1]Temp = undefined;
15049 switch (extra.compareOperator()) {
15050 .lt => unreachable,
15051 .lte => unreachable,
21723 .dst_temps = .{.mem},
21724 .clobbers = .{ .eflags = true },
21725 .each = .{ .once = &.{
21726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
21727 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
21728 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
21729 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
21730 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
21731 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
21732 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
21733 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
21734 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
21735 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
21736 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
21737 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
21738 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
21739 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
21740 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
21741 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
21742 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21743 } },
21744 } }) catch |err| switch (err) {
21745 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
21746 @tagName(air_tag),
21747 cg.typeOf(ty_op.operand).fmt(pt),
21748 ops[0].tracking(cg),
21749 }),
21750 else => |e| return e,
21751 };
21752 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
21753 },
21754
21755 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
21756 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
21757 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
21758 switch (extra.compareOperator()) {
21759 .eq, .neq => {},
21760 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
21761 break :fallback try cg.airCmpVector(inst),
21762 }
21763 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
21764 var res: [1]Temp = undefined;
21765 (err: switch (extra.compareOperator()) {
21766 .lt, .lte, .gte, .gt => |cmp_op| {
21767 switch (cmp_op) {
21768 else => unreachable,
21769 .lt, .lte => {},
21770 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),
21771 }
21772 break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
21773 else => unreachable,
21774 .lt, .gt => .l,
21775 .lte, .gte => .le,
21776 })) {
21777 else => unreachable,
21778 inline .l, .le => |cc| comptime &.{ .{
21779 .required_features = .{ .f16c, null, null, null },
21780 .src_constraints = .{
21781 .{ .scalar_float = .{ .of = .word, .is = .word } },
21782 .{ .scalar_float = .{ .of = .word, .is = .word } },
21783 .any,
21784 },
21785 .patterns = &.{
21786 .{ .src = .{ .to_sse, .to_sse, .none } },
21787 },
21788 .extra_temps = .{
21789 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
21790 .unused,
21791 .unused,
21792 .unused,
21793 .unused,
21794 .unused,
21795 .unused,
21796 .unused,
21797 .unused,
21798 },
21799 .dst_temps = .{.{ .mut_rc_mask = .{
21800 .ref = .src0,
21801 .rc = .sse,
21802 .info = .{ .kind = .all, .scalar = .dword },
21803 } }},
21804 .each = .{ .once = &.{
21805 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
21806 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
21807 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
21808 else => unreachable,
21809 .l => .lt,
21810 .le => .le,
21811 }) },
21812 } },
21813 }, .{
21814 .required_features = .{ .f16c, null, null, null },
21815 .src_constraints = .{
21816 .{ .scalar_float = .{ .of = .qword, .is = .word } },
21817 .{ .scalar_float = .{ .of = .qword, .is = .word } },
21818 .any,
21819 },
21820 .patterns = &.{
21821 .{ .src = .{ .mem, .mem, .none } },
21822 .{ .src = .{ .sse, .mem, .none } },
21823 .{ .src = .{ .mem, .sse, .none } },
21824 .{ .src = .{ .to_sse, .to_sse, .none } },
21825 },
21826 .extra_temps = .{
21827 .{ .kind = .{ .rc = .sse } },
21828 .unused,
21829 .unused,
21830 .unused,
21831 .unused,
21832 .unused,
21833 .unused,
21834 .unused,
21835 .unused,
21836 },
21837 .dst_temps = .{.{ .mut_rc_mask = .{
21838 .ref = .src0,
21839 .rc = .sse,
21840 .info = .{ .kind = .all, .scalar = .dword },
21841 } }},
21842 .each = .{ .once = &.{
21843 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
21844 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
21845 .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
21846 else => unreachable,
21847 .l => .lt,
21848 .le => .le,
21849 }) },
21850 } },
21851 }, .{
21852 .required_features = .{ .f16c, null, null, null },
21853 .src_constraints = .{
21854 .{ .scalar_float = .{ .of = .xword, .is = .word } },
21855 .{ .scalar_float = .{ .of = .xword, .is = .word } },
21856 .any,
21857 },
21858 .patterns = &.{
21859 .{ .src = .{ .mem, .mem, .none } },
21860 .{ .src = .{ .to_sse, .mem, .none } },
21861 .{ .src = .{ .mem, .to_sse, .none } },
21862 .{ .src = .{ .to_sse, .to_sse, .none } },
21863 },
21864 .extra_temps = .{
21865 .{ .kind = .{ .rc = .sse } },
21866 .unused,
21867 .unused,
21868 .unused,
21869 .unused,
21870 .unused,
21871 .unused,
21872 .unused,
21873 .unused,
21874 },
21875 .dst_temps = .{.{ .mut_rc_mask = .{
21876 .ref = .src0,
21877 .rc = .sse,
21878 .info = .{ .kind = .all, .scalar = .dword },
21879 } }},
21880 .each = .{ .once = &.{
21881 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
21882 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
21883 .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) {
21884 else => unreachable,
21885 .l => .lt,
21886 .le => .le,
21887 }) },
21888 } },
21889 }, .{
21890 .required_features = .{ .avx, null, null, null },
21891 .src_constraints = .{
21892 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
21893 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
21894 .any,
21895 },
21896 .patterns = &.{
21897 .{ .src = .{ .to_sse, .mem, .none } },
21898 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21899 .{ .src = .{ .to_sse, .to_sse, .none } },
21900 },
21901 .dst_temps = .{.{ .mut_rc_mask = .{
21902 .ref = .src0,
21903 .rc = .sse,
21904 .info = .{ .kind = .all, .scalar = .dword },
21905 } }},
21906 .each = .{ .once = &.{
21907 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
21908 else => unreachable,
21909 .l => .lt,
21910 .le => .le,
21911 }) },
21912 } },
21913 }, .{
21914 .required_features = .{ .sse, null, null, null },
21915 .src_constraints = .{
21916 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
21917 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
21918 .any,
21919 },
21920 .patterns = &.{
21921 .{ .src = .{ .to_mut_sse, .mem, .none } },
21922 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
21923 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
21924 },
21925 .dst_temps = .{.{ .ref_mask = .{
21926 .ref = .src0,
21927 .info = .{ .kind = .all, .scalar = .dword },
21928 } }},
21929 .each = .{ .once = &.{
21930 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
21931 else => unreachable,
21932 .l => .lt,
21933 .le => .le,
21934 }), ._ },
21935 } },
21936 }, .{
21937 .required_features = .{ .avx, null, null, null },
21938 .src_constraints = .{
21939 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
21940 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
21941 .any,
21942 },
21943 .patterns = &.{
21944 .{ .src = .{ .to_sse, .mem, .none } },
21945 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21946 .{ .src = .{ .to_sse, .to_sse, .none } },
21947 },
21948 .dst_temps = .{.{ .mut_rc_mask = .{
21949 .ref = .src0,
21950 .rc = .sse,
21951 .info = .{ .kind = .all, .scalar = .dword },
21952 } }},
21953 .each = .{ .once = &.{
21954 .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
21955 else => unreachable,
21956 .l => .lt,
21957 .le => .le,
21958 }) },
21959 } },
21960 }, .{
21961 .required_features = .{ .sse, null, null, null },
21962 .src_constraints = .{
21963 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
21964 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
21965 .any,
21966 },
21967 .patterns = &.{
21968 .{ .src = .{ .to_mut_sse, .mem, .none } },
21969 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
21970 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
21971 },
21972 .dst_temps = .{.{ .ref_mask = .{
21973 .ref = .src0,
21974 .info = .{ .kind = .all, .scalar = .dword },
21975 } }},
21976 .each = .{ .once = &.{
21977 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
21978 else => unreachable,
21979 .l => .lt,
21980 .le => .le,
21981 }), ._ },
21982 } },
21983 }, .{
21984 .required_features = .{ .avx, null, null, null },
21985 .src_constraints = .{
21986 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
21987 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
21988 .any,
21989 },
21990 .patterns = &.{
21991 .{ .src = .{ .to_sse, .mem, .none } },
21992 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21993 .{ .src = .{ .to_sse, .to_sse, .none } },
21994 },
21995 .dst_temps = .{.{ .mut_rc_mask = .{
21996 .ref = .src0,
21997 .rc = .sse,
21998 .info = .{ .kind = .all, .scalar = .dword },
21999 } }},
22000 .each = .{ .once = &.{
22001 .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
22002 else => unreachable,
22003 .l => .lt,
22004 .le => .le,
22005 }) },
22006 } },
22007 }, .{
22008 .required_features = .{ .avx, null, null, null },
22009 .src_constraints = .{
22010 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
22011 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
22012 .any,
22013 },
22014 .patterns = &.{
22015 .{ .src = .{ .to_sse, .mem, .none } },
22016 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
22017 .{ .src = .{ .to_sse, .to_sse, .none } },
22018 },
22019 .dst_temps = .{.{ .mut_rc_mask = .{
22020 .ref = .src0,
22021 .rc = .sse,
22022 .info = .{ .kind = .all, .scalar = .qword },
22023 } }},
22024 .each = .{ .once = &.{
22025 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
22026 else => unreachable,
22027 .l => .lt,
22028 .le => .le,
22029 }) },
22030 } },
22031 }, .{
22032 .required_features = .{ .sse2, null, null, null },
22033 .src_constraints = .{
22034 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
22035 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
22036 .any,
22037 },
22038 .patterns = &.{
22039 .{ .src = .{ .to_mut_sse, .mem, .none } },
22040 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
22041 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
22042 },
22043 .dst_temps = .{.{ .ref_mask = .{
22044 .ref = .src0,
22045 .info = .{ .kind = .all, .scalar = .qword },
22046 } }},
22047 .each = .{ .once = &.{
22048 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
22049 else => unreachable,
22050 .l => .lt,
22051 .le => .le,
22052 }), ._ },
22053 } },
22054 }, .{
22055 .required_features = .{ .avx, null, null, null },
22056 .src_constraints = .{
22057 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
22058 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
22059 .any,
22060 },
22061 .patterns = &.{
22062 .{ .src = .{ .to_sse, .mem, .none } },
22063 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
22064 .{ .src = .{ .to_sse, .to_sse, .none } },
22065 },
22066 .dst_temps = .{.{ .mut_rc_mask = .{
22067 .ref = .src0,
22068 .rc = .sse,
22069 .info = .{ .kind = .all, .scalar = .qword },
22070 } }},
22071 .each = .{ .once = &.{
22072 .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
22073 else => unreachable,
22074 .l => .lt,
22075 .le => .le,
22076 }) },
22077 } },
22078 }, .{
22079 .required_features = .{ .sse2, null, null, null },
22080 .src_constraints = .{
22081 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
22082 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
22083 .any,
22084 },
22085 .patterns = &.{
22086 .{ .src = .{ .to_mut_sse, .mem, .none } },
22087 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
22088 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
22089 },
22090 .dst_temps = .{.{ .ref_mask = .{
22091 .ref = .src0,
22092 .info = .{ .kind = .all, .scalar = .qword },
22093 } }},
22094 .each = .{ .once = &.{
22095 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
22096 else => unreachable,
22097 .l => .lt,
22098 .le => .le,
22099 }), ._ },
22100 } },
22101 }, .{
22102 .required_features = .{ .avx, null, null, null },
22103 .src_constraints = .{
22104 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
22105 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
22106 .any,
22107 },
22108 .patterns = &.{
22109 .{ .src = .{ .to_sse, .mem, .none } },
22110 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
22111 .{ .src = .{ .to_sse, .to_sse, .none } },
22112 },
22113 .dst_temps = .{.{ .mut_rc_mask = .{
22114 .ref = .src0,
22115 .rc = .sse,
22116 .info = .{ .kind = .all, .scalar = .qword },
22117 } }},
22118 .each = .{ .once = &.{
22119 .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) {
22120 else => unreachable,
22121 .l => .lt,
22122 .le => .le,
22123 }) },
22124 } },
22125 }, .{
22126 .required_features = .{ .f16c, .slow_incdec, null, null },
22127 .src_constraints = .{
22128 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
22129 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
22130 .any,
22131 },
22132 .patterns = &.{
22133 .{ .src = .{ .to_mem, .to_mem, .none } },
22134 },
22135 .extra_temps = .{
22136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22137 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22138 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22139 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22140 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22141 .unused,
22142 .unused,
22143 .unused,
22144 .unused,
22145 },
22146 .dst_temps = .{.mem},
22147 .clobbers = .{ .eflags = true },
22148 .each = .{ .once = &.{
22149 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22150 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22151 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
22152 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
22153 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
22154 else => unreachable,
22155 .l => .lt,
22156 .le => .le,
22157 }) },
22158 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
22159 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
22160 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
22161 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22162 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22163 } },
22164 }, .{
22165 .required_features = .{ .f16c, null, null, null },
22166 .src_constraints = .{
22167 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
22168 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
22169 .any,
22170 },
22171 .patterns = &.{
22172 .{ .src = .{ .to_mem, .to_mem, .none } },
22173 },
22174 .extra_temps = .{
22175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22176 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22177 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22178 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22179 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22180 .unused,
22181 .unused,
22182 .unused,
22183 .unused,
22184 },
22185 .dst_temps = .{.mem},
22186 .clobbers = .{ .eflags = true },
22187 .each = .{ .once = &.{
22188 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22189 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22190 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
22191 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ },
22192 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) {
22193 else => unreachable,
22194 .l => .lt,
22195 .le => .le,
22196 }) },
22197 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
22198 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
22199 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
22200 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22201 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22202 } },
22203 }, .{
22204 .required_features = .{ .avx, .slow_incdec, null, null },
22205 .src_constraints = .{
22206 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22207 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22208 .any,
22209 },
22210 .dst_constraints = .{.{ .bool_vec = .dword }},
22211 .patterns = &.{
22212 .{ .src = .{ .to_mem, .to_mem, .none } },
22213 },
22214 .call_frame = .{ .alignment = .@"16" },
22215 .extra_temps = .{
22216 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22217 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22218 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22220 .{ .type = .i32, .kind = .{ .reg = .eax } },
22221 .{ .type = .u8, .kind = .{ .reg = .cl } },
22222 .{ .type = .u32, .kind = .{ .reg = .edx } },
22223 .unused,
22224 .unused,
22225 },
22226 .dst_temps = .{.{ .rc = .general_purpose }},
22227 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22228 .each = .{ .once = &.{
22229 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22230 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22231 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
22232 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
22233 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
22234 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22235 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22236 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22237 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22238 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22239 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22240 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22241 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
22242 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22243 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22244 } },
22245 }, .{
22246 .required_features = .{ .avx, null, null, null },
22247 .src_constraints = .{
22248 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22249 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22250 .any,
22251 },
22252 .dst_constraints = .{.{ .bool_vec = .dword }},
22253 .patterns = &.{
22254 .{ .src = .{ .to_mem, .to_mem, .none } },
22255 },
22256 .call_frame = .{ .alignment = .@"16" },
22257 .extra_temps = .{
22258 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22259 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22260 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22261 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22262 .{ .type = .i32, .kind = .{ .reg = .eax } },
22263 .{ .type = .u8, .kind = .{ .reg = .cl } },
22264 .{ .type = .u32, .kind = .{ .reg = .edx } },
22265 .unused,
22266 .unused,
22267 },
22268 .dst_temps = .{.{ .rc = .general_purpose }},
22269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22270 .each = .{ .once = &.{
22271 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22272 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22273 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
22274 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
22275 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
22276 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22277 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22278 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22279 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22280 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22281 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22282 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22283 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22284 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22285 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22286 } },
22287 }, .{
22288 .required_features = .{ .sse2, .slow_incdec, null, null },
22289 .src_constraints = .{
22290 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22291 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22292 .any,
22293 },
22294 .dst_constraints = .{.{ .bool_vec = .dword }},
22295 .patterns = &.{
22296 .{ .src = .{ .to_mem, .to_mem, .none } },
22297 },
22298 .call_frame = .{ .alignment = .@"16" },
22299 .extra_temps = .{
22300 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22301 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22302 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22303 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22304 .{ .type = .i32, .kind = .{ .reg = .eax } },
22305 .{ .type = .u8, .kind = .{ .reg = .cl } },
22306 .{ .type = .u32, .kind = .{ .reg = .edx } },
22307 .unused,
22308 .unused,
22309 },
22310 .dst_temps = .{.{ .rc = .general_purpose }},
22311 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22312 .each = .{ .once = &.{
22313 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22314 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22315 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
22316 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
22317 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
22318 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
22319 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22320 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22321 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22322 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22323 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22324 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22325 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22326 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
22327 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22328 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22329 } },
22330 }, .{
22331 .required_features = .{ .sse2, null, null, null },
22332 .src_constraints = .{
22333 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22334 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22335 .any,
22336 },
22337 .dst_constraints = .{.{ .bool_vec = .dword }},
22338 .patterns = &.{
22339 .{ .src = .{ .to_mem, .to_mem, .none } },
22340 },
22341 .call_frame = .{ .alignment = .@"16" },
22342 .extra_temps = .{
22343 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22345 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22346 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22347 .{ .type = .i32, .kind = .{ .reg = .eax } },
22348 .{ .type = .u8, .kind = .{ .reg = .cl } },
22349 .{ .type = .u32, .kind = .{ .reg = .edx } },
22350 .unused,
22351 .unused,
22352 },
22353 .dst_temps = .{.{ .rc = .general_purpose }},
22354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22355 .each = .{ .once = &.{
22356 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22357 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22358 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
22359 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
22360 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
22361 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
22362 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22363 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22364 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22365 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22366 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22367 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22368 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22369 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22370 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22371 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22372 } },
22373 }, .{
22374 .required_features = .{ .sse, .slow_incdec, null, null },
22375 .src_constraints = .{
22376 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22377 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22378 .any,
22379 },
22380 .dst_constraints = .{.{ .bool_vec = .dword }},
22381 .patterns = &.{
22382 .{ .src = .{ .to_mem, .to_mem, .none } },
22383 },
22384 .call_frame = .{ .alignment = .@"16" },
22385 .extra_temps = .{
22386 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22387 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22388 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22389 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22390 .{ .type = .i32, .kind = .{ .reg = .eax } },
22391 .{ .type = .u8, .kind = .{ .reg = .cl } },
22392 .{ .type = .u32, .kind = .{ .reg = .edx } },
22393 .{ .type = .f32, .kind = .mem },
22394 .unused,
22395 },
22396 .dst_temps = .{.{ .rc = .general_purpose }},
22397 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22398 .each = .{ .once = &.{
22399 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22400 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22401 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
22402 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
22403 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
22404 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
22405 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
22406 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
22407 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22408 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22409 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22410 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22411 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22412 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22413 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22414 .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ },
22415 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22416 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22417 } },
22418 }, .{
22419 .required_features = .{ .sse, null, null, null },
22420 .src_constraints = .{
22421 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22422 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22423 .any,
22424 },
22425 .dst_constraints = .{.{ .bool_vec = .dword }},
22426 .patterns = &.{
22427 .{ .src = .{ .to_mem, .to_mem, .none } },
22428 },
22429 .call_frame = .{ .alignment = .@"16" },
22430 .extra_temps = .{
22431 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22432 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22433 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22434 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22435 .{ .type = .i32, .kind = .{ .reg = .eax } },
22436 .{ .type = .u8, .kind = .{ .reg = .cl } },
22437 .{ .type = .u32, .kind = .{ .reg = .edx } },
22438 .{ .type = .f32, .kind = .mem },
22439 .unused,
22440 },
22441 .dst_temps = .{.{ .rc = .general_purpose }},
22442 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22443 .each = .{ .once = &.{
22444 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
22445 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22446 .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
22447 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
22448 .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ },
22449 .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
22450 .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ },
22451 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ },
22452 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22453 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
22454 .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ },
22455 .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ },
22456 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22457 .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ },
22458 .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ },
22459 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22460 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22461 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22462 } },
22463 }, .{
22464 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
22465 .src_constraints = .{
22466 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22467 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22468 .any,
22469 },
22470 .patterns = &.{
22471 .{ .src = .{ .to_mem, .to_mem, .none } },
22472 },
22473 .call_frame = .{ .alignment = .@"16" },
22474 .extra_temps = .{
22475 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22476 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22477 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22478 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22480 .{ .type = .i32, .kind = .{ .reg = .eax } },
22481 .{ .type = .u8, .kind = .{ .reg = .cl } },
22482 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22483 .unused,
22484 },
22485 .dst_temps = .{.mem},
22486 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22487 .each = .{ .once = &.{
22488 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22489 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22490 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
22491 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
22492 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
22493 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22494 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22495 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22496 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22497 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22498 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22499 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22500 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
22501 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22502 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22503 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22504 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22505 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22506 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22507 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22508 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22509 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22510 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22511 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22512 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22513 } },
22514 }, .{
22515 .required_features = .{ .@"64bit", .avx, null, null },
22516 .src_constraints = .{
22517 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22518 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22519 .any,
22520 },
22521 .patterns = &.{
22522 .{ .src = .{ .to_mem, .to_mem, .none } },
22523 },
22524 .call_frame = .{ .alignment = .@"16" },
22525 .extra_temps = .{
22526 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22527 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22530 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22531 .{ .type = .i32, .kind = .{ .reg = .eax } },
22532 .{ .type = .u8, .kind = .{ .reg = .cl } },
22533 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22534 .unused,
22535 },
22536 .dst_temps = .{.mem},
22537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22538 .each = .{ .once = &.{
22539 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22540 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22541 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
22542 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
22543 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) },
22544 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22545 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22546 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22547 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22548 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22549 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22550 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22551 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22552 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22553 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22554 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22555 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22556 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22557 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22558 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22559 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22560 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22561 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22562 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22563 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22564 } },
22565 }, .{
22566 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
22567 .src_constraints = .{
22568 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22569 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22570 .any,
22571 },
22572 .patterns = &.{
22573 .{ .src = .{ .to_mem, .to_mem, .none } },
22574 },
22575 .call_frame = .{ .alignment = .@"16" },
22576 .extra_temps = .{
22577 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22578 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22579 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22580 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22582 .{ .type = .i32, .kind = .{ .reg = .eax } },
22583 .{ .type = .u8, .kind = .{ .reg = .cl } },
22584 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22585 .unused,
22586 },
22587 .dst_temps = .{.mem},
22588 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22589 .each = .{ .once = &.{
22590 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22591 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22592 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
22593 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
22594 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
22595 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
22596 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22597 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22598 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22599 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22600 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22601 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22602 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22603 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
22604 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22605 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22606 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22607 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22608 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22609 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22610 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22611 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22612 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22613 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22614 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22615 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22616 } },
22617 }, .{
22618 .required_features = .{ .@"64bit", .sse2, null, null },
22619 .src_constraints = .{
22620 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22621 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22622 .any,
22623 },
22624 .patterns = &.{
22625 .{ .src = .{ .to_mem, .to_mem, .none } },
22626 },
22627 .call_frame = .{ .alignment = .@"16" },
22628 .extra_temps = .{
22629 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22630 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22631 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22632 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22633 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22634 .{ .type = .i32, .kind = .{ .reg = .eax } },
22635 .{ .type = .u8, .kind = .{ .reg = .cl } },
22636 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22637 .unused,
22638 },
22639 .dst_temps = .{.mem},
22640 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22641 .each = .{ .once = &.{
22642 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22643 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22644 .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
22645 .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
22646 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
22647 .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ },
22648 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22649 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22650 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22651 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22652 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22653 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22654 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22655 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22656 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22657 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22658 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22659 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22660 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22661 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22662 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22663 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22664 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22665 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22666 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22667 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22668 } },
22669 }, .{
22670 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
22671 .src_constraints = .{
22672 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22673 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22674 .any,
22675 },
22676 .patterns = &.{
22677 .{ .src = .{ .to_mem, .to_mem, .none } },
22678 },
22679 .call_frame = .{ .alignment = .@"16" },
22680 .extra_temps = .{
22681 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22682 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22683 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22684 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22685 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22686 .{ .type = .i32, .kind = .{ .reg = .eax } },
22687 .{ .type = .u8, .kind = .{ .reg = .cl } },
22688 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22689 .{ .type = .f32, .kind = .mem },
22690 },
22691 .dst_temps = .{.mem},
22692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22693 .each = .{ .once = &.{
22694 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22695 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22696 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
22697 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
22698 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
22699 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
22700 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
22701 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
22702 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22703 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22704 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22705 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22706 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22707 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22708 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22709 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
22710 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22711 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22712 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22713 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22714 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22715 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22716 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22717 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22718 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22719 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22720 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22721 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22722 } },
22723 }, .{
22724 .required_features = .{ .@"64bit", .sse, null, null },
22725 .src_constraints = .{
22726 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22727 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
22728 .any,
22729 },
22730 .patterns = &.{
22731 .{ .src = .{ .to_mem, .to_mem, .none } },
22732 },
22733 .call_frame = .{ .alignment = .@"16" },
22734 .extra_temps = .{
22735 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
22736 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
22737 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22738 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
22739 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
22740 .{ .type = .i32, .kind = .{ .reg = .eax } },
22741 .{ .type = .u8, .kind = .{ .reg = .cl } },
22742 .{ .type = .u64, .kind = .{ .reg = .rdx } },
22743 .{ .type = .f32, .kind = .mem },
22744 },
22745 .dst_temps = .{.mem},
22746 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22747 .each = .{ .once = &.{
22748 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
22749 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22750 .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
22751 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
22752 .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ },
22753 .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ },
22754 .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ },
22755 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ },
22756 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22757 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
22758 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
22759 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
22760 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
22761 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
22762 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
22763 .{ ._, ._c, .in, .tmp0d, ._, ._, ._ },
22764 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22765 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
22766 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
22767 .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ },
22768 .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ },
22769 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
22770 .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ },
22771 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
22772 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
22773 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
22774 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
22775 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ },
22776 } },
22777 }, .{
22778 .required_features = .{ .avx, .slow_incdec, null, null },
22779 .src_constraints = .{
22780 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22781 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22782 .any,
22783 },
22784 .patterns = &.{
22785 .{ .src = .{ .to_mem, .to_mem, .none } },
22786 },
22787 .extra_temps = .{
22788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22789 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22790 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22791 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22792 .unused,
22793 .unused,
22794 .unused,
22795 .unused,
22796 .unused,
22797 },
22798 .dst_temps = .{.mem},
22799 .clobbers = .{ .eflags = true },
22800 .each = .{ .once = &.{
22801 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22802 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22803 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
22804 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
22805 else => unreachable,
22806 .l => .lt,
22807 .le => .le,
22808 }) },
22809 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
22810 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
22811 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
22812 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22813 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22814 } },
22815 }, .{
22816 .required_features = .{ .avx, null, null, null },
22817 .src_constraints = .{
22818 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22819 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22820 .any,
22821 },
22822 .patterns = &.{
22823 .{ .src = .{ .to_mem, .to_mem, .none } },
22824 },
22825 .extra_temps = .{
22826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22827 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22828 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22829 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22830 .unused,
22831 .unused,
22832 .unused,
22833 .unused,
22834 .unused,
22835 },
22836 .dst_temps = .{.mem},
22837 .clobbers = .{ .eflags = true },
22838 .each = .{ .once = &.{
22839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22840 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22841 .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
22842 .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
22843 else => unreachable,
22844 .l => .lt,
22845 .le => .le,
22846 }) },
22847 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
22848 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
22849 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
22850 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22851 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22852 } },
22853 }, .{
22854 .required_features = .{ .sse2, null, null, null },
22855 .src_constraints = .{
22856 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22857 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22858 .any,
22859 },
22860 .patterns = &.{
22861 .{ .src = .{ .to_mem, .to_mem, .none } },
22862 },
22863 .extra_temps = .{
22864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22866 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22867 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22868 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22869 .unused,
22870 .unused,
22871 .unused,
22872 .unused,
22873 },
22874 .dst_temps = .{.mem},
22875 .clobbers = .{ .eflags = true },
22876 .each = .{ .once = &.{
22877 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22878 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22879 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
22880 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
22881 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
22882 else => unreachable,
22883 .l => .lt,
22884 .le => .le,
22885 }), ._ },
22886 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
22887 else => unreachable,
22888 .l => .lt,
22889 .le => .le,
22890 }), ._ },
22891 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
22892 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
22893 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
22894 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
22895 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
22896 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22898 } },
22899 }, .{
22900 .required_features = .{ .sse, null, null, null },
22901 .src_constraints = .{
22902 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22903 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
22904 .any,
22905 },
22906 .patterns = &.{
22907 .{ .src = .{ .to_mem, .to_mem, .none } },
22908 },
22909 .extra_temps = .{
22910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22911 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22912 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22913 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22914 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22915 .unused,
22916 .unused,
22917 .unused,
22918 .unused,
22919 },
22920 .dst_temps = .{.mem},
22921 .clobbers = .{ .eflags = true },
22922 .each = .{ .once = &.{
22923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22924 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22925 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
22926 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
22927 else => unreachable,
22928 .l => .lt,
22929 .le => .le,
22930 }), ._ },
22931 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
22932 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
22933 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
22934 else => unreachable,
22935 .l => .lt,
22936 .le => .le,
22937 }), ._ },
22938 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
22939 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
22940 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
22941 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
22942 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
22943 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22944 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22945 } },
22946 }, .{
22947 .required_features = .{ .sse, null, null, null },
22948 .src_constraints = .{
22949 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
22950 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
22951 .any,
22952 },
22953 .patterns = &.{
22954 .{ .src = .{ .to_mem, .to_mem, .none } },
22955 },
22956 .extra_temps = .{
22957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22958 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
22959 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22960 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22961 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
22962 .unused,
22963 .unused,
22964 .unused,
22965 .unused,
22966 },
22967 .dst_temps = .{.mem},
22968 .clobbers = .{ .eflags = true },
22969 .each = .{ .once = &.{
22970 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
22971 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
22972 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
22973 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
22974 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
22975 else => unreachable,
22976 .l => .lt,
22977 .le => .le,
22978 }), ._ },
22979 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
22980 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
22981 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
22982 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
22983 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
22984 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
22985 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
22986 else => unreachable,
22987 .l => .lt,
22988 .le => .le,
22989 }), ._ },
22990 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
22991 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
22992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22993 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
22994 } },
22995 }, .{
22996 .required_features = .{ .avx, .slow_incdec, null, null },
22997 .src_constraints = .{
22998 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
22999 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
23000 .any,
23001 },
23002 .patterns = &.{
23003 .{ .src = .{ .to_mem, .to_mem, .none } },
23004 },
23005 .extra_temps = .{
23006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23007 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
23008 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23009 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23010 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23011 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23012 .unused,
23013 .unused,
23014 .unused,
23015 },
23016 .dst_temps = .{.mem},
23017 .clobbers = .{ .eflags = true },
23018 .each = .{ .once = &.{
23019 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23020 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
23021 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
23022 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
23023 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
23024 else => unreachable,
23025 .l => .lt,
23026 .le => .le,
23027 }) },
23028 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
23029 else => unreachable,
23030 .l => .lt,
23031 .le => .le,
23032 }) },
23033 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
23034 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
23035 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
23036 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
23037 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
23038 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
23039 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
23040 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23041 } },
23042 }, .{
23043 .required_features = .{ .avx, null, null, null },
23044 .src_constraints = .{
23045 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
23046 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
23047 .any,
23048 },
23049 .patterns = &.{
23050 .{ .src = .{ .to_mem, .to_mem, .none } },
23051 },
23052 .extra_temps = .{
23053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23054 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
23055 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23056 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23058 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23059 .unused,
23060 .unused,
23061 .unused,
23062 },
23063 .dst_temps = .{.mem},
23064 .clobbers = .{ .eflags = true },
23065 .each = .{ .once = &.{
23066 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23067 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
23068 .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
23069 .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ },
23070 .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
23071 else => unreachable,
23072 .l => .lt,
23073 .le => .le,
23074 }) },
23075 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) {
23076 else => unreachable,
23077 .l => .lt,
23078 .le => .le,
23079 }) },
23080 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ },
23081 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
23082 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
23083 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
23084 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
23085 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
23086 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
23087 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23088 } },
23089 }, .{
23090 .required_features = .{ .avx, null, null, null },
23091 .src_constraints = .{
23092 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
23093 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
23094 .any,
23095 },
23096 .patterns = &.{
23097 .{ .src = .{ .to_mem, .to_mem, .none } },
23098 },
23099 .extra_temps = .{
23100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23101 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23102 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23103 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23104 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23105 .unused,
23106 .unused,
23107 .unused,
23108 .unused,
23109 },
23110 .dst_temps = .{.mem},
23111 .clobbers = .{ .eflags = true },
23112 .each = .{ .once = &.{
23113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23114 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23115 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23116 .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
23117 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) {
23118 else => unreachable,
23119 .l => .lt,
23120 .le => .le,
23121 }) },
23122 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
23123 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
23124 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
23125 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
23126 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23127 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23128 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
23129 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
23130 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
23131 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23132 .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ },
23133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23134 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23135 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23136 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23137 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23138 } },
23139 }, .{
23140 .required_features = .{ .sse2, null, null, null },
23141 .src_constraints = .{
23142 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
23143 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
23144 .any,
23145 },
23146 .patterns = &.{
23147 .{ .src = .{ .to_mem, .to_mem, .none } },
23148 },
23149 .extra_temps = .{
23150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23151 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23152 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23153 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
23154 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23155 .unused,
23156 .unused,
23157 .unused,
23158 .unused,
23159 },
23160 .dst_temps = .{.mem},
23161 .clobbers = .{ .eflags = true },
23162 .each = .{ .once = &.{
23163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23164 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23165 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23166 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23167 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
23168 else => unreachable,
23169 .l => .lt,
23170 .le => .le,
23171 }), ._ },
23172 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
23173 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
23174 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
23175 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
23176 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23177 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23178 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
23179 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
23180 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
23181 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23182 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23183 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23184 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23185 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23186 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23187 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23188 } },
23189 }, .{
23190 .required_features = .{ .x87, .cmov, .slow_incdec, null },
23191 .src_constraints = .{
23192 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23193 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23194 .any,
23195 },
23196 .patterns = &.{
23197 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23198 },
23199 .extra_temps = .{
23200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23201 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23202 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23203 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23204 .{ .type = .f64, .kind = .{ .reg = .st6 } },
23205 .{ .type = .f64, .kind = .{ .reg = .st7 } },
23206 .unused,
23207 .unused,
23208 .unused,
23209 },
23210 .dst_temps = .{.mem},
23211 .clobbers = .{ .eflags = true },
23212 .each = .{ .once = &.{
23213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23214 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23215 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23216 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23217 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
23218 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
23219 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
23220 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
23221 .{ ._, .fromCond(switch (cc) {
23222 else => unreachable,
23223 .l => .a,
23224 .le => .ae,
23225 }), .set, .tmp3b, ._, ._, ._ },
23226 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23227 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23228 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23229 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23230 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23231 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23232 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23233 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23234 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23235 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
23236 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23237 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23238 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23239 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23240 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23241 } },
23242 }, .{
23243 .required_features = .{ .x87, .cmov, null, null },
23244 .src_constraints = .{
23245 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23246 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23247 .any,
23248 },
23249 .patterns = &.{
23250 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23251 },
23252 .extra_temps = .{
23253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23254 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23256 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23257 .{ .type = .f64, .kind = .{ .reg = .st6 } },
23258 .{ .type = .f64, .kind = .{ .reg = .st7 } },
23259 .unused,
23260 .unused,
23261 .unused,
23262 },
23263 .dst_temps = .{.mem},
23264 .clobbers = .{ .eflags = true },
23265 .each = .{ .once = &.{
23266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23267 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23268 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23269 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23270 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
23271 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
23272 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
23273 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
23274 .{ ._, .fromCond(switch (cc) {
23275 else => unreachable,
23276 .l => .a,
23277 .le => .ae,
23278 }), .set, .tmp3b, ._, ._, ._ },
23279 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23280 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23281 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23282 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23283 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23284 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23285 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23286 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23287 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23288 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
23289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23290 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23291 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23292 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23293 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23294 } },
23295 }, .{
23296 .required_features = .{ .x87, null, null, null },
23297 .src_constraints = .{
23298 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23299 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
23300 .any,
23301 },
23302 .patterns = &.{
23303 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23304 },
23305 .extra_temps = .{
23306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23307 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23308 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23309 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23310 .{ .type = .f64, .kind = .{ .reg = .st6 } },
23311 .{ .type = .f64, .kind = .{ .reg = .st7 } },
23312 .{ .type = .u8, .kind = .{ .reg = .ah } },
23313 .unused,
23314 .unused,
23315 },
23316 .dst_temps = .{.mem},
23317 .clobbers = .{ .eflags = true },
23318 .each = .{ .once = &.{
23319 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23320 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23321 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23322 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23323 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ },
23324 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
23325 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
23326 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
23327 switch (cc) {
23328 else => unreachable,
23329 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
23330 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
23331 },
23332 .{ ._, .fromCond(switch (cc) {
23333 else => unreachable,
23334 .l => .z,
23335 .le => .nc,
23336 }), .set, .tmp3b, ._, ._, ._ },
23337 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23338 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23339 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23340 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23341 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23342 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23343 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23344 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23345 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23346 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
23347 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23348 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23349 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23350 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23351 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23352 } },
23353 }, .{
23354 .required_features = .{ .x87, .cmov, .slow_incdec, null },
23355 .src_constraints = .{
23356 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23357 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23358 .any,
23359 },
23360 .patterns = &.{
23361 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23362 },
23363 .extra_temps = .{
23364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23365 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23366 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23367 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23368 .{ .type = .f80, .kind = .{ .reg = .st6 } },
23369 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23370 .unused,
23371 .unused,
23372 .unused,
23373 },
23374 .dst_temps = .{.mem},
23375 .clobbers = .{ .eflags = true },
23376 .each = .{ .once = &.{
23377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23378 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23379 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23380 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23381 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
23382 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
23383 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
23384 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
23385 .{ ._, .fromCond(switch (cc) {
23386 else => unreachable,
23387 .l => .a,
23388 .le => .ae,
23389 }), .set, .tmp3b, ._, ._, ._ },
23390 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23391 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23392 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23393 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23394 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23395 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23396 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23397 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23398 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23399 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23401 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23402 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23403 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23404 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23405 } },
23406 }, .{
23407 .required_features = .{ .x87, .cmov, null, null },
23408 .src_constraints = .{
23409 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23410 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23411 .any,
23412 },
23413 .patterns = &.{
23414 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23415 },
23416 .extra_temps = .{
23417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23418 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23419 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23420 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23421 .{ .type = .f80, .kind = .{ .reg = .st6 } },
23422 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23423 .unused,
23424 .unused,
23425 .unused,
23426 },
23427 .dst_temps = .{.mem},
23428 .clobbers = .{ .eflags = true },
23429 .each = .{ .once = &.{
23430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23431 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23432 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23433 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23434 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
23435 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
23436 .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ },
23437 .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ },
23438 .{ ._, .fromCond(switch (cc) {
23439 else => unreachable,
23440 .l => .a,
23441 .le => .ae,
23442 }), .set, .tmp3b, ._, ._, ._ },
23443 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23444 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23445 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23446 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23447 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23448 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23449 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23450 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23451 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23452 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23454 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23455 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23456 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23457 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23458 } },
23459 }, .{
23460 .required_features = .{ .x87, null, null, null },
23461 .src_constraints = .{
23462 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23463 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
23464 .any,
23465 },
23466 .patterns = &.{
23467 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
23468 },
23469 .extra_temps = .{
23470 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23471 .{ .type = .u32, .kind = .{ .reg = .rcx } },
23472 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23473 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23474 .{ .type = .f80, .kind = .{ .reg = .st6 } },
23475 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23476 .{ .type = .u8, .kind = .{ .reg = .ah } },
23477 .unused,
23478 .unused,
23479 },
23480 .dst_temps = .{.mem},
23481 .clobbers = .{ .eflags = true },
23482 .each = .{ .once = &.{
23483 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23484 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23485 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23486 .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ },
23487 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ },
23488 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
23489 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
23490 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
23491 switch (cc) {
23492 else => unreachable,
23493 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
23494 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
23495 },
23496 .{ ._, .fromCond(switch (cc) {
23497 else => unreachable,
23498 .l => .z,
23499 .le => .nc,
23500 }), .set, .tmp3b, ._, ._, ._ },
23501 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
23502 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
23503 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23504 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23505 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23506 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
23507 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
23508 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
23509 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23510 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23512 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
23513 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23514 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
23515 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
23516 } },
23517 }, .{
23518 .required_features = .{ .avx, .slow_incdec, null, null },
23519 .src_constraints = .{
23520 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23521 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23522 .any,
23523 },
23524 .dst_constraints = .{.{ .bool_vec = .dword }},
23525 .patterns = &.{
23526 .{ .src = .{ .to_mem, .to_mem, .none } },
23527 },
23528 .call_frame = .{ .alignment = .@"16" },
23529 .extra_temps = .{
23530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23531 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23532 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23533 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23535 .{ .type = .i32, .kind = .{ .reg = .eax } },
23536 .{ .type = .u8, .kind = .{ .reg = .cl } },
23537 .{ .type = .u32, .kind = .{ .reg = .edx } },
23538 .unused,
23539 },
23540 .dst_temps = .{.{ .rc = .general_purpose }},
23541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23542 .each = .{ .once = &.{
23543 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23544 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23545 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23546 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23547 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23548 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23549 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23550 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23551 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23552 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23553 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23554 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23555 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23556 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23557 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23558 } },
23559 }, .{
23560 .required_features = .{ .avx, .slow_incdec, null, null },
23561 .src_constraints = .{
23562 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23563 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23564 .any,
23565 },
23566 .dst_constraints = .{.{ .bool_vec = .dword }},
23567 .patterns = &.{
23568 .{ .src = .{ .to_mem, .to_mem, .none } },
23569 },
23570 .call_frame = .{ .alignment = .@"16" },
23571 .extra_temps = .{
23572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23573 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23574 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23575 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23576 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23577 .{ .type = .i32, .kind = .{ .reg = .eax } },
23578 .{ .type = .u8, .kind = .{ .reg = .cl } },
23579 .{ .type = .u32, .kind = .{ .reg = .edx } },
23580 .unused,
23581 },
23582 .dst_temps = .{.{ .rc = .general_purpose }},
23583 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23584 .each = .{ .once = &.{
23585 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23586 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23587 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23588 .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23589 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23590 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23591 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23592 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23593 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23594 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23595 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23596 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23597 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23598 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23599 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23600 } },
23601 }, .{
23602 .required_features = .{ .sse2, .slow_incdec, null, null },
23603 .src_constraints = .{
23604 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23605 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23606 .any,
23607 },
23608 .dst_constraints = .{.{ .bool_vec = .dword }},
23609 .patterns = &.{
23610 .{ .src = .{ .to_mem, .to_mem, .none } },
23611 },
23612 .call_frame = .{ .alignment = .@"16" },
23613 .extra_temps = .{
23614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23615 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23616 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23617 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23619 .{ .type = .i32, .kind = .{ .reg = .eax } },
23620 .{ .type = .u8, .kind = .{ .reg = .cl } },
23621 .{ .type = .u32, .kind = .{ .reg = .edx } },
23622 .unused,
23623 },
23624 .dst_temps = .{.{ .rc = .general_purpose }},
23625 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23626 .each = .{ .once = &.{
23627 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23629 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23630 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23631 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23632 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23633 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23634 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23635 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23636 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23637 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23638 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23639 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23640 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23641 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23642 } },
23643 }, .{
23644 .required_features = .{ .sse2, .slow_incdec, null, null },
23645 .src_constraints = .{
23646 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23647 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23648 .any,
23649 },
23650 .dst_constraints = .{.{ .bool_vec = .dword }},
23651 .patterns = &.{
23652 .{ .src = .{ .to_mem, .to_mem, .none } },
23653 },
23654 .call_frame = .{ .alignment = .@"16" },
23655 .extra_temps = .{
23656 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23657 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23658 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23659 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23661 .{ .type = .i32, .kind = .{ .reg = .eax } },
23662 .{ .type = .u8, .kind = .{ .reg = .cl } },
23663 .{ .type = .u32, .kind = .{ .reg = .edx } },
23664 .unused,
23665 },
23666 .dst_temps = .{.{ .rc = .general_purpose }},
23667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23668 .each = .{ .once = &.{
23669 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23670 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23671 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23672 .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23673 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23674 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23675 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23676 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23677 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23678 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23679 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23680 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23681 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23682 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23684 } },
23685 }, .{
23686 .required_features = .{ .sse, .slow_incdec, null, null },
23687 .src_constraints = .{
23688 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23689 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23690 .any,
23691 },
23692 .dst_constraints = .{.{ .bool_vec = .dword }},
23693 .patterns = &.{
23694 .{ .src = .{ .to_mem, .to_mem, .none } },
23695 },
23696 .call_frame = .{ .alignment = .@"16" },
23697 .extra_temps = .{
23698 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23699 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23700 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23701 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23702 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23703 .{ .type = .i32, .kind = .{ .reg = .eax } },
23704 .{ .type = .u8, .kind = .{ .reg = .cl } },
23705 .{ .type = .u32, .kind = .{ .reg = .edx } },
23706 .unused,
23707 },
23708 .dst_temps = .{.{ .rc = .general_purpose }},
23709 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23710 .each = .{ .once = &.{
23711 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23713 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23714 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23715 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23716 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23717 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23718 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23719 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23720 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23721 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23722 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23723 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23724 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23725 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23726 } },
23727 }, .{
23728 .required_features = .{ .sse2, .slow_incdec, null, null },
23729 .src_constraints = .{
23730 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23731 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23732 .any,
23733 },
23734 .dst_constraints = .{.{ .bool_vec = .dword }},
23735 .patterns = &.{
23736 .{ .src = .{ .to_mem, .to_mem, .none } },
23737 },
23738 .call_frame = .{ .alignment = .@"16" },
23739 .extra_temps = .{
23740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23741 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23742 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23743 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23745 .{ .type = .i32, .kind = .{ .reg = .eax } },
23746 .{ .type = .u8, .kind = .{ .reg = .cl } },
23747 .{ .type = .u32, .kind = .{ .reg = .edx } },
23748 .unused,
23749 },
23750 .dst_temps = .{.{ .rc = .general_purpose }},
23751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23752 .each = .{ .once = &.{
23753 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
23754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23755 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23756 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23757 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23758 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23759 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
23760 .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ },
23761 .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ },
23762 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23763 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
23764 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
23765 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23766 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23768 } },
23769 }, .{
23770 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
23771 .src_constraints = .{
23772 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23773 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23774 .any,
23775 },
23776 .patterns = &.{
23777 .{ .src = .{ .to_mem, .to_mem, .none } },
23778 },
23779 .call_frame = .{ .alignment = .@"16" },
23780 .extra_temps = .{
23781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23783 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
23784 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23785 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23787 .{ .type = .i32, .kind = .{ .reg = .eax } },
23788 .{ .type = .u8, .kind = .{ .reg = .cl } },
23789 .{ .type = .u64, .kind = .{ .reg = .rdx } },
23790 },
23791 .dst_temps = .{.mem},
23792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23793 .each = .{ .once = &.{
23794 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23795 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23796 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23797 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23798 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23799 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
23800 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
23801 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
23802 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
23803 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
23804 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
23805 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
23806 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23807 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23808 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23809 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23810 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
23811 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
23812 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23813 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23815 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23816 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23817 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
23818 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
23819 } },
23820 }, .{
23821 .required_features = .{ .@"64bit", .avx, null, null },
23822 .src_constraints = .{
23823 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23824 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23825 .any,
23826 },
23827 .patterns = &.{
23828 .{ .src = .{ .to_mem, .to_mem, .none } },
23829 },
23830 .call_frame = .{ .alignment = .@"16" },
23831 .extra_temps = .{
23832 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23833 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23834 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
23835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23836 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23838 .{ .type = .i32, .kind = .{ .reg = .eax } },
23839 .{ .type = .u8, .kind = .{ .reg = .cl } },
23840 .{ .type = .u64, .kind = .{ .reg = .rdx } },
23841 },
23842 .dst_temps = .{.mem},
23843 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23844 .each = .{ .once = &.{
23845 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23846 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23847 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23848 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23849 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23850 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
23851 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
23852 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
23853 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
23854 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
23855 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
23856 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
23857 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23858 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23859 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23860 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23861 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
23862 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
23863 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23864 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23865 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23866 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23867 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23868 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
23869 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
23870 } },
23871 }, .{
23872 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
23873 .src_constraints = .{
23874 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23875 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23876 .any,
23877 },
23878 .patterns = &.{
23879 .{ .src = .{ .to_mem, .to_mem, .none } },
23880 },
23881 .call_frame = .{ .alignment = .@"16" },
23882 .extra_temps = .{
23883 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23884 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23885 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
23886 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23887 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23889 .{ .type = .i32, .kind = .{ .reg = .eax } },
23890 .{ .type = .u8, .kind = .{ .reg = .cl } },
23891 .{ .type = .u64, .kind = .{ .reg = .rdx } },
23892 },
23893 .dst_temps = .{.mem},
23894 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23895 .each = .{ .once = &.{
23896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23897 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23898 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23899 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23900 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23901 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
23902 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
23903 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
23904 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
23905 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
23906 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
23907 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
23908 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
23909 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23910 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23911 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23912 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
23913 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
23914 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23915 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23917 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23918 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23919 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
23920 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
23921 } },
23922 }, .{
23923 .required_features = .{ .@"64bit", .sse2, null, null },
23924 .src_constraints = .{
23925 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23926 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23927 .any,
23928 },
23929 .patterns = &.{
23930 .{ .src = .{ .to_mem, .to_mem, .none } },
23931 },
23932 .call_frame = .{ .alignment = .@"16" },
23933 .extra_temps = .{
23934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23936 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
23937 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23938 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23940 .{ .type = .i32, .kind = .{ .reg = .eax } },
23941 .{ .type = .u8, .kind = .{ .reg = .cl } },
23942 .{ .type = .u64, .kind = .{ .reg = .rdx } },
23943 },
23944 .dst_temps = .{.mem},
23945 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23946 .each = .{ .once = &.{
23947 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23948 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23949 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23950 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23951 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
23952 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
23953 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
23954 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
23955 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
23956 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
23957 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
23958 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
23959 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
23960 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23961 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
23962 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
23963 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
23964 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
23965 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
23966 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
23967 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23968 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
23969 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
23970 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
23971 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
23972 } },
23973 }, .{
23974 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
23975 .src_constraints = .{
23976 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23977 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
23978 .any,
23979 },
23980 .patterns = &.{
23981 .{ .src = .{ .to_mem, .to_mem, .none } },
23982 },
23983 .call_frame = .{ .alignment = .@"16" },
23984 .extra_temps = .{
23985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23986 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23987 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
23988 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23989 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
23990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
23991 .{ .type = .i32, .kind = .{ .reg = .eax } },
23992 .{ .type = .u8, .kind = .{ .reg = .cl } },
23993 .{ .type = .u64, .kind = .{ .reg = .rdx } },
23994 },
23995 .dst_temps = .{.mem},
23996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23997 .each = .{ .once = &.{
23998 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23999 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24000 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
24001 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24002 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
24003 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
24004 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
24005 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
24006 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
24007 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
24008 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
24009 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
24010 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
24011 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
24012 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24013 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
24014 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
24015 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
24016 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
24017 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
24018 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24019 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
24020 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24021 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
24022 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
24023 } },
24024 }, .{
24025 .required_features = .{ .@"64bit", .sse, null, null },
24026 .src_constraints = .{
24027 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
24028 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
24029 .any,
24030 },
24031 .patterns = &.{
24032 .{ .src = .{ .to_mem, .to_mem, .none } },
24033 },
24034 .call_frame = .{ .alignment = .@"16" },
24035 .extra_temps = .{
24036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24037 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24038 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24039 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24040 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
24042 .{ .type = .i32, .kind = .{ .reg = .eax } },
24043 .{ .type = .u8, .kind = .{ .reg = .cl } },
24044 .{ .type = .u64, .kind = .{ .reg = .rdx } },
24045 },
24046 .dst_temps = .{.mem},
24047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24048 .each = .{ .once = &.{
24049 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24050 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24051 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
24052 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
24053 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
24054 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
24055 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
24056 .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ },
24057 .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ },
24058 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
24059 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
24060 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
24061 .{ ._, ._c, .in, .tmp1d, ._, ._, ._ },
24062 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
24063 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
24064 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
24065 .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ },
24066 .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ },
24067 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
24068 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
24069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24070 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
24071 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
24072 .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ },
24073 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
24074 } },
24075 } },
24076 });
24077 },
1505224078 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
1505324079 else => unreachable,
1505424080 .eq => .e,
......@@ -15057,11 +24083,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1505724083 else => unreachable,
1505824084 inline .e, .ne => |cc| comptime &.{ .{
1505924085 .required_features = .{ .avx2, null, null, null },
15060 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24086 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1506124087 .patterns = &.{
15062 .{ .src = .{ .to_ymm, .mem } },
15063 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15064 .{ .src = .{ .to_ymm, .to_ymm } },
24088 .{ .src = .{ .to_ymm, .mem, .none } },
24089 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
24090 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1506524091 },
1506624092 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1506724093 .kind = .all,
......@@ -15077,11 +24103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1507724103 } },
1507824104 }, .{
1507924105 .required_features = .{ .avx2, null, null, null },
15080 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24106 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1508124107 .patterns = &.{
15082 .{ .src = .{ .to_ymm, .mem } },
15083 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15084 .{ .src = .{ .to_ymm, .to_ymm } },
24108 .{ .src = .{ .to_ymm, .mem, .none } },
24109 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
24110 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1508524111 },
1508624112 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1508724113 .kind = .all,
......@@ -15097,11 +24123,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1509724123 } },
1509824124 }, .{
1509924125 .required_features = .{ .avx2, null, null, null },
15100 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24126 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1510124127 .patterns = &.{
15102 .{ .src = .{ .to_ymm, .mem } },
15103 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15104 .{ .src = .{ .to_ymm, .to_ymm } },
24128 .{ .src = .{ .to_ymm, .mem, .none } },
24129 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
24130 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1510524131 },
1510624132 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1510724133 .kind = .all,
......@@ -15117,11 +24143,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1511724143 } },
1511824144 }, .{
1511924145 .required_features = .{ .avx2, null, null, null },
15120 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
24146 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1512124147 .patterns = &.{
15122 .{ .src = .{ .to_ymm, .mem } },
15123 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
15124 .{ .src = .{ .to_ymm, .to_ymm } },
24148 .{ .src = .{ .to_ymm, .mem, .none } },
24149 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
24150 .{ .src = .{ .to_ymm, .to_ymm, .none } },
1512524151 },
1512624152 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1512724153 .kind = .all,
......@@ -15137,11 +24163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1513724163 } },
1513824164 }, .{
1513924165 .required_features = .{ .avx, null, null, null },
15140 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24166 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1514124167 .patterns = &.{
15142 .{ .src = .{ .to_xmm, .mem } },
15143 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15144 .{ .src = .{ .to_xmm, .to_xmm } },
24168 .{ .src = .{ .to_xmm, .mem, .none } },
24169 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
24170 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1514524171 },
1514624172 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1514724173 .kind = .all,
......@@ -15157,11 +24183,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1515724183 } },
1515824184 }, .{
1515924185 .required_features = .{ .avx, null, null, null },
15160 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24186 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1516124187 .patterns = &.{
15162 .{ .src = .{ .to_xmm, .mem } },
15163 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15164 .{ .src = .{ .to_xmm, .to_xmm } },
24188 .{ .src = .{ .to_xmm, .mem, .none } },
24189 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
24190 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1516524191 },
1516624192 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1516724193 .kind = .all,
......@@ -15177,11 +24203,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1517724203 } },
1517824204 }, .{
1517924205 .required_features = .{ .avx, null, null, null },
15180 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24206 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1518124207 .patterns = &.{
15182 .{ .src = .{ .to_xmm, .mem } },
15183 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15184 .{ .src = .{ .to_xmm, .to_xmm } },
24208 .{ .src = .{ .to_xmm, .mem, .none } },
24209 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
24210 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1518524211 },
1518624212 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1518724213 .kind = .all,
......@@ -15197,11 +24223,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1519724223 } },
1519824224 }, .{
1519924225 .required_features = .{ .avx, null, null, null },
15200 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
24226 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1520124227 .patterns = &.{
15202 .{ .src = .{ .to_xmm, .mem } },
15203 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
15204 .{ .src = .{ .to_xmm, .to_xmm } },
24228 .{ .src = .{ .to_xmm, .mem, .none } },
24229 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
24230 .{ .src = .{ .to_xmm, .to_xmm, .none } },
1520524231 },
1520624232 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
1520724233 .kind = .all,
......@@ -15217,11 +24243,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1521724243 } },
1521824244 }, .{
1521924245 .required_features = .{ .sse2, null, null, null },
15220 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24246 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1522124247 .patterns = &.{
15222 .{ .src = .{ .to_mut_xmm, .mem } },
15223 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15224 .{ .src = .{ .to_mut_xmm, .to_xmm } },
24248 .{ .src = .{ .to_mut_xmm, .mem, .none } },
24249 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
24250 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1522524251 },
1522624252 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1522724253 .kind = .all,
......@@ -15237,11 +24263,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1523724263 } },
1523824264 }, .{
1523924265 .required_features = .{ .sse2, null, null, null },
15240 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24266 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1524124267 .patterns = &.{
15242 .{ .src = .{ .to_mut_xmm, .mem } },
15243 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15244 .{ .src = .{ .to_mut_xmm, .to_xmm } },
24268 .{ .src = .{ .to_mut_xmm, .mem, .none } },
24269 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
24270 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1524524271 },
1524624272 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1524724273 .kind = .all,
......@@ -15257,11 +24283,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1525724283 } },
1525824284 }, .{
1525924285 .required_features = .{ .sse2, null, null, null },
15260 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24286 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1526124287 .patterns = &.{
15262 .{ .src = .{ .to_mut_xmm, .mem } },
15263 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15264 .{ .src = .{ .to_mut_xmm, .to_xmm } },
24288 .{ .src = .{ .to_mut_xmm, .mem, .none } },
24289 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
24290 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1526524291 },
1526624292 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1526724293 .kind = .all,
......@@ -15277,11 +24303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1527724303 } },
1527824304 }, .{
1527924305 .required_features = .{ .sse4_1, null, null, null },
15280 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
24306 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1528124307 .patterns = &.{
15282 .{ .src = .{ .to_mut_xmm, .mem } },
15283 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
15284 .{ .src = .{ .to_mut_xmm, .to_xmm } },
24308 .{ .src = .{ .to_mut_xmm, .mem, .none } },
24309 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
24310 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
1528524311 },
1528624312 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1528724313 .kind = .all,
......@@ -15297,11 +24323,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1529724323 } },
1529824324 }, .{
1529924325 .required_features = .{ .mmx, null, null, null },
15300 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24326 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1530124327 .patterns = &.{
15302 .{ .src = .{ .to_mut_mm, .mem } },
15303 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15304 .{ .src = .{ .to_mut_mm, .to_mm } },
24328 .{ .src = .{ .to_mut_mm, .mem, .none } },
24329 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
24330 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1530524331 },
1530624332 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1530724333 .kind = .all,
......@@ -15317,11 +24343,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1531724343 } },
1531824344 }, .{
1531924345 .required_features = .{ .mmx, null, null, null },
15320 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24346 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1532124347 .patterns = &.{
15322 .{ .src = .{ .to_mut_mm, .mem } },
15323 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15324 .{ .src = .{ .to_mut_mm, .to_mm } },
24348 .{ .src = .{ .to_mut_mm, .mem, .none } },
24349 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
24350 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1532524351 },
1532624352 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1532724353 .kind = .all,
......@@ -15337,11 +24363,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1533724363 } },
1533824364 }, .{
1533924365 .required_features = .{ .mmx, null, null, null },
15340 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24366 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1534124367 .patterns = &.{
15342 .{ .src = .{ .to_mut_mm, .mem } },
15343 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
15344 .{ .src = .{ .to_mut_mm, .to_mm } },
24368 .{ .src = .{ .to_mut_mm, .mem, .none } },
24369 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
24370 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
1534524371 },
1534624372 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
1534724373 .kind = .all,
......@@ -15356,17 +24382,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1535624382 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
1535724383 } },
1535824384 }, .{
15359 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } },
24385 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
1536024386 .patterns = &.{
15361 .{ .src = .{ .mut_mem, .imm8 } },
15362 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },
15363 .{ .src = .{ .to_mut_gpr, .imm8 } },
15364 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },
15365 .{ .src = .{ .mut_mem, .to_gpr } },
15366 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15367 .{ .src = .{ .to_mut_gpr, .mem } },
15368 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15369 .{ .src = .{ .to_mut_gpr, .to_gpr } },
24387 .{ .src = .{ .mut_mem, .imm8, .none } },
24388 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
24389 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
24390 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24391 .{ .src = .{ .mut_mem, .to_gpr, .none } },
24392 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
24393 .{ .src = .{ .to_mut_gpr, .mem, .none } },
24394 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24395 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1537024396 },
1537124397 .dst_temps = .{.{ .ref = .src0 }},
1537224398 .clobbers = .{ .eflags = true },
......@@ -15381,17 +24407,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1538124407 },
1538224408 } },
1538324409 }, .{
15384 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } },
24410 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
1538524411 .patterns = &.{
15386 .{ .src = .{ .mut_mem, .imm16 } },
15387 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },
15388 .{ .src = .{ .to_mut_gpr, .imm16 } },
15389 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },
15390 .{ .src = .{ .mut_mem, .to_gpr } },
15391 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15392 .{ .src = .{ .to_mut_gpr, .mem } },
15393 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15394 .{ .src = .{ .to_mut_gpr, .to_gpr } },
24412 .{ .src = .{ .mut_mem, .imm16, .none } },
24413 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
24414 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
24415 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24416 .{ .src = .{ .mut_mem, .to_gpr, .none } },
24417 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
24418 .{ .src = .{ .to_mut_gpr, .mem, .none } },
24419 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24420 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1539524421 },
1539624422 .dst_temps = .{.{ .ref = .src0 }},
1539724423 .clobbers = .{ .eflags = true },
......@@ -15406,17 +24432,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1540624432 },
1540724433 } },
1540824434 }, .{
15409 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } },
24435 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
1541024436 .patterns = &.{
15411 .{ .src = .{ .mut_mem, .imm32 } },
15412 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },
15413 .{ .src = .{ .to_mut_gpr, .imm32 } },
15414 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
15415 .{ .src = .{ .mut_mem, .to_gpr } },
15416 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15417 .{ .src = .{ .to_mut_gpr, .mem } },
15418 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15419 .{ .src = .{ .to_mut_gpr, .to_gpr } },
24437 .{ .src = .{ .mut_mem, .imm32, .none } },
24438 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
24439 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
24440 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24441 .{ .src = .{ .mut_mem, .to_gpr, .none } },
24442 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
24443 .{ .src = .{ .to_mut_gpr, .mem, .none } },
24444 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24445 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1542024446 },
1542124447 .dst_temps = .{.{ .ref = .src0 }},
1542224448 .clobbers = .{ .eflags = true },
......@@ -15432,17 +24458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1543224458 } },
1543324459 }, .{
1543424460 .required_features = .{ .@"64bit", null, null, null },
15435 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword } },
24461 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any },
1543624462 .patterns = &.{
15437 .{ .src = .{ .mut_mem, .simm32 } },
15438 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },
15439 .{ .src = .{ .to_mut_gpr, .simm32 } },
15440 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },
15441 .{ .src = .{ .mut_mem, .to_gpr } },
15442 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },
15443 .{ .src = .{ .to_mut_gpr, .mem } },
15444 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
15445 .{ .src = .{ .to_mut_gpr, .to_gpr } },
24463 .{ .src = .{ .mut_mem, .simm32, .none } },
24464 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
24465 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
24466 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24467 .{ .src = .{ .mut_mem, .to_gpr, .none } },
24468 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
24469 .{ .src = .{ .to_mut_gpr, .mem, .none } },
24470 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
24471 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1544624472 },
1544724473 .dst_temps = .{.{ .ref = .src0 }},
1544824474 .clobbers = .{ .eflags = true },
......@@ -15457,9 +24483,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1545724483 },
1545824484 } },
1545924485 }, .{
15460 .src_constraints = .{ .any_bool_vec, .any_bool_vec },
24486 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
1546124487 .patterns = &.{
15462 .{ .src = .{ .to_mem, .to_mem } },
24488 .{ .src = .{ .to_mem, .to_mem, .none } },
1546324489 },
1546424490 .extra_temps = .{
1546524491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15496,9 +24522,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1549624522 } },
1549724523 }, .{
1549824524 .required_features = .{ .avx2, null, null, null },
15499 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24525 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1550024526 .patterns = &.{
15501 .{ .src = .{ .to_mem, .to_mem } },
24527 .{ .src = .{ .to_mem, .to_mem, .none } },
1550224528 },
1550324529 .extra_temps = .{
1550424530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15541,9 +24567,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1554124567 } },
1554224568 }, .{
1554324569 .required_features = .{ .avx2, null, null, null },
15544 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24570 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1554524571 .patterns = &.{
15546 .{ .src = .{ .to_mem, .to_mem } },
24572 .{ .src = .{ .to_mem, .to_mem, .none } },
1554724573 },
1554824574 .extra_temps = .{
1554924575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15588,9 +24614,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1558824614 } },
1558924615 }, .{
1559024616 .required_features = .{ .avx2, null, null, null },
15591 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24617 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1559224618 .patterns = &.{
15593 .{ .src = .{ .to_mem, .to_mem } },
24619 .{ .src = .{ .to_mem, .to_mem, .none } },
1559424620 },
1559524621 .extra_temps = .{
1559624622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15633,9 +24659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1563324659 } },
1563424660 }, .{
1563524661 .required_features = .{ .avx2, null, null, null },
15636 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
24662 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1563724663 .patterns = &.{
15638 .{ .src = .{ .to_mem, .to_mem } },
24664 .{ .src = .{ .to_mem, .to_mem, .none } },
1563924665 },
1564024666 .extra_temps = .{
1564124667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15702,9 +24728,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1570224728 } },
1570324729 }, .{
1570424730 .required_features = .{ .avx, null, null, null },
15705 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24731 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1570624732 .patterns = &.{
15707 .{ .src = .{ .to_mem, .to_mem } },
24733 .{ .src = .{ .to_mem, .to_mem, .none } },
1570824734 },
1570924735 .extra_temps = .{
1571024736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15747,9 +24773,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1574724773 } },
1574824774 }, .{
1574924775 .required_features = .{ .avx, null, null, null },
15750 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
24776 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1575124777 .patterns = &.{
15752 .{ .src = .{ .to_mem, .to_mem } },
24778 .{ .src = .{ .to_mem, .to_mem, .none } },
1575324779 },
1575424780 .extra_temps = .{
1575524781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15794,9 +24820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1579424820 } },
1579524821 }, .{
1579624822 .required_features = .{ .avx, null, null, null },
15797 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
24823 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1579824824 .patterns = &.{
15799 .{ .src = .{ .to_mem, .to_mem } },
24825 .{ .src = .{ .to_mem, .to_mem, .none } },
1580024826 },
1580124827 .extra_temps = .{
1580224828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15863,9 +24889,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1586324889 } },
1586424890 }, .{
1586524891 .required_features = .{ .avx, null, null, null },
15866 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
24892 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1586724893 .patterns = &.{
15868 .{ .src = .{ .to_mem, .to_mem } },
24894 .{ .src = .{ .to_mem, .to_mem, .none } },
1586924895 },
1587024896 .extra_temps = .{
1587124897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15932,9 +24958,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1593224958 } },
1593324959 }, .{
1593424960 .required_features = .{ .sse2, null, null, null },
15935 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
24961 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1593624962 .patterns = &.{
15937 .{ .src = .{ .to_mem, .to_mem } },
24963 .{ .src = .{ .to_mem, .to_mem, .none } },
1593824964 },
1593924965 .extra_temps = .{
1594024966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -15977,9 +25003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1597725003 } },
1597825004 }, .{
1597925005 .required_features = .{ .sse2, null, null, null },
15980 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
25006 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1598125007 .patterns = &.{
15982 .{ .src = .{ .to_mem, .to_mem } },
25008 .{ .src = .{ .to_mem, .to_mem, .none } },
1598325009 },
1598425010 .extra_temps = .{
1598525011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16024,9 +25050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1602425050 } },
1602525051 }, .{
1602625052 .required_features = .{ .sse2, null, null, null },
16027 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
25053 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1602825054 .patterns = &.{
16029 .{ .src = .{ .to_mem, .to_mem } },
25055 .{ .src = .{ .to_mem, .to_mem, .none } },
1603025056 },
1603125057 .extra_temps = .{
1603225058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16093,9 +25119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1609325119 } },
1609425120 }, .{
1609525121 .required_features = .{ .sse4_1, null, null, null },
16096 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
25122 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1609725123 .patterns = &.{
16098 .{ .src = .{ .to_mem, .to_mem } },
25124 .{ .src = .{ .to_mem, .to_mem, .none } },
1609925125 },
1610025126 .extra_temps = .{
1610125127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16162,9 +25188,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1616225188 } },
1616325189 }, .{
1616425190 .required_features = .{ .sse, .mmx, null, null },
16165 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
25191 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1616625192 .patterns = &.{
16167 .{ .src = .{ .to_mem, .to_mem } },
25193 .{ .src = .{ .to_mem, .to_mem, .none } },
1616825194 },
1616925195 .extra_temps = .{
1617025196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16207,9 +25233,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1620725233 } },
1620825234 }, .{
1620925235 .required_features = .{ .sse, .mmx, null, null },
16210 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
25236 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1621125237 .patterns = &.{
16212 .{ .src = .{ .to_mem, .to_mem } },
25238 .{ .src = .{ .to_mem, .to_mem, .none } },
1621325239 },
1621425240 .extra_temps = .{
1621525241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16280,9 +25306,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1628025306 } },
1628125307 }, .{
1628225308 .required_features = .{ .sse, .mmx, null, null },
16283 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
25309 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1628425310 .patterns = &.{
16285 .{ .src = .{ .to_mem, .to_mem } },
25311 .{ .src = .{ .to_mem, .to_mem, .none } },
1628625312 },
1628725313 .extra_temps = .{
1628825314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16354,10 +25380,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1635425380 },
1635525381 } },
1635625382 }, .{
16357 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
25383 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1635825384 .dst_constraints = .{.{ .bool_vec = .byte }},
1635925385 .patterns = &.{
16360 .{ .src = .{ .to_mem, .to_mem } },
25386 .{ .src = .{ .to_mem, .to_mem, .none } },
1636125387 },
1636225388 .extra_temps = .{
1636325389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16386,10 +25412,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1638625412 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1638725413 } },
1638825414 }, .{
16389 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
25415 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1639025416 .dst_constraints = .{.{ .bool_vec = .byte }},
1639125417 .patterns = &.{
16392 .{ .src = .{ .to_mem, .to_mem } },
25418 .{ .src = .{ .to_mem, .to_mem, .none } },
1639325419 },
1639425420 .extra_temps = .{
1639525421 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16418,10 +25444,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1641825444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1641925445 } },
1642025446 }, .{
16421 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
25447 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1642225448 .dst_constraints = .{.{ .bool_vec = .byte }},
1642325449 .patterns = &.{
16424 .{ .src = .{ .to_mem, .to_mem } },
25450 .{ .src = .{ .to_mem, .to_mem, .none } },
1642525451 },
1642625452 .extra_temps = .{
1642725453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16451,10 +25477,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1645125477 } },
1645225478 }, .{
1645325479 .required_features = .{ .@"64bit", null, null, null },
16454 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
25480 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1645525481 .dst_constraints = .{.{ .bool_vec = .byte }},
1645625482 .patterns = &.{
16457 .{ .src = .{ .to_mem, .to_mem } },
25483 .{ .src = .{ .to_mem, .to_mem, .none } },
1645825484 },
1645925485 .extra_temps = .{
1646025486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16483,10 +25509,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1648325509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1648425510 } },
1648525511 }, .{
16486 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
25512 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
1648725513 .dst_constraints = .{.{ .bool_vec = .byte }},
1648825514 .patterns = &.{
16489 .{ .src = .{ .to_mem, .to_mem } },
25515 .{ .src = .{ .to_mem, .to_mem, .none } },
1649025516 },
1649125517 .extra_temps = .{
1649225518 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16522,10 +25548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1652225548 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1652325549 } },
1652425550 }, .{
16525 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
25551 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1652625552 .dst_constraints = .{.{ .bool_vec = .dword }},
1652725553 .patterns = &.{
16528 .{ .src = .{ .to_mem, .to_mem } },
25554 .{ .src = .{ .to_mem, .to_mem, .none } },
1652925555 },
1653025556 .extra_temps = .{
1653125557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16555,10 +25581,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1655525581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1655625582 } },
1655725583 }, .{
16558 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
25584 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1655925585 .dst_constraints = .{.{ .bool_vec = .dword }},
1656025586 .patterns = &.{
16561 .{ .src = .{ .to_mem, .to_mem } },
25587 .{ .src = .{ .to_mem, .to_mem, .none } },
1656225588 },
1656325589 .extra_temps = .{
1656425590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16588,10 +25614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1658825614 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1658925615 } },
1659025616 }, .{
16591 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
25617 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1659225618 .dst_constraints = .{.{ .bool_vec = .dword }},
1659325619 .patterns = &.{
16594 .{ .src = .{ .to_mem, .to_mem } },
25620 .{ .src = .{ .to_mem, .to_mem, .none } },
1659525621 },
1659625622 .extra_temps = .{
1659725623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16622,10 +25648,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1662225648 } },
1662325649 }, .{
1662425650 .required_features = .{ .@"64bit", null, null, null },
16625 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
25651 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1662625652 .dst_constraints = .{.{ .bool_vec = .dword }},
1662725653 .patterns = &.{
16628 .{ .src = .{ .to_mem, .to_mem } },
25654 .{ .src = .{ .to_mem, .to_mem, .none } },
1662925655 },
1663025656 .extra_temps = .{
1663125657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16655,10 +25681,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1665525681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1665625682 } },
1665725683 }, .{
16658 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
25684 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
1665925685 .dst_constraints = .{.{ .bool_vec = .dword }},
1666025686 .patterns = &.{
16661 .{ .src = .{ .to_mem, .to_mem } },
25687 .{ .src = .{ .to_mem, .to_mem, .none } },
1666225688 },
1666325689 .extra_temps = .{
1666425690 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16696,10 +25722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1669625722 } },
1669725723 }, .{
1669825724 .required_features = .{ .@"64bit", null, null, null },
16699 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
25725 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1670025726 .dst_constraints = .{.{ .bool_vec = .qword }},
1670125727 .patterns = &.{
16702 .{ .src = .{ .to_mem, .to_mem } },
25728 .{ .src = .{ .to_mem, .to_mem, .none } },
1670325729 },
1670425730 .extra_temps = .{
1670525731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16730,10 +25756,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1673025756 } },
1673125757 }, .{
1673225758 .required_features = .{ .@"64bit", null, null, null },
16733 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
25759 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
1673425760 .dst_constraints = .{.{ .bool_vec = .qword }},
1673525761 .patterns = &.{
16736 .{ .src = .{ .to_mem, .to_mem } },
25762 .{ .src = .{ .to_mem, .to_mem, .none } },
1673725763 },
1673825764 .extra_temps = .{
1673925765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16763,10 +25789,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1676325789 } },
1676425790 }, .{
1676525791 .required_features = .{ .@"64bit", null, null, null },
16766 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
25792 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
1676725793 .dst_constraints = .{.{ .bool_vec = .qword }},
1676825794 .patterns = &.{
16769 .{ .src = .{ .to_mem, .to_mem } },
25795 .{ .src = .{ .to_mem, .to_mem, .none } },
1677025796 },
1677125797 .extra_temps = .{
1677225798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16797,10 +25823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1679725823 } },
1679825824 }, .{
1679925825 .required_features = .{ .@"64bit", null, null, null },
16800 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
25826 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
1680125827 .dst_constraints = .{.{ .bool_vec = .qword }},
1680225828 .patterns = &.{
16803 .{ .src = .{ .to_mem, .to_mem } },
25829 .{ .src = .{ .to_mem, .to_mem, .none } },
1680425830 },
1680525831 .extra_temps = .{
1680625832 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16831,10 +25857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1683125857 } },
1683225858 }, .{
1683325859 .required_features = .{ .@"64bit", null, null, null },
16834 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
25860 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
1683525861 .dst_constraints = .{.{ .bool_vec = .qword }},
1683625862 .patterns = &.{
16837 .{ .src = .{ .to_mem, .to_mem } },
25863 .{ .src = .{ .to_mem, .to_mem, .none } },
1683825864 },
1683925865 .extra_temps = .{
1684025866 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -16871,9 +25897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1687125897 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1687225898 } },
1687325899 }, .{
16874 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
25900 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
1687525901 .patterns = &.{
16876 .{ .src = .{ .to_mem, .to_mem } },
25902 .{ .src = .{ .to_mem, .to_mem, .none } },
1687725903 },
1687825904 .extra_temps = .{
1687925905 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -16917,9 +25943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1691725943 .src_constraints = .{
1691825944 .{ .scalar_float = .{ .of = .word, .is = .word } },
1691925945 .{ .scalar_float = .{ .of = .word, .is = .word } },
25946 .any,
1692025947 },
1692125948 .patterns = &.{
16922 .{ .src = .{ .to_sse, .to_sse } },
25949 .{ .src = .{ .to_sse, .to_sse, .none } },
1692325950 },
1692425951 .extra_temps = .{
1692525952 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
......@@ -16940,7 +25967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1694025967 .each = .{ .once = &.{
1694125968 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
1694225969 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
16943 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) {
25970 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) {
1694425971 else => unreachable,
1694525972 .e => .eq,
1694625973 .ne => .neq,
......@@ -16951,12 +25978,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1695125978 .src_constraints = .{
1695225979 .{ .scalar_float = .{ .of = .qword, .is = .word } },
1695325980 .{ .scalar_float = .{ .of = .qword, .is = .word } },
25981 .any,
1695425982 },
1695525983 .patterns = &.{
16956 .{ .src = .{ .mem, .mem } },
16957 .{ .src = .{ .sse, .mem } },
16958 .{ .src = .{ .mem, .sse } },
16959 .{ .src = .{ .to_sse, .to_sse } },
25984 .{ .src = .{ .mem, .mem, .none } },
25985 .{ .src = .{ .sse, .mem, .none } },
25986 .{ .src = .{ .mem, .sse, .none } },
25987 .{ .src = .{ .to_sse, .to_sse, .none } },
1696025988 },
1696125989 .extra_temps = .{
1696225990 .{ .kind = .{ .rc = .sse } },
......@@ -16988,12 +26016,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1698826016 .src_constraints = .{
1698926017 .{ .scalar_float = .{ .of = .xword, .is = .word } },
1699026018 .{ .scalar_float = .{ .of = .xword, .is = .word } },
26019 .any,
1699126020 },
1699226021 .patterns = &.{
16993 .{ .src = .{ .mem, .mem } },
16994 .{ .src = .{ .to_sse, .mem } },
16995 .{ .src = .{ .mem, .to_sse } },
16996 .{ .src = .{ .to_sse, .to_sse } },
26022 .{ .src = .{ .mem, .mem, .none } },
26023 .{ .src = .{ .to_sse, .mem, .none } },
26024 .{ .src = .{ .mem, .to_sse, .none } },
26025 .{ .src = .{ .to_sse, .to_sse, .none } },
1699726026 },
1699826027 .extra_temps = .{
1699926028 .{ .kind = .{ .rc = .sse } },
......@@ -17025,11 +26054,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1702526054 .src_constraints = .{
1702626055 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
1702726056 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
26057 .any,
1702826058 },
1702926059 .patterns = &.{
17030 .{ .src = .{ .to_sse, .mem } },
17031 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17032 .{ .src = .{ .to_sse, .to_sse } },
26060 .{ .src = .{ .to_sse, .mem, .none } },
26061 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26062 .{ .src = .{ .to_sse, .to_sse, .none } },
1703326063 },
1703426064 .dst_temps = .{.{ .mut_rc_mask = .{
1703526065 .ref = .src0,
......@@ -17037,7 +26067,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1703726067 .info = .{ .kind = .all, .scalar = .dword },
1703826068 } }},
1703926069 .each = .{ .once = &.{
17040 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
26070 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
1704126071 else => unreachable,
1704226072 .e => .eq,
1704326073 .ne => .neq,
......@@ -17048,18 +26078,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1704826078 .src_constraints = .{
1704926079 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
1705026080 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
26081 .any,
1705126082 },
1705226083 .patterns = &.{
17053 .{ .src = .{ .to_mut_sse, .mem } },
17054 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17055 .{ .src = .{ .to_mut_sse, .to_sse } },
26084 .{ .src = .{ .to_mut_sse, .mem, .none } },
26085 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
26086 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1705626087 },
1705726088 .dst_temps = .{.{ .ref_mask = .{
1705826089 .ref = .src0,
1705926090 .info = .{ .kind = .all, .scalar = .dword },
1706026091 } }},
1706126092 .each = .{ .once = &.{
17062 .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) {
26093 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
1706326094 else => unreachable,
1706426095 .e => .eq,
1706526096 .ne => .neq,
......@@ -17070,11 +26101,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1707026101 .src_constraints = .{
1707126102 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
1707226103 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
26104 .any,
1707326105 },
1707426106 .patterns = &.{
17075 .{ .src = .{ .to_sse, .mem } },
17076 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17077 .{ .src = .{ .to_sse, .to_sse } },
26107 .{ .src = .{ .to_sse, .mem, .none } },
26108 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26109 .{ .src = .{ .to_sse, .to_sse, .none } },
1707826110 },
1707926111 .dst_temps = .{.{ .mut_rc_mask = .{
1708026112 .ref = .src0,
......@@ -17093,18 +26125,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1709326125 .src_constraints = .{
1709426126 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
1709526127 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
26128 .any,
1709626129 },
1709726130 .patterns = &.{
17098 .{ .src = .{ .to_mut_sse, .mem } },
17099 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17100 .{ .src = .{ .to_mut_sse, .to_sse } },
26131 .{ .src = .{ .to_mut_sse, .mem, .none } },
26132 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
26133 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1710126134 },
1710226135 .dst_temps = .{.{ .ref_mask = .{
1710326136 .ref = .src0,
1710426137 .info = .{ .kind = .all, .scalar = .dword },
1710526138 } }},
1710626139 .each = .{ .once = &.{
17107 .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) {
26140 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
1710826141 else => unreachable,
1710926142 .e => .eq,
1711026143 .ne => .neq,
......@@ -17115,11 +26148,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1711526148 .src_constraints = .{
1711626149 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
1711726150 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
26151 .any,
1711826152 },
1711926153 .patterns = &.{
17120 .{ .src = .{ .to_sse, .mem } },
17121 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17122 .{ .src = .{ .to_sse, .to_sse } },
26154 .{ .src = .{ .to_sse, .mem, .none } },
26155 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26156 .{ .src = .{ .to_sse, .to_sse, .none } },
1712326157 },
1712426158 .dst_temps = .{.{ .mut_rc_mask = .{
1712526159 .ref = .src0,
......@@ -17138,11 +26172,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1713826172 .src_constraints = .{
1713926173 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
1714026174 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
26175 .any,
1714126176 },
1714226177 .patterns = &.{
17143 .{ .src = .{ .to_sse, .mem } },
17144 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17145 .{ .src = .{ .to_sse, .to_sse } },
26178 .{ .src = .{ .to_sse, .mem, .none } },
26179 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26180 .{ .src = .{ .to_sse, .to_sse, .none } },
1714626181 },
1714726182 .dst_temps = .{.{ .mut_rc_mask = .{
1714826183 .ref = .src0,
......@@ -17150,7 +26185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1715026185 .info = .{ .kind = .all, .scalar = .qword },
1715126186 } }},
1715226187 .each = .{ .once = &.{
17153 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {
26188 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
1715426189 else => unreachable,
1715526190 .e => .eq,
1715626191 .ne => .neq,
......@@ -17161,18 +26196,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1716126196 .src_constraints = .{
1716226197 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
1716326198 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
26199 .any,
1716426200 },
1716526201 .patterns = &.{
17166 .{ .src = .{ .to_mut_sse, .mem } },
17167 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17168 .{ .src = .{ .to_mut_sse, .to_sse } },
26202 .{ .src = .{ .to_mut_sse, .mem, .none } },
26203 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
26204 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1716926205 },
1717026206 .dst_temps = .{.{ .ref_mask = .{
1717126207 .ref = .src0,
1717226208 .info = .{ .kind = .all, .scalar = .qword },
1717326209 } }},
1717426210 .each = .{ .once = &.{
17175 .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) {
26211 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
1717626212 else => unreachable,
1717726213 .e => .eq,
1717826214 .ne => .neq,
......@@ -17183,11 +26219,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1718326219 .src_constraints = .{
1718426220 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
1718526221 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
26222 .any,
1718626223 },
1718726224 .patterns = &.{
17188 .{ .src = .{ .to_sse, .mem } },
17189 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17190 .{ .src = .{ .to_sse, .to_sse } },
26225 .{ .src = .{ .to_sse, .mem, .none } },
26226 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26227 .{ .src = .{ .to_sse, .to_sse, .none } },
1719126228 },
1719226229 .dst_temps = .{.{ .mut_rc_mask = .{
1719326230 .ref = .src0,
......@@ -17206,18 +26243,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1720626243 .src_constraints = .{
1720726244 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
1720826245 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
26246 .any,
1720926247 },
1721026248 .patterns = &.{
17211 .{ .src = .{ .to_mut_sse, .mem } },
17212 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
17213 .{ .src = .{ .to_mut_sse, .to_sse } },
26249 .{ .src = .{ .to_mut_sse, .mem, .none } },
26250 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
26251 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
1721426252 },
1721526253 .dst_temps = .{.{ .ref_mask = .{
1721626254 .ref = .src0,
1721726255 .info = .{ .kind = .all, .scalar = .qword },
1721826256 } }},
1721926257 .each = .{ .once = &.{
17220 .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) {
26258 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
1722126259 else => unreachable,
1722226260 .e => .eq,
1722326261 .ne => .neq,
......@@ -17228,11 +26266,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1722826266 .src_constraints = .{
1722926267 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
1723026268 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
26269 .any,
1723126270 },
1723226271 .patterns = &.{
17233 .{ .src = .{ .to_sse, .mem } },
17234 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
17235 .{ .src = .{ .to_sse, .to_sse } },
26272 .{ .src = .{ .to_sse, .mem, .none } },
26273 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
26274 .{ .src = .{ .to_sse, .to_sse, .none } },
1723626275 },
1723726276 .dst_temps = .{.{ .mut_rc_mask = .{
1723826277 .ref = .src0,
......@@ -17251,15 +26290,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1725126290 .src_constraints = .{
1725226291 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
1725326292 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
26293 .any,
1725426294 },
1725526295 .patterns = &.{
17256 .{ .src = .{ .to_mem, .to_mem } },
26296 .{ .src = .{ .to_mem, .to_mem, .none } },
1725726297 },
1725826298 .extra_temps = .{
1725926299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1726026300 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17261 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
17262 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
26301 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
26302 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
1726326303 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1726426304 .unused,
1726526305 .unused,
......@@ -17289,15 +26329,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1728926329 .src_constraints = .{
1729026330 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
1729126331 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
26332 .any,
1729226333 },
1729326334 .patterns = &.{
17294 .{ .src = .{ .to_mem, .to_mem } },
26335 .{ .src = .{ .to_mem, .to_mem, .none } },
1729526336 },
1729626337 .extra_temps = .{
1729726338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1729826339 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17299 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
17300 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },
26340 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
26341 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
1730126342 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1730226343 .unused,
1730326344 .unused,
......@@ -17327,21 +26368,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1732726368 .src_constraints = .{
1732826369 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1732926370 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26371 .any,
1733026372 },
1733126373 .dst_constraints = .{.{ .bool_vec = .dword }},
1733226374 .patterns = &.{
17333 .{ .src = .{ .to_mem, .to_mem } },
26375 .{ .src = .{ .to_mem, .to_mem, .none } },
1733426376 },
1733526377 .call_frame = .{ .alignment = .@"16" },
1733626378 .extra_temps = .{
1733726379 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1733826380 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1733926381 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17341 else => unreachable,
17342 .e => "__eqhf2",
17343 .ne => "__nehf2",
17344 } } } },
26382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1734526383 .{ .type = .i32, .kind = .{ .reg = .eax } },
1734626384 .{ .type = .u8, .kind = .{ .reg = .cl } },
1734726385 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17372,21 +26410,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1737226410 .src_constraints = .{
1737326411 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1737426412 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26413 .any,
1737526414 },
1737626415 .dst_constraints = .{.{ .bool_vec = .dword }},
1737726416 .patterns = &.{
17378 .{ .src = .{ .to_mem, .to_mem } },
26417 .{ .src = .{ .to_mem, .to_mem, .none } },
1737926418 },
1738026419 .call_frame = .{ .alignment = .@"16" },
1738126420 .extra_temps = .{
1738226421 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1738326422 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1738426423 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17386 else => unreachable,
17387 .e => "__eqhf2",
17388 .ne => "__nehf2",
17389 } } } },
26424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1739026425 .{ .type = .i32, .kind = .{ .reg = .eax } },
1739126426 .{ .type = .u8, .kind = .{ .reg = .cl } },
1739226427 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17417,21 +26452,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1741726452 .src_constraints = .{
1741826453 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1741926454 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26455 .any,
1742026456 },
1742126457 .dst_constraints = .{.{ .bool_vec = .dword }},
1742226458 .patterns = &.{
17423 .{ .src = .{ .to_mem, .to_mem } },
26459 .{ .src = .{ .to_mem, .to_mem, .none } },
1742426460 },
1742526461 .call_frame = .{ .alignment = .@"16" },
1742626462 .extra_temps = .{
1742726463 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1742826464 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1742926465 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17431 else => unreachable,
17432 .e => "__eqhf2",
17433 .ne => "__nehf2",
17434 } } } },
26466 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1743526467 .{ .type = .i32, .kind = .{ .reg = .eax } },
1743626468 .{ .type = .u8, .kind = .{ .reg = .cl } },
1743726469 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17463,21 +26495,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1746326495 .src_constraints = .{
1746426496 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1746526497 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26498 .any,
1746626499 },
1746726500 .dst_constraints = .{.{ .bool_vec = .dword }},
1746826501 .patterns = &.{
17469 .{ .src = .{ .to_mem, .to_mem } },
26502 .{ .src = .{ .to_mem, .to_mem, .none } },
1747026503 },
1747126504 .call_frame = .{ .alignment = .@"16" },
1747226505 .extra_temps = .{
1747326506 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1747426507 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1747526508 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17476 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17477 else => unreachable,
17478 .e => "__eqhf2",
17479 .ne => "__nehf2",
17480 } } } },
26509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1748126510 .{ .type = .i32, .kind = .{ .reg = .eax } },
1748226511 .{ .type = .u8, .kind = .{ .reg = .cl } },
1748326512 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17509,21 +26538,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1750926538 .src_constraints = .{
1751026539 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1751126540 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26541 .any,
1751226542 },
1751326543 .dst_constraints = .{.{ .bool_vec = .dword }},
1751426544 .patterns = &.{
17515 .{ .src = .{ .to_mem, .to_mem } },
26545 .{ .src = .{ .to_mem, .to_mem, .none } },
1751626546 },
1751726547 .call_frame = .{ .alignment = .@"16" },
1751826548 .extra_temps = .{
1751926549 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1752026550 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1752126551 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17523 else => unreachable,
17524 .e => "__eqhf2",
17525 .ne => "__nehf2",
17526 } } } },
26552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1752726553 .{ .type = .i32, .kind = .{ .reg = .eax } },
1752826554 .{ .type = .u8, .kind = .{ .reg = .cl } },
1752926555 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17557,21 +26583,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1755726583 .src_constraints = .{
1755826584 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1755926585 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26586 .any,
1756026587 },
1756126588 .dst_constraints = .{.{ .bool_vec = .dword }},
1756226589 .patterns = &.{
17563 .{ .src = .{ .to_mem, .to_mem } },
26590 .{ .src = .{ .to_mem, .to_mem, .none } },
1756426591 },
1756526592 .call_frame = .{ .alignment = .@"16" },
1756626593 .extra_temps = .{
1756726594 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1756826595 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1756926596 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17571 else => unreachable,
17572 .e => "__eqhf2",
17573 .ne => "__nehf2",
17574 } } } },
26597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1757526598 .{ .type = .i32, .kind = .{ .reg = .eax } },
1757626599 .{ .type = .u8, .kind = .{ .reg = .cl } },
1757726600 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -17605,9 +26628,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1760526628 .src_constraints = .{
1760626629 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1760726630 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26631 .any,
1760826632 },
1760926633 .patterns = &.{
17610 .{ .src = .{ .to_mem, .to_mem } },
26634 .{ .src = .{ .to_mem, .to_mem, .none } },
1761126635 },
1761226636 .call_frame = .{ .alignment = .@"16" },
1761326637 .extra_temps = .{
......@@ -17615,11 +26639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1761526639 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1761626640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1761726641 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17619 else => unreachable,
17620 .e => "__eqhf2",
17621 .ne => "__nehf2",
17622 } } } },
26642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1762326643 .{ .type = .i32, .kind = .{ .reg = .eax } },
1762426644 .{ .type = .u8, .kind = .{ .reg = .cl } },
1762526645 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17659,9 +26679,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1765926679 .src_constraints = .{
1766026680 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1766126681 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26682 .any,
1766226683 },
1766326684 .patterns = &.{
17664 .{ .src = .{ .to_mem, .to_mem } },
26685 .{ .src = .{ .to_mem, .to_mem, .none } },
1766526686 },
1766626687 .call_frame = .{ .alignment = .@"16" },
1766726688 .extra_temps = .{
......@@ -17669,11 +26690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1766926690 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1767026691 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1767126692 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17672 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17673 else => unreachable,
17674 .e => "__eqhf2",
17675 .ne => "__nehf2",
17676 } } } },
26693 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1767726694 .{ .type = .i32, .kind = .{ .reg = .eax } },
1767826695 .{ .type = .u8, .kind = .{ .reg = .cl } },
1767926696 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17713,9 +26730,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1771326730 .src_constraints = .{
1771426731 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1771526732 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26733 .any,
1771626734 },
1771726735 .patterns = &.{
17718 .{ .src = .{ .to_mem, .to_mem } },
26736 .{ .src = .{ .to_mem, .to_mem, .none } },
1771926737 },
1772026738 .call_frame = .{ .alignment = .@"16" },
1772126739 .extra_temps = .{
......@@ -17723,11 +26741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1772326741 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1772426742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1772526743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17726 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17727 else => unreachable,
17728 .e => "__eqhf2",
17729 .ne => "__nehf2",
17730 } } } },
26744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1773126745 .{ .type = .i32, .kind = .{ .reg = .eax } },
1773226746 .{ .type = .u8, .kind = .{ .reg = .cl } },
1773326747 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17768,9 +26782,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1776826782 .src_constraints = .{
1776926783 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1777026784 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26785 .any,
1777126786 },
1777226787 .patterns = &.{
17773 .{ .src = .{ .to_mem, .to_mem } },
26788 .{ .src = .{ .to_mem, .to_mem, .none } },
1777426789 },
1777526790 .call_frame = .{ .alignment = .@"16" },
1777626791 .extra_temps = .{
......@@ -17778,11 +26793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1777826793 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1777926794 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1778026795 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17782 else => unreachable,
17783 .e => "__eqhf2",
17784 .ne => "__nehf2",
17785 } } } },
26796 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1778626797 .{ .type = .i32, .kind = .{ .reg = .eax } },
1778726798 .{ .type = .u8, .kind = .{ .reg = .cl } },
1778826799 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17823,9 +26834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1782326834 .src_constraints = .{
1782426835 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1782526836 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26837 .any,
1782626838 },
1782726839 .patterns = &.{
17828 .{ .src = .{ .to_mem, .to_mem } },
26840 .{ .src = .{ .to_mem, .to_mem, .none } },
1782926841 },
1783026842 .call_frame = .{ .alignment = .@"16" },
1783126843 .extra_temps = .{
......@@ -17833,11 +26845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1783326845 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1783426846 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1783526847 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17837 else => unreachable,
17838 .e => "__eqhf2",
17839 .ne => "__nehf2",
17840 } } } },
26848 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1784126849 .{ .type = .i32, .kind = .{ .reg = .eax } },
1784226850 .{ .type = .u8, .kind = .{ .reg = .cl } },
1784326851 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17880,9 +26888,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1788026888 .src_constraints = .{
1788126889 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1788226890 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26891 .any,
1788326892 },
1788426893 .patterns = &.{
17885 .{ .src = .{ .to_mem, .to_mem } },
26894 .{ .src = .{ .to_mem, .to_mem, .none } },
1788626895 },
1788726896 .call_frame = .{ .alignment = .@"16" },
1788826897 .extra_temps = .{
......@@ -17890,11 +26899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1789026899 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1789126900 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1789226901 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
17894 else => unreachable,
17895 .e => "__eqhf2",
17896 .ne => "__nehf2",
17897 } } } },
26902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
1789826903 .{ .type = .i32, .kind = .{ .reg = .eax } },
1789926904 .{ .type = .u8, .kind = .{ .reg = .cl } },
1790026905 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -17937,9 +26942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1793726942 .src_constraints = .{
1793826943 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1793926944 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
26945 .any,
1794026946 },
1794126947 .patterns = &.{
17942 .{ .src = .{ .to_mem, .to_mem } },
26948 .{ .src = .{ .to_mem, .to_mem, .none } },
1794326949 },
1794426950 .extra_temps = .{
1794526951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -17974,9 +26980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1797426980 .src_constraints = .{
1797526981 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1797626982 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
26983 .any,
1797726984 },
1797826985 .patterns = &.{
17979 .{ .src = .{ .to_mem, .to_mem } },
26986 .{ .src = .{ .to_mem, .to_mem, .none } },
1798026987 },
1798126988 .extra_temps = .{
1798226989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18011,9 +27018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1801127018 .src_constraints = .{
1801227019 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1801327020 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27021 .any,
1801427022 },
1801527023 .patterns = &.{
18016 .{ .src = .{ .to_mem, .to_mem } },
27024 .{ .src = .{ .to_mem, .to_mem, .none } },
1801727025 },
1801827026 .extra_temps = .{
1801927027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18033,12 +27041,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1803327041 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1803427042 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1803527043 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
18036 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
27044 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
1803727045 else => unreachable,
1803827046 .e => .eq,
1803927047 .ne => .neq,
1804027048 }), ._ },
18041 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) {
27049 .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
1804227050 else => unreachable,
1804327051 .e => .eq,
1804427052 .ne => .neq,
......@@ -18056,9 +27064,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1805627064 .src_constraints = .{
1805727065 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
1805827066 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27067 .any,
1805927068 },
1806027069 .patterns = &.{
18061 .{ .src = .{ .to_mem, .to_mem } },
27070 .{ .src = .{ .to_mem, .to_mem, .none } },
1806227071 },
1806327072 .extra_temps = .{
1806427073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18077,14 +27086,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1807727086 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1807827087 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1807927088 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18080 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
27089 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
1808127090 else => unreachable,
1808227091 .e => .eq,
1808327092 .ne => .neq,
1808427093 }), ._ },
1808527094 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
1808627095 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },
18087 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) {
27096 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) {
1808827097 else => unreachable,
1808927098 .e => .eq,
1809027099 .ne => .neq,
......@@ -18102,9 +27111,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1810227111 .src_constraints = .{
1810327112 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
1810427113 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
27114 .any,
1810527115 },
1810627116 .patterns = &.{
18107 .{ .src = .{ .to_mem, .to_mem } },
27117 .{ .src = .{ .to_mem, .to_mem, .none } },
1810827118 },
1810927119 .extra_temps = .{
1811027120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18124,7 +27134,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1812427134 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
1812527135 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
1812627136 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },
18127 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .vp(switch (cc) {
27137 .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) {
1812827138 else => unreachable,
1812927139 .e => .eq,
1813027140 .ne => .neq,
......@@ -18135,7 +27145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1813527145 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
1813627146 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1813727147 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18138 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
27148 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
1813927149 else => unreachable,
1814027150 .e => .eq,
1814127151 .ne => .neq,
......@@ -18150,9 +27160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1815027160 .src_constraints = .{
1815127161 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
1815227162 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
27163 .any,
1815327164 },
1815427165 .patterns = &.{
18155 .{ .src = .{ .to_mem, .to_mem } },
27166 .{ .src = .{ .to_mem, .to_mem, .none } },
1815627167 },
1815727168 .extra_temps = .{
1815827169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18196,9 +27207,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1819627207 .src_constraints = .{
1819727208 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
1819827209 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
27210 .any,
1819927211 },
1820027212 .patterns = &.{
18201 .{ .src = .{ .to_mem, .to_mem } },
27213 .{ .src = .{ .to_mem, .to_mem, .none } },
1820227214 },
1820327215 .extra_temps = .{
1820427216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18242,9 +27254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1824227254 .src_constraints = .{
1824327255 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
1824427256 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
27257 .any,
1824527258 },
1824627259 .patterns = &.{
18247 .{ .src = .{ .to_mem, .to_mem } },
27260 .{ .src = .{ .to_mem, .to_mem, .none } },
1824827261 },
1824927262 .extra_temps = .{
1825027263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18291,9 +27304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1829127304 .src_constraints = .{
1829227305 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
1829327306 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
27307 .any,
1829427308 },
1829527309 .patterns = &.{
18296 .{ .src = .{ .to_mem, .to_mem } },
27310 .{ .src = .{ .to_mem, .to_mem, .none } },
1829727311 },
1829827312 .extra_temps = .{
1829927313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18313,7 +27327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1831327327 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
1831427328 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1831527329 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18316 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
27330 .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) {
1831727331 else => unreachable,
1831827332 .e => .eq,
1831927333 .ne => .neq,
......@@ -18340,9 +27354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1834027354 .src_constraints = .{
1834127355 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1834227356 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27357 .any,
1834327358 },
1834427359 .patterns = &.{
18345 .{ .src = .{ .to_mem, .to_mem } },
27360 .{ .src = .{ .to_mem, .to_mem, .none } },
1834627361 },
1834727362 .extra_temps = .{
1834827363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18350,8 +27365,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1835027365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1835127366 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1835227367 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18353 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18354 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27368 .{ .type = .f64, .kind = .{ .reg = .st6 } },
27369 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1835527370 .unused,
1835627371 .unused,
1835727372 },
......@@ -18399,9 +27414,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1839927414 .src_constraints = .{
1840027415 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1840127416 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27417 .any,
1840227418 },
1840327419 .patterns = &.{
18404 .{ .src = .{ .to_mem, .to_mem } },
27420 .{ .src = .{ .to_mem, .to_mem, .none } },
1840527421 },
1840627422 .extra_temps = .{
1840727423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18409,8 +27425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1840927425 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1841027426 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
1841127427 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18412 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18413 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27428 .{ .type = .f64, .kind = .{ .reg = .st6 } },
27429 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1841427430 .unused,
1841527431 .unused,
1841627432 },
......@@ -18458,17 +27474,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1845827474 .src_constraints = .{
1845927475 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
1846027476 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27477 .any,
1846127478 },
1846227479 .patterns = &.{
18463 .{ .src = .{ .to_mem, .to_mem } },
27480 .{ .src = .{ .to_mem, .to_mem, .none } },
1846427481 },
1846527482 .extra_temps = .{
1846627483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1846727484 .{ .type = .u32, .kind = .{ .reg = .rcx } },
1846827485 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1846927486 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18470 .{ .type = .f80, .kind = .{ .reg = .st6 } },
18471 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27487 .{ .type = .f64, .kind = .{ .reg = .st6 } },
27488 .{ .type = .f64, .kind = .{ .reg = .st7 } },
1847227489 .{ .type = .u8, .kind = .{ .reg = .ah } },
1847327490 .unused,
1847427491 .unused,
......@@ -18508,9 +27525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1850827525 .src_constraints = .{
1850927526 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1851027527 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27528 .any,
1851127529 },
1851227530 .patterns = &.{
18513 .{ .src = .{ .to_mem, .to_mem } },
27531 .{ .src = .{ .to_mem, .to_mem, .none } },
1851427532 },
1851527533 .extra_temps = .{
1851627534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18567,9 +27585,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1856727585 .src_constraints = .{
1856827586 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1856927587 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27588 .any,
1857027589 },
1857127590 .patterns = &.{
18572 .{ .src = .{ .to_mem, .to_mem } },
27591 .{ .src = .{ .to_mem, .to_mem, .none } },
1857327592 },
1857427593 .extra_temps = .{
1857527594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18626,9 +27645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1862627645 .src_constraints = .{
1862727646 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
1862827647 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27648 .any,
1862927649 },
1863027650 .patterns = &.{
18631 .{ .src = .{ .to_mem, .to_mem } },
27651 .{ .src = .{ .to_mem, .to_mem, .none } },
1863227652 },
1863327653 .extra_temps = .{
1863427654 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -18676,10 +27696,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1867627696 .src_constraints = .{
1867727697 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1867827698 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27699 .any,
1867927700 },
1868027701 .dst_constraints = .{.{ .bool_vec = .dword }},
1868127702 .patterns = &.{
18682 .{ .src = .{ .to_mem, .to_mem } },
27703 .{ .src = .{ .to_mem, .to_mem, .none } },
1868327704 },
1868427705 .call_frame = .{ .alignment = .@"16" },
1868527706 .extra_temps = .{
......@@ -18687,11 +27708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1868727708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1868827709 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1868927710 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18691 else => unreachable,
18692 .e => "__eqtf2",
18693 .ne => "__netf2",
18694 } } } },
27711 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1869527712 .{ .type = .i32, .kind = .{ .reg = .eax } },
1869627713 .{ .type = .u8, .kind = .{ .reg = .cl } },
1869727714 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18721,10 +27738,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1872127738 .src_constraints = .{
1872227739 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1872327740 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27741 .any,
1872427742 },
1872527743 .dst_constraints = .{.{ .bool_vec = .dword }},
1872627744 .patterns = &.{
18727 .{ .src = .{ .to_mem, .to_mem } },
27745 .{ .src = .{ .to_mem, .to_mem, .none } },
1872827746 },
1872927747 .call_frame = .{ .alignment = .@"16" },
1873027748 .extra_temps = .{
......@@ -18732,11 +27750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1873227750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1873327751 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1873427752 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18736 else => unreachable,
18737 .e => "__eqtf2",
18738 .ne => "__netf2",
18739 } } } },
27753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1874027754 .{ .type = .i32, .kind = .{ .reg = .eax } },
1874127755 .{ .type = .u8, .kind = .{ .reg = .cl } },
1874227756 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18766,10 +27780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1876627780 .src_constraints = .{
1876727781 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1876827782 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27783 .any,
1876927784 },
1877027785 .dst_constraints = .{.{ .bool_vec = .dword }},
1877127786 .patterns = &.{
18772 .{ .src = .{ .to_mem, .to_mem } },
27787 .{ .src = .{ .to_mem, .to_mem, .none } },
1877327788 },
1877427789 .call_frame = .{ .alignment = .@"16" },
1877527790 .extra_temps = .{
......@@ -18777,11 +27792,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1877727792 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1877827793 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1877927794 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18780 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18781 else => unreachable,
18782 .e => "__eqtf2",
18783 .ne => "__netf2",
18784 } } } },
27795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1878527796 .{ .type = .i32, .kind = .{ .reg = .eax } },
1878627797 .{ .type = .u8, .kind = .{ .reg = .cl } },
1878727798 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18811,10 +27822,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1881127822 .src_constraints = .{
1881227823 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1881327824 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27825 .any,
1881427826 },
1881527827 .dst_constraints = .{.{ .bool_vec = .dword }},
1881627828 .patterns = &.{
18817 .{ .src = .{ .to_mem, .to_mem } },
27829 .{ .src = .{ .to_mem, .to_mem, .none } },
1881827830 },
1881927831 .call_frame = .{ .alignment = .@"16" },
1882027832 .extra_temps = .{
......@@ -18822,11 +27834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1882227834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1882327835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1882427836 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18826 else => unreachable,
18827 .e => "__eqtf2",
18828 .ne => "__netf2",
18829 } } } },
27837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1883027838 .{ .type = .i32, .kind = .{ .reg = .eax } },
1883127839 .{ .type = .u8, .kind = .{ .reg = .cl } },
1883227840 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18856,10 +27864,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1885627864 .src_constraints = .{
1885727865 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1885827866 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27867 .any,
1885927868 },
1886027869 .dst_constraints = .{.{ .bool_vec = .dword }},
1886127870 .patterns = &.{
18862 .{ .src = .{ .to_mem, .to_mem } },
27871 .{ .src = .{ .to_mem, .to_mem, .none } },
1886327872 },
1886427873 .call_frame = .{ .alignment = .@"16" },
1886527874 .extra_temps = .{
......@@ -18867,11 +27876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1886727876 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1886827877 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1886927878 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18870 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18871 else => unreachable,
18872 .e => "__eqtf2",
18873 .ne => "__netf2",
18874 } } } },
27879 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1887527880 .{ .type = .i32, .kind = .{ .reg = .eax } },
1887627881 .{ .type = .u8, .kind = .{ .reg = .cl } },
1887727882 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18901,10 +27906,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1890127906 .src_constraints = .{
1890227907 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1890327908 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27909 .any,
1890427910 },
1890527911 .dst_constraints = .{.{ .bool_vec = .dword }},
1890627912 .patterns = &.{
18907 .{ .src = .{ .to_mem, .to_mem } },
27913 .{ .src = .{ .to_mem, .to_mem, .none } },
1890827914 },
1890927915 .call_frame = .{ .alignment = .@"16" },
1891027916 .extra_temps = .{
......@@ -18912,11 +27918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1891227918 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
1891327919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1891427920 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18915 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18916 else => unreachable,
18917 .e => "__eqtf2",
18918 .ne => "__netf2",
18919 } } } },
27921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1892027922 .{ .type = .i32, .kind = .{ .reg = .eax } },
1892127923 .{ .type = .u8, .kind = .{ .reg = .cl } },
1892227924 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -18946,9 +27948,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1894627948 .src_constraints = .{
1894727949 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1894827950 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27951 .any,
1894927952 },
1895027953 .patterns = &.{
18951 .{ .src = .{ .to_mem, .to_mem } },
27954 .{ .src = .{ .to_mem, .to_mem, .none } },
1895227955 },
1895327956 .call_frame = .{ .alignment = .@"16" },
1895427957 .extra_temps = .{
......@@ -18957,11 +27960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1895727960 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1895827961 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1895927962 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18960 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
18961 else => unreachable,
18962 .e => "__eqtf2",
18963 .ne => "__netf2",
18964 } } } },
27963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1896527964 .{ .type = .i32, .kind = .{ .reg = .eax } },
1896627965 .{ .type = .u8, .kind = .{ .reg = .cl } },
1896727966 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19000,9 +27999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1900027999 .src_constraints = .{
1900128000 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1900228001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28002 .any,
1900328003 },
1900428004 .patterns = &.{
19005 .{ .src = .{ .to_mem, .to_mem } },
28005 .{ .src = .{ .to_mem, .to_mem, .none } },
1900628006 },
1900728007 .call_frame = .{ .alignment = .@"16" },
1900828008 .extra_temps = .{
......@@ -19011,11 +28011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1901128011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1901228012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1901328013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19015 else => unreachable,
19016 .e => "__eqtf2",
19017 .ne => "__netf2",
19018 } } } },
28014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1901928015 .{ .type = .i32, .kind = .{ .reg = .eax } },
1902028016 .{ .type = .u8, .kind = .{ .reg = .cl } },
1902128017 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19054,9 +28050,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1905428050 .src_constraints = .{
1905528051 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1905628052 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28053 .any,
1905728054 },
1905828055 .patterns = &.{
19059 .{ .src = .{ .to_mem, .to_mem } },
28056 .{ .src = .{ .to_mem, .to_mem, .none } },
1906028057 },
1906128058 .call_frame = .{ .alignment = .@"16" },
1906228059 .extra_temps = .{
......@@ -19065,11 +28062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1906528062 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1906628063 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1906728064 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19069 else => unreachable,
19070 .e => "__eqtf2",
19071 .ne => "__netf2",
19072 } } } },
28065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1907328066 .{ .type = .i32, .kind = .{ .reg = .eax } },
1907428067 .{ .type = .u8, .kind = .{ .reg = .cl } },
1907528068 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19108,9 +28101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1910828101 .src_constraints = .{
1910928102 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1911028103 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28104 .any,
1911128105 },
1911228106 .patterns = &.{
19113 .{ .src = .{ .to_mem, .to_mem } },
28107 .{ .src = .{ .to_mem, .to_mem, .none } },
1911428108 },
1911528109 .call_frame = .{ .alignment = .@"16" },
1911628110 .extra_temps = .{
......@@ -19119,11 +28113,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1911928113 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1912028114 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1912128115 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19123 else => unreachable,
19124 .e => "__eqtf2",
19125 .ne => "__netf2",
19126 } } } },
28116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1912728117 .{ .type = .i32, .kind = .{ .reg = .eax } },
1912828118 .{ .type = .u8, .kind = .{ .reg = .cl } },
1912928119 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19162,9 +28152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1916228152 .src_constraints = .{
1916328153 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1916428154 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28155 .any,
1916528156 },
1916628157 .patterns = &.{
19167 .{ .src = .{ .to_mem, .to_mem } },
28158 .{ .src = .{ .to_mem, .to_mem, .none } },
1916828159 },
1916928160 .call_frame = .{ .alignment = .@"16" },
1917028161 .extra_temps = .{
......@@ -19173,11 +28164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1917328164 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1917428165 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1917528166 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19177 else => unreachable,
19178 .e => "__eqtf2",
19179 .ne => "__netf2",
19180 } } } },
28167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1918128168 .{ .type = .i32, .kind = .{ .reg = .eax } },
1918228169 .{ .type = .u8, .kind = .{ .reg = .cl } },
1918328170 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19216,9 +28203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1921628203 .src_constraints = .{
1921728204 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1921828205 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28206 .any,
1921928207 },
1922028208 .patterns = &.{
19221 .{ .src = .{ .to_mem, .to_mem } },
28209 .{ .src = .{ .to_mem, .to_mem, .none } },
1922228210 },
1922328211 .call_frame = .{ .alignment = .@"16" },
1922428212 .extra_temps = .{
......@@ -19227,11 +28215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1922728215 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
1922828216 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1922928217 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {
19231 else => unreachable,
19232 .e => "__eqtf2",
19233 .ne => "__netf2",
19234 } } } },
28218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
1923528219 .{ .type = .i32, .kind = .{ .reg = .eax } },
1923628220 .{ .type = .u8, .kind = .{ .reg = .cl } },
1923728221 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -19266,31 +28250,1583 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1926628250 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
1926728251 } },
1926828252 } },
19269 }) catch |err| switch (err) {
19270 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
19271 @tagName(air_tag),
19272 @tagName(extra.compareOperator()),
19273 cg.typeOf(extra.lhs).fmt(pt),
19274 ops[0].tracking(cg),
19275 ops[1].tracking(cg),
19276 }),
19277 else => |e| return e,
19278 },
19279 .gte => unreachable,
19280 .gt => unreachable,
19281 }
19282 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
28253 }),
28254 }) catch |err| switch (err) {
28255 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
28256 @tagName(air_tag),
28257 @tagName(extra.compareOperator()),
28258 cg.typeOf(extra.lhs).fmt(pt),
28259 ops[0].tracking(cg),
28260 ops[1].tracking(cg),
28261 }),
28262 else => |e| return e,
28263 };
28264 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
28265 },
28266
28267 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
28268 const un_op = air_datas[@intFromEnum(inst)].un_op;
28269 var ops = try cg.tempsFromOperands(inst, .{un_op});
28270 var res: [1]Temp = undefined;
28271 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
28272 .required_features = .{ .f16c, null, null, null },
28273 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28274 .patterns = &.{
28275 .{ .src = .{ .to_sse, .none, .none } },
28276 },
28277 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28278 .each = .{ .once = &.{
28279 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
28280 .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .dst0d, ._ },
28281 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
28282 } },
28283 }, .{
28284 .required_features = .{ .sse, null, null, null },
28285 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28286 .patterns = &.{
28287 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
28288 },
28289 .call_frame = .{ .alignment = .@"16" },
28290 .extra_temps = .{
28291 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
28292 .unused,
28293 .unused,
28294 .unused,
28295 .unused,
28296 .unused,
28297 .unused,
28298 .unused,
28299 .unused,
28300 },
28301 .dst_temps = .{.{ .ref = .src0 }},
28302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28303 .each = .{ .once = &.{
28304 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28305 } },
28306 }, .{
28307 .required_features = .{ .f16c, null, null, null },
28308 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
28309 .patterns = &.{
28310 .{ .src = .{ .mem, .none, .none } },
28311 .{ .src = .{ .to_sse, .none, .none } },
28312 },
28313 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28314 .each = .{ .once = &.{
28315 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
28316 .{ ._, .v_ps, .sqrt, .dst0x, .dst0x, ._, ._ },
28317 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
28318 } },
28319 }, .{
28320 .required_features = .{ .f16c, null, null, null },
28321 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
28322 .patterns = &.{
28323 .{ .src = .{ .mem, .none, .none } },
28324 .{ .src = .{ .to_sse, .none, .none } },
28325 },
28326 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28327 .each = .{ .once = &.{
28328 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
28329 .{ ._, .v_ps, .sqrt, .dst0y, .dst0y, ._, ._ },
28330 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
28331 } },
28332 }, .{
28333 .required_features = .{ .f16c, null, null, null },
28334 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
28335 .patterns = &.{
28336 .{ .src = .{ .to_mem, .none, .none } },
28337 },
28338 .extra_temps = .{
28339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28340 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
28341 .unused,
28342 .unused,
28343 .unused,
28344 .unused,
28345 .unused,
28346 .unused,
28347 .unused,
28348 },
28349 .dst_temps = .{.mem},
28350 .clobbers = .{ .eflags = true },
28351 .each = .{ .once = &.{
28352 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28353 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28354 .{ ._, .v_ps, .sqrt, .tmp1y, .tmp1y, ._, ._ },
28355 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
28356 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28357 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28358 } },
28359 }, .{
28360 .required_features = .{ .avx, null, null, null },
28361 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28362 .patterns = &.{
28363 .{ .src = .{ .to_mem, .none, .none } },
28364 },
28365 .call_frame = .{ .alignment = .@"16" },
28366 .extra_temps = .{
28367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28368 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28369 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
28370 .unused,
28371 .unused,
28372 .unused,
28373 .unused,
28374 .unused,
28375 .unused,
28376 },
28377 .dst_temps = .{.mem},
28378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28379 .each = .{ .once = &.{
28380 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28381 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
28382 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
28383 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28384 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
28385 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28387 } },
28388 }, .{
28389 .required_features = .{ .sse4_1, null, null, null },
28390 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28391 .patterns = &.{
28392 .{ .src = .{ .to_mem, .none, .none } },
28393 },
28394 .call_frame = .{ .alignment = .@"16" },
28395 .extra_temps = .{
28396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
28399 .unused,
28400 .unused,
28401 .unused,
28402 .unused,
28403 .unused,
28404 .unused,
28405 },
28406 .dst_temps = .{.mem},
28407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28408 .each = .{ .once = &.{
28409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28410 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
28411 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
28412 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28413 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
28414 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28416 } },
28417 }, .{
28418 .required_features = .{ .sse2, null, null, null },
28419 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28420 .patterns = &.{
28421 .{ .src = .{ .to_mem, .none, .none } },
28422 },
28423 .call_frame = .{ .alignment = .@"16" },
28424 .extra_temps = .{
28425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28426 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28427 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
28428 .{ .type = .f16, .kind = .{ .reg = .ax } },
28429 .unused,
28430 .unused,
28431 .unused,
28432 .unused,
28433 .unused,
28434 },
28435 .dst_temps = .{.mem},
28436 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28437 .each = .{ .once = &.{
28438 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28439 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
28440 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
28441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28442 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
28443 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
28444 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28445 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28446 } },
28447 }, .{
28448 .required_features = .{ .sse, null, null, null },
28449 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
28450 .patterns = &.{
28451 .{ .src = .{ .to_mem, .none, .none } },
28452 },
28453 .call_frame = .{ .alignment = .@"16" },
28454 .extra_temps = .{
28455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28456 .{ .type = .f16, .kind = .{ .reg = .ax } },
28457 .{ .type = .f32, .kind = .mem },
28458 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
28459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
28460 .unused,
28461 .unused,
28462 .unused,
28463 .unused,
28464 },
28465 .dst_temps = .{.mem},
28466 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28467 .each = .{ .once = &.{
28468 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28469 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28470 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
28471 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
28472 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
28473 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
28474 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
28475 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
28476 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28478 } },
28479 }, .{
28480 .required_features = .{ .avx, null, null, null },
28481 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28482 .patterns = &.{
28483 .{ .src = .{ .mem, .none, .none } },
28484 },
28485 .dst_temps = .{.{ .rc = .sse }},
28486 .each = .{ .once = &.{
28487 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
28488 .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .src0d, ._ },
28489 } },
28490 }, .{
28491 .required_features = .{ .avx, null, null, null },
28492 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28493 .patterns = &.{
28494 .{ .src = .{ .to_sse, .none, .none } },
28495 },
28496 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28497 .each = .{ .once = &.{
28498 .{ ._, .v_ss, .sqrt, .dst0x, .src0x, .src0d, ._ },
28499 } },
28500 }, .{
28501 .required_features = .{ .sse4_1, null, null, null },
28502 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28503 .patterns = &.{
28504 .{ .src = .{ .mem, .none, .none } },
28505 },
28506 .dst_temps = .{.{ .rc = .sse }},
28507 .each = .{ .once = &.{
28508 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
28509 .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ },
28510 } },
28511 }, .{
28512 .required_features = .{ .sse4_1, null, null, null },
28513 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28514 .patterns = &.{
28515 .{ .src = .{ .to_mut_sse, .none, .none } },
28516 },
28517 .dst_temps = .{.{ .ref = .src0 }},
28518 .each = .{ .once = &.{
28519 .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ },
28520 } },
28521 }, .{
28522 .required_features = .{ .sse, null, null, null },
28523 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28524 .patterns = &.{
28525 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
28526 },
28527 .call_frame = .{ .alignment = .@"16" },
28528 .extra_temps = .{
28529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
28530 .unused,
28531 .unused,
28532 .unused,
28533 .unused,
28534 .unused,
28535 .unused,
28536 .unused,
28537 .unused,
28538 },
28539 .dst_temps = .{.{ .ref = .src0 }},
28540 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28541 .each = .{ .once = &.{
28542 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28543 } },
28544 }, .{
28545 .required_features = .{ .avx, null, null, null },
28546 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
28547 .patterns = &.{
28548 .{ .src = .{ .mem, .none, .none } },
28549 .{ .src = .{ .to_sse, .none, .none } },
28550 },
28551 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28552 .each = .{ .once = &.{
28553 .{ ._, .v_ps, .sqrt, .dst0x, .src0x, ._, ._ },
28554 } },
28555 }, .{
28556 .required_features = .{ .sse4_1, null, null, null },
28557 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
28558 .patterns = &.{
28559 .{ .src = .{ .mem, .none, .none } },
28560 .{ .src = .{ .to_sse, .none, .none } },
28561 },
28562 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28563 .each = .{ .once = &.{
28564 .{ ._, ._ps, .sqrt, .dst0x, .src0x, ._, ._ },
28565 } },
28566 }, .{
28567 .required_features = .{ .avx, null, null, null },
28568 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
28569 .patterns = &.{
28570 .{ .src = .{ .mem, .none, .none } },
28571 .{ .src = .{ .to_sse, .none, .none } },
28572 },
28573 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28574 .each = .{ .once = &.{
28575 .{ ._, .v_ps, .sqrt, .dst0y, .src0y, ._, ._ },
28576 } },
28577 }, .{
28578 .required_features = .{ .avx, null, null, null },
28579 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
28580 .patterns = &.{
28581 .{ .src = .{ .to_mem, .none, .none } },
28582 },
28583 .extra_temps = .{
28584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28585 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
28586 .unused,
28587 .unused,
28588 .unused,
28589 .unused,
28590 .unused,
28591 .unused,
28592 .unused,
28593 },
28594 .dst_temps = .{.mem},
28595 .clobbers = .{ .eflags = true },
28596 .each = .{ .once = &.{
28597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28598 .{ .@"0:", .v_ps, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
28599 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
28600 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
28601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28602 } },
28603 }, .{
28604 .required_features = .{ .sse4_1, null, null, null },
28605 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
28606 .patterns = &.{
28607 .{ .src = .{ .to_mem, .none, .none } },
28608 },
28609 .extra_temps = .{
28610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28611 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
28612 .unused,
28613 .unused,
28614 .unused,
28615 .unused,
28616 .unused,
28617 .unused,
28618 .unused,
28619 },
28620 .dst_temps = .{.mem},
28621 .clobbers = .{ .eflags = true },
28622 .each = .{ .once = &.{
28623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28624 .{ .@"0:", ._ps, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28625 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28626 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28628 } },
28629 }, .{
28630 .required_features = .{ .avx, null, null, null },
28631 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28632 .patterns = &.{
28633 .{ .src = .{ .to_mem, .none, .none } },
28634 },
28635 .call_frame = .{ .alignment = .@"16" },
28636 .extra_temps = .{
28637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28638 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
28639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
28640 .unused,
28641 .unused,
28642 .unused,
28643 .unused,
28644 .unused,
28645 .unused,
28646 },
28647 .dst_temps = .{.mem},
28648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28649 .each = .{ .once = &.{
28650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28651 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28652 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28653 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28654 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28656 } },
28657 }, .{
28658 .required_features = .{ .sse, null, null, null },
28659 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
28660 .patterns = &.{
28661 .{ .src = .{ .to_mem, .none, .none } },
28662 },
28663 .call_frame = .{ .alignment = .@"16" },
28664 .extra_temps = .{
28665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28666 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
28667 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
28668 .unused,
28669 .unused,
28670 .unused,
28671 .unused,
28672 .unused,
28673 .unused,
28674 },
28675 .dst_temps = .{.mem},
28676 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28677 .each = .{ .once = &.{
28678 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28679 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28680 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28681 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28682 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28684 } },
28685 }, .{
28686 .required_features = .{ .avx, null, null, null },
28687 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28688 .patterns = &.{
28689 .{ .src = .{ .mem, .none, .none } },
28690 },
28691 .dst_temps = .{.{ .rc = .sse }},
28692 .each = .{ .once = &.{
28693 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
28694 .{ ._, .v_sd, .sqrt, .dst0x, .dst0x, .src0q, ._ },
28695 } },
28696 }, .{
28697 .required_features = .{ .avx, null, null, null },
28698 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28699 .patterns = &.{
28700 .{ .src = .{ .to_sse, .none, .none } },
28701 },
28702 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28703 .each = .{ .once = &.{
28704 .{ ._, .v_sd, .sqrt, .dst0x, .src0x, .src0q, ._ },
28705 } },
28706 }, .{
28707 .required_features = .{ .sse4_1, null, null, null },
28708 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28709 .patterns = &.{
28710 .{ .src = .{ .mem, .none, .none } },
28711 },
28712 .dst_temps = .{.{ .rc = .sse }},
28713 .each = .{ .once = &.{
28714 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
28715 .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ },
28716 } },
28717 }, .{
28718 .required_features = .{ .sse4_1, null, null, null },
28719 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28720 .patterns = &.{
28721 .{ .src = .{ .to_mut_sse, .none, .none } },
28722 },
28723 .dst_temps = .{.{ .ref = .src0 }},
28724 .each = .{ .once = &.{
28725 .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ },
28726 } },
28727 }, .{
28728 .required_features = .{ .sse, null, null, null },
28729 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28730 .patterns = &.{
28731 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
28732 },
28733 .call_frame = .{ .alignment = .@"16" },
28734 .extra_temps = .{
28735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
28736 .unused,
28737 .unused,
28738 .unused,
28739 .unused,
28740 .unused,
28741 .unused,
28742 .unused,
28743 .unused,
28744 },
28745 .dst_temps = .{.{ .ref = .src0 }},
28746 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28747 .each = .{ .once = &.{
28748 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
28749 } },
28750 }, .{
28751 .required_features = .{ .avx, null, null, null },
28752 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
28753 .patterns = &.{
28754 .{ .src = .{ .mem, .none, .none } },
28755 .{ .src = .{ .to_sse, .none, .none } },
28756 },
28757 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28758 .each = .{ .once = &.{
28759 .{ ._, .v_pd, .sqrt, .dst0x, .src0x, ._, ._ },
28760 } },
28761 }, .{
28762 .required_features = .{ .sse4_1, null, null, null },
28763 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
28764 .patterns = &.{
28765 .{ .src = .{ .mem, .none, .none } },
28766 .{ .src = .{ .to_sse, .none, .none } },
28767 },
28768 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28769 .each = .{ .once = &.{
28770 .{ ._, ._pd, .sqrt, .dst0x, .src0x, ._, ._ },
28771 } },
28772 }, .{
28773 .required_features = .{ .avx, null, null, null },
28774 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
28775 .patterns = &.{
28776 .{ .src = .{ .mem, .none, .none } },
28777 .{ .src = .{ .to_sse, .none, .none } },
28778 },
28779 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28780 .each = .{ .once = &.{
28781 .{ ._, .v_pd, .sqrt, .dst0y, .src0y, ._, ._ },
28782 } },
28783 }, .{
28784 .required_features = .{ .avx, null, null, null },
28785 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
28786 .patterns = &.{
28787 .{ .src = .{ .to_mem, .none, .none } },
28788 },
28789 .extra_temps = .{
28790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28791 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
28792 .unused,
28793 .unused,
28794 .unused,
28795 .unused,
28796 .unused,
28797 .unused,
28798 .unused,
28799 },
28800 .dst_temps = .{.mem},
28801 .clobbers = .{ .eflags = true },
28802 .each = .{ .once = &.{
28803 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28804 .{ .@"0:", .v_pd, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
28805 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
28806 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
28807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28808 } },
28809 }, .{
28810 .required_features = .{ .sse4_1, null, null, null },
28811 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
28812 .patterns = &.{
28813 .{ .src = .{ .to_mem, .none, .none } },
28814 },
28815 .extra_temps = .{
28816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28817 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
28818 .unused,
28819 .unused,
28820 .unused,
28821 .unused,
28822 .unused,
28823 .unused,
28824 .unused,
28825 },
28826 .dst_temps = .{.mem},
28827 .clobbers = .{ .eflags = true },
28828 .each = .{ .once = &.{
28829 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28830 .{ .@"0:", ._pd, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28831 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28832 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28834 } },
28835 }, .{
28836 .required_features = .{ .avx, null, null, null },
28837 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28838 .patterns = &.{
28839 .{ .src = .{ .to_mem, .none, .none } },
28840 },
28841 .call_frame = .{ .alignment = .@"16" },
28842 .extra_temps = .{
28843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28844 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
28846 .unused,
28847 .unused,
28848 .unused,
28849 .unused,
28850 .unused,
28851 .unused,
28852 },
28853 .dst_temps = .{.mem},
28854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28855 .each = .{ .once = &.{
28856 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28857 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28858 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28859 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28860 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28861 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28862 } },
28863 }, .{
28864 .required_features = .{ .sse2, null, null, null },
28865 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28866 .patterns = &.{
28867 .{ .src = .{ .to_mem, .none, .none } },
28868 },
28869 .call_frame = .{ .alignment = .@"16" },
28870 .extra_temps = .{
28871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28872 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
28874 .unused,
28875 .unused,
28876 .unused,
28877 .unused,
28878 .unused,
28879 .unused,
28880 },
28881 .dst_temps = .{.mem},
28882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28883 .each = .{ .once = &.{
28884 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28885 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28886 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28887 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28888 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28890 } },
28891 }, .{
28892 .required_features = .{ .sse, null, null, null },
28893 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
28894 .patterns = &.{
28895 .{ .src = .{ .to_mem, .none, .none } },
28896 },
28897 .call_frame = .{ .alignment = .@"16" },
28898 .extra_temps = .{
28899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28900 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
28901 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
28902 .unused,
28903 .unused,
28904 .unused,
28905 .unused,
28906 .unused,
28907 .unused,
28908 },
28909 .dst_temps = .{.mem},
28910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28911 .each = .{ .once = &.{
28912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28913 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
28914 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28915 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28916 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28917 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28919 } },
28920 }, .{
28921 .required_features = .{ .avx, .x87, null, null },
28922 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
28923 .patterns = &.{
28924 .{ .src = .{ .to_mem, .none, .none } },
28925 },
28926 .call_frame = .{ .size = 16, .alignment = .@"16" },
28927 .extra_temps = .{
28928 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
28929 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
28930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
28931 .unused,
28932 .unused,
28933 .unused,
28934 .unused,
28935 .unused,
28936 .unused,
28937 },
28938 .dst_temps = .{.{ .reg = .st0 }},
28939 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28940 .each = .{ .once = &.{
28941 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
28942 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
28943 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28944 } },
28945 }, .{
28946 .required_features = .{ .sse2, .x87, null, null },
28947 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
28948 .patterns = &.{
28949 .{ .src = .{ .to_mem, .none, .none } },
28950 },
28951 .call_frame = .{ .size = 16, .alignment = .@"16" },
28952 .extra_temps = .{
28953 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
28954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
28955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
28956 .unused,
28957 .unused,
28958 .unused,
28959 .unused,
28960 .unused,
28961 .unused,
28962 },
28963 .dst_temps = .{.{ .reg = .st0 }},
28964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28965 .each = .{ .once = &.{
28966 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
28967 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
28968 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28969 } },
28970 }, .{
28971 .required_features = .{ .sse, .x87, null, null },
28972 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
28973 .patterns = &.{
28974 .{ .src = .{ .to_mem, .none, .none } },
28975 },
28976 .call_frame = .{ .size = 16, .alignment = .@"16" },
28977 .extra_temps = .{
28978 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
28979 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
28980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
28981 .unused,
28982 .unused,
28983 .unused,
28984 .unused,
28985 .unused,
28986 .unused,
28987 },
28988 .dst_temps = .{.{ .reg = .st0 }},
28989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
28990 .each = .{ .once = &.{
28991 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
28992 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
28993 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
28994 } },
28995 }, .{
28996 .required_features = .{ .avx, .x87, null, null },
28997 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
28998 .patterns = &.{
28999 .{ .src = .{ .to_mem, .none, .none } },
29000 },
29001 .call_frame = .{ .size = 16, .alignment = .@"16" },
29002 .extra_temps = .{
29003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29004 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29005 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29006 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
29007 .unused,
29008 .unused,
29009 .unused,
29010 .unused,
29011 .unused,
29012 },
29013 .dst_temps = .{.mem},
29014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29015 .each = .{ .once = &.{
29016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29017 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29018 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
29019 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29020 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29021 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29022 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29024 } },
29025 }, .{
29026 .required_features = .{ .sse2, .x87, null, null },
29027 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29028 .patterns = &.{
29029 .{ .src = .{ .to_mem, .none, .none } },
29030 },
29031 .call_frame = .{ .size = 16, .alignment = .@"16" },
29032 .extra_temps = .{
29033 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29034 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29035 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29036 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
29037 .unused,
29038 .unused,
29039 .unused,
29040 .unused,
29041 .unused,
29042 },
29043 .dst_temps = .{.mem},
29044 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29045 .each = .{ .once = &.{
29046 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29047 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29048 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
29049 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29050 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29051 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29052 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29053 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29054 } },
29055 }, .{
29056 .required_features = .{ .sse, .x87, null, null },
29057 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29058 .patterns = &.{
29059 .{ .src = .{ .to_mem, .none, .none } },
29060 },
29061 .call_frame = .{ .size = 16, .alignment = .@"16" },
29062 .extra_temps = .{
29063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29064 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29065 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29066 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrtx" } } },
29067 .unused,
29068 .unused,
29069 .unused,
29070 .unused,
29071 .unused,
29072 },
29073 .dst_temps = .{.mem},
29074 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29075 .each = .{ .once = &.{
29076 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29077 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29078 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
29079 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29080 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29081 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29082 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29084 } },
29085 }, .{
29086 .required_features = .{ .sse, null, null, null },
29087 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29088 .patterns = &.{
29089 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
29090 },
29091 .call_frame = .{ .alignment = .@"16" },
29092 .extra_temps = .{
29093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
29094 .unused,
29095 .unused,
29096 .unused,
29097 .unused,
29098 .unused,
29099 .unused,
29100 .unused,
29101 .unused,
29102 },
29103 .dst_temps = .{.{ .ref = .src0 }},
29104 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29105 .each = .{ .once = &.{
29106 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
29107 } },
29108 }, .{
29109 .required_features = .{ .avx, null, null, null },
29110 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29111 .patterns = &.{
29112 .{ .src = .{ .to_mem, .none, .none } },
29113 },
29114 .call_frame = .{ .alignment = .@"16" },
29115 .extra_temps = .{
29116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29117 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
29119 .unused,
29120 .unused,
29121 .unused,
29122 .unused,
29123 .unused,
29124 .unused,
29125 },
29126 .dst_temps = .{.mem},
29127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29128 .each = .{ .once = &.{
29129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29130 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29131 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29132 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29133 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29135 } },
29136 }, .{
29137 .required_features = .{ .sse2, null, null, null },
29138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29139 .patterns = &.{
29140 .{ .src = .{ .to_mem, .none, .none } },
29141 },
29142 .call_frame = .{ .alignment = .@"16" },
29143 .extra_temps = .{
29144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29145 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
29147 .unused,
29148 .unused,
29149 .unused,
29150 .unused,
29151 .unused,
29152 .unused,
29153 },
29154 .dst_temps = .{.mem},
29155 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29156 .each = .{ .once = &.{
29157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29158 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29159 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29160 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29161 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29162 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29163 } },
29164 }, .{
29165 .required_features = .{ .sse, null, null, null },
29166 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29167 .patterns = &.{
29168 .{ .src = .{ .to_mem, .none, .none } },
29169 },
29170 .call_frame = .{ .alignment = .@"16" },
29171 .extra_temps = .{
29172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29173 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
29175 .unused,
29176 .unused,
29177 .unused,
29178 .unused,
29179 .unused,
29180 .unused,
29181 },
29182 .dst_temps = .{.mem},
29183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29184 .each = .{ .once = &.{
29185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29186 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29187 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29188 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29189 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29191 } },
29192 } }) catch |err| switch (err) {
29193 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
29194 @tagName(air_tag),
29195 cg.typeOf(un_op).fmt(pt),
29196 ops[0].tracking(cg),
29197 }),
29198 else => |e| return e,
29199 };
29200 try res[0].finish(inst, &.{un_op}, &ops, cg);
29201 },
29202 .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| if (use_old) try cg.airUnaryMath(inst, air_tag) else {
29203 const un_op = air_datas[@intFromEnum(inst)].un_op;
29204 var ops = try cg.tempsFromOperands(inst, .{un_op});
29205 var res: [1]Temp = undefined;
29206 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (air_tag) {
29207 else => unreachable,
29208 inline .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |name| comptime &.{ .{
29209 .required_features = .{ .sse, null, null, null },
29210 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
29211 .patterns = &.{
29212 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
29213 },
29214 .call_frame = .{ .alignment = .@"16" },
29215 .extra_temps = .{
29216 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
29217 .unused,
29218 .unused,
29219 .unused,
29220 .unused,
29221 .unused,
29222 .unused,
29223 .unused,
29224 .unused,
29225 },
29226 .dst_temps = .{.{ .ref = .src0 }},
29227 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29228 .each = .{ .once = &.{
29229 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
29230 } },
29231 }, .{
29232 .required_features = .{ .avx, null, null, null },
29233 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
29234 .patterns = &.{
29235 .{ .src = .{ .to_mem, .none, .none } },
29236 },
29237 .call_frame = .{ .alignment = .@"16" },
29238 .extra_temps = .{
29239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29240 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
29241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
29242 .unused,
29243 .unused,
29244 .unused,
29245 .unused,
29246 .unused,
29247 .unused,
29248 },
29249 .dst_temps = .{.mem},
29250 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29251 .each = .{ .once = &.{
29252 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29253 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
29254 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
29255 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29256 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
29257 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
29258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29259 } },
29260 }, .{
29261 .required_features = .{ .sse4_1, null, null, null },
29262 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
29263 .patterns = &.{
29264 .{ .src = .{ .to_mem, .none, .none } },
29265 },
29266 .call_frame = .{ .alignment = .@"16" },
29267 .extra_temps = .{
29268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29269 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
29270 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
29271 .unused,
29272 .unused,
29273 .unused,
29274 .unused,
29275 .unused,
29276 .unused,
29277 },
29278 .dst_temps = .{.mem},
29279 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29280 .each = .{ .once = &.{
29281 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29282 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
29283 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
29284 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29285 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
29286 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
29287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29288 } },
29289 }, .{
29290 .required_features = .{ .sse2, null, null, null },
29291 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
29292 .patterns = &.{
29293 .{ .src = .{ .to_mem, .none, .none } },
29294 },
29295 .call_frame = .{ .alignment = .@"16" },
29296 .extra_temps = .{
29297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
29299 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
29300 .{ .type = .f16, .kind = .{ .reg = .ax } },
29301 .unused,
29302 .unused,
29303 .unused,
29304 .unused,
29305 .unused,
29306 },
29307 .dst_temps = .{.mem},
29308 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29309 .each = .{ .once = &.{
29310 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29311 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
29312 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
29313 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29314 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
29315 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
29316 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
29317 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29318 } },
29319 }, .{
29320 .required_features = .{ .sse, null, null, null },
29321 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
29322 .patterns = &.{
29323 .{ .src = .{ .to_mem, .none, .none } },
29324 },
29325 .call_frame = .{ .alignment = .@"16" },
29326 .extra_temps = .{
29327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29328 .{ .type = .f16, .kind = .{ .reg = .ax } },
29329 .{ .type = .f32, .kind = .mem },
29330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
29331 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
29332 .unused,
29333 .unused,
29334 .unused,
29335 .unused,
29336 },
29337 .dst_temps = .{.mem},
29338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29339 .each = .{ .once = &.{
29340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29341 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
29342 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
29343 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
29344 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
29345 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
29346 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
29347 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
29348 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
29349 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29350 } },
29351 }, .{
29352 .required_features = .{ .sse, null, null, null },
29353 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
29354 .patterns = &.{
29355 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
29356 },
29357 .call_frame = .{ .alignment = .@"16" },
29358 .extra_temps = .{
29359 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
29360 .unused,
29361 .unused,
29362 .unused,
29363 .unused,
29364 .unused,
29365 .unused,
29366 .unused,
29367 .unused,
29368 },
29369 .dst_temps = .{.{ .ref = .src0 }},
29370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29371 .each = .{ .once = &.{
29372 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
29373 } },
29374 }, .{
29375 .required_features = .{ .avx, null, null, null },
29376 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
29377 .patterns = &.{
29378 .{ .src = .{ .to_mem, .none, .none } },
29379 },
29380 .call_frame = .{ .alignment = .@"16" },
29381 .extra_temps = .{
29382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29383 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
29384 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
29385 .unused,
29386 .unused,
29387 .unused,
29388 .unused,
29389 .unused,
29390 .unused,
29391 },
29392 .dst_temps = .{.mem},
29393 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29394 .each = .{ .once = &.{
29395 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29396 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
29397 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29398 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29399 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
29400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29401 } },
29402 }, .{
29403 .required_features = .{ .sse, null, null, null },
29404 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
29405 .patterns = &.{
29406 .{ .src = .{ .to_mem, .none, .none } },
29407 },
29408 .call_frame = .{ .alignment = .@"16" },
29409 .extra_temps = .{
29410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29411 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
29412 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
29413 .unused,
29414 .unused,
29415 .unused,
29416 .unused,
29417 .unused,
29418 .unused,
29419 },
29420 .dst_temps = .{.mem},
29421 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29422 .each = .{ .once = &.{
29423 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29424 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
29425 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29426 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29427 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
29428 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29429 } },
29430 }, .{
29431 .required_features = .{ .sse, null, null, null },
29432 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
29433 .patterns = &.{
29434 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
29435 },
29436 .call_frame = .{ .alignment = .@"16" },
29437 .extra_temps = .{
29438 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
29439 .unused,
29440 .unused,
29441 .unused,
29442 .unused,
29443 .unused,
29444 .unused,
29445 .unused,
29446 .unused,
29447 },
29448 .dst_temps = .{.{ .ref = .src0 }},
29449 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29450 .each = .{ .once = &.{
29451 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
29452 } },
29453 }, .{
29454 .required_features = .{ .avx, null, null, null },
29455 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
29456 .patterns = &.{
29457 .{ .src = .{ .to_mem, .none, .none } },
29458 },
29459 .call_frame = .{ .alignment = .@"16" },
29460 .extra_temps = .{
29461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29462 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
29463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
29464 .unused,
29465 .unused,
29466 .unused,
29467 .unused,
29468 .unused,
29469 .unused,
29470 },
29471 .dst_temps = .{.mem},
29472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29473 .each = .{ .once = &.{
29474 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29475 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
29476 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29477 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29478 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
29479 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29480 } },
29481 }, .{
29482 .required_features = .{ .sse2, null, null, null },
29483 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
29484 .patterns = &.{
29485 .{ .src = .{ .to_mem, .none, .none } },
29486 },
29487 .call_frame = .{ .alignment = .@"16" },
29488 .extra_temps = .{
29489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29490 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
29491 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
29492 .unused,
29493 .unused,
29494 .unused,
29495 .unused,
29496 .unused,
29497 .unused,
29498 },
29499 .dst_temps = .{.mem},
29500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29501 .each = .{ .once = &.{
29502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29503 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
29504 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29505 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29506 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
29507 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29508 } },
29509 }, .{
29510 .required_features = .{ .sse, null, null, null },
29511 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
29512 .patterns = &.{
29513 .{ .src = .{ .to_mem, .none, .none } },
29514 },
29515 .call_frame = .{ .alignment = .@"16" },
29516 .extra_temps = .{
29517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29518 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
29519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
29520 .unused,
29521 .unused,
29522 .unused,
29523 .unused,
29524 .unused,
29525 .unused,
29526 },
29527 .dst_temps = .{.mem},
29528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29529 .each = .{ .once = &.{
29530 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29531 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
29532 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
29533 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29534 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29535 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
29536 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29537 } },
29538 }, .{
29539 .required_features = .{ .avx, .x87, null, null },
29540 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29541 .patterns = &.{
29542 .{ .src = .{ .to_mem, .none, .none } },
29543 },
29544 .call_frame = .{ .size = 16, .alignment = .@"16" },
29545 .extra_temps = .{
29546 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29547 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29548 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29549 .unused,
29550 .unused,
29551 .unused,
29552 .unused,
29553 .unused,
29554 .unused,
29555 },
29556 .dst_temps = .{.{ .reg = .st0 }},
29557 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29558 .each = .{ .once = &.{
29559 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
29560 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
29561 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29562 } },
29563 }, .{
29564 .required_features = .{ .sse2, .x87, null, null },
29565 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29566 .patterns = &.{
29567 .{ .src = .{ .to_mem, .none, .none } },
29568 },
29569 .call_frame = .{ .size = 16, .alignment = .@"16" },
29570 .extra_temps = .{
29571 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29572 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29574 .unused,
29575 .unused,
29576 .unused,
29577 .unused,
29578 .unused,
29579 .unused,
29580 },
29581 .dst_temps = .{.{ .reg = .st0 }},
29582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29583 .each = .{ .once = &.{
29584 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
29585 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
29586 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29587 } },
29588 }, .{
29589 .required_features = .{ .sse, .x87, null, null },
29590 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29591 .patterns = &.{
29592 .{ .src = .{ .to_mem, .none, .none } },
29593 },
29594 .call_frame = .{ .size = 16, .alignment = .@"16" },
29595 .extra_temps = .{
29596 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29597 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29598 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29599 .unused,
29600 .unused,
29601 .unused,
29602 .unused,
29603 .unused,
29604 .unused,
29605 },
29606 .dst_temps = .{.{ .reg = .st0 }},
29607 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29608 .each = .{ .once = &.{
29609 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
29610 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
29611 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29612 } },
29613 }, .{
29614 .required_features = .{ .avx, .x87, null, null },
29615 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29616 .patterns = &.{
29617 .{ .src = .{ .to_mem, .none, .none } },
29618 },
29619 .call_frame = .{ .size = 16, .alignment = .@"16" },
29620 .extra_temps = .{
29621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29622 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29623 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29624 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29625 .unused,
29626 .unused,
29627 .unused,
29628 .unused,
29629 .unused,
29630 },
29631 .dst_temps = .{.mem},
29632 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29633 .each = .{ .once = &.{
29634 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29635 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29636 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
29637 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29638 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29639 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29640 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29641 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29642 } },
29643 }, .{
29644 .required_features = .{ .sse2, .x87, null, null },
29645 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29646 .patterns = &.{
29647 .{ .src = .{ .to_mem, .none, .none } },
29648 },
29649 .call_frame = .{ .size = 16, .alignment = .@"16" },
29650 .extra_temps = .{
29651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29652 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29653 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29654 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29655 .unused,
29656 .unused,
29657 .unused,
29658 .unused,
29659 .unused,
29660 },
29661 .dst_temps = .{.mem},
29662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29663 .each = .{ .once = &.{
29664 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29665 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29666 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
29667 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29668 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29669 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29670 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29672 } },
29673 }, .{
29674 .required_features = .{ .sse, .x87, null, null },
29675 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
29676 .patterns = &.{
29677 .{ .src = .{ .to_mem, .none, .none } },
29678 },
29679 .call_frame = .{ .size = 16, .alignment = .@"16" },
29680 .extra_temps = .{
29681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29682 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
29683 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
29684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
29685 .unused,
29686 .unused,
29687 .unused,
29688 .unused,
29689 .unused,
29690 },
29691 .dst_temps = .{.mem},
29692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29693 .each = .{ .once = &.{
29694 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29695 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29696 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
29697 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
29698 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
29699 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
29700 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29701 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29702 } },
29703 }, .{
29704 .required_features = .{ .sse, null, null, null },
29705 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29706 .patterns = &.{
29707 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
29708 },
29709 .call_frame = .{ .alignment = .@"16" },
29710 .extra_temps = .{
29711 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
29712 .unused,
29713 .unused,
29714 .unused,
29715 .unused,
29716 .unused,
29717 .unused,
29718 .unused,
29719 .unused,
29720 },
29721 .dst_temps = .{.{ .ref = .src0 }},
29722 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29723 .each = .{ .once = &.{
29724 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
29725 } },
29726 }, .{
29727 .required_features = .{ .avx, null, null, null },
29728 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29729 .patterns = &.{
29730 .{ .src = .{ .to_mem, .none, .none } },
29731 },
29732 .call_frame = .{ .alignment = .@"16" },
29733 .extra_temps = .{
29734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29735 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29736 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
29737 .unused,
29738 .unused,
29739 .unused,
29740 .unused,
29741 .unused,
29742 .unused,
29743 },
29744 .dst_temps = .{.mem},
29745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29746 .each = .{ .once = &.{
29747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29748 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29749 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29750 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29751 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29752 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29753 } },
29754 }, .{
29755 .required_features = .{ .sse2, null, null, null },
29756 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29757 .patterns = &.{
29758 .{ .src = .{ .to_mem, .none, .none } },
29759 },
29760 .call_frame = .{ .alignment = .@"16" },
29761 .extra_temps = .{
29762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29763 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29764 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
29765 .unused,
29766 .unused,
29767 .unused,
29768 .unused,
29769 .unused,
29770 .unused,
29771 },
29772 .dst_temps = .{.mem},
29773 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29774 .each = .{ .once = &.{
29775 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29776 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29777 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29778 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29779 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29781 } },
29782 }, .{
29783 .required_features = .{ .sse, null, null, null },
29784 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
29785 .patterns = &.{
29786 .{ .src = .{ .to_mem, .none, .none } },
29787 },
29788 .call_frame = .{ .alignment = .@"16" },
29789 .extra_temps = .{
29790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29791 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
29792 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
29793 .unused,
29794 .unused,
29795 .unused,
29796 .unused,
29797 .unused,
29798 .unused,
29799 },
29800 .dst_temps = .{.mem},
29801 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
29802 .each = .{ .once = &.{
29803 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
29804 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29805 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
29806 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
29807 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29809 } },
29810 } },
29811 }) catch |err| switch (err) {
29812 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
29813 @tagName(air_tag),
29814 cg.typeOf(un_op).fmt(pt),
29815 ops[0].tracking(cg),
29816 }),
29817 else => |e| return e,
29818 };
29819 try res[0].finish(inst, &.{un_op}, &ops, cg);
1928329820 },
19284
1928529821 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {
1928629822 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
1928729823 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
1928829824 var res: [1]Temp = undefined;
1928929825 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
1929029826 .required_features = .{ .cmov, null, null, null },
19291 .src_constraints = .{ .{ .int = .byte }, .any },
29827 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1929229828 .patterns = &.{
19293 .{ .src = .{ .to_gpr, .none } },
29829 .{ .src = .{ .to_gpr, .none, .none } },
1929429830 },
1929529831 .dst_temps = .{.{ .rc = .general_purpose }},
1929629832 .clobbers = .{ .eflags = true },
......@@ -19300,9 +29836,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1930029836 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1930129837 } },
1930229838 }, .{
19303 .src_constraints = .{ .{ .int = .byte }, .any },
29839 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1930429840 .patterns = &.{
19305 .{ .src = .{ .mut_mem, .none } },
29841 .{ .src = .{ .mut_mem, .none, .none } },
1930629842 },
1930729843 .dst_temps = .{.{ .ref = .src0 }},
1930829844 .clobbers = .{ .eflags = true },
......@@ -19312,9 +29848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1931229848 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },
1931329849 } },
1931429850 }, .{
19315 .src_constraints = .{ .{ .int = .byte }, .any },
29851 .src_constraints = .{ .{ .int = .byte }, .any, .any },
1931629852 .patterns = &.{
19317 .{ .src = .{ .to_mut_gpr, .none } },
29853 .{ .src = .{ .to_mut_gpr, .none, .none } },
1931829854 },
1931929855 .dst_temps = .{.{ .ref = .src0 }},
1932029856 .clobbers = .{ .eflags = true },
......@@ -19325,9 +29861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1932529861 } },
1932629862 }, .{
1932729863 .required_features = .{ .cmov, null, null, null },
19328 .src_constraints = .{ .{ .int = .word }, .any },
29864 .src_constraints = .{ .{ .int = .word }, .any, .any },
1932929865 .patterns = &.{
19330 .{ .src = .{ .mem, .none } },
29866 .{ .src = .{ .mem, .none, .none } },
1933129867 },
1933229868 .dst_temps = .{.{ .rc = .general_purpose }},
1933329869 .clobbers = .{ .eflags = true },
......@@ -19338,9 +29874,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1933829874 } },
1933929875 }, .{
1934029876 .required_features = .{ .cmov, null, null, null },
19341 .src_constraints = .{ .{ .int = .word }, .any },
29877 .src_constraints = .{ .{ .int = .word }, .any, .any },
1934229878 .patterns = &.{
19343 .{ .src = .{ .to_gpr, .none } },
29879 .{ .src = .{ .to_gpr, .none, .none } },
1934429880 },
1934529881 .dst_temps = .{.{ .rc = .general_purpose }},
1934629882 .clobbers = .{ .eflags = true },
......@@ -19350,9 +29886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1935029886 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1935129887 } },
1935229888 }, .{
19353 .src_constraints = .{ .{ .int = .word }, .any },
29889 .src_constraints = .{ .{ .int = .word }, .any, .any },
1935429890 .patterns = &.{
19355 .{ .src = .{ .mut_mem, .none } },
29891 .{ .src = .{ .mut_mem, .none, .none } },
1935629892 },
1935729893 .dst_temps = .{.{ .ref = .src0 }},
1935829894 .clobbers = .{ .eflags = true },
......@@ -19362,9 +29898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1936229898 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1936329899 } },
1936429900 }, .{
19365 .src_constraints = .{ .{ .int = .word }, .any },
29901 .src_constraints = .{ .{ .int = .word }, .any, .any },
1936629902 .patterns = &.{
19367 .{ .src = .{ .to_mut_gpr, .none } },
29903 .{ .src = .{ .to_mut_gpr, .none, .none } },
1936829904 },
1936929905 .dst_temps = .{.{ .ref = .src0 }},
1937029906 .clobbers = .{ .eflags = true },
......@@ -19375,10 +29911,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1937529911 } },
1937629912 }, .{
1937729913 .required_features = .{ .cmov, null, null, null },
19378 .src_constraints = .{ .{ .int = .dword }, .any },
29914 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1937929915 .patterns = &.{
19380 .{ .src = .{ .mem, .none } },
19381 .{ .src = .{ .to_gpr, .none } },
29916 .{ .src = .{ .mem, .none, .none } },
29917 .{ .src = .{ .to_gpr, .none, .none } },
1938229918 },
1938329919 .dst_temps = .{.{ .rc = .general_purpose }},
1938429920 .clobbers = .{ .eflags = true },
......@@ -19388,9 +29924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1938829924 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
1938929925 } },
1939029926 }, .{
19391 .src_constraints = .{ .{ .int = .dword }, .any },
29927 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1939229928 .patterns = &.{
19393 .{ .src = .{ .mut_mem, .none } },
29929 .{ .src = .{ .mut_mem, .none, .none } },
1939429930 },
1939529931 .dst_temps = .{.{ .ref = .src0 }},
1939629932 .clobbers = .{ .eflags = true },
......@@ -19400,9 +29936,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1940029936 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1940129937 } },
1940229938 }, .{
19403 .src_constraints = .{ .{ .int = .dword }, .any },
29939 .src_constraints = .{ .{ .int = .dword }, .any, .any },
1940429940 .patterns = &.{
19405 .{ .src = .{ .to_mut_gpr, .none } },
29941 .{ .src = .{ .to_mut_gpr, .none, .none } },
1940629942 },
1940729943 .dst_temps = .{.{ .ref = .src0 }},
1940829944 .clobbers = .{ .eflags = true },
......@@ -19413,10 +29949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1941329949 } },
1941429950 }, .{
1941529951 .required_features = .{ .@"64bit", .cmov, null, null },
19416 .src_constraints = .{ .{ .int = .qword }, .any },
29952 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1941729953 .patterns = &.{
19418 .{ .src = .{ .mem, .none } },
19419 .{ .src = .{ .to_gpr, .none } },
29954 .{ .src = .{ .mem, .none, .none } },
29955 .{ .src = .{ .to_gpr, .none, .none } },
1942029956 },
1942129957 .dst_temps = .{.{ .rc = .general_purpose }},
1942229958 .clobbers = .{ .eflags = true },
......@@ -19427,9 +29963,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1942729963 } },
1942829964 }, .{
1942929965 .required_features = .{ .@"64bit", null, null, null },
19430 .src_constraints = .{ .{ .int = .qword }, .any },
29966 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1943129967 .patterns = &.{
19432 .{ .src = .{ .mut_mem, .none } },
29968 .{ .src = .{ .mut_mem, .none, .none } },
1943329969 },
1943429970 .dst_temps = .{.{ .ref = .src0 }},
1943529971 .clobbers = .{ .eflags = true },
......@@ -19440,9 +29976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1944029976 } },
1944129977 }, .{
1944229978 .required_features = .{ .@"64bit", null, null, null },
19443 .src_constraints = .{ .{ .int = .qword }, .any },
29979 .src_constraints = .{ .{ .int = .qword }, .any, .any },
1944429980 .patterns = &.{
19445 .{ .src = .{ .to_mut_gpr, .none } },
29981 .{ .src = .{ .to_mut_gpr, .none, .none } },
1944629982 },
1944729983 .dst_temps = .{.{ .ref = .src0 }},
1944829984 .clobbers = .{ .eflags = true },
......@@ -19453,9 +29989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1945329989 } },
1945429990 }, .{
1945529991 .required_features = .{ .@"64bit", null, null, null },
19456 .src_constraints = .{ .any_int, .any },
29992 .src_constraints = .{ .any_int, .any, .any },
1945729993 .patterns = &.{
19458 .{ .src = .{ .to_mem, .none } },
29994 .{ .src = .{ .to_mem, .none, .none } },
1945929995 },
1946029996 .extra_temps = .{
1946129997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19486,10 +30022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1948630022 } },
1948730023 }, .{
1948830024 .required_features = .{ .mmx, .ssse3, null, null },
19489 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
30025 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
1949030026 .patterns = &.{
19491 .{ .src = .{ .mem, .none } },
19492 .{ .src = .{ .to_mm, .none } },
30027 .{ .src = .{ .mem, .none, .none } },
30028 .{ .src = .{ .to_mm, .none, .none } },
1949330029 },
1949430030 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1949530031 .each = .{ .once = &.{
......@@ -19497,10 +30033,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1949730033 } },
1949830034 }, .{
1949930035 .required_features = .{ .mmx, .ssse3, null, null },
19500 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
30036 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
1950130037 .patterns = &.{
19502 .{ .src = .{ .mem, .none } },
19503 .{ .src = .{ .to_mm, .none } },
30038 .{ .src = .{ .mem, .none, .none } },
30039 .{ .src = .{ .to_mm, .none, .none } },
1950430040 },
1950530041 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1950630042 .each = .{ .once = &.{
......@@ -19508,10 +30044,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1950830044 } },
1950930045 }, .{
1951030046 .required_features = .{ .mmx, .ssse3, null, null },
19511 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
30047 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
1951230048 .patterns = &.{
19513 .{ .src = .{ .mem, .none } },
19514 .{ .src = .{ .to_mm, .none } },
30049 .{ .src = .{ .mem, .none, .none } },
30050 .{ .src = .{ .to_mm, .none, .none } },
1951530051 },
1951630052 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
1951730053 .each = .{ .once = &.{
......@@ -19519,10 +30055,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1951930055 } },
1952030056 }, .{
1952130057 .required_features = .{ .ssse3, null, null, null },
19522 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
30058 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
1952330059 .patterns = &.{
19524 .{ .src = .{ .mem, .none } },
19525 .{ .src = .{ .to_sse, .none } },
30060 .{ .src = .{ .mem, .none, .none } },
30061 .{ .src = .{ .to_sse, .none, .none } },
1952630062 },
1952730063 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1952830064 .each = .{ .once = &.{
......@@ -19530,10 +30066,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1953030066 } },
1953130067 }, .{
1953230068 .required_features = .{ .ssse3, null, null, null },
19533 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
30069 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
1953430070 .patterns = &.{
19535 .{ .src = .{ .mem, .none } },
19536 .{ .src = .{ .to_sse, .none } },
30071 .{ .src = .{ .mem, .none, .none } },
30072 .{ .src = .{ .to_sse, .none, .none } },
1953730073 },
1953830074 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1953930075 .each = .{ .once = &.{
......@@ -19541,10 +30077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1954130077 } },
1954230078 }, .{
1954330079 .required_features = .{ .ssse3, null, null, null },
19544 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
30080 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1954530081 .patterns = &.{
19546 .{ .src = .{ .mem, .none } },
19547 .{ .src = .{ .to_sse, .none } },
30082 .{ .src = .{ .mem, .none, .none } },
30083 .{ .src = .{ .to_sse, .none, .none } },
1954830084 },
1954930085 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1955030086 .each = .{ .once = &.{
......@@ -19552,10 +30088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1955230088 } },
1955330089 }, .{
1955430090 .required_features = .{ .avx, null, null, null },
19555 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
30091 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
1955630092 .patterns = &.{
19557 .{ .src = .{ .mem, .none } },
19558 .{ .src = .{ .to_sse, .none } },
30093 .{ .src = .{ .mem, .none, .none } },
30094 .{ .src = .{ .to_sse, .none, .none } },
1955930095 },
1956030096 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1956130097 .each = .{ .once = &.{
......@@ -19563,10 +30099,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1956330099 } },
1956430100 }, .{
1956530101 .required_features = .{ .avx, null, null, null },
19566 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
30102 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
1956730103 .patterns = &.{
19568 .{ .src = .{ .mem, .none } },
19569 .{ .src = .{ .to_sse, .none } },
30104 .{ .src = .{ .mem, .none, .none } },
30105 .{ .src = .{ .to_sse, .none, .none } },
1957030106 },
1957130107 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1957230108 .each = .{ .once = &.{
......@@ -19574,10 +30110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1957430110 } },
1957530111 }, .{
1957630112 .required_features = .{ .avx, null, null, null },
19577 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
30113 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1957830114 .patterns = &.{
19579 .{ .src = .{ .mem, .none } },
19580 .{ .src = .{ .to_sse, .none } },
30115 .{ .src = .{ .mem, .none, .none } },
30116 .{ .src = .{ .to_sse, .none, .none } },
1958130117 },
1958230118 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1958330119 .each = .{ .once = &.{
......@@ -19585,10 +30121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1958530121 } },
1958630122 }, .{
1958730123 .required_features = .{ .avx2, null, null, null },
19588 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },
30124 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
1958930125 .patterns = &.{
19590 .{ .src = .{ .mem, .none } },
19591 .{ .src = .{ .to_sse, .none } },
30126 .{ .src = .{ .mem, .none, .none } },
30127 .{ .src = .{ .to_sse, .none, .none } },
1959230128 },
1959330129 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1959430130 .each = .{ .once = &.{
......@@ -19596,10 +30132,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1959630132 } },
1959730133 }, .{
1959830134 .required_features = .{ .avx2, null, null, null },
19599 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
30135 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
1960030136 .patterns = &.{
19601 .{ .src = .{ .mem, .none } },
19602 .{ .src = .{ .to_sse, .none } },
30137 .{ .src = .{ .mem, .none, .none } },
30138 .{ .src = .{ .to_sse, .none, .none } },
1960330139 },
1960430140 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1960530141 .each = .{ .once = &.{
......@@ -19607,10 +30143,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1960730143 } },
1960830144 }, .{
1960930145 .required_features = .{ .avx2, null, null, null },
19610 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
30146 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
1961130147 .patterns = &.{
19612 .{ .src = .{ .mem, .none } },
19613 .{ .src = .{ .to_sse, .none } },
30148 .{ .src = .{ .mem, .none, .none } },
30149 .{ .src = .{ .to_sse, .none, .none } },
1961430150 },
1961530151 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1961630152 .each = .{ .once = &.{
......@@ -19618,9 +30154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1961830154 } },
1961930155 }, .{
1962030156 .required_features = .{ .avx2, null, null, null },
19621 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any },
30157 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
1962230158 .patterns = &.{
19623 .{ .src = .{ .to_mem, .none } },
30159 .{ .src = .{ .to_mem, .none, .none } },
1962430160 },
1962530161 .extra_temps = .{
1962630162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19644,9 +30180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1964430180 } },
1964530181 }, .{
1964630182 .required_features = .{ .avx2, null, null, null },
19647 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any },
30183 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
1964830184 .patterns = &.{
19649 .{ .src = .{ .to_mem, .none } },
30185 .{ .src = .{ .to_mem, .none, .none } },
1965030186 },
1965130187 .extra_temps = .{
1965230188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19670,9 +30206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1967030206 } },
1967130207 }, .{
1967230208 .required_features = .{ .avx2, null, null, null },
19673 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },
30209 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
1967430210 .patterns = &.{
19675 .{ .src = .{ .to_mem, .none } },
30211 .{ .src = .{ .to_mem, .none, .none } },
1967630212 },
1967730213 .extra_temps = .{
1967830214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19696,9 +30232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1969630232 } },
1969730233 }, .{
1969830234 .required_features = .{ .avx, null, null, null },
19699 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
30235 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
1970030236 .patterns = &.{
19701 .{ .src = .{ .to_mem, .none } },
30237 .{ .src = .{ .to_mem, .none, .none } },
1970230238 },
1970330239 .extra_temps = .{
1970430240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19722,9 +30258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1972230258 } },
1972330259 }, .{
1972430260 .required_features = .{ .avx, null, null, null },
19725 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
30261 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
1972630262 .patterns = &.{
19727 .{ .src = .{ .to_mem, .none } },
30263 .{ .src = .{ .to_mem, .none, .none } },
1972830264 },
1972930265 .extra_temps = .{
1973030266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19748,9 +30284,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1974830284 } },
1974930285 }, .{
1975030286 .required_features = .{ .avx, null, null, null },
19751 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
30287 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1975230288 .patterns = &.{
19753 .{ .src = .{ .to_mem, .none } },
30289 .{ .src = .{ .to_mem, .none, .none } },
1975430290 },
1975530291 .extra_temps = .{
1975630292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19774,9 +30310,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1977430310 } },
1977530311 }, .{
1977630312 .required_features = .{ .ssse3, null, null, null },
19777 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
30313 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
1977830314 .patterns = &.{
19779 .{ .src = .{ .to_mem, .none } },
30315 .{ .src = .{ .to_mem, .none, .none } },
1978030316 },
1978130317 .extra_temps = .{
1978230318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19800,9 +30336,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1980030336 } },
1980130337 }, .{
1980230338 .required_features = .{ .ssse3, null, null, null },
19803 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
30339 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
1980430340 .patterns = &.{
19805 .{ .src = .{ .to_mem, .none } },
30341 .{ .src = .{ .to_mem, .none, .none } },
1980630342 },
1980730343 .extra_temps = .{
1980830344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19826,9 +30362,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1982630362 } },
1982730363 }, .{
1982830364 .required_features = .{ .ssse3, null, null, null },
19829 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
30365 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
1983030366 .patterns = &.{
19831 .{ .src = .{ .to_mem, .none } },
30367 .{ .src = .{ .to_mem, .none, .none } },
1983230368 },
1983330369 .extra_temps = .{
1983430370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19852,9 +30388,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1985230388 } },
1985330389 }, .{
1985430390 .required_features = .{ .mmx, .ssse3, null, null },
19855 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
30391 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
30392 .patterns = &.{
30393 .{ .src = .{ .to_mem, .none, .none } },
30394 },
30395 .extra_temps = .{
30396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30397 .{ .kind = .{ .rc = .sse } },
30398 .unused,
30399 .unused,
30400 .unused,
30401 .unused,
30402 .unused,
30403 .unused,
30404 .unused,
30405 },
30406 .dst_temps = .{.mem},
30407 .clobbers = .{ .eflags = true },
30408 .each = .{ .once = &.{
30409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30410 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30411 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
30412 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30414 } },
30415 }, .{
30416 .required_features = .{ .mmx, .ssse3, null, null },
30417 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
30418 .patterns = &.{
30419 .{ .src = .{ .to_mem, .none, .none } },
30420 },
30421 .extra_temps = .{
30422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30423 .{ .kind = .{ .rc = .sse } },
30424 .unused,
30425 .unused,
30426 .unused,
30427 .unused,
30428 .unused,
30429 .unused,
30430 .unused,
30431 },
30432 .dst_temps = .{.mem},
30433 .clobbers = .{ .eflags = true },
30434 .each = .{ .once = &.{
30435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30436 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30437 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
30438 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30439 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30440 } },
30441 }, .{
30442 .required_features = .{ .mmx, .ssse3, null, null },
30443 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
1985630444 .patterns = &.{
19857 .{ .src = .{ .to_mem, .none } },
30445 .{ .src = .{ .to_mem, .none, .none } },
1985830446 },
1985930447 .extra_temps = .{
1986030448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -19870,21 +30458,498 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1987030458 .dst_temps = .{.mem},
1987130459 .clobbers = .{ .eflags = true },
1987230460 .each = .{ .once = &.{
19873 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19874 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19875 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19876 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19877 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30462 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30463 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
30464 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30466 } },
30467 }, .{
30468 .required_features = .{ .cmov, .slow_incdec, null, null },
30469 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
30470 .patterns = &.{
30471 .{ .src = .{ .to_mem, .none, .none } },
30472 },
30473 .extra_temps = .{
30474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30475 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30476 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30477 .unused,
30478 .unused,
30479 .unused,
30480 .unused,
30481 .unused,
30482 .unused,
30483 },
30484 .dst_temps = .{.mem},
30485 .clobbers = .{ .eflags = true },
30486 .each = .{ .once = &.{
30487 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30488 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30489 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
30490 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
30491 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
30492 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
30493 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30495 } },
30496 }, .{
30497 .required_features = .{ .cmov, null, null, null },
30498 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
30499 .patterns = &.{
30500 .{ .src = .{ .to_mem, .none, .none } },
30501 },
30502 .extra_temps = .{
30503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30504 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30505 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30506 .unused,
30507 .unused,
30508 .unused,
30509 .unused,
30510 .unused,
30511 .unused,
30512 },
30513 .dst_temps = .{.mem},
30514 .clobbers = .{ .eflags = true },
30515 .each = .{ .once = &.{
30516 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30517 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30518 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
30519 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
30520 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
30521 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
30522 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30523 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30524 } },
30525 }, .{
30526 .required_features = .{ .slow_incdec, null, null, null },
30527 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
30528 .patterns = &.{
30529 .{ .src = .{ .to_mem, .none, .none } },
30530 },
30531 .extra_temps = .{
30532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30533 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30534 .unused,
30535 .unused,
30536 .unused,
30537 .unused,
30538 .unused,
30539 .unused,
30540 .unused,
30541 },
30542 .dst_temps = .{.mem},
30543 .clobbers = .{ .eflags = true },
30544 .each = .{ .once = &.{
30545 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30546 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
30547 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30548 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
30549 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
30550 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
30551 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30553 } },
30554 }, .{
30555 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
30556 .patterns = &.{
30557 .{ .src = .{ .to_mem, .none, .none } },
30558 },
30559 .extra_temps = .{
30560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30561 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30562 .unused,
30563 .unused,
30564 .unused,
30565 .unused,
30566 .unused,
30567 .unused,
30568 .unused,
30569 },
30570 .dst_temps = .{.mem},
30571 .clobbers = .{ .eflags = true },
30572 .each = .{ .once = &.{
30573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30574 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
30575 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30576 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
30577 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
30578 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
30579 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30580 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30581 } },
30582 }, .{
30583 .required_features = .{ .cmov, null, null, null },
30584 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
30585 .patterns = &.{
30586 .{ .src = .{ .to_mem, .none, .none } },
30587 },
30588 .extra_temps = .{
30589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30590 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30591 .unused,
30592 .unused,
30593 .unused,
30594 .unused,
30595 .unused,
30596 .unused,
30597 .unused,
30598 },
30599 .dst_temps = .{.mem},
30600 .clobbers = .{ .eflags = true },
30601 .each = .{ .once = &.{
30602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30603 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30604 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
30605 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
30606 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
30607 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30608 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30609 } },
30610 }, .{
30611 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
30612 .patterns = &.{
30613 .{ .src = .{ .to_mem, .none, .none } },
30614 },
30615 .extra_temps = .{
30616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30617 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30618 .unused,
30619 .unused,
30620 .unused,
30621 .unused,
30622 .unused,
30623 .unused,
30624 .unused,
30625 },
30626 .dst_temps = .{.mem},
30627 .clobbers = .{ .eflags = true },
30628 .each = .{ .once = &.{
30629 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30630 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
30631 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
30632 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
30633 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
30634 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
30635 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30637 } },
30638 }, .{
30639 .required_features = .{ .cmov, null, null, null },
30640 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30641 .patterns = &.{
30642 .{ .src = .{ .to_mem, .none, .none } },
30643 },
30644 .extra_temps = .{
30645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30646 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30647 .unused,
30648 .unused,
30649 .unused,
30650 .unused,
30651 .unused,
30652 .unused,
30653 .unused,
30654 },
30655 .dst_temps = .{.mem},
30656 .clobbers = .{ .eflags = true },
30657 .each = .{ .once = &.{
30658 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30659 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30660 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
30661 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
30662 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
30663 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
30664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30665 } },
30666 }, .{
30667 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30668 .patterns = &.{
30669 .{ .src = .{ .to_mem, .none, .none } },
30670 },
30671 .extra_temps = .{
30672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30673 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30674 .unused,
30675 .unused,
30676 .unused,
30677 .unused,
30678 .unused,
30679 .unused,
30680 .unused,
30681 },
30682 .dst_temps = .{.mem},
30683 .clobbers = .{ .eflags = true },
30684 .each = .{ .once = &.{
30685 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30686 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
30687 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
30688 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
30689 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
30690 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
30691 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
30692 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30693 } },
30694 }, .{
30695 .required_features = .{ .@"64bit", .cmov, null, null },
30696 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30697 .patterns = &.{
30698 .{ .src = .{ .to_mem, .none, .none } },
30699 },
30700 .extra_temps = .{
30701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30702 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30703 .unused,
30704 .unused,
30705 .unused,
30706 .unused,
30707 .unused,
30708 .unused,
30709 .unused,
30710 },
30711 .dst_temps = .{.mem},
30712 .clobbers = .{ .eflags = true },
30713 .each = .{ .once = &.{
30714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30715 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30716 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30717 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30718 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
30719 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
30720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30721 } },
30722 }, .{
30723 .required_features = .{ .@"64bit", null, null, null },
30724 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30725 .patterns = &.{
30726 .{ .src = .{ .to_mem, .none, .none } },
30727 },
30728 .extra_temps = .{
30729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30730 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30731 .unused,
30732 .unused,
30733 .unused,
30734 .unused,
30735 .unused,
30736 .unused,
30737 .unused,
30738 },
30739 .dst_temps = .{.mem},
30740 .clobbers = .{ .eflags = true },
30741 .each = .{ .once = &.{
30742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
30743 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
30744 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },
30745 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
30746 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },
30747 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
30748 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
30749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30750 } },
30751 }, .{
30752 .required_features = .{ .@"64bit", null, null, null },
30753 .src_constraints = .{ .any_scalar_int, .any, .any },
30754 .patterns = &.{
30755 .{ .src = .{ .to_mem, .none, .none } },
30756 },
30757 .extra_temps = .{
30758 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30760 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
30761 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30762 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
30763 .unused,
30764 .unused,
30765 .unused,
30766 .unused,
30767 },
30768 .dst_temps = .{.mem},
30769 .clobbers = .{ .eflags = true },
30770 .each = .{ .once = &.{
30771 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
30772 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },
30773 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },
30774 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
30775 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
30776 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
30777 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },
30778 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },
30779 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
30780 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
30781 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
30782 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
30783 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
30784 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
30785 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
30786 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
30787 } },
30788 }, .{
30789 .required_features = .{ .avx, null, null, null },
30790 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
30791 .patterns = &.{
30792 .{ .src = .{ .to_sse, .none, .none } },
30793 },
30794 .extra_temps = .{
30795 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30796 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
30797 .unused,
30798 .unused,
30799 .unused,
30800 .unused,
30801 .unused,
30802 .unused,
30803 .unused,
30804 },
30805 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30806 .each = .{ .once = &.{
30807 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30808 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
30809 } },
30810 }, .{
30811 .required_features = .{ .sse, null, null, null },
30812 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
30813 .patterns = &.{
30814 .{ .src = .{ .to_mut_sse, .none, .none } },
30815 },
30816 .extra_temps = .{
30817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30818 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
30819 .unused,
30820 .unused,
30821 .unused,
30822 .unused,
30823 .unused,
30824 .unused,
30825 .unused,
30826 },
30827 .dst_temps = .{.{ .ref = .src0 }},
30828 .each = .{ .once = &.{
30829 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30830 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
30831 } },
30832 }, .{
30833 .required_features = .{ .avx, null, null, null },
30834 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
30835 .patterns = &.{
30836 .{ .src = .{ .to_sse, .none, .none } },
30837 },
30838 .extra_temps = .{
30839 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30840 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
30841 .unused,
30842 .unused,
30843 .unused,
30844 .unused,
30845 .unused,
30846 .unused,
30847 .unused,
30848 },
30849 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30850 .each = .{ .once = &.{
30851 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30852 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
30853 } },
30854 }, .{
30855 .required_features = .{ .avx, null, null, null },
30856 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
30857 .patterns = &.{
30858 .{ .src = .{ .to_sse, .none, .none } },
30859 },
30860 .extra_temps = .{
30861 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30862 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
30863 .unused,
30864 .unused,
30865 .unused,
30866 .unused,
30867 .unused,
30868 .unused,
30869 .unused,
30870 },
30871 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30872 .each = .{ .once = &.{
30873 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30874 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
30875 } },
30876 }, .{
30877 .required_features = .{ .sse2, null, null, null },
30878 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
30879 .patterns = &.{
30880 .{ .src = .{ .to_mut_sse, .none, .none } },
30881 },
30882 .extra_temps = .{
30883 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30884 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
30885 .unused,
30886 .unused,
30887 .unused,
30888 .unused,
30889 .unused,
30890 .unused,
30891 .unused,
30892 },
30893 .dst_temps = .{.{ .ref = .src0 }},
30894 .each = .{ .once = &.{
30895 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30896 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
30897 } },
30898 }, .{
30899 .required_features = .{ .avx, null, null, null },
30900 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
30901 .patterns = &.{
30902 .{ .src = .{ .to_sse, .none, .none } },
30903 },
30904 .extra_temps = .{
30905 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30906 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
30907 .unused,
30908 .unused,
30909 .unused,
30910 .unused,
30911 .unused,
30912 .unused,
30913 .unused,
30914 },
30915 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30916 .each = .{ .once = &.{
30917 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30918 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
30919 } },
30920 }, .{
30921 .required_features = .{ .x87, null, null, null },
30922 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
30923 .patterns = &.{
30924 .{ .src = .{ .mem, .none, .none } },
30925 .{ .src = .{ .to_x87, .none, .none } },
30926 },
30927 .extra_temps = .{
30928 .{ .type = .f80, .kind = .{ .reg = .st7 } },
30929 .unused,
30930 .unused,
30931 .unused,
30932 .unused,
30933 .unused,
30934 .unused,
30935 .unused,
30936 .unused,
30937 },
30938 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
30939 .each = .{ .once = &.{
30940 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
30941 .{ ._, .f_, .abs, ._, ._, ._, ._ },
30942 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
1987830943 } },
1987930944 }, .{
19880 .required_features = .{ .mmx, .ssse3, null, null },
19881 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
30945 .required_features = .{ .avx, null, null, null },
30946 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1988230947 .patterns = &.{
19883 .{ .src = .{ .to_mem, .none } },
30948 .{ .src = .{ .to_sse, .none, .none } },
1988430949 },
1988530950 .extra_temps = .{
19886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19887 .{ .kind = .{ .rc = .sse } },
30951 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30952 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1988830953 .unused,
1988930954 .unused,
1989030955 .unused,
......@@ -19893,24 +30958,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1989330958 .unused,
1989430959 .unused,
1989530960 },
19896 .dst_temps = .{.mem},
19897 .clobbers = .{ .eflags = true },
30961 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1989830962 .each = .{ .once = &.{
19899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19900 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19901 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19902 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30963 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30964 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
1990430965 } },
1990530966 }, .{
19906 .required_features = .{ .mmx, .ssse3, null, null },
19907 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },
30967 .required_features = .{ .sse2, null, null, null },
30968 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1990830969 .patterns = &.{
19909 .{ .src = .{ .to_mem, .none } },
30970 .{ .src = .{ .to_mut_sse, .none, .none } },
1991030971 },
1991130972 .extra_temps = .{
19912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19913 .{ .kind = .{ .rc = .sse } },
30973 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30974 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
1991430975 .unused,
1991530976 .unused,
1991630977 .unused,
......@@ -19919,25 +30980,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1991930980 .unused,
1992030981 .unused,
1992130982 },
19922 .dst_temps = .{.mem},
19923 .clobbers = .{ .eflags = true },
30983 .dst_temps = .{.{ .ref = .src0 }},
1992430984 .each = .{ .once = &.{
19925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19926 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19927 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30985 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30986 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
1993030987 } },
1993130988 }, .{
19932 .required_features = .{ .cmov, .slow_incdec, null, null },
19933 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
30989 .required_features = .{ .sse, null, null, null },
30990 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
1993430991 .patterns = &.{
19935 .{ .src = .{ .to_mem, .none } },
30992 .{ .src = .{ .to_mut_sse, .none, .none } },
1993630993 },
1993730994 .extra_temps = .{
19938 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19939 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
19940 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30995 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30996 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
30997 .unused,
1994130998 .unused,
1994230999 .unused,
1994331000 .unused,
......@@ -19945,28 +31002,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1994531002 .unused,
1994631003 .unused,
1994731004 },
19948 .dst_temps = .{.mem},
19949 .clobbers = .{ .eflags = true },
31005 .dst_temps = .{.{ .ref = .src0 }},
1995031006 .each = .{ .once = &.{
19951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19952 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
19953 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
19954 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
19955 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
19956 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
19957 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
19958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31007 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31008 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
1995931009 } },
1996031010 }, .{
19961 .required_features = .{ .cmov, null, null, null },
19962 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
31011 .required_features = .{ .avx2, null, null, null },
31012 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
1996331013 .patterns = &.{
19964 .{ .src = .{ .to_mem, .none } },
31014 .{ .src = .{ .to_sse, .none, .none } },
1996531015 },
1996631016 .extra_temps = .{
19967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19968 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
19969 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31017 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31018 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
31019 .unused,
1997031020 .unused,
1997131021 .unused,
1997231022 .unused,
......@@ -19974,27 +31024,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1997431024 .unused,
1997531025 .unused,
1997631026 },
19977 .dst_temps = .{.mem},
19978 .clobbers = .{ .eflags = true },
31027 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
1997931028 .each = .{ .once = &.{
19980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19981 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
19982 .{ ._, ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
19983 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
19984 .{ ._, ._s, .cmov, .tmp1d, .tmp2d, ._, ._ },
19985 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
19986 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
19987 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31030 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
1998831031 } },
1998931032 }, .{
19990 .required_features = .{ .slow_incdec, null, null, null },
19991 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
31033 .required_features = .{ .avx, null, null, null },
31034 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
1999231035 .patterns = &.{
19993 .{ .src = .{ .to_mem, .none } },
31036 .{ .src = .{ .to_sse, .none, .none } },
1999431037 },
1999531038 .extra_temps = .{
19996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
19997 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31039 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31040 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
1999831041 .unused,
1999931042 .unused,
2000031043 .unused,
......@@ -20003,28 +31046,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2000331046 .unused,
2000431047 .unused,
2000531048 },
20006 .dst_temps = .{.mem},
20007 .clobbers = .{ .eflags = true },
31049 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2000831050 .each = .{ .once = &.{
20009 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20010 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
20011 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
20012 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20013 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
20014 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20015 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
20016 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31051 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31052 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2001731053 } },
2001831054 }, .{
20019 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
31055 .required_features = .{ .avx, null, null, null },
31056 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
2002031057 .patterns = &.{
20021 .{ .src = .{ .to_mem, .none } },
31058 .{ .src = .{ .to_mem, .none, .none } },
2002231059 },
2002331060 .extra_temps = .{
2002431061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20025 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
20026 .unused,
20027 .unused,
31062 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
31063 .{ .kind = .{ .rc = .sse } },
31064 .{ .kind = .{ .rc = .sse } },
2002831065 .unused,
2002931066 .unused,
2003031067 .unused,
......@@ -20032,28 +31069,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2003231069 .unused,
2003331070 },
2003431071 .dst_temps = .{.mem},
20035 .clobbers = .{ .eflags = true },
2003631072 .each = .{ .once = &.{
31073 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31074 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2003731075 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20038 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },
20039 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
20040 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20041 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
20042 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20043 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
20044 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
31076 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
31077 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
31078 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
31079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2004531080 } },
2004631081 }, .{
20047 .required_features = .{ .cmov, null, null, null },
20048 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
31082 .required_features = .{ .sse, null, null, null },
31083 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
2004931084 .patterns = &.{
20050 .{ .src = .{ .to_mem, .none } },
31085 .{ .src = .{ .to_mem, .none, .none } },
2005131086 },
2005231087 .extra_temps = .{
2005331088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20054 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
20055 .unused,
20056 .unused,
31089 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
31090 .{ .kind = .{ .rc = .sse } },
31091 .{ .kind = .{ .rc = .sse } },
2005731092 .unused,
2005831093 .unused,
2005931094 .unused,
......@@ -20061,26 +31096,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2006131096 .unused,
2006231097 },
2006331098 .dst_temps = .{.mem},
20064 .clobbers = .{ .eflags = true },
2006531099 .each = .{ .once = &.{
31100 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31101 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2006631102 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20067 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20068 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20069 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31103 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
31104 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
31105 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
31106 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2007231107 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2007331108 } },
2007431109 }, .{
20075 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
31110 .required_features = .{ .avx, null, null, null },
31111 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
2007631112 .patterns = &.{
20077 .{ .src = .{ .to_mem, .none } },
31113 .{ .src = .{ .to_mem, .none, .none } },
2007831114 },
2007931115 .extra_temps = .{
2008031116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20081 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
20082 .unused,
20083 .unused,
31117 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
31118 .{ .kind = .{ .rc = .sse } },
31119 .{ .kind = .{ .rc = .sse } },
2008431120 .unused,
2008531121 .unused,
2008631122 .unused,
......@@ -20088,28 +31124,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2008831124 .unused,
2008931125 },
2009031126 .dst_temps = .{.mem},
20091 .clobbers = .{ .eflags = true },
2009231127 .each = .{ .once = &.{
31128 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31129 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2009331130 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20094 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
20095 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
20096 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20097 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20098 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20099 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31131 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
31132 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
31133 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2010031134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2010131135 } },
2010231136 }, .{
20103 .required_features = .{ .cmov, null, null, null },
20104 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
31137 .required_features = .{ .sse2, null, null, null },
31138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
2010531139 .patterns = &.{
20106 .{ .src = .{ .to_mem, .none } },
31140 .{ .src = .{ .to_mem, .none, .none } },
2010731141 },
2010831142 .extra_temps = .{
2010931143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20110 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
20111 .unused,
20112 .unused,
31144 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
31145 .{ .kind = .{ .rc = .sse } },
31146 .{ .kind = .{ .rc = .sse } },
2011331147 .unused,
2011431148 .unused,
2011531149 .unused,
......@@ -20117,26 +31151,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2011731151 .unused,
2011831152 },
2011931153 .dst_temps = .{.mem},
20120 .clobbers = .{ .eflags = true },
2012131154 .each = .{ .once = &.{
31155 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31156 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2012231157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20123 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20124 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20125 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20126 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20127 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31158 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
31159 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
31160 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
31161 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2012831162 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2012931163 } },
2013031164 }, .{
20131 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
31165 .required_features = .{ .avx2, null, null, null },
31166 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
2013231167 .patterns = &.{
20133 .{ .src = .{ .to_mem, .none } },
31168 .{ .src = .{ .to_mem, .none, .none } },
2013431169 },
2013531170 .extra_temps = .{
2013631171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20137 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
20138 .unused,
20139 .unused,
31172 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
31173 .{ .kind = .{ .rc = .sse } },
31174 .{ .kind = .{ .rc = .sse } },
2014031175 .unused,
2014131176 .unused,
2014231177 .unused,
......@@ -20144,28 +31179,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2014431179 .unused,
2014531180 },
2014631181 .dst_temps = .{.mem},
20147 .clobbers = .{ .eflags = true },
2014831182 .each = .{ .once = &.{
31183 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31184 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2014931185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20150 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
20151 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },
20152 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20153 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20154 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20155 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31186 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
31187 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
31188 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2015631189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2015731190 } },
2015831191 }, .{
20159 .required_features = .{ .@"64bit", .cmov, null, null },
20160 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
31192 .required_features = .{ .avx, null, null, null },
31193 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
2016131194 .patterns = &.{
20162 .{ .src = .{ .to_mem, .none } },
31195 .{ .src = .{ .to_mem, .none, .none } },
2016331196 },
2016431197 .extra_temps = .{
2016531198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20166 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
20167 .unused,
20168 .unused,
31199 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
31200 .{ .kind = .{ .rc = .sse } },
31201 .{ .kind = .{ .rc = .sse } },
2016931202 .unused,
2017031203 .unused,
2017131204 .unused,
......@@ -20173,27 +31206,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2017331206 .unused,
2017431207 },
2017531208 .dst_temps = .{.mem},
20176 .clobbers = .{ .eflags = true },
2017731209 .each = .{ .once = &.{
31210 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31211 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2017831212 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20179 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },
20180 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20181 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20182 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20183 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31213 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
31214 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
31215 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2018431216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2018531217 } },
2018631218 }, .{
20187 .required_features = .{ .@"64bit", null, null, null },
20188 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
31219 .required_features = .{ .sse2, null, null, null },
31220 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2018931221 .patterns = &.{
20190 .{ .src = .{ .to_mem, .none } },
31222 .{ .src = .{ .to_mem, .none, .none } },
2019131223 },
2019231224 .extra_temps = .{
2019331225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20194 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
20195 .unused,
20196 .unused,
31226 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
31227 .{ .kind = .{ .rc = .sse } },
31228 .{ .kind = .{ .rc = .sse } },
2019731229 .unused,
2019831230 .unused,
2019931231 .unused,
......@@ -20201,63 +31233,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2020131233 .unused,
2020231234 },
2020331235 .dst_temps = .{.mem},
20204 .clobbers = .{ .eflags = true },
2020531236 .each = .{ .once = &.{
31237 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31238 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2020631239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20207 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
20208 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },
20209 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
20210 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },
20211 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20212 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31240 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
31241 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
31242 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
31243 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2021331244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2021431245 } },
2021531246 }, .{
20216 .required_features = .{ .@"64bit", null, null, null },
20217 .src_constraints = .{ .any_scalar_int, .any },
31247 .required_features = .{ .sse, null, null, null },
31248 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2021831249 .patterns = &.{
20219 .{ .src = .{ .to_mem, .none } },
31250 .{ .src = .{ .to_mem, .none, .none } },
2022031251 },
2022131252 .extra_temps = .{
20222 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
2022331253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20224 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
20225 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
20226 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
31254 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
31255 .{ .kind = .{ .rc = .sse } },
31256 .{ .kind = .{ .rc = .sse } },
31257 .unused,
2022731258 .unused,
2022831259 .unused,
2022931260 .unused,
2023031261 .unused,
2023131262 },
2023231263 .dst_temps = .{.mem},
20233 .clobbers = .{ .eflags = true },
2023431264 .each = .{ .once = &.{
20235 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
20236 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },
20237 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },
20238 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
20239 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
20240 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
20241 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },
20242 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },
20243 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
20244 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
20245 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
20246 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
20247 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
20248 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
20249 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
20250 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
31265 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31266 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
31267 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
31268 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
31269 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
31270 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
31271 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31273 } },
31274 } }) catch |err| switch (err) {
31275 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
31276 @tagName(air_tag),
31277 cg.typeOf(ty_op.operand).fmt(pt),
31278 ops[0].tracking(cg),
31279 }),
31280 else => |e| return e,
31281 };
31282 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
31283 },
31284 .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) {
31285 else => unreachable,
31286 .floor => .down,
31287 .ceil => .up,
31288 .trunc_float => .zero,
31289 }, .precision = .inexact }) else {
31290 const un_op = air_datas[@intFromEnum(inst)].un_op;
31291 var ops = try cg.tempsFromOperands(inst, .{un_op});
31292 var res: [1]Temp = undefined;
31293 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
31294 else => unreachable,
31295 .floor => .down,
31296 .ceil => .up,
31297 .trunc_float => .zero,
31298 })) {
31299 else => unreachable,
31300 inline .down, .up, .zero => |direction| comptime &.{ .{
31301 .required_features = .{ .f16c, null, null, null },
31302 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31303 .patterns = &.{
31304 .{ .src = .{ .to_sse, .none, .none } },
31305 },
31306 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31307 .each = .{ .once = &.{
31308 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
31309 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
31310 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
31311 } },
31312 }, .{
31313 .required_features = .{ .sse, null, null, null },
31314 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31315 .patterns = &.{
31316 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31317 },
31318 .call_frame = .{ .alignment = .@"16" },
31319 .extra_temps = .{
31320 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31321 else => unreachable,
31322 .down => "__floorh",
31323 .up => "__ceilh",
31324 .zero => "__trunch",
31325 } } } },
31326 .unused,
31327 .unused,
31328 .unused,
31329 .unused,
31330 .unused,
31331 .unused,
31332 .unused,
31333 .unused,
31334 },
31335 .dst_temps = .{.{ .ref = .src0 }},
31336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31337 .each = .{ .once = &.{
31338 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31339 } },
31340 }, .{
31341 .required_features = .{ .f16c, null, null, null },
31342 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
31343 .patterns = &.{
31344 .{ .src = .{ .mem, .none, .none } },
31345 .{ .src = .{ .to_sse, .none, .none } },
31346 },
31347 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31348 .each = .{ .once = &.{
31349 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
31350 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31351 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
31352 } },
31353 }, .{
31354 .required_features = .{ .f16c, null, null, null },
31355 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
31356 .patterns = &.{
31357 .{ .src = .{ .mem, .none, .none } },
31358 .{ .src = .{ .to_sse, .none, .none } },
31359 },
31360 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31361 .each = .{ .once = &.{
31362 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
31363 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31364 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
31365 } },
31366 }, .{
31367 .required_features = .{ .f16c, null, null, null },
31368 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
31369 .patterns = &.{
31370 .{ .src = .{ .to_mem, .none, .none } },
31371 },
31372 .extra_temps = .{
31373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31374 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
31375 .unused,
31376 .unused,
31377 .unused,
31378 .unused,
31379 .unused,
31380 .unused,
31381 .unused,
31382 },
31383 .dst_temps = .{.mem},
31384 .clobbers = .{ .eflags = true },
31385 .each = .{ .once = &.{
31386 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31387 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31388 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31389 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
31390 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31391 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31392 } },
31393 }, .{
31394 .required_features = .{ .avx, null, null, null },
31395 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31396 .patterns = &.{
31397 .{ .src = .{ .to_mem, .none, .none } },
31398 },
31399 .call_frame = .{ .alignment = .@"16" },
31400 .extra_temps = .{
31401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31402 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31404 else => unreachable,
31405 .down => "__floorh",
31406 .up => "__ceilh",
31407 .zero => "__trunch",
31408 } } } },
31409 .unused,
31410 .unused,
31411 .unused,
31412 .unused,
31413 .unused,
31414 .unused,
31415 },
31416 .dst_temps = .{.mem},
31417 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31418 .each = .{ .once = &.{
31419 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31420 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
31421 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
31422 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31423 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
31424 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31426 } },
31427 }, .{
31428 .required_features = .{ .sse4_1, null, null, null },
31429 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31430 .patterns = &.{
31431 .{ .src = .{ .to_mem, .none, .none } },
31432 },
31433 .call_frame = .{ .alignment = .@"16" },
31434 .extra_temps = .{
31435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31436 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31438 else => unreachable,
31439 .down => "__floorh",
31440 .up => "__ceilh",
31441 .zero => "__trunch",
31442 } } } },
31443 .unused,
31444 .unused,
31445 .unused,
31446 .unused,
31447 .unused,
31448 .unused,
31449 },
31450 .dst_temps = .{.mem},
31451 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31452 .each = .{ .once = &.{
31453 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31454 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
31455 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
31456 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31457 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
31458 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31459 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31460 } },
31461 }, .{
31462 .required_features = .{ .sse2, null, null, null },
31463 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31464 .patterns = &.{
31465 .{ .src = .{ .to_mem, .none, .none } },
31466 },
31467 .call_frame = .{ .alignment = .@"16" },
31468 .extra_temps = .{
31469 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31470 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31471 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31472 else => unreachable,
31473 .down => "__floorh",
31474 .up => "__ceilh",
31475 .zero => "__trunch",
31476 } } } },
31477 .{ .type = .f16, .kind = .{ .reg = .ax } },
31478 .unused,
31479 .unused,
31480 .unused,
31481 .unused,
31482 .unused,
31483 },
31484 .dst_temps = .{.mem},
31485 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31486 .each = .{ .once = &.{
31487 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31488 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
31489 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
31490 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31491 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
31492 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
31493 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31495 } },
31496 }, .{
31497 .required_features = .{ .sse, null, null, null },
31498 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
31499 .patterns = &.{
31500 .{ .src = .{ .to_mem, .none, .none } },
31501 },
31502 .call_frame = .{ .alignment = .@"16" },
31503 .extra_temps = .{
31504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31505 .{ .type = .f16, .kind = .{ .reg = .ax } },
31506 .{ .type = .f32, .kind = .mem },
31507 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
31508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31509 else => unreachable,
31510 .down => "__floorh",
31511 .up => "__ceilh",
31512 .zero => "__trunch",
31513 } } } },
31514 .unused,
31515 .unused,
31516 .unused,
31517 .unused,
31518 },
31519 .dst_temps = .{.mem},
31520 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31521 .each = .{ .once = &.{
31522 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31523 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
31524 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
31525 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
31526 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
31527 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
31528 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
31529 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31530 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31532 } },
31533 }, .{
31534 .required_features = .{ .avx, null, null, null },
31535 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31536 .patterns = &.{
31537 .{ .src = .{ .mem, .none, .none } },
31538 },
31539 .dst_temps = .{.{ .rc = .sse }},
31540 .each = .{ .once = &.{
31541 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
31542 .{ ._, .v_ss, .round, .dst0x, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) },
31543 } },
31544 }, .{
31545 .required_features = .{ .avx, null, null, null },
31546 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31547 .patterns = &.{
31548 .{ .src = .{ .to_sse, .none, .none } },
31549 },
31550 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31551 .each = .{ .once = &.{
31552 .{ ._, .v_ss, .round, .dst0x, .src0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) },
31553 } },
31554 }, .{
31555 .required_features = .{ .sse4_1, null, null, null },
31556 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31557 .patterns = &.{
31558 .{ .src = .{ .mem, .none, .none } },
31559 },
31560 .dst_temps = .{.{ .rc = .sse }},
31561 .each = .{ .once = &.{
31562 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
31563 .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31564 } },
31565 }, .{
31566 .required_features = .{ .sse4_1, null, null, null },
31567 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31568 .patterns = &.{
31569 .{ .src = .{ .to_mut_sse, .none, .none } },
31570 },
31571 .dst_temps = .{.{ .ref = .src0 }},
31572 .each = .{ .once = &.{
31573 .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31574 } },
31575 }, .{
31576 .required_features = .{ .sse, null, null, null },
31577 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31578 .patterns = &.{
31579 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31580 },
31581 .call_frame = .{ .alignment = .@"16" },
31582 .extra_temps = .{
31583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31584 else => unreachable,
31585 .down => "floorf",
31586 .up => "ceilf",
31587 .zero => "truncf",
31588 } } } },
31589 .unused,
31590 .unused,
31591 .unused,
31592 .unused,
31593 .unused,
31594 .unused,
31595 .unused,
31596 .unused,
31597 },
31598 .dst_temps = .{.{ .ref = .src0 }},
31599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31600 .each = .{ .once = &.{
31601 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31602 } },
31603 }, .{
31604 .required_features = .{ .avx, null, null, null },
31605 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
31606 .patterns = &.{
31607 .{ .src = .{ .mem, .none, .none } },
31608 .{ .src = .{ .to_sse, .none, .none } },
31609 },
31610 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31611 .each = .{ .once = &.{
31612 .{ ._, .v_ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31613 } },
31614 }, .{
31615 .required_features = .{ .sse4_1, null, null, null },
31616 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
31617 .patterns = &.{
31618 .{ .src = .{ .mem, .none, .none } },
31619 .{ .src = .{ .to_sse, .none, .none } },
31620 },
31621 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31622 .each = .{ .once = &.{
31623 .{ ._, ._ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31624 } },
31625 }, .{
31626 .required_features = .{ .avx, null, null, null },
31627 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
31628 .patterns = &.{
31629 .{ .src = .{ .mem, .none, .none } },
31630 .{ .src = .{ .to_sse, .none, .none } },
31631 },
31632 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31633 .each = .{ .once = &.{
31634 .{ ._, .v_ps, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31635 } },
31636 }, .{
31637 .required_features = .{ .avx, null, null, null },
31638 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
31639 .patterns = &.{
31640 .{ .src = .{ .to_mem, .none, .none } },
31641 },
31642 .extra_temps = .{
31643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31644 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
31645 .unused,
31646 .unused,
31647 .unused,
31648 .unused,
31649 .unused,
31650 .unused,
31651 .unused,
31652 },
31653 .dst_temps = .{.mem},
31654 .clobbers = .{ .eflags = true },
31655 .each = .{ .once = &.{
31656 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31657 .{ .@"0:", .v_ps, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{
31658 .direction = direction,
31659 .precision = .inexact,
31660 }), ._ },
31661 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
31662 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
31663 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31664 } },
31665 }, .{
31666 .required_features = .{ .sse4_1, null, null, null },
31667 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
31668 .patterns = &.{
31669 .{ .src = .{ .to_mem, .none, .none } },
31670 },
31671 .extra_temps = .{
31672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31673 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
31674 .unused,
31675 .unused,
31676 .unused,
31677 .unused,
31678 .unused,
31679 .unused,
31680 .unused,
31681 },
31682 .dst_temps = .{.mem},
31683 .clobbers = .{ .eflags = true },
31684 .each = .{ .once = &.{
31685 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31686 .{ .@"0:", ._ps, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
31687 .direction = direction,
31688 .precision = .inexact,
31689 }), ._ },
31690 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31691 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31692 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31693 } },
31694 }, .{
31695 .required_features = .{ .avx, null, null, null },
31696 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31697 .patterns = &.{
31698 .{ .src = .{ .to_mem, .none, .none } },
31699 },
31700 .call_frame = .{ .alignment = .@"16" },
31701 .extra_temps = .{
31702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31703 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
31704 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31705 else => unreachable,
31706 .down => "floorf",
31707 .up => "ceilf",
31708 .zero => "truncf",
31709 } } } },
31710 .unused,
31711 .unused,
31712 .unused,
31713 .unused,
31714 .unused,
31715 .unused,
31716 },
31717 .dst_temps = .{.mem},
31718 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31719 .each = .{ .once = &.{
31720 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31721 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
31722 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31723 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31724 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31725 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31726 } },
31727 }, .{
31728 .required_features = .{ .sse, null, null, null },
31729 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
31730 .patterns = &.{
31731 .{ .src = .{ .to_mem, .none, .none } },
31732 },
31733 .call_frame = .{ .alignment = .@"16" },
31734 .extra_temps = .{
31735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31736 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
31737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31738 else => unreachable,
31739 .down => "floorf",
31740 .up => "ceilf",
31741 .zero => "truncf",
31742 } } } },
31743 .unused,
31744 .unused,
31745 .unused,
31746 .unused,
31747 .unused,
31748 .unused,
31749 },
31750 .dst_temps = .{.mem},
31751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31752 .each = .{ .once = &.{
31753 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31754 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
31755 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31756 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31757 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31759 } },
31760 }, .{
31761 .required_features = .{ .avx, null, null, null },
31762 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31763 .patterns = &.{
31764 .{ .src = .{ .mem, .none, .none } },
31765 },
31766 .dst_temps = .{.{ .rc = .sse }},
31767 .each = .{ .once = &.{
31768 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
31769 .{ ._, .v_sd, .round, .dst0x, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) },
31770 } },
31771 }, .{
31772 .required_features = .{ .avx, null, null, null },
31773 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31774 .patterns = &.{
31775 .{ .src = .{ .to_sse, .none, .none } },
31776 },
31777 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31778 .each = .{ .once = &.{
31779 .{ ._, .v_sd, .round, .dst0x, .src0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) },
31780 } },
31781 }, .{
31782 .required_features = .{ .sse4_1, null, null, null },
31783 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31784 .patterns = &.{
31785 .{ .src = .{ .mem, .none, .none } },
31786 },
31787 .dst_temps = .{.{ .rc = .sse }},
31788 .each = .{ .once = &.{
31789 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
31790 .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31791 } },
31792 }, .{
31793 .required_features = .{ .sse4_1, null, null, null },
31794 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31795 .patterns = &.{
31796 .{ .src = .{ .to_mut_sse, .none, .none } },
31797 },
31798 .dst_temps = .{.{ .ref = .src0 }},
31799 .each = .{ .once = &.{
31800 .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31801 } },
31802 }, .{
31803 .required_features = .{ .sse, null, null, null },
31804 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31805 .patterns = &.{
31806 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
31807 },
31808 .call_frame = .{ .alignment = .@"16" },
31809 .extra_temps = .{
31810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31811 else => unreachable,
31812 .down => "floor",
31813 .up => "ceil",
31814 .zero => "trunc",
31815 } } } },
31816 .unused,
31817 .unused,
31818 .unused,
31819 .unused,
31820 .unused,
31821 .unused,
31822 .unused,
31823 .unused,
31824 },
31825 .dst_temps = .{.{ .ref = .src0 }},
31826 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31827 .each = .{ .once = &.{
31828 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
31829 } },
31830 }, .{
31831 .required_features = .{ .avx, null, null, null },
31832 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
31833 .patterns = &.{
31834 .{ .src = .{ .mem, .none, .none } },
31835 .{ .src = .{ .to_sse, .none, .none } },
31836 },
31837 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31838 .each = .{ .once = &.{
31839 .{ ._, .v_pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31840 } },
31841 }, .{
31842 .required_features = .{ .sse4_1, null, null, null },
31843 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
31844 .patterns = &.{
31845 .{ .src = .{ .mem, .none, .none } },
31846 .{ .src = .{ .to_sse, .none, .none } },
31847 },
31848 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31849 .each = .{ .once = &.{
31850 .{ ._, ._pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31851 } },
31852 }, .{
31853 .required_features = .{ .avx, null, null, null },
31854 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
31855 .patterns = &.{
31856 .{ .src = .{ .mem, .none, .none } },
31857 .{ .src = .{ .to_sse, .none, .none } },
31858 },
31859 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31860 .each = .{ .once = &.{
31861 .{ ._, .v_pd, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
31862 } },
31863 }, .{
31864 .required_features = .{ .avx, null, null, null },
31865 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
31866 .patterns = &.{
31867 .{ .src = .{ .to_mem, .none, .none } },
31868 },
31869 .extra_temps = .{
31870 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31871 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
31872 .unused,
31873 .unused,
31874 .unused,
31875 .unused,
31876 .unused,
31877 .unused,
31878 .unused,
31879 },
31880 .dst_temps = .{.mem},
31881 .clobbers = .{ .eflags = true },
31882 .each = .{ .once = &.{
31883 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31884 .{ .@"0:", .v_pd, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{
31885 .direction = direction,
31886 .precision = .inexact,
31887 }), ._ },
31888 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
31889 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
31890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31891 } },
31892 }, .{
31893 .required_features = .{ .sse4_1, null, null, null },
31894 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
31895 .patterns = &.{
31896 .{ .src = .{ .to_mem, .none, .none } },
31897 },
31898 .extra_temps = .{
31899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31900 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
31901 .unused,
31902 .unused,
31903 .unused,
31904 .unused,
31905 .unused,
31906 .unused,
31907 .unused,
31908 },
31909 .dst_temps = .{.mem},
31910 .clobbers = .{ .eflags = true },
31911 .each = .{ .once = &.{
31912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31913 .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{
31914 .direction = direction,
31915 .precision = .inexact,
31916 }), ._ },
31917 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31918 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31919 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31920 } },
31921 }, .{
31922 .required_features = .{ .avx, null, null, null },
31923 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31924 .patterns = &.{
31925 .{ .src = .{ .to_mem, .none, .none } },
31926 },
31927 .call_frame = .{ .alignment = .@"16" },
31928 .extra_temps = .{
31929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31930 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31932 else => unreachable,
31933 .down => "floor",
31934 .up => "ceil",
31935 .zero => "trunc",
31936 } } } },
31937 .unused,
31938 .unused,
31939 .unused,
31940 .unused,
31941 .unused,
31942 .unused,
31943 },
31944 .dst_temps = .{.mem},
31945 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31946 .each = .{ .once = &.{
31947 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31948 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
31949 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31950 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31951 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31952 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31953 } },
31954 }, .{
31955 .required_features = .{ .sse2, null, null, null },
31956 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31957 .patterns = &.{
31958 .{ .src = .{ .to_mem, .none, .none } },
31959 },
31960 .call_frame = .{ .alignment = .@"16" },
31961 .extra_temps = .{
31962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31963 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31965 else => unreachable,
31966 .down => "floor",
31967 .up => "ceil",
31968 .zero => "trunc",
31969 } } } },
31970 .unused,
31971 .unused,
31972 .unused,
31973 .unused,
31974 .unused,
31975 .unused,
31976 },
31977 .dst_temps = .{.mem},
31978 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
31979 .each = .{ .once = &.{
31980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
31981 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
31982 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
31983 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31984 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
31985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31986 } },
31987 }, .{
31988 .required_features = .{ .sse, null, null, null },
31989 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
31990 .patterns = &.{
31991 .{ .src = .{ .to_mem, .none, .none } },
31992 },
31993 .call_frame = .{ .alignment = .@"16" },
31994 .extra_temps = .{
31995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31996 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
31997 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
31998 else => unreachable,
31999 .down => "floor",
32000 .up => "ceil",
32001 .zero => "trunc",
32002 } } } },
32003 .unused,
32004 .unused,
32005 .unused,
32006 .unused,
32007 .unused,
32008 .unused,
32009 },
32010 .dst_temps = .{.mem},
32011 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32012 .each = .{ .once = &.{
32013 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32014 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
32015 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
32016 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32017 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32018 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32020 } },
32021 }, .{
32022 .required_features = .{ .avx, .x87, null, null },
32023 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32024 .patterns = &.{
32025 .{ .src = .{ .to_mem, .none, .none } },
32026 },
32027 .call_frame = .{ .size = 16, .alignment = .@"16" },
32028 .extra_temps = .{
32029 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32030 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32032 else => unreachable,
32033 .down => "__floorx",
32034 .up => "__ceilx",
32035 .zero => "__truncx",
32036 } } } },
32037 .unused,
32038 .unused,
32039 .unused,
32040 .unused,
32041 .unused,
32042 .unused,
32043 },
32044 .dst_temps = .{.{ .reg = .st0 }},
32045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32046 .each = .{ .once = &.{
32047 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
32048 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
32049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32050 } },
32051 }, .{
32052 .required_features = .{ .sse2, .x87, null, null },
32053 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32054 .patterns = &.{
32055 .{ .src = .{ .to_mem, .none, .none } },
32056 },
32057 .call_frame = .{ .size = 16, .alignment = .@"16" },
32058 .extra_temps = .{
32059 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32060 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32062 else => unreachable,
32063 .down => "__floorx",
32064 .up => "__ceilx",
32065 .zero => "__truncx",
32066 } } } },
32067 .unused,
32068 .unused,
32069 .unused,
32070 .unused,
32071 .unused,
32072 .unused,
32073 },
32074 .dst_temps = .{.{ .reg = .st0 }},
32075 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32076 .each = .{ .once = &.{
32077 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },
32078 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },
32079 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32080 } },
32081 }, .{
32082 .required_features = .{ .sse, .x87, null, null },
32083 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32084 .patterns = &.{
32085 .{ .src = .{ .to_mem, .none, .none } },
32086 },
32087 .call_frame = .{ .size = 16, .alignment = .@"16" },
32088 .extra_temps = .{
32089 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32090 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32091 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32092 else => unreachable,
32093 .down => "__floorx",
32094 .up => "__ceilx",
32095 .zero => "__truncx",
32096 } } } },
32097 .unused,
32098 .unused,
32099 .unused,
32100 .unused,
32101 .unused,
32102 .unused,
32103 },
32104 .dst_temps = .{.{ .reg = .st0 }},
32105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32106 .each = .{ .once = &.{
32107 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
32108 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
32109 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32110 } },
32111 }, .{
32112 .required_features = .{ .avx, .x87, null, null },
32113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32114 .patterns = &.{
32115 .{ .src = .{ .to_mem, .none, .none } },
32116 },
32117 .call_frame = .{ .size = 16, .alignment = .@"16" },
32118 .extra_temps = .{
32119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32120 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32121 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32123 else => unreachable,
32124 .down => "__floorx",
32125 .up => "__ceilx",
32126 .zero => "__truncx",
32127 } } } },
32128 .unused,
32129 .unused,
32130 .unused,
32131 .unused,
32132 .unused,
32133 },
32134 .dst_temps = .{.mem},
32135 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32136 .each = .{ .once = &.{
32137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32138 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32139 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
32140 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32141 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
32142 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
32143 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32145 } },
32146 }, .{
32147 .required_features = .{ .sse2, .x87, null, null },
32148 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32149 .patterns = &.{
32150 .{ .src = .{ .to_mem, .none, .none } },
32151 },
32152 .call_frame = .{ .size = 16, .alignment = .@"16" },
32153 .extra_temps = .{
32154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32155 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32156 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32158 else => unreachable,
32159 .down => "__floorx",
32160 .up => "__ceilx",
32161 .zero => "__truncx",
32162 } } } },
32163 .unused,
32164 .unused,
32165 .unused,
32166 .unused,
32167 .unused,
32168 },
32169 .dst_temps = .{.mem},
32170 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32171 .each = .{ .once = &.{
32172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32173 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32174 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
32175 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32176 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
32177 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
32178 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32180 } },
32181 }, .{
32182 .required_features = .{ .sse, .x87, null, null },
32183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
32184 .patterns = &.{
32185 .{ .src = .{ .to_mem, .none, .none } },
32186 },
32187 .call_frame = .{ .size = 16, .alignment = .@"16" },
32188 .extra_temps = .{
32189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32190 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
32191 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
32192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32193 else => unreachable,
32194 .down => "__floorx",
32195 .up => "__ceilx",
32196 .zero => "__truncx",
32197 } } } },
32198 .unused,
32199 .unused,
32200 .unused,
32201 .unused,
32202 .unused,
32203 },
32204 .dst_temps = .{.mem},
32205 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32206 .each = .{ .once = &.{
32207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32208 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32209 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
32210 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32211 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
32212 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
32213 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32215 } },
32216 }, .{
32217 .required_features = .{ .sse, null, null, null },
32218 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
32219 .patterns = &.{
32220 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
32221 },
32222 .call_frame = .{ .alignment = .@"16" },
32223 .extra_temps = .{
32224 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32225 else => unreachable,
32226 .down => "floorq",
32227 .up => "ceilq",
32228 .zero => "truncq",
32229 } } } },
32230 .unused,
32231 .unused,
32232 .unused,
32233 .unused,
32234 .unused,
32235 .unused,
32236 .unused,
32237 .unused,
32238 },
32239 .dst_temps = .{.{ .ref = .src0 }},
32240 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32241 .each = .{ .once = &.{
32242 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
32243 } },
32244 }, .{
32245 .required_features = .{ .avx, null, null, null },
32246 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
32247 .patterns = &.{
32248 .{ .src = .{ .to_mem, .none, .none } },
32249 },
32250 .call_frame = .{ .alignment = .@"16" },
32251 .extra_temps = .{
32252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32253 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
32254 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32255 else => unreachable,
32256 .down => "floorq",
32257 .up => "ceilq",
32258 .zero => "truncq",
32259 } } } },
32260 .unused,
32261 .unused,
32262 .unused,
32263 .unused,
32264 .unused,
32265 .unused,
32266 },
32267 .dst_temps = .{.mem},
32268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32269 .each = .{ .once = &.{
32270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32271 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32273 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32274 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32275 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32276 } },
32277 }, .{
32278 .required_features = .{ .sse2, null, null, null },
32279 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
32280 .patterns = &.{
32281 .{ .src = .{ .to_mem, .none, .none } },
32282 },
32283 .call_frame = .{ .alignment = .@"16" },
32284 .extra_temps = .{
32285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32286 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
32287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32288 else => unreachable,
32289 .down => "floorq",
32290 .up => "ceilq",
32291 .zero => "truncq",
32292 } } } },
32293 .unused,
32294 .unused,
32295 .unused,
32296 .unused,
32297 .unused,
32298 .unused,
32299 },
32300 .dst_temps = .{.mem},
32301 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32302 .each = .{ .once = &.{
32303 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32304 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32305 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32306 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32307 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32309 } },
32310 }, .{
32311 .required_features = .{ .sse, null, null, null },
32312 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
32313 .patterns = &.{
32314 .{ .src = .{ .to_mem, .none, .none } },
32315 },
32316 .call_frame = .{ .alignment = .@"16" },
32317 .extra_temps = .{
32318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32319 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
32320 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
32321 else => unreachable,
32322 .down => "floorq",
32323 .up => "ceilq",
32324 .zero => "truncq",
32325 } } } },
32326 .unused,
32327 .unused,
32328 .unused,
32329 .unused,
32330 .unused,
32331 .unused,
32332 },
32333 .dst_temps = .{.mem},
32334 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32335 .each = .{ .once = &.{
32336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32337 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32338 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
32339 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32340 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32341 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32342 } },
2025132343 } },
20252 }, .{
32344 }) catch |err| switch (err) {
32345 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
32346 @tagName(air_tag),
32347 cg.typeOf(un_op).fmt(pt),
32348 ops[0].tracking(cg),
32349 }),
32350 else => |e| return e,
32351 };
32352 try res[0].finish(inst, &.{un_op}, &ops, cg);
32353 },
32354 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {
32355 const un_op = air_datas[@intFromEnum(inst)].un_op;
32356 var ops = try cg.tempsFromOperands(inst, .{un_op});
32357 var res: [1]Temp = undefined;
32358 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
2025332359 .required_features = .{ .avx, null, null, null },
20254 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
32360 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
2025532361 .patterns = &.{
20256 .{ .src = .{ .to_sse, .none } },
32362 .{ .src = .{ .to_sse, .none, .none } },
2025732363 },
2025832364 .extra_temps = .{
2025932365 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20260 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32366 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2026132367 .unused,
2026232368 .unused,
2026332369 .unused,
......@@ -20269,17 +32375,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2026932375 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2027032376 .each = .{ .once = &.{
2027132377 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20272 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
32378 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2027332379 } },
2027432380 }, .{
2027532381 .required_features = .{ .sse, null, null, null },
20276 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
32382 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
2027732383 .patterns = &.{
20278 .{ .src = .{ .to_mut_sse, .none } },
32384 .{ .src = .{ .to_mut_sse, .none, .none } },
2027932385 },
2028032386 .extra_temps = .{
2028132387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20282 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32388 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2028332389 .unused,
2028432390 .unused,
2028532391 .unused,
......@@ -20291,17 +32397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2029132397 .dst_temps = .{.{ .ref = .src0 }},
2029232398 .each = .{ .once = &.{
2029332399 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20294 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32400 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2029532401 } },
2029632402 }, .{
2029732403 .required_features = .{ .avx, null, null, null },
20298 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
32404 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
2029932405 .patterns = &.{
20300 .{ .src = .{ .to_sse, .none } },
32406 .{ .src = .{ .to_sse, .none, .none } },
2030132407 },
2030232408 .extra_temps = .{
2030332409 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20304 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32410 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2030532411 .unused,
2030632412 .unused,
2030732413 .unused,
......@@ -20313,17 +32419,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2031332419 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2031432420 .each = .{ .once = &.{
2031532421 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20316 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32422 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2031732423 } },
2031832424 }, .{
2031932425 .required_features = .{ .avx, null, null, null },
20320 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
32426 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
2032132427 .patterns = &.{
20322 .{ .src = .{ .to_sse, .none } },
32428 .{ .src = .{ .to_sse, .none, .none } },
2032332429 },
2032432430 .extra_temps = .{
2032532431 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20326 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32432 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2032732433 .unused,
2032832434 .unused,
2032932435 .unused,
......@@ -20335,17 +32441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2033532441 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2033632442 .each = .{ .once = &.{
2033732443 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20338 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
32444 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2033932445 } },
2034032446 }, .{
2034132447 .required_features = .{ .sse2, null, null, null },
20342 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
32448 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
2034332449 .patterns = &.{
20344 .{ .src = .{ .to_mut_sse, .none } },
32450 .{ .src = .{ .to_mut_sse, .none, .none } },
2034532451 },
2034632452 .extra_temps = .{
2034732453 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20348 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32454 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2034932455 .unused,
2035032456 .unused,
2035132457 .unused,
......@@ -20357,17 +32463,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2035732463 .dst_temps = .{.{ .ref = .src0 }},
2035832464 .each = .{ .once = &.{
2035932465 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20360 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32466 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2036132467 } },
2036232468 }, .{
2036332469 .required_features = .{ .avx, null, null, null },
20364 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
32470 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
2036532471 .patterns = &.{
20366 .{ .src = .{ .to_sse, .none } },
32472 .{ .src = .{ .to_sse, .none, .none } },
2036732473 },
2036832474 .extra_temps = .{
2036932475 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20370 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32476 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2037132477 .unused,
2037232478 .unused,
2037332479 .unused,
......@@ -20379,14 +32485,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2037932485 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2038032486 .each = .{ .once = &.{
2038132487 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20382 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32488 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2038332489 } },
2038432490 }, .{
2038532491 .required_features = .{ .x87, null, null, null },
20386 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
32492 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
2038732493 .patterns = &.{
20388 .{ .src = .{ .mem, .none } },
20389 .{ .src = .{ .to_x87, .none } },
32494 .{ .src = .{ .mem, .none, .none } },
32495 .{ .src = .{ .to_x87, .none, .none } },
2039032496 },
2039132497 .extra_temps = .{
2039232498 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -20402,18 +32508,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2040232508 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
2040332509 .each = .{ .once = &.{
2040432510 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
20405 .{ ._, .f_, .abs, ._, ._, ._, ._ },
32511 .{ ._, .f_, .chs, ._, ._, ._, ._ },
2040632512 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
2040732513 } },
2040832514 }, .{
2040932515 .required_features = .{ .avx, null, null, null },
20410 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
32516 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2041132517 .patterns = &.{
20412 .{ .src = .{ .to_sse, .none } },
32518 .{ .src = .{ .to_sse, .none, .none } },
2041332519 },
2041432520 .extra_temps = .{
2041532521 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20416 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32522 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2041732523 .unused,
2041832524 .unused,
2041932525 .unused,
......@@ -20425,17 +32531,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2042532531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2042632532 .each = .{ .once = &.{
2042732533 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20428 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
32534 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
2042932535 } },
2043032536 }, .{
2043132537 .required_features = .{ .sse2, null, null, null },
20432 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
32538 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2043332539 .patterns = &.{
20434 .{ .src = .{ .to_mut_sse, .none } },
32540 .{ .src = .{ .to_mut_sse, .none, .none } },
2043532541 },
2043632542 .extra_temps = .{
2043732543 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20438 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32544 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2043932545 .unused,
2044032546 .unused,
2044132547 .unused,
......@@ -20447,17 +32553,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2044732553 .dst_temps = .{.{ .ref = .src0 }},
2044832554 .each = .{ .once = &.{
2044932555 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20450 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32556 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2045132557 } },
2045232558 }, .{
2045332559 .required_features = .{ .sse, null, null, null },
20454 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },
32560 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
2045532561 .patterns = &.{
20456 .{ .src = .{ .to_mut_sse, .none } },
32562 .{ .src = .{ .to_mut_sse, .none, .none } },
2045732563 },
2045832564 .extra_temps = .{
2045932565 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20460 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32566 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2046132567 .unused,
2046232568 .unused,
2046332569 .unused,
......@@ -20469,17 +32575,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2046932575 .dst_temps = .{.{ .ref = .src0 }},
2047032576 .each = .{ .once = &.{
2047132577 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20472 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32578 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2047332579 } },
2047432580 }, .{
2047532581 .required_features = .{ .avx2, null, null, null },
20476 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },
32582 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
2047732583 .patterns = &.{
20478 .{ .src = .{ .to_sse, .none } },
32584 .{ .src = .{ .to_sse, .none, .none } },
2047932585 },
2048032586 .extra_temps = .{
2048132587 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20482 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32588 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2048332589 .unused,
2048432590 .unused,
2048532591 .unused,
......@@ -20491,17 +32597,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2049132597 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2049232598 .each = .{ .once = &.{
2049332599 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20494 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32600 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2049532601 } },
2049632602 }, .{
2049732603 .required_features = .{ .avx, null, null, null },
20498 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },
32604 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
2049932605 .patterns = &.{
20500 .{ .src = .{ .to_sse, .none } },
32606 .{ .src = .{ .to_sse, .none, .none } },
2050132607 },
2050232608 .extra_temps = .{
2050332609 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20504 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32610 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2050532611 .unused,
2050632612 .unused,
2050732613 .unused,
......@@ -20513,17 +32619,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2051332619 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2051432620 .each = .{ .once = &.{
2051532621 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20516 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32622 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
2051732623 } },
2051832624 }, .{
2051932625 .required_features = .{ .avx, null, null, null },
20520 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
32626 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
2052132627 .patterns = &.{
20522 .{ .src = .{ .to_mem, .none } },
32628 .{ .src = .{ .to_mem, .none, .none } },
2052332629 },
2052432630 .extra_temps = .{
2052532631 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20526 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32632 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2052732633 .{ .kind = .{ .rc = .sse } },
2052832634 .{ .kind = .{ .rc = .sse } },
2052932635 .unused,
......@@ -20537,20 +32643,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2053732643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2053832644 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2053932645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20540 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
32646 .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2054132647 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2054232648 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2054332649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2054432650 } },
2054532651 }, .{
2054632652 .required_features = .{ .sse, null, null, null },
20547 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
32653 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
2054832654 .patterns = &.{
20549 .{ .src = .{ .to_mem, .none } },
32655 .{ .src = .{ .to_mem, .none, .none } },
2055032656 },
2055132657 .extra_temps = .{
2055232658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20553 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32659 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2055432660 .{ .kind = .{ .rc = .sse } },
2055532661 .{ .kind = .{ .rc = .sse } },
2055632662 .unused,
......@@ -20565,20 +32671,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2056532671 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2056632672 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2056732673 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20568 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32674 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2056932675 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2057032676 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2057132677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2057232678 } },
2057332679 }, .{
2057432680 .required_features = .{ .avx, null, null, null },
20575 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
32681 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
2057632682 .patterns = &.{
20577 .{ .src = .{ .to_mem, .none } },
32683 .{ .src = .{ .to_mem, .none, .none } },
2057832684 },
2057932685 .extra_temps = .{
2058032686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20581 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32687 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2058232688 .{ .kind = .{ .rc = .sse } },
2058332689 .{ .kind = .{ .rc = .sse } },
2058432690 .unused,
......@@ -20592,20 +32698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2059232698 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2059332699 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2059432700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20595 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
32701 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2059632702 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2059732703 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2059832704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2059932705 } },
2060032706 }, .{
2060132707 .required_features = .{ .sse2, null, null, null },
20602 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
32708 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
2060332709 .patterns = &.{
20604 .{ .src = .{ .to_mem, .none } },
32710 .{ .src = .{ .to_mem, .none, .none } },
2060532711 },
2060632712 .extra_temps = .{
2060732713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20608 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32714 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2060932715 .{ .kind = .{ .rc = .sse } },
2061032716 .{ .kind = .{ .rc = .sse } },
2061132717 .unused,
......@@ -20620,20 +32726,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2062032726 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2062132727 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2062232728 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20623 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32729 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2062432730 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2062532731 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2062632732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2062732733 } },
2062832734 }, .{
2062932735 .required_features = .{ .avx2, null, null, null },
20630 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any },
32736 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
2063132737 .patterns = &.{
20632 .{ .src = .{ .to_mem, .none } },
32738 .{ .src = .{ .to_mem, .none, .none } },
2063332739 },
2063432740 .extra_temps = .{
2063532741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20636 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32742 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2063732743 .{ .kind = .{ .rc = .sse } },
2063832744 .{ .kind = .{ .rc = .sse } },
2063932745 .unused,
......@@ -20647,20 +32753,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2064732753 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2064832754 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2064932755 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20650 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
32756 .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2065132757 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2065232758 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2065332759 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2065432760 } },
2065532761 }, .{
2065632762 .required_features = .{ .avx, null, null, null },
20657 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any },
32763 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
2065832764 .patterns = &.{
20659 .{ .src = .{ .to_mem, .none } },
32765 .{ .src = .{ .to_mem, .none, .none } },
2066032766 },
2066132767 .extra_temps = .{
2066232768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20663 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
32769 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
2066432770 .{ .kind = .{ .rc = .sse } },
2066532771 .{ .kind = .{ .rc = .sse } },
2066632772 .unused,
......@@ -20674,20 +32780,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2067432780 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
2067532781 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2067632782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20677 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
32783 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2067832784 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
2067932785 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2068032786 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2068132787 } },
2068232788 }, .{
2068332789 .required_features = .{ .sse2, null, null, null },
20684 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any },
32790 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2068532791 .patterns = &.{
20686 .{ .src = .{ .to_mem, .none } },
32792 .{ .src = .{ .to_mem, .none, .none } },
2068732793 },
2068832794 .extra_temps = .{
2068932795 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20690 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32796 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2069132797 .{ .kind = .{ .rc = .sse } },
2069232798 .{ .kind = .{ .rc = .sse } },
2069332799 .unused,
......@@ -20702,20 +32808,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2070232808 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2070332809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2070432810 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20705 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32811 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2070632812 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2070732813 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2070832814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2070932815 } },
2071032816 }, .{
2071132817 .required_features = .{ .sse, null, null, null },
20712 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any },
32818 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
2071332819 .patterns = &.{
20714 .{ .src = .{ .to_mem, .none } },
32820 .{ .src = .{ .to_mem, .none, .none } },
2071532821 },
2071632822 .extra_temps = .{
2071732823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20718 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
32824 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
2071932825 .{ .kind = .{ .rc = .sse } },
2072032826 .{ .kind = .{ .rc = .sse } },
2072132827 .unused,
......@@ -20730,7 +32836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2073032836 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2073132837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2073232838 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20733 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
32839 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
2073432840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
2073532841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2073632842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
......@@ -20738,12 +32844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2073832844 } }) catch |err| switch (err) {
2073932845 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
2074032846 @tagName(air_tag),
20741 cg.typeOf(ty_op.operand).fmt(pt),
32847 cg.typeOf(un_op).fmt(pt),
2074232848 ops[0].tracking(cg),
2074332849 }),
2074432850 else => |e| return e,
2074532851 };
20746 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
32852 try res[0].finish(inst, &.{un_op}, &ops, cg);
2074732853 },
2074832854
2074932855 .cmp_lt,
......@@ -20772,9 +32878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2077232878 }) {
2077332879 inline false, true => |strict| comptime &.{ .{
2077432880 .required_features = .{ .f16c, null, null, null },
20775 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
32881 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2077632882 .patterns = &.{
20777 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
32883 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2077832884 },
2077932885 .extra_temps = .{
2078032886 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
......@@ -20799,9 +32905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2079932905 } },
2080032906 }, .{
2080132907 .required_features = .{ .sse, null, null, null },
20802 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
32908 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2080332909 .patterns = &.{
20804 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
32910 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2080532911 },
2080632912 .call_frame = .{ .alignment = .@"16" },
2080732913 .extra_temps = .{
......@@ -20826,10 +32932,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2082632932 } },
2082732933 }, .{
2082832934 .required_features = .{ .avx, null, null, null },
20829 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
32935 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2083032936 .patterns = &.{
20831 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20832 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
32937 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
32938 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2083332939 },
2083432940 .dst_temps = .{.{ .cc = switch (strict) {
2083532941 true => .a,
......@@ -20841,10 +32947,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2084132947 } },
2084232948 }, .{
2084332949 .required_features = .{ .sse, null, null, null },
20844 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
32950 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2084532951 .patterns = &.{
20846 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20847 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
32952 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
32953 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2084832954 },
2084932955 .dst_temps = .{.{ .cc = switch (strict) {
2085032956 true => .a,
......@@ -20856,10 +32962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2085632962 } },
2085732963 }, .{
2085832964 .required_features = .{ .avx, null, null, null },
20859 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
32965 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2086032966 .patterns = &.{
20861 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20862 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
32967 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
32968 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2086332969 },
2086432970 .dst_temps = .{.{ .cc = switch (strict) {
2086532971 true => .a,
......@@ -20871,10 +32977,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2087132977 } },
2087232978 }, .{
2087332979 .required_features = .{ .sse2, null, null, null },
20874 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
32980 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2087532981 .patterns = &.{
20876 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
20877 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },
32982 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
32983 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
2087832984 },
2087932985 .dst_temps = .{.{ .cc = switch (strict) {
2088032986 true => .a,
......@@ -20886,13 +32992,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2088632992 } },
2088732993 }, .{
2088832994 .required_features = .{ .x87, .cmov, null, null },
20889 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
32995 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2089032996 .patterns = &.{
20891 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
32997 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2089232998 },
2089332999 .extra_temps = .{
20894 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20895 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33000 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33001 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2089633002 .unused,
2089733003 .unused,
2089833004 .unused,
......@@ -20914,13 +33020,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2091433020 } },
2091533021 }, .{
2091633022 .required_features = .{ .sahf, .x87, null, null },
20917 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33023 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2091833024 .patterns = &.{
20919 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
33025 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2092033026 },
2092133027 .extra_temps = .{
20922 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20923 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33028 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33029 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2092433030 .{ .type = .u8, .kind = .{ .reg = .ah } },
2092533031 .unused,
2092633032 .unused,
......@@ -20943,13 +33049,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2094333049 } },
2094433050 }, .{
2094533051 .required_features = .{ .x87, null, null, null },
20946 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33052 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2094733053 .patterns = &.{
20948 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
33054 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2094933055 },
2095033056 .extra_temps = .{
20951 .{ .type = .f80, .kind = .{ .reg = .st6 } },
20952 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33057 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33058 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2095333059 .{ .type = .u8, .kind = .{ .reg = .ah } },
2095433060 .unused,
2095533061 .unused,
......@@ -20975,10 +33081,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2097533081 } },
2097633082 }, .{
2097733083 .required_features = .{ .x87, .cmov, null, null },
20978 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33084 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2097933085 .patterns = &.{
20980 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
20981 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
33086 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33087 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2098233088 },
2098333089 .extra_temps = .{
2098433090 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -21002,9 +33108,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2100233108 } },
2100333109 }, .{
2100433110 .required_features = .{ .sahf, .x87, null, null },
21005 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33111 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2100633112 .patterns = &.{
21007 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },
33113 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
2100833114 },
2100933115 .extra_temps = .{
2101033116 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21031,10 +33137,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2103133137 } },
2103233138 }, .{
2103333139 .required_features = .{ .sahf, .x87, null, null },
21034 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33140 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2103533141 .patterns = &.{
21036 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21037 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
33142 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33143 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2103833144 },
2103933145 .extra_temps = .{
2104033146 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21060,9 +33166,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2106033166 } },
2106133167 }, .{
2106233168 .required_features = .{ .x87, null, null, null },
21063 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33169 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2106433170 .patterns = &.{
21065 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },
33171 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
2106633172 },
2106733173 .extra_temps = .{
2106833174 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21092,10 +33198,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2109233198 } },
2109333199 }, .{
2109433200 .required_features = .{ .x87, null, null, null },
21095 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33201 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2109633202 .patterns = &.{
21097 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21098 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },
33203 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33204 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
2109933205 },
2110033206 .extra_temps = .{
2110133207 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21124,9 +33230,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2112433230 } },
2112533231 }, .{
2112633232 .required_features = .{ .sse, null, null, null },
21127 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },
33233 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
2112833234 .patterns = &.{
21129 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
33235 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2113033236 },
2113133237 .call_frame = .{ .alignment = .@"16" },
2113233238 .extra_temps = .{
......@@ -21204,15 +33310,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2120433310 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
2120533311 else => unreachable,
2120633312 inline .e, .ne => |cc| comptime &.{.{
21207 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },
33313 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
2120833314 .patterns = &.{
21209 .{ .src = .{ .mem, .imm8 } },
21210 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
21211 .{ .src = .{ .to_gpr, .imm8 } },
21212 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
21213 .{ .src = .{ .mem, .to_gpr } },
21214 .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } },
21215 .{ .src = .{ .to_gpr, .to_gpr } },
33315 .{ .src = .{ .mem, .imm8, .none } },
33316 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
33317 .{ .src = .{ .to_gpr, .imm8, .none } },
33318 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
33319 .{ .src = .{ .mem, .to_gpr, .none } },
33320 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
33321 .{ .src = .{ .to_gpr, .to_gpr, .none } },
2121633322 },
2121733323 .dst_temps = .{.{ .rc = .general_purpose }},
2121833324 .clobbers = .{ .eflags = true },
......@@ -21254,9 +33360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2125433360 }) {
2125533361 inline false, true => |optimized| comptime &.{ .{
2125633362 .required_features = .{ .f16c, null, null, null },
21257 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
33363 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2125833364 .patterns = &.{
21259 .{ .src = .{ .to_sse, .to_sse } },
33365 .{ .src = .{ .to_sse, .to_sse, .none } },
2126033366 },
2126133367 .extra_temps = .{
2126233368 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
......@@ -21277,13 +33383,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2127733383 .each = .{ .once = &.{
2127833384 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
2127933385 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
21280 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ },
33386 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
2128133387 } },
2128233388 }, .{
2128333389 .required_features = .{ .sse, null, null, null },
21284 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },
33390 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
2128533391 .patterns = &.{
21286 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
33392 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2128733393 },
2128833394 .call_frame = .{ .alignment = .@"16" },
2128933395 .extra_temps = .{
......@@ -21305,11 +33411,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2130533411 } },
2130633412 }, .{
2130733413 .required_features = .{ .avx, null, null, null },
21308 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
33414 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2130933415 .patterns = &.{
21310 .{ .src = .{ .to_sse, .mem } },
21311 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21312 .{ .src = .{ .to_sse, .to_sse } },
33416 .{ .src = .{ .to_sse, .mem, .none } },
33417 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
33418 .{ .src = .{ .to_sse, .to_sse, .none } },
2131333419 },
2131433420 .dst_temps = .{.{ .cc = switch (optimized) {
2131533421 false => .z_and_np,
......@@ -21321,11 +33427,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2132133427 } },
2132233428 }, .{
2132333429 .required_features = .{ .sse, null, null, null },
21324 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },
33430 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
2132533431 .patterns = &.{
21326 .{ .src = .{ .to_sse, .mem } },
21327 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21328 .{ .src = .{ .to_sse, .to_sse } },
33432 .{ .src = .{ .to_sse, .mem, .none } },
33433 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
33434 .{ .src = .{ .to_sse, .to_sse, .none } },
2132933435 },
2133033436 .dst_temps = .{.{ .cc = switch (optimized) {
2133133437 false => .z_and_np,
......@@ -21337,11 +33443,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2133733443 } },
2133833444 }, .{
2133933445 .required_features = .{ .avx, null, null, null },
21340 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33446 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2134133447 .patterns = &.{
21342 .{ .src = .{ .to_sse, .mem } },
21343 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21344 .{ .src = .{ .to_sse, .to_sse } },
33448 .{ .src = .{ .to_sse, .mem, .none } },
33449 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
33450 .{ .src = .{ .to_sse, .to_sse, .none } },
2134533451 },
2134633452 .dst_temps = .{.{ .cc = switch (optimized) {
2134733453 false => .z_and_np,
......@@ -21353,11 +33459,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2135333459 } },
2135433460 }, .{
2135533461 .required_features = .{ .sse2, null, null, null },
21356 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33462 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2135733463 .patterns = &.{
21358 .{ .src = .{ .to_sse, .mem } },
21359 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
21360 .{ .src = .{ .to_sse, .to_sse } },
33464 .{ .src = .{ .to_sse, .mem, .none } },
33465 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
33466 .{ .src = .{ .to_sse, .to_sse, .none } },
2136133467 },
2136233468 .dst_temps = .{.{ .cc = switch (optimized) {
2136333469 false => .z_and_np,
......@@ -21369,13 +33475,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2136933475 } },
2137033476 }, .{
2137133477 .required_features = .{ .x87, .cmov, null, null },
21372 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33478 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2137333479 .patterns = &.{
21374 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
33480 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2137533481 },
2137633482 .extra_temps = .{
21377 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21378 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33483 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33484 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2137933485 .unused,
2138033486 .unused,
2138133487 .unused,
......@@ -21397,13 +33503,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2139733503 } },
2139833504 }, .{
2139933505 .required_features = .{ .sahf, .x87, null, null },
21400 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33506 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2140133507 .patterns = &.{
21402 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },
33508 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
2140333509 },
2140433510 .extra_temps = .{
21405 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21406 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33511 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33512 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2140733513 .{ .type = .u8, .kind = .{ .reg = .ah } },
2140833514 .unused,
2140933515 .unused,
......@@ -21426,13 +33532,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2142633532 } },
2142733533 }, .{
2142833534 .required_features = .{ .x87, null, null, null },
21429 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },
33535 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
2143033536 .patterns = &.{
21431 .{ .src = .{ .to_mem, .to_mem } },
33537 .{ .src = .{ .to_mem, .to_mem, .none } },
2143233538 },
2143333539 .extra_temps = .{
21434 .{ .type = .f80, .kind = .{ .reg = .st6 } },
21435 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33540 .{ .type = .f64, .kind = .{ .reg = .st6 } },
33541 .{ .type = .f64, .kind = .{ .reg = .st7 } },
2143633542 .{ .type = .u8, .kind = .{ .reg = .ah } },
2143733543 .unused,
2143833544 .unused,
......@@ -21465,11 +33571,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2146533571 } },
2146633572 }, .{
2146733573 .required_features = .{ .x87, .cmov, null, null },
21468 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33574 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2146933575 .patterns = &.{
21470 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21471 .{ .src = .{ .mem, .to_x87 } },
21472 .{ .src = .{ .to_x87, .to_x87 } },
33576 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33577 .{ .src = .{ .mem, .to_x87, .none } },
33578 .{ .src = .{ .to_x87, .to_x87, .none } },
2147333579 },
2147433580 .extra_temps = .{
2147533581 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -21493,9 +33599,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2149333599 } },
2149433600 }, .{
2149533601 .required_features = .{ .sahf, .x87, null, null },
21496 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33602 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2149733603 .patterns = &.{
21498 .{ .src = .{ .mem, .mem } },
33604 .{ .src = .{ .mem, .mem, .none } },
2149933605 },
2150033606 .extra_temps = .{
2150133607 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21522,11 +33628,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2152233628 } },
2152333629 }, .{
2152433630 .required_features = .{ .sahf, .x87, null, null },
21525 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33631 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2152633632 .patterns = &.{
21527 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21528 .{ .src = .{ .mem, .to_x87 } },
21529 .{ .src = .{ .to_x87, .to_x87 } },
33633 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33634 .{ .src = .{ .mem, .to_x87, .none } },
33635 .{ .src = .{ .to_x87, .to_x87, .none } },
2153033636 },
2153133637 .extra_temps = .{
2153233638 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21552,9 +33658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2155233658 } },
2155333659 }, .{
2155433660 .required_features = .{ .x87, null, null, null },
21555 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33661 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2155633662 .patterns = &.{
21557 .{ .src = .{ .mem, .mem } },
33663 .{ .src = .{ .mem, .mem, .none } },
2155833664 },
2155933665 .extra_temps = .{
2156033666 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21591,11 +33697,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2159133697 } },
2159233698 }, .{
2159333699 .required_features = .{ .x87, null, null, null },
21594 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },
33700 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
2159533701 .patterns = &.{
21596 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },
21597 .{ .src = .{ .mem, .to_x87 } },
21598 .{ .src = .{ .to_x87, .to_x87 } },
33702 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33703 .{ .src = .{ .mem, .to_x87, .none } },
33704 .{ .src = .{ .to_x87, .to_x87, .none } },
2159933705 },
2160033706 .extra_temps = .{
2160133707 .{ .type = .f80, .kind = .{ .reg = .st6 } },
......@@ -21630,9 +33736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2163033736 } },
2163133737 }, .{
2163233738 .required_features = .{ .sse, null, null, null },
21633 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },
33739 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
2163433740 .patterns = &.{
21635 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },
33741 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2163633742 },
2163733743 .call_frame = .{ .alignment = .@"16" },
2163833744 .extra_temps = .{
......@@ -21663,278 +33769,1020 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2166333769 },
2166433770 }
2166533771 },
21666 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21667 }) catch |err| switch (err) {
21668 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21669 @tagName(air_tag),
21670 cg.typeOf(bin_op.lhs).fmt(pt),
21671 ops[0].tracking(cg),
21672 ops[1].tracking(cg),
21673 }),
21674 else => |e| return e,
21675 };
21676 if (opt_info) |*oi| {
21677 for (ops) |op| for (res) |r| {
21678 if (op.index == r.index) break;
21679 } else try op.die(cg);
21680 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21681 try res[0].die(cg);
21682 res[0] = oi.res[0];
21683 try cg.restoreState(oi.state, &oi.deaths, .{
21684 .emit_instructions = true,
21685 .update_tracking = true,
21686 .resurrect = true,
21687 .close_scope = true,
21688 });
21689 cg.performReloc(oi.reloc);
21690 @memset(&ops, res[0]);
21691 }
21692 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21693 },
21694
21695 .cond_br => try cg.airCondBr(inst),
21696 .switch_br => try cg.airSwitchBr(inst),
21697 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21698 .switch_dispatch => try cg.airSwitchDispatch(inst),
21699 .@"try", .try_cold => try cg.airTry(inst),
21700 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21701 .dbg_stmt => if (cg.debug_output != .none) {
21702 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21703 _ = try cg.addInst(.{
21704 .tag = .pseudo,
21705 .ops = .pseudo_dbg_line_stmt_line_column,
21706 .data = .{ .line_column = .{
21707 .line = dbg_stmt.line,
21708 .column = dbg_stmt.column,
33772 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
33773 }) catch |err| switch (err) {
33774 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
33775 @tagName(air_tag),
33776 cg.typeOf(bin_op.lhs).fmt(pt),
33777 ops[0].tracking(cg),
33778 ops[1].tracking(cg),
33779 }),
33780 else => |e| return e,
33781 };
33782 if (opt_info) |*oi| {
33783 for (ops) |op| for (res) |r| {
33784 if (op.index == r.index) break;
33785 } else try op.die(cg);
33786 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
33787 try res[0].die(cg);
33788 res[0] = oi.res[0];
33789 try cg.restoreState(oi.state, &oi.deaths, .{
33790 .emit_instructions = true,
33791 .update_tracking = true,
33792 .resurrect = true,
33793 .close_scope = true,
33794 });
33795 cg.performReloc(oi.reloc);
33796 @memset(&ops, res[0]);
33797 }
33798 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
33799 },
33800
33801 .cond_br => try cg.airCondBr(inst),
33802 .switch_br => try cg.airSwitchBr(inst),
33803 .loop_switch_br => try cg.airLoopSwitchBr(inst),
33804 .switch_dispatch => try cg.airSwitchDispatch(inst),
33805 .@"try", .try_cold => try cg.airTry(inst),
33806 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
33807 .dbg_stmt => if (cg.debug_output != .none) {
33808 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
33809 _ = try cg.addInst(.{
33810 .tag = .pseudo,
33811 .ops = .pseudo_dbg_line_stmt_line_column,
33812 .data = .{ .line_column = .{
33813 .line = dbg_stmt.line,
33814 .column = dbg_stmt.column,
33815 } },
33816 });
33817 },
33818 .dbg_empty_stmt => if (cg.debug_output != .none) {
33819 if (cg.mir_instructions.len > 0) {
33820 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
33821 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
33822 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
33823 }
33824 try cg.asmOpOnly(.{ ._, .nop });
33825 },
33826 .dbg_inline_block => {
33827 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
33828 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
33829 const old_inline_func = cg.inline_func;
33830 defer cg.inline_func = old_inline_func;
33831 cg.inline_func = extra.data.func;
33832 if (cg.debug_output != .none) _ = try cg.addInst(.{
33833 .tag = .pseudo,
33834 .ops = .pseudo_dbg_enter_inline_func,
33835 .data = .{ .func = extra.data.func },
33836 });
33837 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
33838 if (cg.debug_output != .none) _ = try cg.addInst(.{
33839 .tag = .pseudo,
33840 .ops = .pseudo_dbg_leave_inline_func,
33841 .data = .{ .func = old_inline_func },
33842 });
33843 },
33844 .dbg_var_ptr,
33845 .dbg_var_val,
33846 .dbg_arg_inline,
33847 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
33848 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
33849 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
33850 var mcv = ops[0].tracking(cg).short;
33851 switch (mcv) {
33852 else => {},
33853 .eflags => |cc| switch (cc) {
33854 else => {},
33855 // These values would self destruct. Maybe we make them use their
33856 // turing complete dwarf expression interpreters for once?
33857 .z_and_np, .nz_or_p => {
33858 try cg.spillEflagsIfOccupied();
33859 mcv = ops[0].tracking(cg).short;
33860 },
33861 },
33862 }
33863 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
33864 try ops[0].die(cg);
33865 },
33866 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
33867 const un_op = air_datas[@intFromEnum(inst)].un_op;
33868 const opt_ty = cg.typeOf(un_op).childType(zcu);
33869 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
33870 const opt_child_ty = opt_ty.optionalChild(zcu);
33871 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
33872 var ops = try cg.tempsFromOperands(inst, .{un_op});
33873 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
33874 while (try ops[0].toLea(cg)) {}
33875 try cg.asmMemoryImmediate(
33876 .{ ._, .cmp },
33877 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
33878 .byte
33879 else if (opt_child_ty.isSlice(zcu))
33880 .qword
33881 else
33882 .fromSize(opt_child_abi_size) }),
33883 .u(0),
33884 );
33885 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
33886 try is_null.finish(inst, &.{un_op}, &ops, cg);
33887 },
33888 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
33889 const un_op = air_datas[@intFromEnum(inst)].un_op;
33890 const opt_ty = cg.typeOf(un_op).childType(zcu);
33891 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
33892 const opt_child_ty = opt_ty.optionalChild(zcu);
33893 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
33894 var ops = try cg.tempsFromOperands(inst, .{un_op});
33895 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
33896 while (try ops[0].toLea(cg)) {}
33897 try cg.asmMemoryImmediate(
33898 .{ ._, .cmp },
33899 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
33900 .byte
33901 else if (opt_child_ty.isSlice(zcu))
33902 .qword
33903 else
33904 .fromSize(opt_child_abi_size) }),
33905 .u(0),
33906 );
33907 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
33908 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
33909 },
33910 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
33911 const un_op = air_datas[@intFromEnum(inst)].un_op;
33912 const eu_ty = cg.typeOf(un_op).childType(zcu);
33913 const eu_err_ty = eu_ty.errorUnionSet(zcu);
33914 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
33915 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
33916 var ops = try cg.tempsFromOperands(inst, .{un_op});
33917 try ops[0].toOffset(eu_err_off, cg);
33918 while (try ops[0].toLea(cg)) {}
33919 try cg.asmMemoryImmediate(
33920 .{ ._, .cmp },
33921 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
33922 .u(0),
33923 );
33924 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
33925 try is_err.finish(inst, &.{un_op}, &ops, cg);
33926 },
33927 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
33928 const un_op = air_datas[@intFromEnum(inst)].un_op;
33929 const eu_ty = cg.typeOf(un_op).childType(zcu);
33930 const eu_err_ty = eu_ty.errorUnionSet(zcu);
33931 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
33932 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
33933 var ops = try cg.tempsFromOperands(inst, .{un_op});
33934 try ops[0].toOffset(eu_err_off, cg);
33935 while (try ops[0].toLea(cg)) {}
33936 try cg.asmMemoryImmediate(
33937 .{ ._, .cmp },
33938 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
33939 .u(0),
33940 );
33941 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
33942 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
33943 },
33944 .load => if (use_old) try cg.airLoad(inst) else fallback: {
33945 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
33946 const val_ty = ty_op.ty.toType();
33947 const ptr_ty = cg.typeOf(ty_op.operand);
33948 const ptr_info = ptr_ty.ptrInfo(zcu);
33949 if (ptr_info.packed_offset.host_size > 0 and
33950 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
33951 break :fallback try cg.airLoad(inst);
33952 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
33953 const res = try ops[0].load(val_ty, .{
33954 .disp = switch (ptr_info.flags.vector_index) {
33955 .none => 0,
33956 .runtime => unreachable,
33957 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
33958 },
33959 }, cg);
33960 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
33961 },
33962 .ret => try cg.airRet(inst, false),
33963 .ret_safe => try cg.airRet(inst, true),
33964 .ret_load => try cg.airRetLoad(inst),
33965 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
33966 else => unreachable,
33967 .store => false,
33968 .store_safe => true,
33969 }) else fallback: {
33970 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
33971 const ptr_ty = cg.typeOf(bin_op.lhs);
33972 const ptr_info = ptr_ty.ptrInfo(zcu);
33973 const val_ty = cg.typeOf(bin_op.rhs);
33974 if (ptr_info.packed_offset.host_size > 0 and
33975 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
33976 break :fallback try cg.airStore(inst, switch (air_tag) {
33977 else => unreachable,
33978 .store => false,
33979 .store_safe => true,
33980 });
33981 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
33982 try ops[0].store(&ops[1], .{
33983 .disp = switch (ptr_info.flags.vector_index) {
33984 .none => 0,
33985 .runtime => unreachable,
33986 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
33987 },
33988 .safe = switch (air_tag) {
33989 else => unreachable,
33990 .store => false,
33991 .store_safe => true,
33992 },
33993 }, cg);
33994 for (ops) |op| try op.die(cg);
33995 },
33996 .unreach => {},
33997 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
33998 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
33999 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34000 var res: [1]Temp = undefined;
34001 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
34002 .required_features = .{ .f16c, null, null, null },
34003 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34004 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34005 .patterns = &.{
34006 .{ .src = .{ .to_sse, .none, .none } },
34007 },
34008 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34009 .each = .{ .once = &.{
34010 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
34011 } },
34012 }, .{
34013 .required_features = .{ .f16c, null, null, null },
34014 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
34015 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
34016 .patterns = &.{
34017 .{ .src = .{ .to_sse, .none, .none } },
34018 },
34019 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34020 .each = .{ .once = &.{
34021 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
34022 } },
34023 }, .{
34024 .required_features = .{ .f16c, null, null, null },
34025 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
34026 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
34027 .patterns = &.{
34028 .{ .src = .{ .to_sse, .none, .none } },
34029 },
34030 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34031 .each = .{ .once = &.{
34032 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
34033 } },
34034 }, .{
34035 .required_features = .{ .sse, null, null, null },
34036 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34037 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34038 .patterns = &.{
34039 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
34040 },
34041 .call_frame = .{ .alignment = .@"16" },
34042 .extra_temps = .{
34043 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34044 .unused,
34045 .unused,
34046 .unused,
34047 .unused,
34048 .unused,
34049 .unused,
34050 .unused,
34051 .unused,
34052 },
34053 .dst_temps = .{.{ .ref = .src0 }},
34054 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34055 .each = .{ .once = &.{
34056 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
34057 } },
34058 }, .{
34059 .required_features = .{ .f16c, null, null, null },
34060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
34061 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},
34062 .patterns = &.{
34063 .{ .src = .{ .to_mem, .none, .none } },
34064 },
34065 .extra_temps = .{
34066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34067 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
34068 .unused,
34069 .unused,
34070 .unused,
34071 .unused,
34072 .unused,
34073 .unused,
34074 .unused,
34075 },
34076 .dst_temps = .{.mem},
34077 .clobbers = .{ .eflags = true },
34078 .each = .{ .once = &.{
34079 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34080 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34081 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
34082 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34084 } },
34085 }, .{
34086 .required_features = .{ .avx, null, null, null },
34087 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34088 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34089 .patterns = &.{
34090 .{ .src = .{ .to_mem, .none, .none } },
34091 },
34092 .call_frame = .{ .alignment = .@"16" },
34093 .extra_temps = .{
34094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34095 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34097 .unused,
34098 .unused,
34099 .unused,
34100 .unused,
34101 .unused,
34102 .unused,
34103 },
34104 .dst_temps = .{.mem},
34105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34106 .each = .{ .once = &.{
34107 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34108 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34109 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34110 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34111 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34112 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34113 } },
34114 }, .{
34115 .required_features = .{ .sse4_1, null, null, null },
34116 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34117 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34118 .patterns = &.{
34119 .{ .src = .{ .to_mem, .none, .none } },
34120 },
34121 .call_frame = .{ .alignment = .@"16" },
34122 .extra_temps = .{
34123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34124 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34125 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34126 .unused,
34127 .unused,
34128 .unused,
34129 .unused,
34130 .unused,
34131 .unused,
34132 },
34133 .dst_temps = .{.mem},
34134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34135 .each = .{ .once = &.{
34136 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34137 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34138 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34139 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34140 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34142 } },
34143 }, .{
34144 .required_features = .{ .sse2, null, null, null },
34145 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34146 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34147 .patterns = &.{
34148 .{ .src = .{ .to_mem, .none, .none } },
34149 },
34150 .call_frame = .{ .alignment = .@"16" },
34151 .extra_temps = .{
34152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34153 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34154 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34155 .{ .type = .f16, .kind = .{ .reg = .ax } },
34156 .unused,
34157 .unused,
34158 .unused,
34159 .unused,
34160 .unused,
34161 },
34162 .dst_temps = .{.mem},
34163 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34164 .each = .{ .once = &.{
34165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34166 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34167 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34168 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
34169 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
34170 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34172 } },
34173 }, .{
34174 .required_features = .{ .sse, null, null, null },
34175 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
34176 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34177 .patterns = &.{
34178 .{ .src = .{ .to_mem, .none, .none } },
34179 },
34180 .call_frame = .{ .alignment = .@"16" },
34181 .extra_temps = .{
34182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34183 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34185 .{ .type = .f32, .kind = .mem },
34186 .{ .type = .f16, .kind = .{ .reg = .ax } },
34187 .unused,
34188 .unused,
34189 .unused,
34190 .unused,
34191 },
34192 .dst_temps = .{.mem},
34193 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34194 .each = .{ .once = &.{
34195 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34196 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34197 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34198 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
34199 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
34200 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
34201 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34202 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34203 } },
34204 }, .{
34205 .required_features = .{ .sse, null, null, null },
34206 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34207 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34208 .patterns = &.{
34209 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
34210 },
34211 .call_frame = .{ .alignment = .@"16" },
34212 .extra_temps = .{
34213 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34214 .unused,
34215 .unused,
34216 .unused,
34217 .unused,
34218 .unused,
34219 .unused,
34220 .unused,
34221 .unused,
34222 },
34223 .dst_temps = .{.{ .ref = .src0 }},
34224 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34225 .each = .{ .once = &.{
34226 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
34227 } },
34228 }, .{
34229 .required_features = .{ .avx, null, null, null },
34230 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34231 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34232 .patterns = &.{
34233 .{ .src = .{ .to_mem, .none, .none } },
34234 },
34235 .call_frame = .{ .alignment = .@"16" },
34236 .extra_temps = .{
34237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34238 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34239 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34240 .unused,
34241 .unused,
34242 .unused,
34243 .unused,
34244 .unused,
34245 .unused,
34246 },
34247 .dst_temps = .{.mem},
34248 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34249 .each = .{ .once = &.{
34250 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34251 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
34252 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34253 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34256 } },
34257 }, .{
34258 .required_features = .{ .sse4_1, null, null, null },
34259 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34260 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34261 .patterns = &.{
34262 .{ .src = .{ .to_mem, .none, .none } },
34263 },
34264 .call_frame = .{ .alignment = .@"16" },
34265 .extra_temps = .{
34266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34267 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34268 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34269 .unused,
34270 .unused,
34271 .unused,
34272 .unused,
34273 .unused,
34274 .unused,
34275 },
34276 .dst_temps = .{.mem},
34277 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34278 .each = .{ .once = &.{
34279 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34280 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
34281 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34282 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34283 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34285 } },
34286 }, .{
34287 .required_features = .{ .sse2, null, null, null },
34288 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34289 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34290 .patterns = &.{
34291 .{ .src = .{ .to_mem, .none, .none } },
34292 },
34293 .call_frame = .{ .alignment = .@"16" },
34294 .extra_temps = .{
34295 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34296 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34297 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34298 .{ .type = .f16, .kind = .{ .reg = .ax } },
34299 .unused,
34300 .unused,
34301 .unused,
34302 .unused,
34303 .unused,
34304 },
34305 .dst_temps = .{.mem},
34306 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34307 .each = .{ .once = &.{
34308 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34309 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
34310 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34311 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
34312 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
34313 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34315 } },
34316 }, .{
34317 .required_features = .{ .sse, null, null, null },
34318 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34319 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34320 .patterns = &.{
34321 .{ .src = .{ .to_mem, .none, .none } },
34322 },
34323 .call_frame = .{ .alignment = .@"16" },
34324 .extra_temps = .{
34325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34326 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34328 .{ .type = .f32, .kind = .mem },
34329 .{ .type = .f16, .kind = .{ .reg = .ax } },
34330 .unused,
34331 .unused,
34332 .unused,
34333 .unused,
34334 },
34335 .dst_temps = .{.mem},
34336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34337 .each = .{ .once = &.{
34338 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34339 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
34340 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
34341 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34342 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
34343 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
34344 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
34345 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34346 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34347 } },
34348 }, .{
34349 .required_features = .{ .avx, null, null, null },
34350 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34351 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
34352 .patterns = &.{
34353 .{ .src = .{ .mem, .none, .none } },
34354 },
34355 .dst_temps = .{.{ .rc = .sse }},
34356 .each = .{ .once = &.{
34357 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
34358 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
34359 } },
34360 }, .{
34361 .required_features = .{ .avx, null, null, null },
34362 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34363 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
34364 .patterns = &.{
34365 .{ .src = .{ .to_sse, .none, .none } },
34366 },
34367 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34368 .each = .{ .once = &.{
34369 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
34370 } },
34371 }, .{
34372 .required_features = .{ .sse2, null, null, null },
34373 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34374 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
34375 .patterns = &.{
34376 .{ .src = .{ .mem, .none, .none } },
34377 .{ .src = .{ .to_sse, .none, .none } },
34378 },
34379 .dst_temps = .{.{ .rc = .sse }},
34380 .each = .{ .once = &.{
34381 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
34382 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
34383 } },
34384 }, .{
34385 .required_features = .{ .x87, null, null, null },
34386 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34387 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
34388 .patterns = &.{
34389 .{ .src = .{ .to_mem, .none, .none } },
34390 },
34391 .extra_temps = .{
34392 .{ .type = .f64, .kind = .{ .reg = .st7 } },
34393 .unused,
34394 .unused,
34395 .unused,
34396 .unused,
34397 .unused,
34398 .unused,
34399 .unused,
34400 .unused,
34401 },
34402 .dst_temps = .{.mem},
34403 .each = .{ .once = &.{
34404 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
34405 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
2170934406 } },
21710 });
21711 },
21712 .dbg_empty_stmt => if (cg.debug_output != .none) {
21713 if (cg.mir_instructions.len > 0) {
21714 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
21715 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
21716 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
21717 }
21718 try cg.asmOpOnly(.{ ._, .nop });
21719 },
21720 .dbg_inline_block => {
21721 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
21722 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
21723 const old_inline_func = cg.inline_func;
21724 defer cg.inline_func = old_inline_func;
21725 cg.inline_func = extra.data.func;
21726 if (cg.debug_output != .none) _ = try cg.addInst(.{
21727 .tag = .pseudo,
21728 .ops = .pseudo_dbg_enter_inline_func,
21729 .data = .{ .func = extra.data.func },
21730 });
21731 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
21732 if (cg.debug_output != .none) _ = try cg.addInst(.{
21733 .tag = .pseudo,
21734 .ops = .pseudo_dbg_leave_inline_func,
21735 .data = .{ .func = old_inline_func },
21736 });
21737 },
21738 .dbg_var_ptr,
21739 .dbg_var_val,
21740 .dbg_arg_inline,
21741 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
21742 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
21743 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
21744 var mcv = ops[0].tracking(cg).short;
21745 switch (mcv) {
21746 else => {},
21747 .eflags => |cc| switch (cc) {
21748 else => {},
21749 // These values would self destruct. Maybe we make them use their
21750 // turing complete dwarf expression interpreters for once?
21751 .z_and_np, .nz_or_p => {
21752 try cg.spillEflagsIfOccupied();
21753 mcv = ops[0].tracking(cg).short;
21754 },
34407 }, .{
34408 .required_features = .{ .avx, null, null, null },
34409 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
34410 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
34411 .patterns = &.{
34412 .{ .src = .{ .mem, .none, .none } },
34413 .{ .src = .{ .to_sse, .none, .none } },
2175534414 },
21756 }
21757 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
21758 try ops[0].die(cg);
21759 },
21760 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
21761 const un_op = air_datas[@intFromEnum(inst)].un_op;
21762 const opt_ty = cg.typeOf(un_op).childType(zcu);
21763 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21764 const opt_child_ty = opt_ty.optionalChild(zcu);
21765 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21766 var ops = try cg.tempsFromOperands(inst, .{un_op});
21767 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21768 while (try ops[0].toLea(cg)) {}
21769 try cg.asmMemoryImmediate(
21770 .{ ._, .cmp },
21771 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21772 .byte
21773 else if (opt_child_ty.isSlice(zcu))
21774 .qword
21775 else
21776 .fromSize(opt_child_abi_size) }),
21777 .u(0),
21778 );
21779 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
21780 try is_null.finish(inst, &.{un_op}, &ops, cg);
21781 },
21782 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
21783 const un_op = air_datas[@intFromEnum(inst)].un_op;
21784 const opt_ty = cg.typeOf(un_op).childType(zcu);
21785 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21786 const opt_child_ty = opt_ty.optionalChild(zcu);
21787 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21788 var ops = try cg.tempsFromOperands(inst, .{un_op});
21789 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21790 while (try ops[0].toLea(cg)) {}
21791 try cg.asmMemoryImmediate(
21792 .{ ._, .cmp },
21793 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21794 .byte
21795 else if (opt_child_ty.isSlice(zcu))
21796 .qword
21797 else
21798 .fromSize(opt_child_abi_size) }),
21799 .u(0),
21800 );
21801 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
21802 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
21803 },
21804 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
21805 const un_op = air_datas[@intFromEnum(inst)].un_op;
21806 const eu_ty = cg.typeOf(un_op).childType(zcu);
21807 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21808 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21809 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21810 var ops = try cg.tempsFromOperands(inst, .{un_op});
21811 try ops[0].toOffset(eu_err_off, cg);
21812 while (try ops[0].toLea(cg)) {}
21813 try cg.asmMemoryImmediate(
21814 .{ ._, .cmp },
21815 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21816 .u(0),
21817 );
21818 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
21819 try is_err.finish(inst, &.{un_op}, &ops, cg);
21820 },
21821 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
21822 const un_op = air_datas[@intFromEnum(inst)].un_op;
21823 const eu_ty = cg.typeOf(un_op).childType(zcu);
21824 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21825 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21826 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21827 var ops = try cg.tempsFromOperands(inst, .{un_op});
21828 try ops[0].toOffset(eu_err_off, cg);
21829 while (try ops[0].toLea(cg)) {}
21830 try cg.asmMemoryImmediate(
21831 .{ ._, .cmp },
21832 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21833 .u(0),
21834 );
21835 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
21836 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
21837 },
21838 .load => if (use_old) try cg.airLoad(inst) else fallback: {
21839 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21840 const val_ty = ty_op.ty.toType();
21841 const ptr_ty = cg.typeOf(ty_op.operand);
21842 const ptr_info = ptr_ty.ptrInfo(zcu);
21843 if (ptr_info.packed_offset.host_size > 0 and
21844 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21845 break :fallback try cg.airLoad(inst);
21846 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21847 const res = try ops[0].load(val_ty, .{
21848 .disp = switch (ptr_info.flags.vector_index) {
21849 .none => 0,
21850 .runtime => unreachable,
21851 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
34415 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34416 .each = .{ .once = &.{
34417 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
34418 } },
34419 }, .{
34420 .required_features = .{ .sse2, null, null, null },
34421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
34422 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
34423 .patterns = &.{
34424 .{ .src = .{ .mem, .none, .none } },
34425 .{ .src = .{ .to_sse, .none, .none } },
2185234426 },
21853 }, cg);
21854 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
21855 },
21856 .ret => try cg.airRet(inst, false),
21857 .ret_safe => try cg.airRet(inst, true),
21858 .ret_load => try cg.airRetLoad(inst),
21859 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
21860 else => unreachable,
21861 .store => false,
21862 .store_safe => true,
21863 }) else fallback: {
21864 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
21865 const ptr_ty = cg.typeOf(bin_op.lhs);
21866 const ptr_info = ptr_ty.ptrInfo(zcu);
21867 const val_ty = cg.typeOf(bin_op.rhs);
21868 if (ptr_info.packed_offset.host_size > 0 and
21869 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21870 break :fallback try cg.airStore(inst, switch (air_tag) {
21871 else => unreachable,
21872 .store => false,
21873 .store_safe => true,
21874 });
21875 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
21876 try ops[0].store(&ops[1], .{
21877 .disp = switch (ptr_info.flags.vector_index) {
21878 .none => 0,
21879 .runtime => unreachable,
21880 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
34427 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34428 .each = .{ .once = &.{
34429 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
34430 } },
34431 }, .{
34432 .required_features = .{ .avx, null, null, null },
34433 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
34434 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
34435 .patterns = &.{
34436 .{ .src = .{ .mem, .none, .none } },
34437 .{ .src = .{ .to_sse, .none, .none } },
2188134438 },
21882 .safe = switch (air_tag) {
21883 else => unreachable,
21884 .store => false,
21885 .store_safe => true,
34439 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34440 .each = .{ .once = &.{
34441 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
34442 } },
34443 }, .{
34444 .required_features = .{ .avx, null, null, null },
34445 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
34446 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
34447 .patterns = &.{
34448 .{ .src = .{ .to_mem, .none, .none } },
2188634449 },
21887 }, cg);
21888 for (ops) |op| try op.die(cg);
21889 },
21890 .unreach => {},
21891 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
21892 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21893 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21894 var res: [1]Temp = undefined;
21895 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
21896 .required_features = .{ .f16c, null, null, null },
21897 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
34450 .extra_temps = .{
34451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34452 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
34453 .unused,
34454 .unused,
34455 .unused,
34456 .unused,
34457 .unused,
34458 .unused,
34459 .unused,
34460 },
34461 .dst_temps = .{.mem},
34462 .clobbers = .{ .eflags = true },
34463 .each = .{ .once = &.{
34464 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34465 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34466 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34467 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34469 } },
34470 }, .{
34471 .required_features = .{ .sse2, null, null, null },
34472 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
34473 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
34474 .patterns = &.{
34475 .{ .src = .{ .to_mem, .none, .none } },
34476 },
34477 .extra_temps = .{
34478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34479 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
34480 .unused,
34481 .unused,
34482 .unused,
34483 .unused,
34484 .unused,
34485 .unused,
34486 .unused,
34487 },
34488 .dst_temps = .{.mem},
34489 .clobbers = .{ .eflags = true },
34490 .each = .{ .once = &.{
34491 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34492 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34493 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34494 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
34495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34496 } },
34497 }, .{
34498 .required_features = .{ .x87, null, null, null },
34499 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
34500 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
34501 .patterns = &.{
34502 .{ .src = .{ .to_mem, .none, .none } },
34503 },
34504 .extra_temps = .{
34505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34506 .{ .type = .f64, .kind = .{ .reg = .st7 } },
34507 .unused,
34508 .unused,
34509 .unused,
34510 .unused,
34511 .unused,
34512 .unused,
34513 .unused,
34514 },
34515 .dst_temps = .{.mem},
34516 .clobbers = .{ .eflags = true },
34517 .each = .{ .once = &.{
34518 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34519 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
34520 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
34521 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
34522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34523 } },
34524 }, .{
34525 .required_features = .{ .avx, null, null, null },
34526 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
2189834527 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
2189934528 .patterns = &.{
21900 .{ .src = .{ .to_sse, .none } },
34529 .{ .src = .{ .to_mem, .none, .none } },
2190134530 },
21902 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34531 .call_frame = .{ .size = 16, .alignment = .@"16" },
34532 .extra_temps = .{
34533 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34535 .unused,
34536 .unused,
34537 .unused,
34538 .unused,
34539 .unused,
34540 .unused,
34541 .unused,
34542 },
34543 .dst_temps = .{.{ .reg = .xmm0 }},
34544 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2190334545 .each = .{ .once = &.{
21904 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
34546 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
34547 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
34548 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
34549 } },
34550 }, .{
34551 .required_features = .{ .sse2, null, null, null },
34552 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34553 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34554 .patterns = &.{
34555 .{ .src = .{ .to_mem, .none, .none } },
34556 },
34557 .call_frame = .{ .size = 16, .alignment = .@"16" },
34558 .extra_temps = .{
34559 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34561 .unused,
34562 .unused,
34563 .unused,
34564 .unused,
34565 .unused,
34566 .unused,
34567 .unused,
34568 },
34569 .dst_temps = .{.{ .reg = .xmm0 }},
34570 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34571 .each = .{ .once = &.{
34572 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
34573 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
34574 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
34575 } },
34576 }, .{
34577 .required_features = .{ .sse, null, null, null },
34578 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34579 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34580 .patterns = &.{
34581 .{ .src = .{ .to_mem, .none, .none } },
34582 },
34583 .call_frame = .{ .size = 16, .alignment = .@"16" },
34584 .extra_temps = .{
34585 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34587 .unused,
34588 .unused,
34589 .unused,
34590 .unused,
34591 .unused,
34592 .unused,
34593 .unused,
34594 },
34595 .dst_temps = .{.{ .reg = .xmm0 }},
34596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34597 .each = .{ .once = &.{
34598 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
34599 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
34600 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
34601 } },
34602 }, .{
34603 .required_features = .{ .avx, null, null, null },
34604 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34605 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34606 .patterns = &.{
34607 .{ .src = .{ .to_mem, .none, .none } },
34608 },
34609 .call_frame = .{ .size = 16, .alignment = .@"16" },
34610 .extra_temps = .{
34611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34612 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34613 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34615 .unused,
34616 .unused,
34617 .unused,
34618 .unused,
34619 .unused,
34620 },
34621 .dst_temps = .{.mem},
34622 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34623 .each = .{ .once = &.{
34624 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34625 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
34626 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
34627 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34628 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34629 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34630 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34631 } },
34632 }, .{
34633 .required_features = .{ .sse4_1, null, null, null },
34634 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34635 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34636 .patterns = &.{
34637 .{ .src = .{ .to_mem, .none, .none } },
34638 },
34639 .call_frame = .{ .size = 16, .alignment = .@"16" },
34640 .extra_temps = .{
34641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34642 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34643 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34645 .unused,
34646 .unused,
34647 .unused,
34648 .unused,
34649 .unused,
34650 },
34651 .dst_temps = .{.mem},
34652 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34653 .each = .{ .once = &.{
34654 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34655 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
34656 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
34657 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34658 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
34659 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34660 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34661 } },
34662 }, .{
34663 .required_features = .{ .sse2, null, null, null },
34664 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34665 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34666 .patterns = &.{
34667 .{ .src = .{ .to_mem, .none, .none } },
34668 },
34669 .call_frame = .{ .size = 16, .alignment = .@"16" },
34670 .extra_temps = .{
34671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34672 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34673 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34674 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34675 .{ .type = .f16, .kind = .{ .reg = .ax } },
34676 .unused,
34677 .unused,
34678 .unused,
34679 .unused,
34680 },
34681 .dst_temps = .{.mem},
34682 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34683 .each = .{ .once = &.{
34684 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34685 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
34686 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
34687 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34688 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
34689 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
34690 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34692 } },
34693 }, .{
34694 .required_features = .{ .sse, null, null, null },
34695 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34696 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34697 .patterns = &.{
34698 .{ .src = .{ .to_mem, .none, .none } },
34699 },
34700 .call_frame = .{ .size = 16, .alignment = .@"16" },
34701 .extra_temps = .{
34702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34703 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34704 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
34706 .{ .type = .f16, .kind = .{ .reg = .ax } },
34707 .unused,
34708 .unused,
34709 .unused,
34710 .unused,
34711 },
34712 .dst_temps = .{.mem},
34713 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34714 .each = .{ .once = &.{
34715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34716 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
34717 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
34718 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34719 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
34720 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
34721 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
34722 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
34723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2190534724 } },
2190634725 }, .{
21907 .required_features = .{ .f16c, null, null, null },
21908 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
21909 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
34726 .required_features = .{ .x87, null, null, null },
34727 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34728 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
2191034729 .patterns = &.{
21911 .{ .src = .{ .to_sse, .none } },
34730 .{ .src = .{ .mem, .none, .none } },
34731 .{ .src = .{ .to_x87, .none, .none } },
2191234732 },
21913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34733 .extra_temps = .{
34734 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34735 .unused,
34736 .unused,
34737 .unused,
34738 .unused,
34739 .unused,
34740 .unused,
34741 .unused,
34742 .unused,
34743 },
34744 .dst_temps = .{.mem},
2191434745 .each = .{ .once = &.{
21915 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
34746 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34747 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
2191634748 } },
2191734749 }, .{
21918 .required_features = .{ .f16c, null, null, null },
21919 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21920 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
34750 .required_features = .{ .x87, null, null, null },
34751 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34752 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
2192134753 .patterns = &.{
21922 .{ .src = .{ .to_sse, .none } },
34754 .{ .src = .{ .to_mem, .none, .none } },
2192334755 },
21924 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
34756 .extra_temps = .{
34757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34758 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34759 .unused,
34760 .unused,
34761 .unused,
34762 .unused,
34763 .unused,
34764 .unused,
34765 .unused,
34766 },
34767 .dst_temps = .{.mem},
34768 .clobbers = .{ .eflags = true },
2192534769 .each = .{ .once = &.{
21926 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
34770 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
34771 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
34772 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
34773 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
34774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2192734775 } },
2192834776 }, .{
21929 .required_features = .{ .sse, null, null, null },
21930 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21931 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34777 .required_features = .{ .x87, null, null, null },
34778 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34779 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
2193234780 .patterns = &.{
21933 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
34781 .{ .src = .{ .mem, .none, .none } },
34782 .{ .src = .{ .to_x87, .none, .none } },
2193434783 },
21935 .call_frame = .{ .alignment = .@"16" },
2193634784 .extra_temps = .{
21937 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34785 .{ .type = .f80, .kind = .{ .reg = .st7 } },
2193834786 .unused,
2193934787 .unused,
2194034788 .unused,
......@@ -21944,21 +34792,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2194434792 .unused,
2194534793 .unused,
2194634794 },
21947 .dst_temps = .{.{ .ref = .src0 }},
21948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34795 .dst_temps = .{.mem},
2194934796 .each = .{ .once = &.{
21950 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
34797 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34798 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
2195134799 } },
2195234800 }, .{
21953 .required_features = .{ .f16c, null, null, null },
21954 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21955 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},
34801 .required_features = .{ .x87, null, null, null },
34802 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
34803 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2195634804 .patterns = &.{
21957 .{ .src = .{ .to_mem, .none } },
34805 .{ .src = .{ .to_mem, .none, .none } },
2195834806 },
2195934807 .extra_temps = .{
2196034808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21961 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
34809 .{ .type = .f80, .kind = .{ .reg = .st7 } },
2196234810 .unused,
2196334811 .unused,
2196434812 .unused,
......@@ -21971,23 +34819,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2197134819 .clobbers = .{ .eflags = true },
2197234820 .each = .{ .once = &.{
2197334821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
21974 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
21975 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
21976 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34822 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
34823 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
34824 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2197734825 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2197834826 } },
34827 }, .{
34828 .required_features = .{ .sse, null, null, null },
34829 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34830 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34831 .patterns = &.{
34832 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
34833 },
34834 .call_frame = .{ .alignment = .@"16" },
34835 .extra_temps = .{
34836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
34837 .unused,
34838 .unused,
34839 .unused,
34840 .unused,
34841 .unused,
34842 .unused,
34843 .unused,
34844 .unused,
34845 },
34846 .dst_temps = .{.{ .ref = .src0 }},
34847 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34848 .each = .{ .once = &.{
34849 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
34850 } },
2197934851 }, .{
2198034852 .required_features = .{ .avx, null, null, null },
21981 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
34853 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
2198234854 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
2198334855 .patterns = &.{
21984 .{ .src = .{ .to_mem, .none } },
34856 .{ .src = .{ .to_mem, .none, .none } },
2198534857 },
2198634858 .call_frame = .{ .alignment = .@"16" },
2198734859 .extra_temps = .{
2198834860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21989 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
21990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34861 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
2199134863 .unused,
2199234864 .unused,
2199334865 .unused,
......@@ -21999,7 +34871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2199934871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2200034872 .each = .{ .once = &.{
2200134873 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22002 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34874 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
2200334875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
2200434876 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2200534877 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
......@@ -22007,16 +34879,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2200734879 } },
2200834880 }, .{
2200934881 .required_features = .{ .sse4_1, null, null, null },
22010 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
34882 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
2201134883 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
2201234884 .patterns = &.{
22013 .{ .src = .{ .to_mem, .none } },
34885 .{ .src = .{ .to_mem, .none, .none } },
2201434886 },
2201534887 .call_frame = .{ .alignment = .@"16" },
2201634888 .extra_temps = .{
2201734889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22018 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22019 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34890 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
2202034892 .unused,
2202134893 .unused,
2202234894 .unused,
......@@ -22028,7 +34900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2202834900 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2202934901 .each = .{ .once = &.{
2203034902 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22031 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34903 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
2203234904 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
2203334905 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
2203434906 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
......@@ -22036,16 +34908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2203634908 } },
2203734909 }, .{
2203834910 .required_features = .{ .sse2, null, null, null },
22039 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
34911 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
2204034912 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
2204134913 .patterns = &.{
22042 .{ .src = .{ .to_mem, .none } },
34914 .{ .src = .{ .to_mem, .none, .none } },
2204334915 },
2204434916 .call_frame = .{ .alignment = .@"16" },
2204534917 .extra_temps = .{
2204634918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22047 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22048 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
2204934921 .{ .type = .f16, .kind = .{ .reg = .ax } },
2205034922 .unused,
2205134923 .unused,
......@@ -22057,7 +34929,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2205734929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2205834930 .each = .{ .once = &.{
2205934931 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22060 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34932 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
2206134933 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
2206234934 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
2206334935 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
......@@ -22066,16 +34938,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2206634938 } },
2206734939 }, .{
2206834940 .required_features = .{ .sse, null, null, null },
22069 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
34941 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
2207034942 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
2207134943 .patterns = &.{
22072 .{ .src = .{ .to_mem, .none } },
34944 .{ .src = .{ .to_mem, .none, .none } },
2207334945 },
2207434946 .call_frame = .{ .alignment = .@"16" },
2207534947 .extra_temps = .{
2207634948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22077 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
34949 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
2207934951 .{ .type = .f32, .kind = .mem },
2208034952 .{ .type = .f16, .kind = .{ .reg = .ax } },
2208134953 .unused,
......@@ -22087,7 +34959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2208734959 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2208834960 .each = .{ .once = &.{
2208934961 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22090 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
34962 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
2209134963 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
2209234964 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
2209334965 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
......@@ -22097,14 +34969,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2209734969 } },
2209834970 }, .{
2209934971 .required_features = .{ .sse, null, null, null },
22100 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22101 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
34972 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34973 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
2210234974 .patterns = &.{
22103 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
34975 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2210434976 },
2210534977 .call_frame = .{ .alignment = .@"16" },
2210634978 .extra_temps = .{
22107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
34979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
2210834980 .unused,
2210934981 .unused,
2211034982 .unused,
......@@ -22121,16 +34993,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2212134993 } },
2212234994 }, .{
2212334995 .required_features = .{ .avx, null, null, null },
22124 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22125 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
34996 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
34997 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
2212634998 .patterns = &.{
22127 .{ .src = .{ .to_mem, .none } },
34999 .{ .src = .{ .to_mem, .none, .none } },
2212835000 },
2212935001 .call_frame = .{ .alignment = .@"16" },
2213035002 .extra_temps = .{
2213135003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22132 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
35004 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35005 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
2213435006 .unused,
2213535007 .unused,
2213635008 .unused,
......@@ -22142,24 +35014,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2214235014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2214335015 .each = .{ .once = &.{
2214435016 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22145 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
35017 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
2214635018 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22147 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22148 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35019 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35020 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2214935021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2215035022 } },
2215135023 }, .{
22152 .required_features = .{ .sse4_1, null, null, null },
22153 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22154 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35024 .required_features = .{ .sse2, null, null, null },
35025 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35026 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
2215535027 .patterns = &.{
22156 .{ .src = .{ .to_mem, .none } },
35028 .{ .src = .{ .to_mem, .none, .none } },
2215735029 },
2215835030 .call_frame = .{ .alignment = .@"16" },
2215935031 .extra_temps = .{
2216035032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22162 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
35033 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
2216335035 .unused,
2216435036 .unused,
2216535037 .unused,
......@@ -22171,25 +35043,107 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2217135043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2217235044 .each = .{ .once = &.{
2217335045 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22174 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
35046 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
2217535047 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22176 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22177 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35048 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35049 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
35050 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35051 } },
35052 }, .{
35053 .required_features = .{ .sse, null, null, null },
35054 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35055 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35056 .patterns = &.{
35057 .{ .src = .{ .to_mem, .none, .none } },
35058 },
35059 .call_frame = .{ .alignment = .@"16" },
35060 .extra_temps = .{
35061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35062 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35063 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
35064 .unused,
35065 .unused,
35066 .unused,
35067 .unused,
35068 .unused,
35069 .unused,
35070 },
35071 .dst_temps = .{.mem},
35072 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35073 .each = .{ .once = &.{
35074 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35075 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
35076 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35077 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35078 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
35079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35080 } },
35081 }, .{
35082 .required_features = .{ .sse, null, null, null },
35083 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35084 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
35085 .patterns = &.{
35086 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
35087 },
35088 .call_frame = .{ .alignment = .@"16" },
35089 .extra_temps = .{
35090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
35091 .unused,
35092 .unused,
35093 .unused,
35094 .unused,
35095 .unused,
35096 .unused,
35097 .unused,
35098 .unused,
35099 },
35100 .dst_temps = .{.{ .ref = .src0 }},
35101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35102 .each = .{ .once = &.{
35103 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
35104 } },
35105 }, .{
35106 .required_features = .{ .avx, null, null, null },
35107 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35108 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
35109 .patterns = &.{
35110 .{ .src = .{ .to_mem, .none, .none } },
35111 },
35112 .call_frame = .{ .alignment = .@"16" },
35113 .extra_temps = .{
35114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35115 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
35117 .unused,
35118 .unused,
35119 .unused,
35120 .unused,
35121 .unused,
35122 .unused,
35123 },
35124 .dst_temps = .{.mem},
35125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35126 .each = .{ .once = &.{
35127 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35128 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
35129 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35130 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35131 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2217835132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2217935133 } },
2218035134 }, .{
2218135135 .required_features = .{ .sse2, null, null, null },
22182 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22183 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35136 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35137 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2218435138 .patterns = &.{
22185 .{ .src = .{ .to_mem, .none } },
35139 .{ .src = .{ .to_mem, .none, .none } },
2218635140 },
2218735141 .call_frame = .{ .alignment = .@"16" },
2218835142 .extra_temps = .{
2218935143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22190 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22192 .{ .type = .f16, .kind = .{ .reg = .ax } },
35144 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35145 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
35146 .unused,
2219335147 .unused,
2219435148 .unused,
2219535149 .unused,
......@@ -22200,27 +35154,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2220035154 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2220135155 .each = .{ .once = &.{
2220235156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22203 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
35157 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
2220435158 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22205 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22206 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22207 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35159 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35160 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2220835161 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2220935162 } },
2221035163 }, .{
2221135164 .required_features = .{ .sse, null, null, null },
22212 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22213 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35165 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35166 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2221435167 .patterns = &.{
22215 .{ .src = .{ .to_mem, .none } },
35168 .{ .src = .{ .to_mem, .none, .none } },
2221635169 },
2221735170 .call_frame = .{ .alignment = .@"16" },
2221835171 .extra_temps = .{
2221935172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22220 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22221 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22222 .{ .type = .f32, .kind = .mem },
22223 .{ .type = .f16, .kind = .{ .reg = .ax } },
35173 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
35175 .unused,
35176 .unused,
2222435177 .unused,
2222535178 .unused,
2222635179 .unused,
......@@ -22230,60 +35183,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2223035183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2223135184 .each = .{ .once = &.{
2223235185 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22233 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
22234 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
35186 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
2223535187 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22236 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22237 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22238 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35188 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35189 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2224035190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2224135191 } },
2224235192 }, .{
22243 .required_features = .{ .avx, null, null, null },
22244 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22245 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
35193 .required_features = .{ .sse, .x87, null, null },
35194 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35195 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
2224635196 .patterns = &.{
22247 .{ .src = .{ .mem, .none } },
35197 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2224835198 },
22249 .dst_temps = .{.{ .rc = .sse }},
35199 .call_frame = .{ .alignment = .@"16" },
35200 .extra_temps = .{
35201 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
35202 .unused,
35203 .unused,
35204 .unused,
35205 .unused,
35206 .unused,
35207 .unused,
35208 .unused,
35209 .unused,
35210 },
35211 .dst_temps = .{.{ .reg = .st0 }},
35212 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2225035213 .each = .{ .once = &.{
22251 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
22252 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
35214 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2225335215 } },
2225435216 }, .{
2225535217 .required_features = .{ .avx, null, null, null },
22256 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22257 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
35218 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35219 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
2225835220 .patterns = &.{
22259 .{ .src = .{ .to_sse, .none } },
35221 .{ .src = .{ .to_mem, .none, .none } },
2226035222 },
22261 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35223 .call_frame = .{ .alignment = .@"16" },
35224 .extra_temps = .{
35225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35226 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
35228 .unused,
35229 .unused,
35230 .unused,
35231 .unused,
35232 .unused,
35233 .unused,
35234 },
35235 .dst_temps = .{.mem},
35236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2226235237 .each = .{ .once = &.{
22263 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
35238 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35239 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
35240 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35241 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35242 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
35243 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2226435245 } },
2226535246 }, .{
2226635247 .required_features = .{ .sse2, null, null, null },
22267 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
35248 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35249 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
35250 .patterns = &.{
35251 .{ .src = .{ .to_mem, .none, .none } },
35252 },
35253 .call_frame = .{ .alignment = .@"16" },
35254 .extra_temps = .{
35255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35256 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
35258 .unused,
35259 .unused,
35260 .unused,
35261 .unused,
35262 .unused,
35263 .unused,
35264 },
35265 .dst_temps = .{.mem},
35266 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35267 .each = .{ .once = &.{
35268 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35269 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
35270 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35271 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35272 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
35273 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35275 } },
35276 }, .{
35277 .required_features = .{ .sse, null, null, null },
35278 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
35279 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
35280 .patterns = &.{
35281 .{ .src = .{ .to_mem, .none, .none } },
35282 },
35283 .call_frame = .{ .alignment = .@"16" },
35284 .extra_temps = .{
35285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35286 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
35288 .unused,
35289 .unused,
35290 .unused,
35291 .unused,
35292 .unused,
35293 .unused,
35294 },
35295 .dst_temps = .{.mem},
35296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35297 .each = .{ .once = &.{
35298 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
35299 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
35300 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35301 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35302 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
35303 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35305 } },
35306 } }) catch |err| switch (err) {
35307 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
35308 @tagName(air_tag),
35309 ty_op.ty.toType().fmt(pt),
35310 cg.typeOf(ty_op.operand).fmt(pt),
35311 ops[0].tracking(cg),
35312 }),
35313 else => |e| return e,
35314 };
35315 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
35316 },
35317 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
35318 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
35319 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
35320 var res: [1]Temp = undefined;
35321 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
35322 .required_features = .{ .f16c, null, null, null },
35323 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
2226835324 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
2226935325 .patterns = &.{
22270 .{ .src = .{ .mem, .none } },
22271 .{ .src = .{ .to_sse, .none } },
35326 .{ .src = .{ .to_sse, .none, .none } },
2227235327 },
22273 .dst_temps = .{.{ .rc = .sse }},
35328 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2227435329 .each = .{ .once = &.{
22275 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
22276 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
35330 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2227735331 } },
2227835332 }, .{
22279 .required_features = .{ .x87, null, null, null },
22280 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
35333 .required_features = .{ .f16c, null, null, null },
35334 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
35335 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
35336 .patterns = &.{
35337 .{ .src = .{ .mem, .none, .none } },
35338 .{ .src = .{ .to_sse, .none, .none } },
35339 },
35340 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35341 .each = .{ .once = &.{
35342 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35343 } },
35344 }, .{
35345 .required_features = .{ .f16c, null, null, null },
35346 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
35347 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
35348 .patterns = &.{
35349 .{ .src = .{ .mem, .none, .none } },
35350 .{ .src = .{ .to_sse, .none, .none } },
35351 },
35352 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35353 .each = .{ .once = &.{
35354 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
35355 } },
35356 }, .{
35357 .required_features = .{ .sse, null, null, null },
35358 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
2228135359 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
2228235360 .patterns = &.{
22283 .{ .src = .{ .to_mem, .none } },
35361 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2228435362 },
35363 .call_frame = .{ .alignment = .@"16" },
2228535364 .extra_temps = .{
22286 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
2228735366 .unused,
2228835367 .unused,
2228935368 .unused,
......@@ -22293,57 +35372,178 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2229335372 .unused,
2229435373 .unused,
2229535374 },
35375 .dst_temps = .{.{ .ref = .src0 }},
35376 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35377 .each = .{ .once = &.{
35378 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
35379 } },
35380 }, .{
35381 .required_features = .{ .f16c, null, null, null },
35382 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
35383 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
35384 .patterns = &.{
35385 .{ .src = .{ .to_mem, .none, .none } },
35386 },
35387 .extra_temps = .{
35388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35389 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
35390 .unused,
35391 .unused,
35392 .unused,
35393 .unused,
35394 .unused,
35395 .unused,
35396 .unused,
35397 },
2229635398 .dst_temps = .{.mem},
35399 .clobbers = .{ .eflags = true },
2229735400 .each = .{ .once = &.{
22298 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
22299 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
35401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35402 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
35403 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
35404 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35406 } },
35407 }, .{
35408 .required_features = .{ .avx, null, null, null },
35409 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35410 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35411 .patterns = &.{
35412 .{ .src = .{ .to_mem, .none, .none } },
35413 },
35414 .call_frame = .{ .alignment = .@"16" },
35415 .extra_temps = .{
35416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35417 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35418 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
35419 .unused,
35420 .unused,
35421 .unused,
35422 .unused,
35423 .unused,
35424 .unused,
35425 },
35426 .dst_temps = .{.mem},
35427 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35428 .each = .{ .once = &.{
35429 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35430 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
35431 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
35432 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35433 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35434 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35436 } },
35437 }, .{
35438 .required_features = .{ .sse2, null, null, null },
35439 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35440 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35441 .patterns = &.{
35442 .{ .src = .{ .to_mem, .none, .none } },
35443 },
35444 .call_frame = .{ .alignment = .@"16" },
35445 .extra_temps = .{
35446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35447 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
35449 .unused,
35450 .unused,
35451 .unused,
35452 .unused,
35453 .unused,
35454 .unused,
35455 },
35456 .dst_temps = .{.mem},
35457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35458 .each = .{ .once = &.{
35459 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35460 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
35461 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
35462 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35463 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35464 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35466 } },
35467 }, .{
35468 .required_features = .{ .sse, null, null, null },
35469 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35470 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35471 .patterns = &.{
35472 .{ .src = .{ .to_mem, .none, .none } },
35473 },
35474 .call_frame = .{ .alignment = .@"16" },
35475 .extra_temps = .{
35476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35477 .{ .type = .f16, .kind = .{ .reg = .ax } },
35478 .{ .type = .f32, .kind = .mem },
35479 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
35481 .unused,
35482 .unused,
35483 .unused,
35484 .unused,
35485 },
35486 .dst_temps = .{.mem},
35487 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35488 .each = .{ .once = &.{
35489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35490 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
35491 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
35492 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
35493 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
35494 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
35495 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35496 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2230035497 } },
2230135498 }, .{
22302 .required_features = .{ .avx, null, null, null },
22303 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22304 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
35499 .required_features = .{ .f16c, null, null, null },
35500 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35501 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
2230535502 .patterns = &.{
22306 .{ .src = .{ .mem, .none } },
22307 .{ .src = .{ .to_sse, .none } },
35503 .{ .src = .{ .to_sse, .none, .none } },
2230835504 },
2230935505 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2231035506 .each = .{ .once = &.{
22311 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
35507 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35508 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
2231235509 } },
2231335510 }, .{
22314 .required_features = .{ .sse2, null, null, null },
22315 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22316 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
35511 .required_features = .{ .f16c, null, null, null },
35512 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
35513 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
2231735514 .patterns = &.{
22318 .{ .src = .{ .mem, .none } },
22319 .{ .src = .{ .to_sse, .none } },
35515 .{ .src = .{ .mem, .none, .none } },
35516 .{ .src = .{ .to_sse, .none, .none } },
2232035517 },
2232135518 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2232235519 .each = .{ .once = &.{
22323 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
35520 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35521 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
2232435522 } },
2232535523 }, .{
22326 .required_features = .{ .avx, null, null, null },
22327 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22328 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
35524 .required_features = .{ .f16c, null, null, null },
35525 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
35526 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
2232935527 .patterns = &.{
22330 .{ .src = .{ .mem, .none } },
22331 .{ .src = .{ .to_sse, .none } },
35528 .{ .src = .{ .mem, .none, .none } },
35529 .{ .src = .{ .to_sse, .none, .none } },
2233235530 },
2233335531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2233435532 .each = .{ .once = &.{
22335 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
35533 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35534 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
2233635535 } },
2233735536 }, .{
22338 .required_features = .{ .avx, null, null, null },
22339 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22340 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
35537 .required_features = .{ .f16c, null, null, null },
35538 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
35539 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
2234135540 .patterns = &.{
22342 .{ .src = .{ .to_mem, .none } },
35541 .{ .src = .{ .mem, .none, .none } },
35542 .{ .src = .{ .to_sse, .none, .none } },
2234335543 },
2234435544 .extra_temps = .{
22345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22346 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
35545 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
35546 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
2234735547 .unused,
2234835548 .unused,
2234935549 .unused,
......@@ -22353,24 +35553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2235335553 .unused,
2235435554 },
2235535555 .dst_temps = .{.mem},
22356 .clobbers = .{ .eflags = true },
2235735556 .each = .{ .once = &.{
22358 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22359 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22360 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22361 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22362 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35557 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
35558 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
35559 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
35560 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
35561 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
35562 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
2236335563 } },
2236435564 }, .{
22365 .required_features = .{ .sse2, null, null, null },
22366 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22367 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
35565 .required_features = .{ .sse, null, null, null },
35566 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35567 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
2236835568 .patterns = &.{
22369 .{ .src = .{ .to_mem, .none } },
35569 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2237035570 },
35571 .call_frame = .{ .alignment = .@"16" },
2237135572 .extra_temps = .{
22372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22373 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
35573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
35574 .unused,
2237435575 .unused,
2237535576 .unused,
2237635577 .unused,
......@@ -22379,26 +35580,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2237935580 .unused,
2238035581 .unused,
2238135582 },
22382 .dst_temps = .{.mem},
22383 .clobbers = .{ .eflags = true },
35583 .dst_temps = .{.{ .ref = .src0 }},
35584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2238435585 .each = .{ .once = &.{
22385 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22386 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22387 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22388 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22389 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35586 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2239035587 } },
2239135588 }, .{
22392 .required_features = .{ .x87, null, null, null },
22393 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22394 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35589 .required_features = .{ .f16c, null, null, null },
35590 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
35591 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
2239535592 .patterns = &.{
22396 .{ .src = .{ .to_mem, .none } },
35593 .{ .src = .{ .to_mem, .none, .none } },
2239735594 },
2239835595 .extra_temps = .{
2239935596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22400 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22401 .unused,
35597 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
35598 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
2240235599 .unused,
2240335600 .unused,
2240435601 .unused,
......@@ -22409,24 +35606,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2240935606 .dst_temps = .{.mem},
2241035607 .clobbers = .{ .eflags = true },
2241135608 .each = .{ .once = &.{
22412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22413 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22414 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
35609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35610 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
35611 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
35612 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
35613 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
35614 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
35615 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ },
35616 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2241635617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2241735618 } },
2241835619 }, .{
2241935620 .required_features = .{ .avx, null, null, null },
22420 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22421 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35621 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35622 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2242235623 .patterns = &.{
22423 .{ .src = .{ .to_mem, .none } },
35624 .{ .src = .{ .to_mem, .none, .none } },
2242435625 },
22425 .call_frame = .{ .size = 16, .alignment = .@"16" },
35626 .call_frame = .{ .alignment = .@"16" },
2242635627 .extra_temps = .{
22427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22429 .unused,
35628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
2243035631 .unused,
2243135632 .unused,
2243235633 .unused,
......@@ -22434,25 +35635,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2243435635 .unused,
2243535636 .unused,
2243635637 },
22437 .dst_temps = .{.{ .reg = .xmm0 }},
35638 .dst_temps = .{.mem},
2243835639 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2243935640 .each = .{ .once = &.{
22440 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22441 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22442 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
35641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35642 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
35643 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
35644 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35645 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35646 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35647 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2244335648 } },
2244435649 }, .{
2244535650 .required_features = .{ .sse2, null, null, null },
22446 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22447 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35651 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35652 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2244835653 .patterns = &.{
22449 .{ .src = .{ .to_mem, .none } },
35654 .{ .src = .{ .to_mem, .none, .none } },
2245035655 },
22451 .call_frame = .{ .size = 16, .alignment = .@"16" },
35656 .call_frame = .{ .alignment = .@"16" },
2245235657 .extra_temps = .{
22453 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22455 .unused,
35658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35659 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
2245635661 .unused,
2245735662 .unused,
2245835663 .unused,
......@@ -22460,25 +35665,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2246035665 .unused,
2246135666 .unused,
2246235667 },
22463 .dst_temps = .{.{ .reg = .xmm0 }},
35668 .dst_temps = .{.mem},
2246435669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2246535670 .each = .{ .once = &.{
22466 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22467 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22468 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
35671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35672 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
35673 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
35674 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35675 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35676 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2246935678 } },
2247035679 }, .{
2247135680 .required_features = .{ .sse, null, null, null },
22472 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22473 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35681 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35682 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2247435683 .patterns = &.{
22475 .{ .src = .{ .to_mem, .none } },
35684 .{ .src = .{ .to_mem, .none, .none } },
2247635685 },
22477 .call_frame = .{ .size = 16, .alignment = .@"16" },
35686 .call_frame = .{ .alignment = .@"16" },
2247835687 .extra_temps = .{
22479 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
35688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35689 .{ .type = .f16, .kind = .{ .reg = .ax } },
35690 .{ .type = .f32, .kind = .mem },
35691 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35692 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
35693 .unused,
35694 .unused,
35695 .unused,
2248135696 .unused,
35697 },
35698 .dst_temps = .{.mem},
35699 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35700 .each = .{ .once = &.{
35701 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35702 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
35703 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
35704 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
35705 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
35706 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
35707 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35709 } },
35710 }, .{
35711 .required_features = .{ .f16c, .x87, null, null },
35712 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35713 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
35714 .patterns = &.{
35715 .{ .src = .{ .to_sse, .none, .none } },
35716 },
35717 .extra_temps = .{
35718 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
35719 .{ .type = .f32, .kind = .mem },
35720 .{ .type = .f32, .kind = .{ .reg = .st7 } },
2248235721 .unused,
2248335722 .unused,
2248435723 .unused,
......@@ -22486,56 +35725,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2248635725 .unused,
2248735726 .unused,
2248835727 },
22489 .dst_temps = .{.{ .reg = .xmm0 }},
22490 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35728 .dst_temps = .{.{ .rc = .x87 }},
2249135729 .each = .{ .once = &.{
22492 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
22493 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
22494 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
35730 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
35731 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
35732 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
35733 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
2249535734 } },
2249635735 }, .{
22497 .required_features = .{ .avx, null, null, null },
22498 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22499 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35736 .required_features = .{ .sse, .x87, null, null },
35737 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35738 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
2250035739 .patterns = &.{
22501 .{ .src = .{ .to_mem, .none } },
35740 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2250235741 },
22503 .call_frame = .{ .size = 16, .alignment = .@"16" },
35742 .call_frame = .{ .alignment = .@"16" },
2250435743 .extra_temps = .{
22505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22506 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22507 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
35744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
35745 .unused,
35746 .unused,
35747 .unused,
2250935748 .unused,
2251035749 .unused,
2251135750 .unused,
2251235751 .unused,
2251335752 .unused,
2251435753 },
22515 .dst_temps = .{.mem},
35754 .dst_temps = .{.{ .reg = .st0 }},
2251635755 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2251735756 .each = .{ .once = &.{
22518 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22519 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22520 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22521 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22522 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22523 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22524 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35757 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2252535758 } },
2252635759 }, .{
22527 .required_features = .{ .sse4_1, null, null, null },
22528 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22529 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35760 .required_features = .{ .avx, null, null, null },
35761 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35762 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
2253035763 .patterns = &.{
22531 .{ .src = .{ .to_mem, .none } },
35764 .{ .src = .{ .to_mem, .none, .none } },
2253235765 },
22533 .call_frame = .{ .size = 16, .alignment = .@"16" },
35766 .call_frame = .{ .alignment = .@"16" },
2253435767 .extra_temps = .{
2253535768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22536 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22537 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22538 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
35769 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
35771 .unused,
2253935772 .unused,
2254035773 .unused,
2254135774 .unused,
......@@ -22545,28 +35778,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2254535778 .dst_temps = .{.mem},
2254635779 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2254735780 .each = .{ .once = &.{
22548 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22549 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22550 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22551 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22552 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
35781 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35782 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
35783 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
35784 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35785 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35786 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
2255335787 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2255435788 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2255535789 } },
2255635790 }, .{
2255735791 .required_features = .{ .sse2, null, null, null },
22558 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22559 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35792 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35793 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
2256035794 .patterns = &.{
22561 .{ .src = .{ .to_mem, .none } },
35795 .{ .src = .{ .to_mem, .none, .none } },
2256235796 },
22563 .call_frame = .{ .size = 16, .alignment = .@"16" },
35797 .call_frame = .{ .alignment = .@"16" },
2256435798 .extra_temps = .{
2256535799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22566 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22567 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22568 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22569 .{ .type = .f16, .kind = .{ .reg = .ax } },
35800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35801 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
35802 .unused,
35803 .unused,
2257035804 .unused,
2257135805 .unused,
2257235806 .unused,
......@@ -22575,29 +35809,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2257535809 .dst_temps = .{.mem},
2257635810 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2257735811 .each = .{ .once = &.{
22578 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22579 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22580 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22581 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22582 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
22583 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
35812 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35813 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
35814 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
35815 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35816 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35817 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
2258435818 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2258535819 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2258635820 } },
2258735821 }, .{
2258835822 .required_features = .{ .sse, null, null, null },
22589 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22590 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
35823 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35824 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
2259135825 .patterns = &.{
22592 .{ .src = .{ .to_mem, .none } },
35826 .{ .src = .{ .to_mem, .none, .none } },
2259335827 },
22594 .call_frame = .{ .size = 16, .alignment = .@"16" },
35828 .call_frame = .{ .alignment = .@"16" },
2259535829 .extra_temps = .{
2259635830 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22597 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22598 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22599 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
2260035831 .{ .type = .f16, .kind = .{ .reg = .ax } },
35832 .{ .type = .f32, .kind = .mem },
35833 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
2260135835 .unused,
2260235836 .unused,
2260335837 .unused,
......@@ -22606,26 +35840,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2260635840 .dst_temps = .{.mem},
2260735841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2260835842 .each = .{ .once = &.{
22609 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22610 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22611 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
22612 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22613 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
22614 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
22615 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
35843 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35844 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
35845 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
35846 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
35847 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
35848 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35849 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
2261635850 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2261735851 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2261835852 } },
2261935853 }, .{
22620 .required_features = .{ .x87, null, null, null },
22621 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22622 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
35854 .required_features = .{ .sse, null, null, null },
35855 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35856 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
2262335857 .patterns = &.{
22624 .{ .src = .{ .mem, .none } },
22625 .{ .src = .{ .to_x87, .none } },
35858 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2262635859 },
35860 .call_frame = .{ .alignment = .@"16" },
2262735861 .extra_temps = .{
22628 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
2262935863 .unused,
2263035864 .unused,
2263135865 .unused,
......@@ -22635,22 +35869,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2263535869 .unused,
2263635870 .unused,
2263735871 },
22638 .dst_temps = .{.mem},
35872 .dst_temps = .{.{ .ref = .src0 }},
35873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2263935874 .each = .{ .once = &.{
22640 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22641 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
35875 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2264235876 } },
2264335877 }, .{
22644 .required_features = .{ .x87, null, null, null },
22645 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22646 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
35878 .required_features = .{ .avx, null, null, null },
35879 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35880 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2264735881 .patterns = &.{
22648 .{ .src = .{ .to_mem, .none } },
35882 .{ .src = .{ .to_mem, .none, .none } },
2264935883 },
35884 .call_frame = .{ .alignment = .@"16" },
2265035885 .extra_temps = .{
2265135886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22652 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22653 .unused,
35887 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
2265435889 .unused,
2265535890 .unused,
2265635891 .unused,
......@@ -22659,26 +35894,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2265935894 .unused,
2266035895 },
2266135896 .dst_temps = .{.mem},
22662 .clobbers = .{ .eflags = true },
35897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2266335898 .each = .{ .once = &.{
22664 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22665 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
22666 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22667 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
35899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35900 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
35901 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
35902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35903 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35904 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2266835905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2266935906 } },
2267035907 }, .{
22671 .required_features = .{ .x87, null, null, null },
22672 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22673 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
35908 .required_features = .{ .sse2, null, null, null },
35909 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35910 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2267435911 .patterns = &.{
22675 .{ .src = .{ .mem, .none } },
22676 .{ .src = .{ .to_x87, .none } },
35912 .{ .src = .{ .to_mem, .none, .none } },
2267735913 },
35914 .call_frame = .{ .alignment = .@"16" },
2267835915 .extra_temps = .{
22679 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22680 .unused,
22681 .unused,
35916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35917 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
2268235919 .unused,
2268335920 .unused,
2268435921 .unused,
......@@ -22687,47 +35924,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2268735924 .unused,
2268835925 },
2268935926 .dst_temps = .{.mem},
35927 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2269035928 .each = .{ .once = &.{
22691 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22692 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
35929 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35930 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
35931 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
35932 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35933 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35934 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
35935 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2269335936 } },
2269435937 }, .{
22695 .required_features = .{ .x87, null, null, null },
22696 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22697 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
35938 .required_features = .{ .sse, null, null, null },
35939 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
35940 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2269835941 .patterns = &.{
22699 .{ .src = .{ .to_mem, .none } },
35942 .{ .src = .{ .to_mem, .none, .none } },
2270035943 },
35944 .call_frame = .{ .alignment = .@"16" },
2270135945 .extra_temps = .{
2270235946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22703 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22704 .unused,
22705 .unused,
22706 .unused,
35947 .{ .type = .f16, .kind = .{ .reg = .ax } },
35948 .{ .type = .f32, .kind = .mem },
35949 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
2270735951 .unused,
2270835952 .unused,
2270935953 .unused,
2271035954 .unused,
2271135955 },
2271235956 .dst_temps = .{.mem},
22713 .clobbers = .{ .eflags = true },
35957 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2271435958 .each = .{ .once = &.{
22715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22716 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22717 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
22718 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
35959 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35960 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
35961 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
35962 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
35963 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
35964 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
35965 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2271935966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2272035967 } },
2272135968 }, .{
22722 .required_features = .{ .sse, null, null, null },
22723 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22724 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
35969 .required_features = .{ .avx, null, null, null },
35970 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35971 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
2272535972 .patterns = &.{
22726 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
35973 .{ .src = .{ .mem, .none, .none } },
35974 },
35975 .dst_temps = .{.{ .rc = .sse }},
35976 .each = .{ .once = &.{
35977 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
35978 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
35979 } },
35980 }, .{
35981 .required_features = .{ .avx, null, null, null },
35982 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35983 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
35984 .patterns = &.{
35985 .{ .src = .{ .to_sse, .none, .none } },
35986 },
35987 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
35988 .each = .{ .once = &.{
35989 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
35990 } },
35991 }, .{
35992 .required_features = .{ .sse2, null, null, null },
35993 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
35994 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
35995 .patterns = &.{
35996 .{ .src = .{ .mem, .none, .none } },
35997 .{ .src = .{ .to_sse, .none, .none } },
35998 },
35999 .dst_temps = .{.{ .rc = .sse }},
36000 .each = .{ .once = &.{
36001 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
36002 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
36003 } },
36004 }, .{
36005 .required_features = .{ .x87, null, null, null },
36006 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36007 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36008 .patterns = &.{
36009 .{ .src = .{ .to_mem, .none, .none } },
2272736010 },
22728 .call_frame = .{ .alignment = .@"16" },
2272936011 .extra_temps = .{
22730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36012 .{ .type = .f32, .kind = .{ .reg = .st7 } },
2273136013 .unused,
2273236014 .unused,
2273336015 .unused,
......@@ -22737,23 +36019,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2273736019 .unused,
2273836020 .unused,
2273936021 },
22740 .dst_temps = .{.{ .ref = .src0 }},
22741 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36022 .dst_temps = .{.mem},
2274236023 .each = .{ .once = &.{
22743 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36024 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
36025 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
2274436026 } },
2274536027 }, .{
2274636028 .required_features = .{ .avx, null, null, null },
22747 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22748 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36029 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
36030 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
2274936031 .patterns = &.{
22750 .{ .src = .{ .to_mem, .none } },
36032 .{ .src = .{ .mem, .none, .none } },
36033 .{ .src = .{ .to_sse, .none, .none } },
36034 },
36035 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36036 .each = .{ .once = &.{
36037 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
36038 } },
36039 }, .{
36040 .required_features = .{ .sse2, null, null, null },
36041 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
36042 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
36043 .patterns = &.{
36044 .{ .src = .{ .mem, .none, .none } },
36045 .{ .src = .{ .to_sse, .none, .none } },
36046 },
36047 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36048 .each = .{ .once = &.{
36049 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
36050 } },
36051 }, .{
36052 .required_features = .{ .avx, null, null, null },
36053 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
36054 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
36055 .patterns = &.{
36056 .{ .src = .{ .mem, .none, .none } },
36057 .{ .src = .{ .to_sse, .none, .none } },
36058 },
36059 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36060 .each = .{ .once = &.{
36061 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
36062 } },
36063 }, .{
36064 .required_features = .{ .avx, null, null, null },
36065 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
36066 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
36067 .patterns = &.{
36068 .{ .src = .{ .to_mem, .none, .none } },
2275136069 },
22752 .call_frame = .{ .alignment = .@"16" },
2275336070 .extra_temps = .{
2275436071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22755 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36072 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
36073 .unused,
2275736074 .unused,
2275836075 .unused,
2275936076 .unused,
......@@ -22762,27 +36079,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2276236079 .unused,
2276336080 },
2276436081 .dst_temps = .{.mem},
22765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36082 .clobbers = .{ .eflags = true },
2276636083 .each = .{ .once = &.{
22767 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22768 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22769 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22770 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22771 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36084 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36085 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
36086 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
36087 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2277236088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2277336089 } },
2277436090 }, .{
22775 .required_features = .{ .sse4_1, null, null, null },
22776 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22777 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36091 .required_features = .{ .sse2, null, null, null },
36092 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
36093 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
2277836094 .patterns = &.{
22779 .{ .src = .{ .to_mem, .none } },
36095 .{ .src = .{ .to_mem, .none, .none } },
2278036096 },
22781 .call_frame = .{ .alignment = .@"16" },
2278236097 .extra_temps = .{
2278336098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22784 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22785 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
36099 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
36100 .unused,
2278636101 .unused,
2278736102 .unused,
2278836103 .unused,
......@@ -22791,28 +36106,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2279136106 .unused,
2279236107 },
2279336108 .dst_temps = .{.mem},
22794 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36109 .clobbers = .{ .eflags = true },
2279536110 .each = .{ .once = &.{
22796 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22797 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22798 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22799 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22800 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36112 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
36113 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36114 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2280136115 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2280236116 } },
2280336117 }, .{
22804 .required_features = .{ .sse2, null, null, null },
22805 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22806 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36118 .required_features = .{ .x87, null, null, null },
36119 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36120 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
2280736121 .patterns = &.{
22808 .{ .src = .{ .to_mem, .none } },
36122 .{ .src = .{ .to_mem, .none, .none } },
2280936123 },
22810 .call_frame = .{ .alignment = .@"16" },
2281136124 .extra_temps = .{
2281236125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22813 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22815 .{ .type = .f16, .kind = .{ .reg = .ax } },
36126 .{ .type = .f32, .kind = .{ .reg = .st7 } },
36127 .unused,
36128 .unused,
2281636129 .unused,
2281736130 .unused,
2281836131 .unused,
......@@ -22820,57 +36133,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2282036133 .unused,
2282136134 },
2282236135 .dst_temps = .{.mem},
22823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36136 .clobbers = .{ .eflags = true },
2282436137 .each = .{ .once = &.{
22825 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22826 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22827 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22828 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22829 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22830 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36139 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
36140 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
36141 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2283136142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2283236143 } },
2283336144 }, .{
22834 .required_features = .{ .sse, null, null, null },
22835 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22836 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
36145 .required_features = .{ .x87, null, null, null },
36146 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36147 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
2283736148 .patterns = &.{
22838 .{ .src = .{ .to_mem, .none } },
36149 .{ .src = .{ .to_mem, .none, .none } },
2283936150 },
22840 .call_frame = .{ .alignment = .@"16" },
2284136151 .extra_temps = .{
22842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22845 .{ .type = .f32, .kind = .mem },
22846 .{ .type = .f16, .kind = .{ .reg = .ax } },
36152 .{ .type = .f32, .kind = .{ .reg = .st7 } },
36153 .unused,
36154 .unused,
36155 .unused,
36156 .unused,
2284736157 .unused,
2284836158 .unused,
2284936159 .unused,
2285036160 .unused,
2285136161 },
2285236162 .dst_temps = .{.mem},
22853 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2285436163 .each = .{ .once = &.{
22855 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22856 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22858 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22859 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22860 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22861 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36164 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
36165 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
36166 } },
36167 }, .{
36168 .required_features = .{ .x87, null, null, null },
36169 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36170 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36171 .patterns = &.{
36172 .{ .src = .{ .to_mem, .none, .none } },
36173 },
36174 .extra_temps = .{
36175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36176 .{ .type = .f32, .kind = .{ .reg = .st7 } },
36177 .unused,
36178 .unused,
36179 .unused,
36180 .unused,
36181 .unused,
36182 .unused,
36183 .unused,
36184 },
36185 .dst_temps = .{.mem},
36186 .clobbers = .{ .eflags = true },
36187 .each = .{ .once = &.{
36188 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36189 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
36190 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
36191 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2286236192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2286336193 } },
2286436194 }, .{
2286536195 .required_features = .{ .sse, null, null, null },
22866 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22867 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36196 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36197 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
2286836198 .patterns = &.{
22869 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
36199 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2287036200 },
2287136201 .call_frame = .{ .alignment = .@"16" },
2287236202 .extra_temps = .{
22873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
2287436204 .unused,
2287536205 .unused,
2287636206 .unused,
......@@ -22887,16 +36217,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2288736217 } },
2288836218 }, .{
2288936219 .required_features = .{ .avx, null, null, null },
22890 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22891 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36220 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36221 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2289236222 .patterns = &.{
22893 .{ .src = .{ .to_mem, .none } },
36223 .{ .src = .{ .to_mem, .none, .none } },
2289436224 },
2289536225 .call_frame = .{ .alignment = .@"16" },
2289636226 .extra_temps = .{
2289736227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22898 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22899 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36228 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36229 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
2290036230 .unused,
2290136231 .unused,
2290236232 .unused,
......@@ -22907,25 +36237,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2290736237 .dst_temps = .{.mem},
2290836238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2290936239 .each = .{ .once = &.{
22910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22911 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36240 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36241 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
2291236242 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22913 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36243 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2291436244 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2291536245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2291636246 } },
2291736247 }, .{
2291836248 .required_features = .{ .sse2, null, null, null },
22919 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22920 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36249 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36250 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2292136251 .patterns = &.{
22922 .{ .src = .{ .to_mem, .none } },
36252 .{ .src = .{ .to_mem, .none, .none } },
2292336253 },
2292436254 .call_frame = .{ .alignment = .@"16" },
2292536255 .extra_temps = .{
2292636256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22927 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22928 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36257 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
2292936259 .unused,
2293036260 .unused,
2293136261 .unused,
......@@ -22936,25 +36266,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2293636266 .dst_temps = .{.mem},
2293736267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2293836268 .each = .{ .once = &.{
22939 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22940 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36269 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36270 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
2294136271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22942 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36272 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2294336273 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2294436274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2294536275 } },
2294636276 }, .{
2294736277 .required_features = .{ .sse, null, null, null },
22948 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22949 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36278 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
36279 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2295036280 .patterns = &.{
22951 .{ .src = .{ .to_mem, .none } },
36281 .{ .src = .{ .to_mem, .none, .none } },
2295236282 },
2295336283 .call_frame = .{ .alignment = .@"16" },
2295436284 .extra_temps = .{
2295536285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22956 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22957 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
36286 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
2295836288 .unused,
2295936289 .unused,
2296036290 .unused,
......@@ -22965,23 +36295,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2296536295 .dst_temps = .{.mem},
2296636296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2296736297 .each = .{ .once = &.{
22968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22969 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36298 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36299 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
2297036300 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22971 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36301 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2297236302 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2297336303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2297436304 } },
36305 }, .{
36306 .required_features = .{ .x87, null, null, null },
36307 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36308 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
36309 .patterns = &.{
36310 .{ .src = .{ .to_mem, .none, .none } },
36311 },
36312 .extra_temps = .{
36313 .{ .type = .f64, .kind = .{ .reg = .st7 } },
36314 .unused,
36315 .unused,
36316 .unused,
36317 .unused,
36318 .unused,
36319 .unused,
36320 .unused,
36321 .unused,
36322 },
36323 .dst_temps = .{.mem},
36324 .each = .{ .once = &.{
36325 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
36326 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
36327 } },
36328 }, .{
36329 .required_features = .{ .x87, null, null, null },
36330 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36331 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36332 .patterns = &.{
36333 .{ .src = .{ .to_mem, .none, .none } },
36334 },
36335 .extra_temps = .{
36336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36337 .{ .type = .f64, .kind = .{ .reg = .st7 } },
36338 .unused,
36339 .unused,
36340 .unused,
36341 .unused,
36342 .unused,
36343 .unused,
36344 .unused,
36345 },
36346 .dst_temps = .{.mem},
36347 .clobbers = .{ .eflags = true },
36348 .each = .{ .once = &.{
36349 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36350 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
36351 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
36352 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
36353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36354 } },
2297536355 }, .{
2297636356 .required_features = .{ .sse, null, null, null },
22977 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22978 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36357 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36358 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
2297936359 .patterns = &.{
22980 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
36360 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
2298136361 },
2298236362 .call_frame = .{ .alignment = .@"16" },
2298336363 .extra_temps = .{
22984 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
36364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
2298536365 .unused,
2298636366 .unused,
2298736367 .unused,
......@@ -22998,16 +36378,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2299836378 } },
2299936379 }, .{
2300036380 .required_features = .{ .avx, null, null, null },
23001 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23002 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36381 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36382 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2300336383 .patterns = &.{
23004 .{ .src = .{ .to_mem, .none } },
36384 .{ .src = .{ .to_mem, .none, .none } },
2300536385 },
2300636386 .call_frame = .{ .alignment = .@"16" },
2300736387 .extra_temps = .{
2300836388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23009 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
36389 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
2301136391 .unused,
2301236392 .unused,
2301336393 .unused,
......@@ -23018,25 +36398,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2301836398 .dst_temps = .{.mem},
2301936399 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2302036400 .each = .{ .once = &.{
23021 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23022 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36402 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2302336403 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23024 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36404 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2302536405 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2302636406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2302736407 } },
2302836408 }, .{
2302936409 .required_features = .{ .sse2, null, null, null },
23030 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23031 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36410 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36411 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2303236412 .patterns = &.{
23033 .{ .src = .{ .to_mem, .none } },
36413 .{ .src = .{ .to_mem, .none, .none } },
2303436414 },
2303536415 .call_frame = .{ .alignment = .@"16" },
2303636416 .extra_temps = .{
2303736417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23038 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
36418 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
2304036420 .unused,
2304136421 .unused,
2304236422 .unused,
......@@ -23047,25 +36427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2304736427 .dst_temps = .{.mem},
2304836428 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2304936429 .each = .{ .once = &.{
23050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23051 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36431 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2305236432 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23053 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36433 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2305436434 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2305536435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2305636436 } },
2305736437 }, .{
2305836438 .required_features = .{ .sse, null, null, null },
23059 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23060 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36439 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
36440 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2306136441 .patterns = &.{
23062 .{ .src = .{ .to_mem, .none } },
36442 .{ .src = .{ .to_mem, .none, .none } },
2306336443 },
2306436444 .call_frame = .{ .alignment = .@"16" },
2306536445 .extra_temps = .{
2306636446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
36447 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
2306936449 .unused,
2307036450 .unused,
2307136451 .unused,
......@@ -23076,50 +36456,105 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2307636456 .dst_temps = .{.mem},
2307736457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2307836458 .each = .{ .once = &.{
23079 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23080 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36459 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
36460 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
36461 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2308136462 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23082 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
36463 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2308336464 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2308436465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2308536466 } },
2308636467 }, .{
23087 .required_features = .{ .sse, null, null, null },
23088 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23089 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
36468 .required_features = .{ .avx, null, null, null },
36469 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36470 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
2309036471 .patterns = &.{
23091 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
36472 .{ .src = .{ .to_mem, .none, .none } },
2309236473 },
23093 .call_frame = .{ .alignment = .@"16" },
36474 .call_frame = .{ .size = 16, .alignment = .@"16" },
2309436475 .extra_temps = .{
23095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
36476 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
36478 .unused,
2309636479 .unused,
2309736480 .unused,
2309836481 .unused,
2309936482 .unused,
2310036483 .unused,
2310136484 .unused,
36485 },
36486 .dst_temps = .{.{ .reg = .xmm0 }},
36487 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36488 .each = .{ .once = &.{
36489 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
36490 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
36491 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
36492 } },
36493 }, .{
36494 .required_features = .{ .sse2, null, null, null },
36495 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36496 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
36497 .patterns = &.{
36498 .{ .src = .{ .to_mem, .none, .none } },
36499 },
36500 .call_frame = .{ .size = 16, .alignment = .@"16" },
36501 .extra_temps = .{
36502 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36503 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
36504 .unused,
36505 .unused,
36506 .unused,
36507 .unused,
36508 .unused,
2310236509 .unused,
2310336510 .unused,
2310436511 },
23105 .dst_temps = .{.{ .reg = .st0 }},
36512 .dst_temps = .{.{ .reg = .xmm0 }},
2310636513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2310736514 .each = .{ .once = &.{
23108 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36515 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
36516 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
36517 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
36518 } },
36519 }, .{
36520 .required_features = .{ .sse, null, null, null },
36521 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36522 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
36523 .patterns = &.{
36524 .{ .src = .{ .to_mem, .none, .none } },
36525 },
36526 .call_frame = .{ .size = 16, .alignment = .@"16" },
36527 .extra_temps = .{
36528 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
36530 .unused,
36531 .unused,
36532 .unused,
36533 .unused,
36534 .unused,
36535 .unused,
36536 .unused,
36537 },
36538 .dst_temps = .{.{ .reg = .xmm0 }},
36539 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36540 .each = .{ .once = &.{
36541 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
36542 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
36543 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
2310936544 } },
2311036545 }, .{
2311136546 .required_features = .{ .avx, null, null, null },
23112 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23113 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36547 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36548 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2311436549 .patterns = &.{
23115 .{ .src = .{ .to_mem, .none } },
36550 .{ .src = .{ .to_mem, .none, .none } },
2311636551 },
23117 .call_frame = .{ .alignment = .@"16" },
36552 .call_frame = .{ .size = 16, .alignment = .@"16" },
2311836553 .extra_temps = .{
2311936554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23122 .unused,
36555 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36556 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
2312336558 .unused,
2312436559 .unused,
2312536560 .unused,
......@@ -23129,27 +36564,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2312936564 .dst_temps = .{.mem},
2313036565 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2313136566 .each = .{ .once = &.{
23132 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2313336568 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23134 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23135 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23136 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
36569 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
36570 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36571 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2313736572 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2313836573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2313936574 } },
2314036575 }, .{
2314136576 .required_features = .{ .sse2, null, null, null },
23142 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23143 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36577 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36578 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2314436579 .patterns = &.{
23145 .{ .src = .{ .to_mem, .none } },
36580 .{ .src = .{ .to_mem, .none, .none } },
2314636581 },
23147 .call_frame = .{ .alignment = .@"16" },
36582 .call_frame = .{ .size = 16, .alignment = .@"16" },
2314836583 .extra_temps = .{
2314936584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23151 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23152 .unused,
36585 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36586 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36587 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
2315336588 .unused,
2315436589 .unused,
2315536590 .unused,
......@@ -23159,27 +36594,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2315936594 .dst_temps = .{.mem},
2316036595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2316136596 .each = .{ .once = &.{
23162 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2316336598 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23165 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23166 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
36599 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
36600 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36601 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2316736602 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2316836603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2316936604 } },
2317036605 }, .{
2317136606 .required_features = .{ .sse, null, null, null },
23172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36607 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
36608 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
2317436609 .patterns = &.{
23175 .{ .src = .{ .to_mem, .none } },
36610 .{ .src = .{ .to_mem, .none, .none } },
2317636611 },
23177 .call_frame = .{ .alignment = .@"16" },
36612 .call_frame = .{ .size = 16, .alignment = .@"16" },
2317836613 .extra_temps = .{
2317936614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23180 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23182 .unused,
36615 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
36616 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
2318336618 .unused,
2318436619 .unused,
2318536620 .unused,
......@@ -23189,11 +36624,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2318936624 .dst_temps = .{.mem},
2319036625 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2319136626 .each = .{ .once = &.{
23192 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36627 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2319336628 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23195 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23196 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
36629 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
36630 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36631 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2319736632 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2319836633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2319936634 } },
......@@ -23208,138 +36643,76 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2320836643 };
2320936644 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
2321036645 },
23211 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
36646 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
2321236647 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
36648 const dst_ty = ty_op.ty.toType();
36649 const src_ty = cg.typeOf(ty_op.operand);
2321336650 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
2321436651 var res: [1]Temp = undefined;
23215 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
23216 .required_features = .{ .f16c, null, null, null },
23217 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23218 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36652 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
36653 .dst_constraints = .{.{ .int = .dword }},
2321936654 .patterns = &.{
23220 .{ .src = .{ .to_sse, .none } },
36655 .{ .src = .{ .mut_mem, .none, .none } },
36656 .{ .src = .{ .to_mut_gpr, .none, .none } },
2322136657 },
23222 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23223 .each = .{ .once = &.{
23224 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23225 } },
36658 .dst_temps = .{.{ .ref = .src0 }},
36659 .each = .{ .once = &.{} },
2322636660 }, .{
23227 .required_features = .{ .f16c, null, null, null },
23228 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
23229 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
36661 .required_features = .{ .@"64bit", null, null, null },
36662 .dst_constraints = .{.{ .int = .qword }},
2323036663 .patterns = &.{
23231 .{ .src = .{ .mem, .none } },
23232 .{ .src = .{ .to_sse, .none } },
36664 .{ .src = .{ .mut_mem, .none, .none } },
36665 .{ .src = .{ .to_mut_gpr, .none, .none } },
2323336666 },
23234 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23235 .each = .{ .once = &.{
23236 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23237 } },
36667 .dst_temps = .{.{ .ref = .src0 }},
36668 .each = .{ .once = &.{} },
2323836669 }, .{
23239 .required_features = .{ .f16c, null, null, null },
23240 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23241 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
36670 .dst_constraints = .{.{ .int = .byte }},
2324236671 .patterns = &.{
23243 .{ .src = .{ .mem, .none } },
23244 .{ .src = .{ .to_sse, .none } },
36672 .{ .src = .{ .to_mem, .none, .none } },
2324536673 },
23246 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36674 .dst_temps = .{.{ .rc = .general_purpose }},
2324736675 .each = .{ .once = &.{
23248 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
36676 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
2324936677 } },
2325036678 }, .{
23251 .required_features = .{ .sse, null, null, null },
23252 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23253 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
36679 .dst_constraints = .{.{ .int = .word }},
2325436680 .patterns = &.{
23255 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23256 },
23257 .call_frame = .{ .alignment = .@"16" },
23258 .extra_temps = .{
23259 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23260 .unused,
23261 .unused,
23262 .unused,
23263 .unused,
23264 .unused,
23265 .unused,
23266 .unused,
23267 .unused,
36681 .{ .src = .{ .to_mem, .none, .none } },
2326836682 },
23269 .dst_temps = .{.{ .ref = .src0 }},
23270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36683 .dst_temps = .{.{ .rc = .general_purpose }},
2327136684 .each = .{ .once = &.{
23272 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36685 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
2327336686 } },
2327436687 }, .{
23275 .required_features = .{ .f16c, null, null, null },
23276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23277 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
36688 .dst_constraints = .{.{ .int = .dword }},
2327836689 .patterns = &.{
23279 .{ .src = .{ .to_mem, .none } },
23280 },
23281 .extra_temps = .{
23282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23283 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23284 .unused,
23285 .unused,
23286 .unused,
23287 .unused,
23288 .unused,
23289 .unused,
23290 .unused,
36690 .{ .src = .{ .to_mem, .none, .none } },
2329136691 },
23292 .dst_temps = .{.mem},
23293 .clobbers = .{ .eflags = true },
36692 .dst_temps = .{.{ .rc = .general_purpose }},
2329436693 .each = .{ .once = &.{
23295 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23296 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23297 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
23298 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36694 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
2330036695 } },
2330136696 }, .{
23302 .required_features = .{ .avx, null, null, null },
23303 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23304 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36697 .required_features = .{ .@"64bit", null, null, null },
36698 .dst_constraints = .{.{ .int = .qword }},
2330536699 .patterns = &.{
23306 .{ .src = .{ .to_mem, .none } },
23307 },
23308 .call_frame = .{ .alignment = .@"16" },
23309 .extra_temps = .{
23310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23311 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23313 .unused,
23314 .unused,
23315 .unused,
23316 .unused,
23317 .unused,
23318 .unused,
36700 .{ .src = .{ .to_mem, .none, .none } },
2331936701 },
23320 .dst_temps = .{.mem},
23321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36702 .dst_temps = .{.{ .rc = .general_purpose }},
2332236703 .each = .{ .once = &.{
23323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23324 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23325 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23326 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23327 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23328 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36704 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
2333036705 } },
2333136706 }, .{
23332 .required_features = .{ .sse2, null, null, null },
23333 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23334 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36707 .required_features = .{ .@"64bit", null, null, null },
36708 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2333536709 .patterns = &.{
23336 .{ .src = .{ .to_mem, .none } },
36710 .{ .src = .{ .to_mem, .none, .none } },
2333736711 },
23338 .call_frame = .{ .alignment = .@"16" },
2333936712 .extra_temps = .{
23340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23341 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23342 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
36713 .{ .type = .usize, .kind = .{ .reg = .rsi } },
36714 .{ .type = .usize, .kind = .{ .reg = .rdi } },
36715 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2334336716 .unused,
2334436717 .unused,
2334536718 .unused,
......@@ -23348,180 +36721,109 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2334836721 .unused,
2334936722 },
2335036723 .dst_temps = .{.mem},
23351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
2335236724 .each = .{ .once = &.{
23353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23354 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23355 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23356 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23357 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23358 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36725 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
36726 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
36727 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
36728 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
2336036729 } },
2336136730 }, .{
2336236731 .required_features = .{ .sse, null, null, null },
23363 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23364 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
36732 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
36733 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
2336536734 .patterns = &.{
23366 .{ .src = .{ .to_mem, .none } },
36735 .{ .src = .{ .mut_mem, .none, .none } },
36736 .{ .src = .{ .to_mut_sse, .none, .none } },
2336736737 },
23368 .call_frame = .{ .alignment = .@"16" },
23369 .extra_temps = .{
23370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23371 .{ .type = .f16, .kind = .{ .reg = .ax } },
23372 .{ .type = .f32, .kind = .mem },
23373 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23375 .unused,
23376 .unused,
23377 .unused,
23378 .unused,
36738 .dst_temps = .{.{ .ref = .src0 }},
36739 .each = .{ .once = &.{} },
36740 }, .{
36741 .required_features = .{ .avx, null, null, null },
36742 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
36743 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
36744 .patterns = &.{
36745 .{ .src = .{ .mut_mem, .none, .none } },
36746 .{ .src = .{ .to_mut_sse, .none, .none } },
2337936747 },
23380 .dst_temps = .{.mem},
23381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23382 .each = .{ .once = &.{
23383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23384 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23385 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23386 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23387 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23388 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23389 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23391 } },
36748 .dst_temps = .{.{ .ref = .src0 }},
36749 .each = .{ .once = &.{} },
2339236750 }, .{
23393 .required_features = .{ .f16c, null, null, null },
23394 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23395 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36751 .required_features = .{ .avx, null, null, null },
36752 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
36753 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
2339636754 .patterns = &.{
23397 .{ .src = .{ .to_sse, .none } },
36755 .{ .src = .{ .to_sse, .none, .none } },
2339836756 },
2339936757 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2340036758 .each = .{ .once = &.{
23401 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23402 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
36759 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
2340336760 } },
2340436761 }, .{
23405 .required_features = .{ .f16c, null, null, null },
23406 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any },
23407 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
36762 .required_features = .{ .avx, null, null, null },
36763 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
36764 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
2340836765 .patterns = &.{
23409 .{ .src = .{ .mem, .none } },
23410 .{ .src = .{ .to_sse, .none } },
36766 .{ .src = .{ .to_sse, .none, .none } },
2341136767 },
2341236768 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2341336769 .each = .{ .once = &.{
23414 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23415 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
36770 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
2341636771 } },
2341736772 }, .{
23418 .required_features = .{ .f16c, null, null, null },
23419 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
23420 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
36773 .required_features = .{ .sse2, null, null, null },
36774 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
36775 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
2342136776 .patterns = &.{
23422 .{ .src = .{ .mem, .none } },
23423 .{ .src = .{ .to_sse, .none } },
36777 .{ .src = .{ .to_mut_sse, .none, .none } },
2342436778 },
23425 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36779 .dst_temps = .{.{ .ref = .src0 }},
2342636780 .each = .{ .once = &.{
23427 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23428 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
36781 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
2342936782 } },
2343036783 }, .{
23431 .required_features = .{ .f16c, null, null, null },
23432 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23433 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
36784 .required_features = .{ .sse2, null, null, null },
36785 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
36786 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
2343436787 .patterns = &.{
23435 .{ .src = .{ .mem, .none } },
23436 .{ .src = .{ .to_sse, .none } },
23437 },
23438 .extra_temps = .{
23439 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23440 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23441 .unused,
23442 .unused,
23443 .unused,
23444 .unused,
23445 .unused,
23446 .unused,
23447 .unused,
36788 .{ .src = .{ .to_mut_sse, .none, .none } },
2344836789 },
23449 .dst_temps = .{.mem},
36790 .dst_temps = .{.{ .ref = .src0 }},
2345036791 .each = .{ .once = &.{
23451 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
23452 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23453 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
23454 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
23455 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23456 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
36792 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
2345736793 } },
2345836794 }, .{
23459 .required_features = .{ .sse, null, null, null },
23460 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23461 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
36795 .required_features = .{ .avx2, null, null, null },
36796 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
36797 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2346236798 .patterns = &.{
23463 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23464 },
23465 .call_frame = .{ .alignment = .@"16" },
23466 .extra_temps = .{
23467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23468 .unused,
23469 .unused,
23470 .unused,
23471 .unused,
23472 .unused,
23473 .unused,
23474 .unused,
23475 .unused,
36799 .{ .src = .{ .to_sse, .none, .none } },
2347636800 },
23477 .dst_temps = .{.{ .ref = .src0 }},
23478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2347936802 .each = .{ .once = &.{
23480 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36803 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
2348136804 } },
2348236805 }, .{
23483 .required_features = .{ .f16c, null, null, null },
23484 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23485 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
36806 .required_features = .{ .avx2, null, null, null },
36807 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
36808 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
2348636809 .patterns = &.{
23487 .{ .src = .{ .to_mem, .none } },
36810 .{ .src = .{ .to_sse, .none, .none } },
2348836811 },
23489 .extra_temps = .{
23490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23491 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23492 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23493 .unused,
23494 .unused,
23495 .unused,
23496 .unused,
23497 .unused,
23498 .unused,
23499 },
23500 .dst_temps = .{.mem},
23501 .clobbers = .{ .eflags = true },
36812 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2350236813 .each = .{ .once = &.{
23503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23504 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23505 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23506 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
23507 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
23508 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23509 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ },
23510 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36814 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },
2351236815 } },
2351336816 }, .{
23514 .required_features = .{ .avx, null, null, null },
23515 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23516 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36817 .required_features = .{ .slow_incdec, null, null, null },
36818 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
36819 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2351736820 .patterns = &.{
23518 .{ .src = .{ .to_mem, .none } },
36821 .{ .src = .{ .to_mem, .none, .none } },
2351936822 },
23520 .call_frame = .{ .alignment = .@"16" },
2352136823 .extra_temps = .{
2352236824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23523 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
36825 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
36826 .unused,
2352536827 .unused,
2352636828 .unused,
2352736829 .unused,
......@@ -23530,28 +36832,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2353036832 .unused,
2353136833 },
2353236834 .dst_temps = .{.mem},
23533 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36835 .clobbers = .{ .eflags = true },
2353436836 .each = .{ .once = &.{
23535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23536 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23537 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23538 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23539 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23540 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36837 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36838 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36839 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36840 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2354136841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2354236842 } },
2354336843 }, .{
23544 .required_features = .{ .sse2, null, null, null },
23545 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23546 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36844 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
36845 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2354736846 .patterns = &.{
23548 .{ .src = .{ .to_mem, .none } },
36847 .{ .src = .{ .to_mem, .none, .none } },
2354936848 },
23550 .call_frame = .{ .alignment = .@"16" },
2355136849 .extra_temps = .{
2355236850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
36851 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
36852 .unused,
2355536853 .unused,
2355636854 .unused,
2355736855 .unused,
......@@ -23560,108 +36858,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2356036858 .unused,
2356136859 },
2356236860 .dst_temps = .{.mem},
23563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36861 .clobbers = .{ .eflags = true },
2356436862 .each = .{ .once = &.{
23565 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23566 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23567 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23568 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23569 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23570 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36863 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36864 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
36865 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36866 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
36867 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2357236868 } },
2357336869 }, .{
23574 .required_features = .{ .sse, null, null, null },
23575 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23576 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
36870 .required_features = .{ .avx, null, null, null },
36871 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
36872 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
2357736873 .patterns = &.{
23578 .{ .src = .{ .to_mem, .none } },
36874 .{ .src = .{ .to_sse, .none, .none } },
2357936875 },
23580 .call_frame = .{ .alignment = .@"16" },
23581 .extra_temps = .{
23582 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23583 .{ .type = .f16, .kind = .{ .reg = .ax } },
23584 .{ .type = .f32, .kind = .mem },
23585 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23587 .unused,
23588 .unused,
23589 .unused,
23590 .unused,
36876 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36877 .each = .{ .once = &.{
36878 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
36879 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
36880 } },
36881 }, .{
36882 .required_features = .{ .avx, null, null, null },
36883 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
36884 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
36885 .patterns = &.{
36886 .{ .src = .{ .to_sse, .none, .none } },
2359136887 },
23592 .dst_temps = .{.mem},
23593 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36888 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2359436889 .each = .{ .once = &.{
23595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23596 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23597 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23598 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23599 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23600 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23601 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36890 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
36891 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
2360336892 } },
2360436893 }, .{
23605 .required_features = .{ .f16c, .x87, null, null },
23606 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23607 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
36894 .required_features = .{ .sse2, null, null, null },
36895 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
36896 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
2360836897 .patterns = &.{
23609 .{ .src = .{ .to_sse, .none } },
36898 .{ .src = .{ .to_mut_sse, .none, .none } },
2361036899 },
23611 .extra_temps = .{
23612 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
23613 .{ .type = .f32, .kind = .mem },
23614 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23615 .unused,
23616 .unused,
23617 .unused,
23618 .unused,
23619 .unused,
23620 .unused,
36900 .dst_temps = .{.{ .ref = .src0 }},
36901 .each = .{ .once = &.{
36902 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
36903 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
36904 } },
36905 }, .{
36906 .required_features = .{ .sse4_1, null, null, null },
36907 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
36908 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
36909 .patterns = &.{
36910 .{ .src = .{ .to_mut_sse, .none, .none } },
2362136911 },
23622 .dst_temps = .{.{ .rc = .x87 }},
36912 .dst_temps = .{.{ .ref = .src0 }},
2362336913 .each = .{ .once = &.{
23624 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
23625 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
23626 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
23627 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
36914 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
36915 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
2362836916 } },
2362936917 }, .{
23630 .required_features = .{ .sse, null, null, null },
23631 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23632 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
36918 .required_features = .{ .avx2, null, null, null },
36919 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
36920 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
2363336921 .patterns = &.{
23634 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
36922 .{ .src = .{ .to_sse, .none, .none } },
2363536923 },
23636 .call_frame = .{ .alignment = .@"16" },
23637 .extra_temps = .{
23638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23639 .unused,
23640 .unused,
23641 .unused,
23642 .unused,
23643 .unused,
23644 .unused,
23645 .unused,
23646 .unused,
36924 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
36925 .each = .{ .once = &.{
36926 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
36927 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
36928 } },
36929 }, .{
36930 .required_features = .{ .avx2, null, null, null },
36931 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
36932 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
36933 .patterns = &.{
36934 .{ .src = .{ .to_sse, .none, .none } },
2364736935 },
23648 .dst_temps = .{.{ .reg = .st0 }},
23649 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36936 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2365036937 .each = .{ .once = &.{
23651 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36938 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
36939 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
2365236940 } },
2365336941 }, .{
23654 .required_features = .{ .avx, null, null, null },
23655 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23656 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36942 .required_features = .{ .slow_incdec, null, null, null },
36943 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
36944 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2365736945 .patterns = &.{
23658 .{ .src = .{ .to_mem, .none } },
36946 .{ .src = .{ .to_mem, .none, .none } },
2365936947 },
23660 .call_frame = .{ .alignment = .@"16" },
2366136948 .extra_temps = .{
2366236949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23663 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
36950 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
36951 .unused,
2366536952 .unused,
2366636953 .unused,
2366736954 .unused,
......@@ -23670,29 +36957,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2367036957 .unused,
2367136958 },
2367236959 .dst_temps = .{.mem},
23673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36960 .clobbers = .{ .eflags = true },
2367436961 .each = .{ .once = &.{
23675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23676 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23677 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23679 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23680 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23681 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
36962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36963 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36964 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36965 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2368236966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2368336967 } },
2368436968 }, .{
23685 .required_features = .{ .sse2, null, null, null },
23686 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23687 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36969 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
36970 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2368836971 .patterns = &.{
23689 .{ .src = .{ .to_mem, .none } },
36972 .{ .src = .{ .to_mem, .none, .none } },
2369036973 },
23691 .call_frame = .{ .alignment = .@"16" },
2369236974 .extra_temps = .{
2369336975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23694 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23695 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
36976 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
36977 .unused,
2369636978 .unused,
2369736979 .unused,
2369836980 .unused,
......@@ -23701,60 +36983,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2370136983 .unused,
2370236984 },
2370336985 .dst_temps = .{.mem},
23704 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36986 .clobbers = .{ .eflags = true },
2370536987 .each = .{ .once = &.{
23706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23707 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23708 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23709 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23710 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23711 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23712 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36988 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
36989 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
36990 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36991 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
36992 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2371436993 } },
2371536994 }, .{
23716 .required_features = .{ .sse, null, null, null },
23717 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23718 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
36995 .required_features = .{ .slow_incdec, null, null, null },
36996 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
36997 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2371936998 .patterns = &.{
23720 .{ .src = .{ .to_mem, .none } },
36999 .{ .src = .{ .to_mem, .none, .none } },
2372137000 },
23722 .call_frame = .{ .alignment = .@"16" },
2372337001 .extra_temps = .{
2372437002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23725 .{ .type = .f16, .kind = .{ .reg = .ax } },
23726 .{ .type = .f32, .kind = .mem },
23727 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23728 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
37003 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
37004 .unused,
37005 .unused,
37006 .unused,
2372937007 .unused,
2373037008 .unused,
2373137009 .unused,
2373237010 .unused,
2373337011 },
2373437012 .dst_temps = .{.mem},
23735 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37013 .clobbers = .{ .eflags = true },
2373637014 .each = .{ .once = &.{
23737 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23738 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23739 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23740 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23741 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23742 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23743 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23744 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37015 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37016 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
37017 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
37018 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2374537019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2374637020 } },
2374737021 }, .{
23748 .required_features = .{ .sse, null, null, null },
23749 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23750 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37022 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
37023 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2375137024 .patterns = &.{
23752 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
37025 .{ .src = .{ .to_mem, .none, .none } },
2375337026 },
23754 .call_frame = .{ .alignment = .@"16" },
2375537027 .extra_temps = .{
23756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23757 .unused,
37028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37029 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2375837030 .unused,
2375937031 .unused,
2376037032 .unused,
......@@ -23763,23 +37035,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2376337035 .unused,
2376437036 .unused,
2376537037 },
23766 .dst_temps = .{.{ .ref = .src0 }},
23767 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37038 .dst_temps = .{.mem},
37039 .clobbers = .{ .eflags = true },
2376837040 .each = .{ .once = &.{
23769 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37041 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37042 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
37043 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
37044 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
37045 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2377037046 } },
2377137047 }, .{
23772 .required_features = .{ .avx, null, null, null },
23773 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23774 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37048 .required_features = .{ .slow_incdec, null, null, null },
37049 .src_constraints = .{ .any_scalar_int, .any, .any },
37050 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2377537051 .patterns = &.{
23776 .{ .src = .{ .to_mem, .none } },
37052 .{ .src = .{ .to_mem, .none, .none } },
2377737053 },
23778 .call_frame = .{ .alignment = .@"16" },
2377937054 .extra_temps = .{
2378037055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23781 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2378337058 .unused,
2378437059 .unused,
2378537060 .unused,
......@@ -23788,28 +37063,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2378837063 .unused,
2378937064 },
2379037065 .dst_temps = .{.mem},
23791 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37066 .clobbers = .{ .eflags = true },
2379237067 .each = .{ .once = &.{
23793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23794 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23795 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23796 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23797 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23798 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
37068 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37069 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
37070 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
37071 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
37072 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
37073 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2379937074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2380037075 } },
2380137076 }, .{
23802 .required_features = .{ .sse2, null, null, null },
23803 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23804 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37077 .src_constraints = .{ .any_scalar_int, .any, .any },
37078 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
2380537079 .patterns = &.{
23806 .{ .src = .{ .to_mem, .none } },
37080 .{ .src = .{ .to_mem, .none, .none } },
2380737081 },
23808 .call_frame = .{ .alignment = .@"16" },
2380937082 .extra_temps = .{
2381037083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23811 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23812 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
37084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37085 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2381337086 .unused,
2381437087 .unused,
2381537088 .unused,
......@@ -23818,152 +37091,111 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2381837091 .unused,
2381937092 },
2382037093 .dst_temps = .{.mem},
23821 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37094 .clobbers = .{ .eflags = true },
2382237095 .each = .{ .once = &.{
23823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23824 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23825 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23826 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23827 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23828 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23829 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37096 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37097 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
37098 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
37099 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
37100 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
37101 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
37102 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2383037103 } },
2383137104 }, .{
2383237105 .required_features = .{ .sse, null, null, null },
23833 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23834 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37106 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
37107 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
2383537108 .patterns = &.{
23836 .{ .src = .{ .to_mem, .none } },
37109 .{ .src = .{ .mut_mem, .none, .none } },
37110 .{ .src = .{ .to_mut_sse, .none, .none } },
2383737111 },
23838 .call_frame = .{ .alignment = .@"16" },
23839 .extra_temps = .{
23840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23841 .{ .type = .f16, .kind = .{ .reg = .ax } },
23842 .{ .type = .f32, .kind = .mem },
23843 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23845 .unused,
23846 .unused,
23847 .unused,
23848 .unused,
23849 },
23850 .dst_temps = .{.mem},
23851 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23852 .each = .{ .once = &.{
23853 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23854 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23855 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23856 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23857 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23858 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23859 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23861 } },
37112 .dst_temps = .{.{ .ref = .src0 }},
37113 .each = .{ .once = &.{} },
2386237114 }, .{
2386337115 .required_features = .{ .avx, null, null, null },
23864 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23865 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37116 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
37117 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
2386637118 .patterns = &.{
23867 .{ .src = .{ .mem, .none } },
37119 .{ .src = .{ .mut_mem, .none, .none } },
37120 .{ .src = .{ .to_mut_sse, .none, .none } },
2386837121 },
23869 .dst_temps = .{.{ .rc = .sse }},
23870 .each = .{ .once = &.{
23871 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
23872 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
23873 } },
37122 .dst_temps = .{.{ .ref = .src0 }},
37123 .each = .{ .once = &.{} },
2387437124 }, .{
2387537125 .required_features = .{ .avx, null, null, null },
23876 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23877 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37126 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
37127 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
2387837128 .patterns = &.{
23879 .{ .src = .{ .to_sse, .none } },
37129 .{ .src = .{ .to_sse, .none, .none } },
2388037130 },
2388137131 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2388237132 .each = .{ .once = &.{
23883 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
37133 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
2388437134 } },
2388537135 }, .{
23886 .required_features = .{ .sse2, null, null, null },
23887 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23888 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37136 .required_features = .{ .avx, null, null, null },
37137 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
37138 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
2388937139 .patterns = &.{
23890 .{ .src = .{ .mem, .none } },
23891 .{ .src = .{ .to_sse, .none } },
37140 .{ .src = .{ .to_sse, .none, .none } },
2389237141 },
23893 .dst_temps = .{.{ .rc = .sse }},
37142 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2389437143 .each = .{ .once = &.{
23895 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
23896 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
37144 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
2389737145 } },
2389837146 }, .{
23899 .required_features = .{ .x87, null, null, null },
23900 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23901 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
37147 .required_features = .{ .sse2, null, null, null },
37148 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
37149 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
2390237150 .patterns = &.{
23903 .{ .src = .{ .to_mem, .none } },
23904 },
23905 .extra_temps = .{
23906 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23907 .unused,
23908 .unused,
23909 .unused,
23910 .unused,
23911 .unused,
23912 .unused,
23913 .unused,
23914 .unused,
37151 .{ .src = .{ .to_mut_sse, .none, .none } },
2391537152 },
23916 .dst_temps = .{.mem},
37153 .dst_temps = .{.{ .ref = .src0 }},
2391737154 .each = .{ .once = &.{
23918 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
23919 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
37155 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
2392037156 } },
2392137157 }, .{
23922 .required_features = .{ .avx, null, null, null },
23923 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23924 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
37158 .required_features = .{ .sse4_1, null, null, null },
37159 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
37160 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
2392537161 .patterns = &.{
23926 .{ .src = .{ .mem, .none } },
23927 .{ .src = .{ .to_sse, .none } },
37162 .{ .src = .{ .to_mut_sse, .none, .none } },
2392837163 },
23929 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37164 .dst_temps = .{.{ .ref = .src0 }},
2393037165 .each = .{ .once = &.{
23931 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
37166 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
2393237167 } },
2393337168 }, .{
23934 .required_features = .{ .sse2, null, null, null },
23935 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23936 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
37169 .required_features = .{ .avx2, null, null, null },
37170 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
37171 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2393737172 .patterns = &.{
23938 .{ .src = .{ .mem, .none } },
23939 .{ .src = .{ .to_sse, .none } },
37173 .{ .src = .{ .to_sse, .none, .none } },
2394037174 },
2394137175 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2394237176 .each = .{ .once = &.{
23943 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
37177 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
2394437178 } },
2394537179 }, .{
23946 .required_features = .{ .avx, null, null, null },
23947 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23948 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
37180 .required_features = .{ .avx2, null, null, null },
37181 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
37182 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
2394937183 .patterns = &.{
23950 .{ .src = .{ .mem, .none } },
23951 .{ .src = .{ .to_sse, .none } },
37184 .{ .src = .{ .to_sse, .none, .none } },
2395237185 },
2395337186 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2395437187 .each = .{ .once = &.{
23955 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
37188 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
2395637189 } },
2395737190 }, .{
23958 .required_features = .{ .avx, null, null, null },
23959 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23960 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
37191 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
37192 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2396137193 .patterns = &.{
23962 .{ .src = .{ .to_mem, .none } },
37194 .{ .src = .{ .to_mem, .none, .none } },
2396337195 },
2396437196 .extra_temps = .{
2396537197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23966 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
37198 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2396737199 .unused,
2396837200 .unused,
2396937201 .unused,
......@@ -23975,22 +37207,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2397537207 .dst_temps = .{.mem},
2397637208 .clobbers = .{ .eflags = true },
2397737209 .each = .{ .once = &.{
23978 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23979 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23980 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
23981 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37211 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
37212 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
37213 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2398237214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2398337215 } },
2398437216 }, .{
23985 .required_features = .{ .sse2, null, null, null },
23986 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23987 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
37217 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
37218 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2398837219 .patterns = &.{
23989 .{ .src = .{ .to_mem, .none } },
37220 .{ .src = .{ .to_mem, .none, .none } },
2399037221 },
2399137222 .extra_temps = .{
2399237223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23993 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
37224 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2399437225 .unused,
2399537226 .unused,
2399637227 .unused,
......@@ -24002,22 +37233,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2400237233 .dst_temps = .{.mem},
2400337234 .clobbers = .{ .eflags = true },
2400437235 .each = .{ .once = &.{
24005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24006 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24007 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24008 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
37236 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37237 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
37238 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
37239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2400937240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2401037241 } },
2401137242 }, .{
24012 .required_features = .{ .x87, null, null, null },
24013 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24014 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
37243 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
37244 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2401537245 .patterns = &.{
24016 .{ .src = .{ .to_mem, .none } },
37246 .{ .src = .{ .to_mem, .none, .none } },
2401737247 },
2401837248 .extra_temps = .{
2401937249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24020 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37250 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2402137251 .unused,
2402237252 .unused,
2402337253 .unused,
......@@ -24029,46 +37259,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2402937259 .dst_temps = .{.mem},
2403037260 .clobbers = .{ .eflags = true },
2403137261 .each = .{ .once = &.{
24032 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24033 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24034 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24035 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
37262 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37263 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
37264 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
37265 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2403637266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2403737267 } },
2403837268 }, .{
24039 .required_features = .{ .x87, null, null, null },
24040 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24041 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
24042 .patterns = &.{
24043 .{ .src = .{ .to_mem, .none } },
24044 },
24045 .extra_temps = .{
24046 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24047 .unused,
24048 .unused,
24049 .unused,
24050 .unused,
24051 .unused,
24052 .unused,
24053 .unused,
24054 .unused,
24055 },
24056 .dst_temps = .{.mem},
24057 .each = .{ .once = &.{
24058 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
24059 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24060 } },
24061 }, .{
24062 .required_features = .{ .x87, null, null, null },
24063 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24064 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37269 .src_constraints = .{ .any_scalar_int, .any, .any },
37270 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2406537271 .patterns = &.{
24066 .{ .src = .{ .to_mem, .none } },
37272 .{ .src = .{ .to_mem, .none, .none } },
2406737273 },
2406837274 .extra_temps = .{
2406937275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24070 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24071 .unused,
37276 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37277 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2407237278 .unused,
2407337279 .unused,
2407437280 .unused,
......@@ -24079,106 +37285,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2407937285 .dst_temps = .{.mem},
2408037286 .clobbers = .{ .eflags = true },
2408137287 .each = .{ .once = &.{
24082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24083 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24084 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
24085 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
37288 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37289 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
37290 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
37291 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
37292 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
37293 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2408637294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2408737295 } },
2408837296 }, .{
2408937297 .required_features = .{ .sse, null, null, null },
24090 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24091 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37298 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
37299 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
2409237300 .patterns = &.{
24093 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
24094 },
24095 .call_frame = .{ .alignment = .@"16" },
24096 .extra_temps = .{
24097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24098 .unused,
24099 .unused,
24100 .unused,
24101 .unused,
24102 .unused,
24103 .unused,
24104 .unused,
24105 .unused,
37301 .{ .src = .{ .mut_mem, .none, .none } },
37302 .{ .src = .{ .to_mut_sse, .none, .none } },
2410637303 },
2410737304 .dst_temps = .{.{ .ref = .src0 }},
24108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24109 .each = .{ .once = &.{
24110 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
24111 } },
37305 .each = .{ .once = &.{} },
2411237306 }, .{
2411337307 .required_features = .{ .avx, null, null, null },
24114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24115 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37308 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
37309 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
2411637310 .patterns = &.{
24117 .{ .src = .{ .to_mem, .none } },
37311 .{ .src = .{ .mut_mem, .none, .none } },
37312 .{ .src = .{ .to_mut_sse, .none, .none } },
2411837313 },
24119 .call_frame = .{ .alignment = .@"16" },
24120 .extra_temps = .{
24121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24124 .unused,
24125 .unused,
24126 .unused,
24127 .unused,
24128 .unused,
24129 .unused,
37314 .dst_temps = .{.{ .ref = .src0 }},
37315 .each = .{ .once = &.{} },
37316 }, .{
37317 .required_features = .{ .avx, null, null, null },
37318 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
37319 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
37320 .patterns = &.{
37321 .{ .src = .{ .mem, .none, .none } },
37322 .{ .src = .{ .to_sse, .none, .none } },
2413037323 },
24131 .dst_temps = .{.mem},
24132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37324 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2413337325 .each = .{ .once = &.{
24134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24135 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24137 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37326 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
2414037327 } },
2414137328 }, .{
2414237329 .required_features = .{ .sse2, null, null, null },
24143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37330 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
37331 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
2414537332 .patterns = &.{
24146 .{ .src = .{ .to_mem, .none } },
24147 },
24148 .call_frame = .{ .alignment = .@"16" },
24149 .extra_temps = .{
24150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24151 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24153 .unused,
24154 .unused,
24155 .unused,
24156 .unused,
24157 .unused,
24158 .unused,
37333 .{ .src = .{ .mem, .none, .none } },
37334 .{ .src = .{ .to_sse, .none, .none } },
2415937335 },
24160 .dst_temps = .{.mem},
24161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37336 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2416237337 .each = .{ .once = &.{
24163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24164 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24166 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37338 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
2416937339 } },
2417037340 }, .{
24171 .required_features = .{ .sse, null, null, null },
24172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37341 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
37342 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2417437343 .patterns = &.{
24175 .{ .src = .{ .to_mem, .none } },
37344 .{ .src = .{ .to_mem, .none, .none } },
2417637345 },
24177 .call_frame = .{ .alignment = .@"16" },
2417837346 .extra_temps = .{
2417937347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24180 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
37348 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37349 .unused,
2418237350 .unused,
2418337351 .unused,
2418437352 .unused,
......@@ -24187,25 +37355,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2418737355 .unused,
2418837356 },
2418937357 .dst_temps = .{.mem},
24190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37358 .clobbers = .{ .eflags = true },
2419137359 .each = .{ .once = &.{
24192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24193 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24195 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37360 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37361 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
37362 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
2419637363 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2419737364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2419837365 } },
2419937366 }, .{
24200 .required_features = .{ .x87, null, null, null },
24201 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24202 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
37367 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
37368 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2420337369 .patterns = &.{
24204 .{ .src = .{ .to_mem, .none } },
37370 .{ .src = .{ .to_mem, .none, .none } },
2420537371 },
2420637372 .extra_temps = .{
24207 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24208 .unused,
37373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37374 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2420937375 .unused,
2421037376 .unused,
2421137377 .unused,
......@@ -24215,20 +37381,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2421537381 .unused,
2421637382 },
2421737383 .dst_temps = .{.mem},
37384 .clobbers = .{ .eflags = true },
2421837385 .each = .{ .once = &.{
24219 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
24220 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
37386 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37387 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
37388 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
37389 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
37390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2422137391 } },
2422237392 }, .{
24223 .required_features = .{ .x87, null, null, null },
24224 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24225 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
37393 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
37394 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2422637395 .patterns = &.{
24227 .{ .src = .{ .to_mem, .none } },
37396 .{ .src = .{ .to_mem, .none, .none } },
2422837397 },
2422937398 .extra_temps = .{
2423037399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24231 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37400 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2423237401 .unused,
2423337402 .unused,
2423437403 .unused,
......@@ -24240,24 +37409,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2424037409 .dst_temps = .{.mem},
2424137410 .clobbers = .{ .eflags = true },
2424237411 .each = .{ .once = &.{
24243 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24244 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
24245 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24246 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
37412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37413 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
37414 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
37415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2424737416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2424837417 } },
2424937418 }, .{
24250 .required_features = .{ .sse, null, null, null },
24251 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24252 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37419 .src_constraints = .{ .any_scalar_int, .any, .any },
37420 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2425337421 .patterns = &.{
24254 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
37422 .{ .src = .{ .to_mem, .none, .none } },
2425537423 },
24256 .call_frame = .{ .alignment = .@"16" },
2425737424 .extra_temps = .{
24258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24259 .unused,
24260 .unused,
37425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2426137428 .unused,
2426237429 .unused,
2426337430 .unused,
......@@ -24265,23 +37432,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2426537432 .unused,
2426637433 .unused,
2426737434 },
24268 .dst_temps = .{.{ .ref = .src0 }},
24269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37435 .dst_temps = .{.mem},
37436 .clobbers = .{ .eflags = true },
2427037437 .each = .{ .once = &.{
24271 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
37438 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37439 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
37440 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
37441 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
37442 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
37443 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
37444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2427237445 } },
37446 }, .{
37447 .required_features = .{ .sse, null, null, null },
37448 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
37449 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
37450 .patterns = &.{
37451 .{ .src = .{ .mut_mem, .none, .none } },
37452 .{ .src = .{ .to_mut_sse, .none, .none } },
37453 },
37454 .dst_temps = .{.{ .ref = .src0 }},
37455 .each = .{ .once = &.{} },
2427337456 }, .{
2427437457 .required_features = .{ .avx, null, null, null },
24275 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24276 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37458 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any, .any },
37459 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
2427737460 .patterns = &.{
24278 .{ .src = .{ .to_mem, .none } },
37461 .{ .src = .{ .mut_mem, .none, .none } },
37462 .{ .src = .{ .to_mut_sse, .none, .none } },
37463 },
37464 .dst_temps = .{.{ .ref = .src0 }},
37465 .each = .{ .once = &.{} },
37466 }, .{
37467 .required_features = .{ .@"64bit", null, null, null },
37468 .src_constraints = .{ .any_scalar_int, .any, .any },
37469 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
37470 .patterns = &.{
37471 .{ .src = .{ .to_mem, .none, .none } },
2427937472 },
24280 .call_frame = .{ .alignment = .@"16" },
2428137473 .extra_temps = .{
2428237474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24283 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
37475 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37476 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2428537477 .unused,
2428637478 .unused,
2428737479 .unused,
......@@ -24290,28 +37482,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2429037482 .unused,
2429137483 },
2429237484 .dst_temps = .{.mem},
24293 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37485 .clobbers = .{ .eflags = true },
2429437486 .each = .{ .once = &.{
24295 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24296 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24297 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24298 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
37487 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
37488 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
37489 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
37490 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
37491 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
2429937492 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2430037493 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2430137494 } },
2430237495 }, .{
24303 .required_features = .{ .sse2, null, null, null },
24304 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24305 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37496 .required_features = .{ .sse, null, null, null },
37497 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
37498 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2430637499 .patterns = &.{
24307 .{ .src = .{ .to_mem, .none } },
37500 .{ .src = .{ .mut_mem, .none, .none } },
37501 .{ .src = .{ .to_mut_sse, .none, .none } },
37502 },
37503 .dst_temps = .{.{ .ref = .src0 }},
37504 .each = .{ .once = &.{} },
37505 }, .{
37506 .required_features = .{ .avx, null, null, null },
37507 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any, .any },
37508 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }},
37509 .patterns = &.{
37510 .{ .src = .{ .mut_mem, .none, .none } },
37511 .{ .src = .{ .to_mut_sse, .none, .none } },
37512 },
37513 .dst_temps = .{.{ .ref = .src0 }},
37514 .each = .{ .once = &.{} },
37515 }, .{
37516 .required_features = .{ .avx, null, null, null },
37517 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
37518 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }},
37519 .patterns = &.{
37520 .{ .src = .{ .mut_mem, .none, .none } },
37521 .{ .src = .{ .to_mut_sse, .none, .none } },
37522 },
37523 .dst_temps = .{.{ .ref = .src0 }},
37524 .each = .{ .once = &.{} },
37525 }, .{
37526 .required_features = .{ .@"64bit", .slow_incdec, null, null },
37527 .src_constraints = .{ .any_scalar_int, .any, .any },
37528 .dst_constraints = .{.any_scalar_int},
37529 .patterns = &.{
37530 .{ .src = .{ .to_mem, .none, .none } },
2430837531 },
24309 .call_frame = .{ .alignment = .@"16" },
2431037532 .extra_temps = .{
24311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24312 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24314 .unused,
37533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37534 .{ .type = .usize, .kind = .{ .reg = .rsi } },
37535 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37536 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2431537537 .unused,
2431637538 .unused,
2431737539 .unused,
......@@ -24319,28 +37541,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2431937541 .unused,
2432037542 },
2432137543 .dst_temps = .{.mem},
24322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37544 .clobbers = .{ .eflags = true },
2432337545 .each = .{ .once = &.{
24324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24325 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24326 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24327 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24328 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37546 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
37547 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
37548 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
37549 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
37550 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
37551 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
37552 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
37553 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
2433037554 } },
2433137555 }, .{
24332 .required_features = .{ .sse, null, null, null },
24333 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24334 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37556 .required_features = .{ .@"64bit", null, null, null },
37557 .src_constraints = .{ .any_scalar_int, .any, .any },
37558 .dst_constraints = .{.any_scalar_int},
2433537559 .patterns = &.{
24336 .{ .src = .{ .to_mem, .none } },
37560 .{ .src = .{ .to_mem, .none, .none } },
2433737561 },
24338 .call_frame = .{ .alignment = .@"16" },
2433937562 .extra_temps = .{
24340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24341 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24342 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24343 .unused,
37563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
37564 .{ .type = .usize, .kind = .{ .reg = .rsi } },
37565 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37566 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2434437567 .unused,
2434537568 .unused,
2434637569 .unused,
......@@ -24348,80 +37571,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2434837571 .unused,
2434937572 },
2435037573 .dst_temps = .{.mem},
24351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37574 .clobbers = .{ .eflags = true },
2435237575 .each = .{ .once = &.{
24353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24354 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
24355 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24356 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24357 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24358 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37576 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
37577 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
37578 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
37579 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
37580 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
37581 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
37582 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
37583 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2436037584 } },
24361 }, .{
24362 .required_features = .{ .avx, null, null, null },
24363 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24364 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37585 } } else comptime &.{ .{
37586 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
37587 .dst_constraints = .{.{ .signed_int = .dword }},
2436537588 .patterns = &.{
24366 .{ .src = .{ .to_mem, .none } },
37589 .{ .src = .{ .mem, .none, .none } },
37590 .{ .src = .{ .to_gpr, .none, .none } },
2436737591 },
24368 .call_frame = .{ .size = 16, .alignment = .@"16" },
24369 .extra_temps = .{
24370 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24371 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24372 .unused,
24373 .unused,
24374 .unused,
24375 .unused,
24376 .unused,
24377 .unused,
24378 .unused,
37592 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
37593 .each = .{ .once = &.{
37594 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
37595 } },
37596 }, .{
37597 .src_constraints = .{ .{ .int = .byte }, .any, .any },
37598 .dst_constraints = .{.{ .int = .dword }},
37599 .patterns = &.{
37600 .{ .src = .{ .mem, .none, .none } },
37601 .{ .src = .{ .to_gpr, .none, .none } },
2437937602 },
24380 .dst_temps = .{.{ .reg = .xmm0 }},
24381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37603 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2438237604 .each = .{ .once = &.{
24383 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24384 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24385 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
37605 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
2438637606 } },
2438737607 }, .{
24388 .required_features = .{ .sse2, null, null, null },
24389 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24390 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37608 .required_features = .{ .@"64bit", null, null, null },
37609 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
37610 .dst_constraints = .{.{ .signed_int = .qword }},
2439137611 .patterns = &.{
24392 .{ .src = .{ .to_mem, .none } },
37612 .{ .src = .{ .mem, .none, .none } },
37613 .{ .src = .{ .to_gpr, .none, .none } },
2439337614 },
24394 .call_frame = .{ .size = 16, .alignment = .@"16" },
24395 .extra_temps = .{
24396 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24398 .unused,
24399 .unused,
24400 .unused,
24401 .unused,
24402 .unused,
24403 .unused,
24404 .unused,
37615 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
37616 .each = .{ .once = &.{
37617 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
37618 } },
37619 }, .{
37620 .required_features = .{ .@"64bit", null, null, null },
37621 .src_constraints = .{ .{ .int = .byte }, .any, .any },
37622 .dst_constraints = .{.{ .int = .qword }},
37623 .patterns = &.{
37624 .{ .src = .{ .mem, .none, .none } },
37625 .{ .src = .{ .to_gpr, .none, .none } },
2440537626 },
24406 .dst_temps = .{.{ .reg = .xmm0 }},
24407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37627 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2440837628 .each = .{ .once = &.{
24409 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24410 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24411 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
37629 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
2441237630 } },
2441337631 }, .{
24414 .required_features = .{ .sse, null, null, null },
24415 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24416 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
37632 .required_features = .{ .@"64bit", null, null, null },
37633 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
37634 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
2441737635 .patterns = &.{
24418 .{ .src = .{ .to_mem, .none } },
37636 .{ .src = .{ .mem, .none, .none } },
37637 .{ .src = .{ .to_gpr, .none, .none } },
2441937638 },
24420 .call_frame = .{ .size = 16, .alignment = .@"16" },
2442137639 .extra_temps = .{
24422 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24424 .unused,
37640 .{ .type = .i64, .kind = .{ .reg = .rax } },
37641 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37642 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2442537643 .unused,
2442637644 .unused,
2442737645 .unused,
......@@ -24429,26 +37647,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2442937647 .unused,
2443037648 .unused,
2443137649 },
24432 .dst_temps = .{.{ .reg = .xmm0 }},
24433 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37650 .dst_temps = .{.mem},
37651 .clobbers = .{ .eflags = true },
2443437652 .each = .{ .once = &.{
24435 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
24436 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
24437 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
37653 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
37654 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37655 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37656 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
37657 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37658 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2443837659 } },
2443937660 }, .{
24440 .required_features = .{ .avx, null, null, null },
24441 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24442 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37661 .required_features = .{ .@"64bit", null, null, null },
37662 .src_constraints = .{ .{ .int = .byte }, .any, .any },
37663 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2444337664 .patterns = &.{
24444 .{ .src = .{ .to_mem, .none } },
37665 .{ .src = .{ .mem, .none, .none } },
37666 .{ .src = .{ .to_gpr, .none, .none } },
2444537667 },
24446 .call_frame = .{ .size = 16, .alignment = .@"16" },
2444737668 .extra_temps = .{
24448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24449 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24450 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24451 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
37669 .{ .type = .u64, .kind = .{ .reg = .rax } },
37670 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37671 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37672 .unused,
2445237673 .unused,
2445337674 .unused,
2445437675 .unused,
......@@ -24456,29 +37677,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2445637677 .unused,
2445737678 },
2445837679 .dst_temps = .{.mem},
24459 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37680 .clobbers = .{ .eflags = true },
2446037681 .each = .{ .once = &.{
24461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24462 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24463 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24464 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24465 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24466 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37682 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
37683 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37684 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37685 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
37686 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37687 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2446837688 } },
2446937689 }, .{
24470 .required_features = .{ .sse2, null, null, null },
24471 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24472 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37690 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
37691 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
2447337692 .patterns = &.{
24474 .{ .src = .{ .to_mem, .none } },
37693 .{ .src = .{ .mem, .none, .none } },
37694 .{ .src = .{ .to_gpr, .none, .none } },
2447537695 },
24476 .call_frame = .{ .size = 16, .alignment = .@"16" },
2447737696 .extra_temps = .{
24478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24479 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
37697 .{ .type = .i32, .kind = .{ .reg = .eax } },
37698 .{ .type = .usize, .kind = .{ .reg = .edi } },
37699 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37700 .unused,
2448237701 .unused,
2448337702 .unused,
2448437703 .unused,
......@@ -24486,29 +37705,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2448637705 .unused,
2448737706 },
2448837707 .dst_temps = .{.mem},
24489 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37708 .clobbers = .{ .eflags = true },
2449037709 .each = .{ .once = &.{
24491 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24492 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24493 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24494 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24495 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24496 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37710 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
37711 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37712 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
37713 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
37714 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37715 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2449837716 } },
2449937717 }, .{
24500 .required_features = .{ .sse, null, null, null },
24501 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24502 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
37718 .src_constraints = .{ .{ .int = .byte }, .any, .any },
37719 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
2450337720 .patterns = &.{
24504 .{ .src = .{ .to_mem, .none } },
37721 .{ .src = .{ .mem, .none, .none } },
37722 .{ .src = .{ .to_gpr, .none, .none } },
2450537723 },
24506 .call_frame = .{ .size = 16, .alignment = .@"16" },
2450737724 .extra_temps = .{
24508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24509 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24510 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
37725 .{ .type = .u32, .kind = .{ .reg = .eax } },
37726 .{ .type = .usize, .kind = .{ .reg = .edi } },
37727 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37728 .unused,
2451237729 .unused,
2451337730 .unused,
2451437731 .unused,
......@@ -24516,95 +37733,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2451637733 .unused,
2451737734 },
2451837735 .dst_temps = .{.mem},
24519 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37736 .clobbers = .{ .eflags = true },
2452037737 .each = .{ .once = &.{
24521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24522 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24523 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
24524 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24525 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24526 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24527 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37738 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
37739 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37740 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
37741 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
37742 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37743 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
2452837744 } },
24529 } }) catch |err| switch (err) {
24530 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
24531 @tagName(air_tag),
24532 ty_op.ty.toType().fmt(pt),
24533 cg.typeOf(ty_op.operand).fmt(pt),
24534 ops[0].tracking(cg),
24535 }),
24536 else => |e| return e,
24537 };
24538 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
24539 },
24540 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
24541 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
24542 const dst_ty = ty_op.ty.toType();
24543 const src_ty = cg.typeOf(ty_op.operand);
24544 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
24545 var res: [1]Temp = undefined;
24546 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
24547 .dst_constraints = .{.{ .int = .dword }},
24548 .patterns = &.{
24549 .{ .src = .{ .mut_mem, .none } },
24550 .{ .src = .{ .to_mut_gpr, .none } },
24551 },
24552 .dst_temps = .{.{ .ref = .src0 }},
24553 .each = .{ .once = &.{} },
24554 }, .{
24555 .required_features = .{ .@"64bit", null, null, null },
24556 .dst_constraints = .{.{ .int = .qword }},
24557 .patterns = &.{
24558 .{ .src = .{ .mut_mem, .none } },
24559 .{ .src = .{ .to_mut_gpr, .none } },
24560 },
24561 .dst_temps = .{.{ .ref = .src0 }},
24562 .each = .{ .once = &.{} },
2456337745 }, .{
24564 .dst_constraints = .{.{ .int = .byte }},
37746 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
37747 .dst_constraints = .{.{ .signed_int = .dword }},
2456537748 .patterns = &.{
24566 .{ .src = .{ .to_mem, .none } },
37749 .{ .src = .{ .mem, .none, .none } },
37750 .{ .src = .{ .to_gpr, .none, .none } },
2456737751 },
24568 .dst_temps = .{.{ .rc = .general_purpose }},
37752 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2456937753 .each = .{ .once = &.{
24570 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
37754 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
2457137755 } },
2457237756 }, .{
24573 .dst_constraints = .{.{ .int = .word }},
37757 .src_constraints = .{ .{ .int = .word }, .any, .any },
37758 .dst_constraints = .{.{ .int = .dword }},
2457437759 .patterns = &.{
24575 .{ .src = .{ .to_mem, .none } },
37760 .{ .src = .{ .mem, .none, .none } },
37761 .{ .src = .{ .to_gpr, .none, .none } },
2457637762 },
24577 .dst_temps = .{.{ .rc = .general_purpose }},
37763 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2457837764 .each = .{ .once = &.{
24579 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
37765 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
2458037766 } },
2458137767 }, .{
24582 .dst_constraints = .{.{ .int = .dword }},
37768 .required_features = .{ .@"64bit", null, null, null },
37769 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
37770 .dst_constraints = .{.{ .signed_int = .qword }},
2458337771 .patterns = &.{
24584 .{ .src = .{ .to_mem, .none } },
37772 .{ .src = .{ .mem, .none, .none } },
37773 .{ .src = .{ .to_gpr, .none, .none } },
2458537774 },
24586 .dst_temps = .{.{ .rc = .general_purpose }},
37775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2458737776 .each = .{ .once = &.{
24588 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
37777 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
2458937778 } },
2459037779 }, .{
2459137780 .required_features = .{ .@"64bit", null, null, null },
37781 .src_constraints = .{ .{ .int = .word }, .any, .any },
2459237782 .dst_constraints = .{.{ .int = .qword }},
2459337783 .patterns = &.{
24594 .{ .src = .{ .to_mem, .none } },
37784 .{ .src = .{ .mem, .none, .none } },
37785 .{ .src = .{ .to_gpr, .none, .none } },
2459537786 },
24596 .dst_temps = .{.{ .rc = .general_purpose }},
37787 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2459737788 .each = .{ .once = &.{
24598 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
37789 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
2459937790 } },
2460037791 }, .{
2460137792 .required_features = .{ .@"64bit", null, null, null },
24602 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
37793 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
37794 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
2460337795 .patterns = &.{
24604 .{ .src = .{ .to_mem, .none } },
37796 .{ .src = .{ .mem, .none, .none } },
37797 .{ .src = .{ .to_gpr, .none, .none } },
2460537798 },
2460637799 .extra_temps = .{
24607 .{ .type = .usize, .kind = .{ .reg = .rsi } },
37800 .{ .type = .i64, .kind = .{ .reg = .rax } },
2460837801 .{ .type = .usize, .kind = .{ .reg = .rdi } },
2460937802 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2461037803 .unused,
......@@ -24615,109 +37808,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2461537808 .unused,
2461637809 },
2461737810 .dst_temps = .{.mem},
37811 .clobbers = .{ .eflags = true },
2461837812 .each = .{ .once = &.{
24619 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
37813 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
2462037814 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24621 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
24622 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24623 } },
24624 }, .{
24625 .required_features = .{ .sse, null, null, null },
24626 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
24627 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
24628 .patterns = &.{
24629 .{ .src = .{ .mut_mem, .none } },
24630 .{ .src = .{ .to_mut_sse, .none } },
24631 },
24632 .dst_temps = .{.{ .ref = .src0 }},
24633 .each = .{ .once = &.{} },
24634 }, .{
24635 .required_features = .{ .avx, null, null, null },
24636 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },
24637 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
24638 .patterns = &.{
24639 .{ .src = .{ .mut_mem, .none } },
24640 .{ .src = .{ .to_mut_sse, .none } },
24641 },
24642 .dst_temps = .{.{ .ref = .src0 }},
24643 .each = .{ .once = &.{} },
24644 }, .{
24645 .required_features = .{ .avx, null, null, null },
24646 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24647 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24648 .patterns = &.{
24649 .{ .src = .{ .to_sse, .none } },
24650 },
24651 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24652 .each = .{ .once = &.{
24653 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
24654 } },
24655 }, .{
24656 .required_features = .{ .avx, null, null, null },
24657 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24658 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24659 .patterns = &.{
24660 .{ .src = .{ .to_sse, .none } },
24661 },
24662 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24663 .each = .{ .once = &.{
24664 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
24665 } },
24666 }, .{
24667 .required_features = .{ .sse2, null, null, null },
24668 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24669 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24670 .patterns = &.{
24671 .{ .src = .{ .to_mut_sse, .none } },
24672 },
24673 .dst_temps = .{.{ .ref = .src0 }},
24674 .each = .{ .once = &.{
24675 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24676 } },
24677 }, .{
24678 .required_features = .{ .sse2, null, null, null },
24679 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24680 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24681 .patterns = &.{
24682 .{ .src = .{ .to_mut_sse, .none } },
24683 },
24684 .dst_temps = .{.{ .ref = .src0 }},
24685 .each = .{ .once = &.{
24686 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
37815 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37816 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
37817 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37818 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2468737819 } },
2468837820 }, .{
24689 .required_features = .{ .avx2, null, null, null },
24690 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24691 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
37821 .required_features = .{ .@"64bit", null, null, null },
37822 .src_constraints = .{ .{ .int = .word }, .any, .any },
37823 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2469237824 .patterns = &.{
24693 .{ .src = .{ .to_sse, .none } },
37825 .{ .src = .{ .mem, .none, .none } },
37826 .{ .src = .{ .to_gpr, .none, .none } },
2469437827 },
24695 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24696 .each = .{ .once = &.{
24697 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
24698 } },
24699 }, .{
24700 .required_features = .{ .avx2, null, null, null },
24701 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24702 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
24703 .patterns = &.{
24704 .{ .src = .{ .to_sse, .none } },
37828 .extra_temps = .{
37829 .{ .type = .u64, .kind = .{ .reg = .rax } },
37830 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37831 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37832 .unused,
37833 .unused,
37834 .unused,
37835 .unused,
37836 .unused,
37837 .unused,
2470537838 },
24706 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37839 .dst_temps = .{.mem},
37840 .clobbers = .{ .eflags = true },
2470737841 .each = .{ .once = &.{
24708 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },
37842 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
37843 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37844 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37845 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
37846 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37847 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2470937848 } },
2471037849 }, .{
24711 .required_features = .{ .slow_incdec, null, null, null },
24712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
37850 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
37851 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
2471437852 .patterns = &.{
24715 .{ .src = .{ .to_mem, .none } },
37853 .{ .src = .{ .mem, .none, .none } },
37854 .{ .src = .{ .to_gpr, .none, .none } },
2471637855 },
2471737856 .extra_temps = .{
24718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24719 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24720 .unused,
37857 .{ .type = .i32, .kind = .{ .reg = .eax } },
37858 .{ .type = .usize, .kind = .{ .reg = .edi } },
37859 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2472137860 .unused,
2472237861 .unused,
2472337862 .unused,
......@@ -24728,22 +37867,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2472837867 .dst_temps = .{.mem},
2472937868 .clobbers = .{ .eflags = true },
2473037869 .each = .{ .once = &.{
24731 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24732 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24733 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24734 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37870 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
37871 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37872 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
37873 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
37874 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37875 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2473637876 } },
2473737877 }, .{
24738 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24739 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
37878 .src_constraints = .{ .{ .int = .word }, .any, .any },
37879 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
2474037880 .patterns = &.{
24741 .{ .src = .{ .to_mem, .none } },
37881 .{ .src = .{ .mem, .none, .none } },
37882 .{ .src = .{ .to_gpr, .none, .none } },
2474237883 },
2474337884 .extra_temps = .{
24744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24745 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24746 .unused,
37885 .{ .type = .u32, .kind = .{ .reg = .eax } },
37886 .{ .type = .usize, .kind = .{ .reg = .edi } },
37887 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2474737888 .unused,
2474837889 .unused,
2474937890 .unused,
......@@ -24754,95 +37895,106 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2475437895 .dst_temps = .{.mem},
2475537896 .clobbers = .{ .eflags = true },
2475637897 .each = .{ .once = &.{
24757 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24758 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24759 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24760 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24761 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
37898 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
37899 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37900 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
37901 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
37902 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37903 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
2476237904 } },
2476337905 }, .{
24764 .required_features = .{ .avx, null, null, null },
24765 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24766 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
37906 .required_features = .{ .@"64bit", null, null, null },
37907 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
37908 .dst_constraints = .{.{ .signed_int = .qword }},
2476737909 .patterns = &.{
24768 .{ .src = .{ .to_sse, .none } },
37910 .{ .src = .{ .mem, .none, .none } },
37911 .{ .src = .{ .to_gpr, .none, .none } },
2476937912 },
24770 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2477137914 .each = .{ .once = &.{
24772 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
24773 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
37915 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
2477437916 } },
2477537917 }, .{
24776 .required_features = .{ .avx, null, null, null },
24777 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24778 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
37918 .required_features = .{ .@"64bit", null, null, null },
37919 .src_constraints = .{ .{ .int = .dword }, .any, .any },
37920 .dst_constraints = .{.{ .int = .qword }},
2477937921 .patterns = &.{
24780 .{ .src = .{ .to_sse, .none } },
37922 .{ .src = .{ .mem, .none, .none } },
37923 .{ .src = .{ .to_gpr, .none, .none } },
2478137924 },
24782 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37925 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
2478337926 .each = .{ .once = &.{
24784 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
24785 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
37927 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
2478637928 } },
2478737929 }, .{
24788 .required_features = .{ .sse2, null, null, null },
24789 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24790 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
37930 .required_features = .{ .@"64bit", null, null, null },
37931 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
37932 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
2479137933 .patterns = &.{
24792 .{ .src = .{ .to_mut_sse, .none } },
37934 .{ .src = .{ .mem, .none, .none } },
37935 .{ .src = .{ .to_gpr, .none, .none } },
2479337936 },
24794 .dst_temps = .{.{ .ref = .src0 }},
24795 .each = .{ .once = &.{
24796 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
24797 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24798 } },
24799 }, .{
24800 .required_features = .{ .sse4_1, null, null, null },
24801 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24802 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
24803 .patterns = &.{
24804 .{ .src = .{ .to_mut_sse, .none } },
37937 .extra_temps = .{
37938 .{ .type = .i64, .kind = .{ .reg = .rax } },
37939 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37940 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37941 .unused,
37942 .unused,
37943 .unused,
37944 .unused,
37945 .unused,
37946 .unused,
2480537947 },
24806 .dst_temps = .{.{ .ref = .src0 }},
37948 .dst_temps = .{.mem},
37949 .clobbers = .{ .eflags = true },
2480737950 .each = .{ .once = &.{
24808 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
24809 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
37951 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
37952 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37953 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37954 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
37955 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37956 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2481037957 } },
2481137958 }, .{
24812 .required_features = .{ .avx2, null, null, null },
24813 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24814 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
37959 .required_features = .{ .@"64bit", null, null, null },
37960 .src_constraints = .{ .{ .int = .dword }, .any, .any },
37961 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2481537962 .patterns = &.{
24816 .{ .src = .{ .to_sse, .none } },
37963 .{ .src = .{ .mem, .none, .none } },
37964 .{ .src = .{ .to_gpr, .none, .none } },
2481737965 },
24818 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24819 .each = .{ .once = &.{
24820 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
24821 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
24822 } },
24823 }, .{
24824 .required_features = .{ .avx2, null, null, null },
24825 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24826 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24827 .patterns = &.{
24828 .{ .src = .{ .to_sse, .none } },
37966 .extra_temps = .{
37967 .{ .type = .u64, .kind = .{ .reg = .rax } },
37968 .{ .type = .usize, .kind = .{ .reg = .rdi } },
37969 .{ .type = .u32, .kind = .{ .reg = .ecx } },
37970 .unused,
37971 .unused,
37972 .unused,
37973 .unused,
37974 .unused,
37975 .unused,
2482937976 },
24830 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
37977 .dst_temps = .{.mem},
37978 .clobbers = .{ .eflags = true },
2483137979 .each = .{ .once = &.{
24832 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
24833 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
37980 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
37981 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
37982 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37983 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
37984 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37985 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2483437986 } },
2483537987 }, .{
24836 .required_features = .{ .slow_incdec, null, null, null },
24837 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24838 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
37988 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
37989 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
2483937990 .patterns = &.{
24840 .{ .src = .{ .to_mem, .none } },
37991 .{ .src = .{ .mem, .none, .none } },
37992 .{ .src = .{ .to_gpr, .none, .none } },
2484137993 },
2484237994 .extra_temps = .{
24843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24844 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24845 .unused,
37995 .{ .type = .i32, .kind = .{ .reg = .eax } },
37996 .{ .type = .usize, .kind = .{ .reg = .edi } },
37997 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2484637998 .unused,
2484737999 .unused,
2484838000 .unused,
......@@ -24853,22 +38005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2485338005 .dst_temps = .{.mem},
2485438006 .clobbers = .{ .eflags = true },
2485538007 .each = .{ .once = &.{
24856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24857 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24858 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24859 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38008 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
38009 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38010 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
38011 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
38012 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
38013 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2486138014 } },
2486238015 }, .{
24863 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24864 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38016 .src_constraints = .{ .{ .int = .dword }, .any, .any },
38017 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
2486538018 .patterns = &.{
24866 .{ .src = .{ .to_mem, .none } },
38019 .{ .src = .{ .mem, .none, .none } },
38020 .{ .src = .{ .to_gpr, .none, .none } },
2486738021 },
2486838022 .extra_temps = .{
24869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24870 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24871 .unused,
38023 .{ .type = .u32, .kind = .{ .reg = .eax } },
38024 .{ .type = .usize, .kind = .{ .reg = .edi } },
38025 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2487238026 .unused,
2487338027 .unused,
2487438028 .unused,
......@@ -24879,23 +38033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2487938033 .dst_temps = .{.mem},
2488038034 .clobbers = .{ .eflags = true },
2488138035 .each = .{ .once = &.{
24882 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24883 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24884 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24885 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24886 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38036 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
38037 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38038 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
38039 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
38040 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
38041 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
2488738042 } },
2488838043 }, .{
24889 .required_features = .{ .slow_incdec, null, null, null },
24890 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24891 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38044 .required_features = .{ .@"64bit", null, null, null },
38045 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
38046 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
2489238047 .patterns = &.{
24893 .{ .src = .{ .to_mem, .none } },
38048 .{ .src = .{ .mem, .none, .none } },
38049 .{ .src = .{ .to_gpr, .none, .none } },
2489438050 },
2489538051 .extra_temps = .{
24896 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24897 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24898 .unused,
38052 .{ .type = .i64, .kind = .{ .reg = .rax } },
38053 .{ .type = .usize, .kind = .{ .reg = .rdi } },
38054 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2489938055 .unused,
2490038056 .unused,
2490138057 .unused,
......@@ -24906,22 +38062,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2490638062 .dst_temps = .{.mem},
2490738063 .clobbers = .{ .eflags = true },
2490838064 .each = .{ .once = &.{
24909 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24910 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24911 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24912 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24913 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38065 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
38066 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38067 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
38068 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
38069 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
38070 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2491438071 } },
2491538072 }, .{
24916 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24917 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38073 .required_features = .{ .@"64bit", null, null, null },
38074 .src_constraints = .{ .{ .int = .qword }, .any, .any },
38075 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2491838076 .patterns = &.{
24919 .{ .src = .{ .to_mem, .none } },
38077 .{ .src = .{ .mem, .none, .none } },
38078 .{ .src = .{ .to_gpr, .none, .none } },
2492038079 },
2492138080 .extra_temps = .{
24922 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24923 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24924 .unused,
38081 .{ .type = .u64, .kind = .{ .reg = .rax } },
38082 .{ .type = .usize, .kind = .{ .reg = .rdi } },
38083 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2492538084 .unused,
2492638085 .unused,
2492738086 .unused,
......@@ -24932,24 +38091,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2493238091 .dst_temps = .{.mem},
2493338092 .clobbers = .{ .eflags = true },
2493438093 .each = .{ .once = &.{
24935 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24936 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24937 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24938 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24939 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38094 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
38095 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38096 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
38097 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
38098 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
38099 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2494038100 } },
2494138101 }, .{
24942 .required_features = .{ .slow_incdec, null, null, null },
24943 .src_constraints = .{ .any_scalar_int, .any },
24944 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38102 .required_features = .{ .@"64bit", null, null, null },
38103 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
38104 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
2494538105 .patterns = &.{
24946 .{ .src = .{ .to_mem, .none } },
38106 .{ .src = .{ .to_mem, .none, .none } },
2494738107 },
2494838108 .extra_temps = .{
24949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24950 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24951 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24952 .unused,
38109 .{ .type = .usize, .kind = .{ .reg = .rsi } },
38110 .{ .type = .usize, .kind = .{ .reg = .rdi } },
38111 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38112 .{ .type = .i64, .kind = .{ .reg = .rax } },
2495338113 .unused,
2495438114 .unused,
2495538115 .unused,
......@@ -24959,25 +38119,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2495938119 .dst_temps = .{.mem},
2496038120 .clobbers = .{ .eflags = true },
2496138121 .each = .{ .once = &.{
24962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24963 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24964 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24965 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24966 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24967 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38122 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
38123 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38124 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
38125 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
38126 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
38127 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
38128 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
38129 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
38130 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2496938131 } },
2497038132 }, .{
24971 .src_constraints = .{ .any_scalar_int, .any },
24972 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
38133 .required_features = .{ .@"64bit", null, null, null },
38134 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
38135 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
2497338136 .patterns = &.{
24974 .{ .src = .{ .to_mem, .none } },
38137 .{ .src = .{ .to_mem, .none, .none } },
2497538138 },
2497638139 .extra_temps = .{
24977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24978 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24979 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24980 .unused,
38140 .{ .type = .usize, .kind = .{ .reg = .rsi } },
38141 .{ .type = .usize, .kind = .{ .reg = .rdi } },
38142 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38143 .{ .type = .u64, .kind = .{ .reg = .rax } },
2498138144 .unused,
2498238145 .unused,
2498338146 .unused,
......@@ -24987,135 +38150,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2498738150 .dst_temps = .{.mem},
2498838151 .clobbers = .{ .eflags = true },
2498938152 .each = .{ .once = &.{
24990 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24991 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24992 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24993 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24994 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24995 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24996 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
38153 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
38154 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
38155 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
38156 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
38157 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
38158 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
38159 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
2499738160 } },
24998 }, .{
24999 .required_features = .{ .sse, null, null, null },
25000 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
25001 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
25002 .patterns = &.{
25003 .{ .src = .{ .mut_mem, .none } },
25004 .{ .src = .{ .to_mut_sse, .none } },
25005 },
25006 .dst_temps = .{.{ .ref = .src0 }},
25007 .each = .{ .once = &.{} },
25008 }, .{
25009 .required_features = .{ .avx, null, null, null },
25010 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
25011 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
25012 .patterns = &.{
25013 .{ .src = .{ .mut_mem, .none } },
25014 .{ .src = .{ .to_mut_sse, .none } },
25015 },
25016 .dst_temps = .{.{ .ref = .src0 }},
25017 .each = .{ .once = &.{} },
2501838161 }, .{
2501938162 .required_features = .{ .avx, null, null, null },
25020 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25021 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
38163 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38164 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2502238165 .patterns = &.{
25023 .{ .src = .{ .to_sse, .none } },
38166 .{ .src = .{ .mem, .none, .none } },
38167 .{ .src = .{ .to_sse, .none, .none } },
2502438168 },
2502538169 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2502638170 .each = .{ .once = &.{
25027 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
38171 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
2502838172 } },
2502938173 }, .{
2503038174 .required_features = .{ .avx, null, null, null },
25031 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25032 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
38175 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38176 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
2503338177 .patterns = &.{
25034 .{ .src = .{ .to_sse, .none } },
38178 .{ .src = .{ .mem, .none, .none } },
38179 .{ .src = .{ .to_sse, .none, .none } },
2503538180 },
2503638181 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2503738182 .each = .{ .once = &.{
25038 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
25039 } },
25040 }, .{
25041 .required_features = .{ .sse2, null, null, null },
25042 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25043 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
25044 .patterns = &.{
25045 .{ .src = .{ .to_mut_sse, .none } },
25046 },
25047 .dst_temps = .{.{ .ref = .src0 }},
25048 .each = .{ .once = &.{
25049 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
38183 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
2505038184 } },
2505138185 }, .{
2505238186 .required_features = .{ .sse4_1, null, null, null },
25053 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25054 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
25055 .patterns = &.{
25056 .{ .src = .{ .to_mut_sse, .none } },
25057 },
25058 .dst_temps = .{.{ .ref = .src0 }},
25059 .each = .{ .once = &.{
25060 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
25061 } },
25062 }, .{
25063 .required_features = .{ .avx2, null, null, null },
25064 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
38187 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
2506538188 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2506638189 .patterns = &.{
25067 .{ .src = .{ .to_sse, .none } },
38190 .{ .src = .{ .mem, .none, .none } },
38191 .{ .src = .{ .to_sse, .none, .none } },
2506838192 },
2506938193 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2507038194 .each = .{ .once = &.{
25071 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
38195 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
2507238196 } },
2507338197 }, .{
25074 .required_features = .{ .avx2, null, null, null },
25075 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
38198 .required_features = .{ .sse4_1, null, null, null },
38199 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
2507638200 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
2507738201 .patterns = &.{
25078 .{ .src = .{ .to_sse, .none } },
38202 .{ .src = .{ .mem, .none, .none } },
38203 .{ .src = .{ .to_sse, .none, .none } },
2507938204 },
2508038205 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2508138206 .each = .{ .once = &.{
25082 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
38207 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
2508338208 } },
2508438209 }, .{
25085 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
25086 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
38210 .required_features = .{ .sse2, null, null, null },
38211 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38212 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
2508738213 .patterns = &.{
25088 .{ .src = .{ .to_mem, .none } },
38214 .{ .src = .{ .to_mut_sse, .none, .none } },
2508938215 },
2509038216 .extra_temps = .{
25091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25092 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25093 .unused,
25094 .unused,
25095 .unused,
25096 .unused,
25097 .unused,
25098 .unused,
38217 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
2509938218 .unused,
25100 },
25101 .dst_temps = .{.mem},
25102 .clobbers = .{ .eflags = true },
25103 .each = .{ .once = &.{
25104 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25105 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25106 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25107 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25109 } },
25110 }, .{
25111 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25112 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25113 .patterns = &.{
25114 .{ .src = .{ .to_mem, .none } },
25115 },
25116 .extra_temps = .{
25117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25118 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2511938219 .unused,
2512038220 .unused,
2512138221 .unused,
......@@ -25124,51 +38224,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2512438224 .unused,
2512538225 .unused,
2512638226 },
25127 .dst_temps = .{.mem},
25128 .clobbers = .{ .eflags = true },
38227 .dst_temps = .{.{ .ref = .src0 }},
2512938228 .each = .{ .once = &.{
25130 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25131 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
25132 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25133 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38229 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
38230 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
38231 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2513538232 } },
2513638233 }, .{
25137 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25138 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
38234 .required_features = .{ .sse2, null, null, null },
38235 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38236 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
2513938237 .patterns = &.{
25140 .{ .src = .{ .to_mem, .none } },
38238 .{ .src = .{ .to_mut_sse, .none, .none } },
2514138239 },
2514238240 .extra_temps = .{
25143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25144 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25145 .unused,
25146 .unused,
25147 .unused,
25148 .unused,
25149 .unused,
38241 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
2515038242 .unused,
2515138243 .unused,
25152 },
25153 .dst_temps = .{.mem},
25154 .clobbers = .{ .eflags = true },
25155 .each = .{ .once = &.{
25156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25157 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25158 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25159 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25161 } },
25162 }, .{
25163 .src_constraints = .{ .any_scalar_int, .any },
25164 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25165 .patterns = &.{
25166 .{ .src = .{ .to_mem, .none } },
25167 },
25168 .extra_temps = .{
25169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25170 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25171 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
2517238244 .unused,
2517338245 .unused,
2517438246 .unused,
......@@ -25176,70 +38248,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2517638248 .unused,
2517738249 .unused,
2517838250 },
25179 .dst_temps = .{.mem},
25180 .clobbers = .{ .eflags = true },
38251 .dst_temps = .{.{ .ref = .src0 }},
2518138252 .each = .{ .once = &.{
25182 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25183 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25184 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25185 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25186 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25187 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25188 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
38253 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
38254 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2518938255 } },
2519038256 }, .{
25191 .required_features = .{ .sse, null, null, null },
25192 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25193 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
25194 .patterns = &.{
25195 .{ .src = .{ .mut_mem, .none } },
25196 .{ .src = .{ .to_mut_sse, .none } },
25197 },
25198 .dst_temps = .{.{ .ref = .src0 }},
25199 .each = .{ .once = &.{} },
25200 }, .{
25201 .required_features = .{ .avx, null, null, null },
25202 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25203 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
25204 .patterns = &.{
25205 .{ .src = .{ .mut_mem, .none } },
25206 .{ .src = .{ .to_mut_sse, .none } },
25207 },
25208 .dst_temps = .{.{ .ref = .src0 }},
25209 .each = .{ .once = &.{} },
25210 }, .{
25211 .required_features = .{ .avx, null, null, null },
25212 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25213 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
38257 .required_features = .{ .avx2, null, null, null },
38258 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38259 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
2521438260 .patterns = &.{
25215 .{ .src = .{ .mem, .none } },
25216 .{ .src = .{ .to_sse, .none } },
38261 .{ .src = .{ .mem, .none, .none } },
38262 .{ .src = .{ .to_sse, .none, .none } },
2521738263 },
2521838264 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2521938265 .each = .{ .once = &.{
25220 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
38266 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
2522138267 } },
2522238268 }, .{
25223 .required_features = .{ .sse2, null, null, null },
25224 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25225 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
38269 .required_features = .{ .avx2, null, null, null },
38270 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38271 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
2522638272 .patterns = &.{
25227 .{ .src = .{ .mem, .none } },
25228 .{ .src = .{ .to_sse, .none } },
38273 .{ .src = .{ .mem, .none, .none } },
38274 .{ .src = .{ .to_sse, .none, .none } },
2522938275 },
2523038276 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2523138277 .each = .{ .once = &.{
25232 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
38278 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },
2523338279 } },
2523438280 }, .{
25235 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25236 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
38281 .required_features = .{ .avx2, null, null, null },
38282 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38283 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
2523738284 .patterns = &.{
25238 .{ .src = .{ .to_mem, .none } },
38285 .{ .src = .{ .to_mem, .none, .none } },
2523938286 },
2524038287 .extra_temps = .{
2524138288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25242 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38289 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
2524338290 .unused,
2524438291 .unused,
2524538292 .unused,
......@@ -25251,21 +38298,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2525138298 .dst_temps = .{.mem},
2525238299 .clobbers = .{ .eflags = true },
2525338300 .each = .{ .once = &.{
25254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25255 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25256 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25257 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38301 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38302 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38303 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2525838305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2525938306 } },
2526038307 }, .{
25261 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25262 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
38308 .required_features = .{ .avx2, null, null, null },
38309 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38310 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
2526338311 .patterns = &.{
25264 .{ .src = .{ .to_mem, .none } },
38312 .{ .src = .{ .to_mem, .none, .none } },
2526538313 },
2526638314 .extra_temps = .{
2526738315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38316 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
2526938317 .unused,
2527038318 .unused,
2527138319 .unused,
......@@ -25277,48 +38325,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2527738325 .dst_temps = .{.mem},
2527838326 .clobbers = .{ .eflags = true },
2527938327 .each = .{ .once = &.{
25280 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25281 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
25282 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25283 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38329 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38330 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38331 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2528438332 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2528538333 } },
2528638334 }, .{
25287 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25288 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
38335 .required_features = .{ .avx, null, null, null },
38336 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38337 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
2528938338 .patterns = &.{
25290 .{ .src = .{ .to_mem, .none } },
38339 .{ .src = .{ .to_mem, .none, .none } },
2529138340 },
2529238341 .extra_temps = .{
2529338342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25294 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25295 .unused,
25296 .unused,
25297 .unused,
25298 .unused,
25299 .unused,
25300 .unused,
38343 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
2530138344 .unused,
25302 },
25303 .dst_temps = .{.mem},
25304 .clobbers = .{ .eflags = true },
25305 .each = .{ .once = &.{
25306 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25307 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25308 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25309 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25311 } },
25312 }, .{
25313 .src_constraints = .{ .any_scalar_int, .any },
25314 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25315 .patterns = &.{
25316 .{ .src = .{ .to_mem, .none } },
25317 },
25318 .extra_temps = .{
25319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25321 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2532238345 .unused,
2532338346 .unused,
2532438347 .unused,
......@@ -25329,45 +38352,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2532938352 .dst_temps = .{.mem},
2533038353 .clobbers = .{ .eflags = true },
2533138354 .each = .{ .once = &.{
25332 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25333 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25334 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25335 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
25336 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25337 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38355 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38356 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38357 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38358 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2533838359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2533938360 } },
25340 }, .{
25341 .required_features = .{ .sse, null, null, null },
25342 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25343 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
25344 .patterns = &.{
25345 .{ .src = .{ .mut_mem, .none } },
25346 .{ .src = .{ .to_mut_sse, .none } },
25347 },
25348 .dst_temps = .{.{ .ref = .src0 }},
25349 .each = .{ .once = &.{} },
2535038361 }, .{
2535138362 .required_features = .{ .avx, null, null, null },
25352 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
25353 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
25354 .patterns = &.{
25355 .{ .src = .{ .mut_mem, .none } },
25356 .{ .src = .{ .to_mut_sse, .none } },
25357 },
25358 .dst_temps = .{.{ .ref = .src0 }},
25359 .each = .{ .once = &.{} },
25360 }, .{
25361 .required_features = .{ .@"64bit", null, null, null },
25362 .src_constraints = .{ .any_scalar_int, .any },
25363 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
38363 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38364 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
2536438365 .patterns = &.{
25365 .{ .src = .{ .to_mem, .none } },
38366 .{ .src = .{ .to_mem, .none, .none } },
2536638367 },
2536738368 .extra_temps = .{
2536838369 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25369 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25370 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
38370 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
38371 .unused,
2537138372 .unused,
2537238373 .unused,
2537338374 .unused,
......@@ -25378,56 +38379,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2537838379 .dst_temps = .{.mem},
2537938380 .clobbers = .{ .eflags = true },
2538038381 .each = .{ .once = &.{
25381 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25382 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25383 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
25384 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
25385 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
38382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38383 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38384 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2538638385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2538738386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2538838387 } },
2538938388 }, .{
25390 .required_features = .{ .sse, null, null, null },
25391 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25392 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
25393 .patterns = &.{
25394 .{ .src = .{ .mut_mem, .none } },
25395 .{ .src = .{ .to_mut_sse, .none } },
25396 },
25397 .dst_temps = .{.{ .ref = .src0 }},
25398 .each = .{ .once = &.{} },
25399 }, .{
25400 .required_features = .{ .avx, null, null, null },
25401 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any },
25402 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }},
25403 .patterns = &.{
25404 .{ .src = .{ .mut_mem, .none } },
25405 .{ .src = .{ .to_mut_sse, .none } },
25406 },
25407 .dst_temps = .{.{ .ref = .src0 }},
25408 .each = .{ .once = &.{} },
25409 }, .{
25410 .required_features = .{ .avx, null, null, null },
25411 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25412 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }},
25413 .patterns = &.{
25414 .{ .src = .{ .mut_mem, .none } },
25415 .{ .src = .{ .to_mut_sse, .none } },
25416 },
25417 .dst_temps = .{.{ .ref = .src0 }},
25418 .each = .{ .once = &.{} },
25419 }, .{
25420 .required_features = .{ .@"64bit", .slow_incdec, null, null },
25421 .src_constraints = .{ .any_scalar_int, .any },
25422 .dst_constraints = .{.any_scalar_int},
38389 .required_features = .{ .sse4_1, null, null, null },
38390 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38391 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
2542338392 .patterns = &.{
25424 .{ .src = .{ .to_mem, .none } },
38393 .{ .src = .{ .to_mem, .none, .none } },
2542538394 },
25426 .extra_temps = .{
25427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25428 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25429 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25430 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38395 .extra_temps = .{
38396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38397 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
38398 .unused,
38399 .unused,
2543138400 .unused,
2543238401 .unused,
2543338402 .unused,
......@@ -25437,27 +38406,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2543738406 .dst_temps = .{.mem},
2543838407 .clobbers = .{ .eflags = true },
2543938408 .each = .{ .once = &.{
25440 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25441 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25442 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25443 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25444 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25445 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25446 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
25447 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
38409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38410 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38411 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38412 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2544838414 } },
2544938415 }, .{
25450 .required_features = .{ .@"64bit", null, null, null },
25451 .src_constraints = .{ .any_scalar_int, .any },
25452 .dst_constraints = .{.any_scalar_int},
38416 .required_features = .{ .sse4_1, null, null, null },
38417 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38418 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
2545338419 .patterns = &.{
25454 .{ .src = .{ .to_mem, .none } },
38420 .{ .src = .{ .to_mem, .none, .none } },
2545538421 },
2545638422 .extra_temps = .{
25457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25458 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25459 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25460 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38424 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
38425 .unused,
38426 .unused,
2546138427 .unused,
2546238428 .unused,
2546338429 .unused,
......@@ -25467,73 +38433,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2546738433 .dst_temps = .{.mem},
2546838434 .clobbers = .{ .eflags = true },
2546938435 .each = .{ .once = &.{
25470 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25471 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25472 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25473 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25474 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25475 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25476 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
25477 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
25478 } },
25479 } } else comptime &.{ .{
25480 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25481 .dst_constraints = .{.{ .signed_int = .dword }},
25482 .patterns = &.{
25483 .{ .src = .{ .mem, .none } },
25484 .{ .src = .{ .to_gpr, .none } },
25485 },
25486 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25487 .each = .{ .once = &.{
25488 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
25489 } },
25490 }, .{
25491 .src_constraints = .{ .{ .int = .byte }, .any },
25492 .dst_constraints = .{.{ .int = .dword }},
25493 .patterns = &.{
25494 .{ .src = .{ .mem, .none } },
25495 .{ .src = .{ .to_gpr, .none } },
25496 },
25497 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25498 .each = .{ .once = &.{
25499 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
25500 } },
25501 }, .{
25502 .required_features = .{ .@"64bit", null, null, null },
25503 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25504 .dst_constraints = .{.{ .signed_int = .qword }},
25505 .patterns = &.{
25506 .{ .src = .{ .mem, .none } },
25507 .{ .src = .{ .to_gpr, .none } },
25508 },
25509 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25510 .each = .{ .once = &.{
25511 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
25512 } },
25513 }, .{
25514 .required_features = .{ .@"64bit", null, null, null },
25515 .src_constraints = .{ .{ .int = .byte }, .any },
25516 .dst_constraints = .{.{ .int = .qword }},
25517 .patterns = &.{
25518 .{ .src = .{ .mem, .none } },
25519 .{ .src = .{ .to_gpr, .none } },
25520 },
25521 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25522 .each = .{ .once = &.{
25523 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
38436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38437 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38438 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38439 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2552438441 } },
2552538442 }, .{
25526 .required_features = .{ .@"64bit", null, null, null },
25527 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25528 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
38443 .required_features = .{ .slow_incdec, null, null, null },
38444 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38445 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2552938446 .patterns = &.{
25530 .{ .src = .{ .mem, .none } },
25531 .{ .src = .{ .to_gpr, .none } },
38447 .{ .src = .{ .to_mem, .none, .none } },
2553238448 },
2553338449 .extra_temps = .{
25534 .{ .type = .i64, .kind = .{ .reg = .rax } },
25535 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25536 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38451 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
38452 .unused,
2553738453 .unused,
2553838454 .unused,
2553938455 .unused,
......@@ -25544,25 +38460,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2554438460 .dst_temps = .{.mem},
2554538461 .clobbers = .{ .eflags = true },
2554638462 .each = .{ .once = &.{
25547 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
25548 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25549 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25550 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25551 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25552 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38464 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38465 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
38466 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2555338468 } },
2555438469 }, .{
25555 .required_features = .{ .@"64bit", null, null, null },
25556 .src_constraints = .{ .{ .int = .byte }, .any },
25557 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38470 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38471 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
2555838472 .patterns = &.{
25559 .{ .src = .{ .mem, .none } },
25560 .{ .src = .{ .to_gpr, .none } },
38473 .{ .src = .{ .to_mem, .none, .none } },
2556138474 },
2556238475 .extra_temps = .{
25563 .{ .type = .u64, .kind = .{ .reg = .rax } },
25564 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25565 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38477 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
38478 .unused,
2556638479 .unused,
2556738480 .unused,
2556838481 .unused,
......@@ -25573,24 +38486,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2557338486 .dst_temps = .{.mem},
2557438487 .clobbers = .{ .eflags = true },
2557538488 .each = .{ .once = &.{
25576 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25577 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25578 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25579 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25580 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25581 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38490 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38491 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
38492 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38493 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2558238494 } },
2558338495 }, .{
25584 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25585 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
38496 .required_features = .{ .slow_incdec, null, null, null },
38497 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38498 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2558638499 .patterns = &.{
25587 .{ .src = .{ .mem, .none } },
25588 .{ .src = .{ .to_gpr, .none } },
38500 .{ .src = .{ .to_mem, .none, .none } },
2558938501 },
2559038502 .extra_temps = .{
25591 .{ .type = .i32, .kind = .{ .reg = .eax } },
25592 .{ .type = .usize, .kind = .{ .reg = .edi } },
25593 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38504 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
38505 .unused,
2559438506 .unused,
2559538507 .unused,
2559638508 .unused,
......@@ -25601,24 +38513,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2560138513 .dst_temps = .{.mem},
2560238514 .clobbers = .{ .eflags = true },
2560338515 .each = .{ .once = &.{
25604 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
25605 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25606 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25607 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25608 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25609 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38516 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38517 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38518 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
38519 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38520 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2561038521 } },
2561138522 }, .{
25612 .src_constraints = .{ .{ .int = .byte }, .any },
25613 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
38523 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38524 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
2561438525 .patterns = &.{
25615 .{ .src = .{ .mem, .none } },
25616 .{ .src = .{ .to_gpr, .none } },
38526 .{ .src = .{ .to_mem, .none, .none } },
2561738527 },
2561838528 .extra_temps = .{
25619 .{ .type = .u32, .kind = .{ .reg = .eax } },
25620 .{ .type = .usize, .kind = .{ .reg = .edi } },
25621 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38530 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
38531 .unused,
2562238532 .unused,
2562338533 .unused,
2562438534 .unused,
......@@ -25629,71 +38539,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2562938539 .dst_temps = .{.mem},
2563038540 .clobbers = .{ .eflags = true },
2563138541 .each = .{ .once = &.{
25632 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25633 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25634 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25635 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25636 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25637 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
38542 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38543 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38544 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
38545 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38546 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2563838547 } },
2563938548 }, .{
25640 .src_constraints = .{ .{ .signed_int = .word }, .any },
25641 .dst_constraints = .{.{ .signed_int = .dword }},
38549 .required_features = .{ .avx, null, null, null },
38550 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38551 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2564238552 .patterns = &.{
25643 .{ .src = .{ .mem, .none } },
25644 .{ .src = .{ .to_gpr, .none } },
38553 .{ .src = .{ .mem, .none, .none } },
38554 .{ .src = .{ .to_sse, .none, .none } },
2564538555 },
25646 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
38556 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2564738557 .each = .{ .once = &.{
25648 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
38558 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
2564938559 } },
2565038560 }, .{
25651 .src_constraints = .{ .{ .int = .word }, .any },
25652 .dst_constraints = .{.{ .int = .dword }},
38561 .required_features = .{ .avx, null, null, null },
38562 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38563 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
2565338564 .patterns = &.{
25654 .{ .src = .{ .mem, .none } },
25655 .{ .src = .{ .to_gpr, .none } },
38565 .{ .src = .{ .mem, .none, .none } },
38566 .{ .src = .{ .to_sse, .none, .none } },
2565638567 },
25657 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
38568 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2565838569 .each = .{ .once = &.{
25659 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
38570 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
2566038571 } },
2566138572 }, .{
25662 .required_features = .{ .@"64bit", null, null, null },
25663 .src_constraints = .{ .{ .signed_int = .word }, .any },
25664 .dst_constraints = .{.{ .signed_int = .qword }},
38573 .required_features = .{ .sse4_1, null, null, null },
38574 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38575 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2566538576 .patterns = &.{
25666 .{ .src = .{ .mem, .none } },
25667 .{ .src = .{ .to_gpr, .none } },
38577 .{ .src = .{ .mem, .none, .none } },
38578 .{ .src = .{ .to_sse, .none, .none } },
2566838579 },
25669 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
38580 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2567038581 .each = .{ .once = &.{
25671 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
38582 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
2567238583 } },
2567338584 }, .{
25674 .required_features = .{ .@"64bit", null, null, null },
25675 .src_constraints = .{ .{ .int = .word }, .any },
25676 .dst_constraints = .{.{ .int = .qword }},
38585 .required_features = .{ .sse4_1, null, null, null },
38586 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38587 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
2567738588 .patterns = &.{
25678 .{ .src = .{ .mem, .none } },
25679 .{ .src = .{ .to_gpr, .none } },
38589 .{ .src = .{ .mem, .none, .none } },
38590 .{ .src = .{ .to_sse, .none, .none } },
2568038591 },
25681 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
38592 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2568238593 .each = .{ .once = &.{
25683 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
38594 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
2568438595 } },
2568538596 }, .{
25686 .required_features = .{ .@"64bit", null, null, null },
25687 .src_constraints = .{ .{ .signed_int = .word }, .any },
25688 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
38597 .required_features = .{ .sse2, null, null, null },
38598 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38599 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2568938600 .patterns = &.{
25690 .{ .src = .{ .mem, .none } },
25691 .{ .src = .{ .to_gpr, .none } },
38601 .{ .src = .{ .to_mut_sse, .none, .none } },
2569238602 },
2569338603 .extra_temps = .{
25694 .{ .type = .i64, .kind = .{ .reg = .rax } },
25695 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25696 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38604 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
38605 .unused,
38606 .unused,
2569738607 .unused,
2569838608 .unused,
2569938609 .unused,
......@@ -25701,28 +38611,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2570138611 .unused,
2570238612 .unused,
2570338613 },
25704 .dst_temps = .{.mem},
25705 .clobbers = .{ .eflags = true },
38614 .dst_temps = .{.{ .ref = .src0 }},
2570638615 .each = .{ .once = &.{
25707 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
25708 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25709 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25710 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25711 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25712 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38616 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
38617 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
38618 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
38619 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
38620 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2571338621 } },
2571438622 }, .{
25715 .required_features = .{ .@"64bit", null, null, null },
25716 .src_constraints = .{ .{ .int = .word }, .any },
25717 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38623 .required_features = .{ .sse2, null, null, null },
38624 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38625 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
2571838626 .patterns = &.{
25719 .{ .src = .{ .mem, .none } },
25720 .{ .src = .{ .to_gpr, .none } },
38627 .{ .src = .{ .to_mut_sse, .none, .none } },
2572138628 },
2572238629 .extra_temps = .{
25723 .{ .type = .u64, .kind = .{ .reg = .rax } },
25724 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25725 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38630 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
38631 .unused,
38632 .unused,
2572638633 .unused,
2572738634 .unused,
2572838635 .unused,
......@@ -25730,27 +38637,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2573038637 .unused,
2573138638 .unused,
2573238639 },
25733 .dst_temps = .{.mem},
25734 .clobbers = .{ .eflags = true },
38640 .dst_temps = .{.{ .ref = .src0 }},
2573538641 .each = .{ .once = &.{
25736 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25737 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25738 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25739 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25740 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25741 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38642 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
38643 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
38644 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2574238645 } },
2574338646 }, .{
25744 .src_constraints = .{ .{ .signed_int = .word }, .any },
25745 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
38647 .required_features = .{ .avx2, null, null, null },
38648 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38649 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
38650 .patterns = &.{
38651 .{ .src = .{ .mem, .none, .none } },
38652 .{ .src = .{ .to_sse, .none, .none } },
38653 },
38654 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38655 .each = .{ .once = &.{
38656 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
38657 } },
38658 }, .{
38659 .required_features = .{ .avx2, null, null, null },
38660 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38661 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
38662 .patterns = &.{
38663 .{ .src = .{ .mem, .none, .none } },
38664 .{ .src = .{ .to_sse, .none, .none } },
38665 },
38666 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
38667 .each = .{ .once = &.{
38668 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
38669 } },
38670 }, .{
38671 .required_features = .{ .avx2, null, null, null },
38672 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38673 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
2574638674 .patterns = &.{
25747 .{ .src = .{ .mem, .none } },
25748 .{ .src = .{ .to_gpr, .none } },
38675 .{ .src = .{ .to_mem, .none, .none } },
2574938676 },
2575038677 .extra_temps = .{
25751 .{ .type = .i32, .kind = .{ .reg = .eax } },
25752 .{ .type = .usize, .kind = .{ .reg = .edi } },
25753 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38679 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
38680 .unused,
2575438681 .unused,
2575538682 .unused,
2575638683 .unused,
......@@ -25761,24 +38688,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2576138688 .dst_temps = .{.mem},
2576238689 .clobbers = .{ .eflags = true },
2576338690 .each = .{ .once = &.{
25764 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
25765 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25766 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25767 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25768 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25769 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38692 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
38693 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38694 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2577038696 } },
2577138697 }, .{
25772 .src_constraints = .{ .{ .int = .word }, .any },
25773 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
38698 .required_features = .{ .avx2, null, null, null },
38699 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38700 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
2577438701 .patterns = &.{
25775 .{ .src = .{ .mem, .none } },
25776 .{ .src = .{ .to_gpr, .none } },
38702 .{ .src = .{ .to_mem, .none, .none } },
2577738703 },
2577838704 .extra_temps = .{
25779 .{ .type = .u32, .kind = .{ .reg = .eax } },
25780 .{ .type = .usize, .kind = .{ .reg = .edi } },
25781 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38706 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
38707 .unused,
2578238708 .unused,
2578338709 .unused,
2578438710 .unused,
......@@ -25789,49 +38715,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2578938715 .dst_temps = .{.mem},
2579038716 .clobbers = .{ .eflags = true },
2579138717 .each = .{ .once = &.{
25792 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25793 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25794 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25795 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25796 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25797 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25798 } },
25799 }, .{
25800 .required_features = .{ .@"64bit", null, null, null },
25801 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25802 .dst_constraints = .{.{ .signed_int = .qword }},
25803 .patterns = &.{
25804 .{ .src = .{ .mem, .none } },
25805 .{ .src = .{ .to_gpr, .none } },
25806 },
25807 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25808 .each = .{ .once = &.{
25809 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
25810 } },
25811 }, .{
25812 .required_features = .{ .@"64bit", null, null, null },
25813 .src_constraints = .{ .{ .int = .dword }, .any },
25814 .dst_constraints = .{.{ .int = .qword }},
25815 .patterns = &.{
25816 .{ .src = .{ .mem, .none } },
25817 .{ .src = .{ .to_gpr, .none } },
25818 },
25819 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25820 .each = .{ .once = &.{
25821 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
38718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38719 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
38720 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
38721 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
38722 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2582238723 } },
2582338724 }, .{
25824 .required_features = .{ .@"64bit", null, null, null },
25825 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25826 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
38725 .required_features = .{ .avx, null, null, null },
38726 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38727 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2582738728 .patterns = &.{
25828 .{ .src = .{ .mem, .none } },
25829 .{ .src = .{ .to_gpr, .none } },
38729 .{ .src = .{ .to_mem, .none, .none } },
2583038730 },
2583138731 .extra_temps = .{
25832 .{ .type = .i64, .kind = .{ .reg = .rax } },
25833 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25834 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38733 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
38734 .unused,
2583538735 .unused,
2583638736 .unused,
2583738737 .unused,
......@@ -25842,25 +38742,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2584238742 .dst_temps = .{.mem},
2584338743 .clobbers = .{ .eflags = true },
2584438744 .each = .{ .once = &.{
25845 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
25846 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25847 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25848 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25849 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25850 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38746 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38747 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38748 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2585138750 } },
2585238751 }, .{
25853 .required_features = .{ .@"64bit", null, null, null },
25854 .src_constraints = .{ .{ .int = .dword }, .any },
25855 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38752 .required_features = .{ .avx, null, null, null },
38753 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38754 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
2585638755 .patterns = &.{
25857 .{ .src = .{ .mem, .none } },
25858 .{ .src = .{ .to_gpr, .none } },
38756 .{ .src = .{ .to_mem, .none, .none } },
2585938757 },
2586038758 .extra_temps = .{
25861 .{ .type = .u64, .kind = .{ .reg = .rax } },
25862 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25863 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38760 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
38761 .unused,
2586438762 .unused,
2586538763 .unused,
2586638764 .unused,
......@@ -25871,24 +38769,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2587138769 .dst_temps = .{.mem},
2587238770 .clobbers = .{ .eflags = true },
2587338771 .each = .{ .once = &.{
25874 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25875 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25876 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25877 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25878 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25879 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38772 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38773 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38774 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38775 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2588038777 } },
2588138778 }, .{
25882 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25883 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
38779 .required_features = .{ .sse4_1, null, null, null },
38780 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38781 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2588438782 .patterns = &.{
25885 .{ .src = .{ .mem, .none } },
25886 .{ .src = .{ .to_gpr, .none } },
38783 .{ .src = .{ .to_mem, .none, .none } },
2588738784 },
2588838785 .extra_temps = .{
25889 .{ .type = .i32, .kind = .{ .reg = .eax } },
25890 .{ .type = .usize, .kind = .{ .reg = .edi } },
25891 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38787 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
38788 .unused,
2589238789 .unused,
2589338790 .unused,
2589438791 .unused,
......@@ -25899,24 +38796,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2589938796 .dst_temps = .{.mem},
2590038797 .clobbers = .{ .eflags = true },
2590138798 .each = .{ .once = &.{
25902 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25903 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25904 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25905 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25906 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25907 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38799 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38800 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38801 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38802 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38803 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2590838804 } },
2590938805 }, .{
25910 .src_constraints = .{ .{ .int = .dword }, .any },
25911 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
38806 .required_features = .{ .sse4_1, null, null, null },
38807 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38808 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
2591238809 .patterns = &.{
25913 .{ .src = .{ .mem, .none } },
25914 .{ .src = .{ .to_gpr, .none } },
38810 .{ .src = .{ .to_mem, .none, .none } },
2591538811 },
2591638812 .extra_temps = .{
25917 .{ .type = .u32, .kind = .{ .reg = .eax } },
25918 .{ .type = .usize, .kind = .{ .reg = .edi } },
25919 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38814 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
38815 .unused,
2592038816 .unused,
2592138817 .unused,
2592238818 .unused,
......@@ -25927,25 +38823,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2592738823 .dst_temps = .{.mem},
2592838824 .clobbers = .{ .eflags = true },
2592938825 .each = .{ .once = &.{
25930 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25931 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25932 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25933 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25934 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25935 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
38826 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38827 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
38828 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
38829 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
38830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2593638831 } },
2593738832 }, .{
25938 .required_features = .{ .@"64bit", null, null, null },
25939 .src_constraints = .{ .{ .signed_int = .qword }, .any },
25940 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
38833 .required_features = .{ .slow_incdec, null, null, null },
38834 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38835 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2594138836 .patterns = &.{
25942 .{ .src = .{ .mem, .none } },
25943 .{ .src = .{ .to_gpr, .none } },
38837 .{ .src = .{ .to_mem, .none, .none } },
2594438838 },
2594538839 .extra_temps = .{
25946 .{ .type = .i64, .kind = .{ .reg = .rax } },
25947 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25948 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38841 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
38842 .unused,
2594938843 .unused,
2595038844 .unused,
2595138845 .unused,
......@@ -25956,25 +38850,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2595638850 .dst_temps = .{.mem},
2595738851 .clobbers = .{ .eflags = true },
2595838852 .each = .{ .once = &.{
25959 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25960 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25961 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25962 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25963 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25964 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38853 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38854 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38855 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
38856 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2596538858 } },
2596638859 }, .{
25967 .required_features = .{ .@"64bit", null, null, null },
25968 .src_constraints = .{ .{ .int = .qword }, .any },
25969 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38860 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38861 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2597038862 .patterns = &.{
25971 .{ .src = .{ .mem, .none } },
25972 .{ .src = .{ .to_gpr, .none } },
38863 .{ .src = .{ .to_mem, .none, .none } },
2597338864 },
2597438865 .extra_temps = .{
25975 .{ .type = .u64, .kind = .{ .reg = .rax } },
25976 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25977 .{ .type = .u32, .kind = .{ .reg = .ecx } },
38866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38867 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
38868 .unused,
2597838869 .unused,
2597938870 .unused,
2598038871 .unused,
......@@ -25985,25 +38876,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2598538876 .dst_temps = .{.mem},
2598638877 .clobbers = .{ .eflags = true },
2598738878 .each = .{ .once = &.{
25988 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25989 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25990 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25991 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25992 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25993 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38880 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38881 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
38882 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38883 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2599438884 } },
2599538885 }, .{
25996 .required_features = .{ .@"64bit", null, null, null },
25997 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
25998 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
38886 .required_features = .{ .slow_incdec, null, null, null },
38887 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38888 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2599938889 .patterns = &.{
26000 .{ .src = .{ .to_mem, .none } },
38890 .{ .src = .{ .to_mem, .none, .none } },
2600138891 },
2600238892 .extra_temps = .{
26003 .{ .type = .usize, .kind = .{ .reg = .rsi } },
26004 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26005 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26006 .{ .type = .i64, .kind = .{ .reg = .rax } },
38893 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38894 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38895 .unused,
38896 .unused,
2600738897 .unused,
2600838898 .unused,
2600938899 .unused,
......@@ -26013,28 +38903,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2601338903 .dst_temps = .{.mem},
2601438904 .clobbers = .{ .eflags = true },
2601538905 .each = .{ .once = &.{
26016 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
26017 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26018 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
26019 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26020 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
26021 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
26022 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
26023 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26024 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38906 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38907 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38908 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
38909 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
38910 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2602538911 } },
2602638912 }, .{
26027 .required_features = .{ .@"64bit", null, null, null },
26028 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
26029 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
38913 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38914 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2603038915 .patterns = &.{
26031 .{ .src = .{ .to_mem, .none } },
38916 .{ .src = .{ .to_mem, .none, .none } },
2603238917 },
2603338918 .extra_temps = .{
26034 .{ .type = .usize, .kind = .{ .reg = .rsi } },
26035 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26036 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26037 .{ .type = .u64, .kind = .{ .reg = .rax } },
38919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38920 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
38921 .unused,
38922 .unused,
2603838923 .unused,
2603938924 .unused,
2604038925 .unused,
......@@ -26044,68 +38929,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2604438929 .dst_temps = .{.mem},
2604538930 .clobbers = .{ .eflags = true },
2604638931 .each = .{ .once = &.{
26047 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
26048 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26049 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
26050 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26051 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
26052 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26053 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
38932 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
38933 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
38934 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
38935 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
38936 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2605438937 } },
2605538938 }, .{
2605638939 .required_features = .{ .avx, null, null, null },
26057 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26058 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
38940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
38941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2605938942 .patterns = &.{
26060 .{ .src = .{ .mem, .none } },
26061 .{ .src = .{ .to_sse, .none } },
38943 .{ .src = .{ .mem, .none, .none } },
38944 .{ .src = .{ .to_sse, .none, .none } },
2606238945 },
2606338946 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2606438947 .each = .{ .once = &.{
26065 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
38948 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
2606638949 } },
2606738950 }, .{
2606838951 .required_features = .{ .avx, null, null, null },
26069 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26070 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
38952 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
38953 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2607138954 .patterns = &.{
26072 .{ .src = .{ .mem, .none } },
26073 .{ .src = .{ .to_sse, .none } },
38955 .{ .src = .{ .mem, .none, .none } },
38956 .{ .src = .{ .to_sse, .none, .none } },
2607438957 },
2607538958 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2607638959 .each = .{ .once = &.{
26077 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
38960 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
2607838961 } },
2607938962 }, .{
2608038963 .required_features = .{ .sse4_1, null, null, null },
26081 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26082 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
38964 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
38965 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2608338966 .patterns = &.{
26084 .{ .src = .{ .mem, .none } },
26085 .{ .src = .{ .to_sse, .none } },
38967 .{ .src = .{ .mem, .none, .none } },
38968 .{ .src = .{ .to_sse, .none, .none } },
2608638969 },
2608738970 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2608838971 .each = .{ .once = &.{
26089 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
38972 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
2609038973 } },
2609138974 }, .{
2609238975 .required_features = .{ .sse4_1, null, null, null },
26093 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26094 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
38976 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
38977 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2609538978 .patterns = &.{
26096 .{ .src = .{ .mem, .none } },
26097 .{ .src = .{ .to_sse, .none } },
38979 .{ .src = .{ .mem, .none, .none } },
38980 .{ .src = .{ .to_sse, .none, .none } },
2609838981 },
2609938982 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2610038983 .each = .{ .once = &.{
26101 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
38984 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
2610238985 } },
2610338986 }, .{
2610438987 .required_features = .{ .sse2, null, null, null },
26105 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26106 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
38988 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
38989 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2610738990 .patterns = &.{
26108 .{ .src = .{ .to_mut_sse, .none } },
38991 .{ .src = .{ .to_mut_sse, .none, .none } },
2610938992 },
2611038993 .extra_temps = .{
2611138994 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
......@@ -26123,13 +39006,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2612339006 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
2612439007 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
2612539008 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
39009 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
39010 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39011 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
39012 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2612639013 } },
2612739014 }, .{
2612839015 .required_features = .{ .sse2, null, null, null },
26129 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26130 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
39016 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
39017 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2613139018 .patterns = &.{
26132 .{ .src = .{ .to_mut_sse, .none } },
39019 .{ .src = .{ .to_mut_sse, .none, .none } },
2613339020 },
2613439021 .extra_temps = .{
2613539022 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -26146,41 +39033,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2614639033 .each = .{ .once = &.{
2614739034 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
2614839035 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
39036 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39037 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2614939038 } },
2615039039 }, .{
2615139040 .required_features = .{ .avx2, null, null, null },
26152 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26153 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
39041 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
39042 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2615439043 .patterns = &.{
26155 .{ .src = .{ .mem, .none } },
26156 .{ .src = .{ .to_sse, .none } },
39044 .{ .src = .{ .mem, .none, .none } },
39045 .{ .src = .{ .to_sse, .none, .none } },
2615739046 },
2615839047 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2615939048 .each = .{ .once = &.{
26160 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
39049 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
2616139050 } },
2616239051 }, .{
2616339052 .required_features = .{ .avx2, null, null, null },
26164 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26165 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
39053 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
39054 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
2616639055 .patterns = &.{
26167 .{ .src = .{ .mem, .none } },
26168 .{ .src = .{ .to_sse, .none } },
39056 .{ .src = .{ .mem, .none, .none } },
39057 .{ .src = .{ .to_sse, .none, .none } },
2616939058 },
2617039059 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2617139060 .each = .{ .once = &.{
26172 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },
39061 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
2617339062 } },
2617439063 }, .{
2617539064 .required_features = .{ .avx2, null, null, null },
26176 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26177 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
39065 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
39066 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2617839067 .patterns = &.{
26179 .{ .src = .{ .to_mem, .none } },
39068 .{ .src = .{ .to_mem, .none, .none } },
2618039069 },
2618139070 .extra_temps = .{
2618239071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26183 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
39072 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
2618439073 .unused,
2618539074 .unused,
2618639075 .unused,
......@@ -26193,21 +39082,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2619339082 .clobbers = .{ .eflags = true },
2619439083 .each = .{ .once = &.{
2619539084 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26196 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
26197 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
39085 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
39086 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
39087 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2619939088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2620039089 } },
2620139090 }, .{
2620239091 .required_features = .{ .avx2, null, null, null },
26203 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26204 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
39092 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
39093 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
2620539094 .patterns = &.{
26206 .{ .src = .{ .to_mem, .none } },
39095 .{ .src = .{ .to_mem, .none, .none } },
2620739096 },
2620839097 .extra_temps = .{
2620939098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26210 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
39099 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
2621139100 .unused,
2621239101 .unused,
2621339102 .unused,
......@@ -26220,21 +39109,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2622039109 .clobbers = .{ .eflags = true },
2622139110 .each = .{ .once = &.{
2622239111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26223 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
26224 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26225 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
39112 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
39113 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
39114 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2622639115 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2622739116 } },
2622839117 }, .{
2622939118 .required_features = .{ .avx, null, null, null },
26230 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26231 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
39119 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
39120 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2623239121 .patterns = &.{
26233 .{ .src = .{ .to_mem, .none } },
39122 .{ .src = .{ .to_mem, .none, .none } },
2623439123 },
2623539124 .extra_temps = .{
2623639125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26237 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
39126 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
2623839127 .unused,
2623939128 .unused,
2624039129 .unused,
......@@ -26247,21 +39136,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2624739136 .clobbers = .{ .eflags = true },
2624839137 .each = .{ .once = &.{
2624939138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26250 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26251 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26252 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39139 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39140 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39141 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2625339142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2625439143 } },
2625539144 }, .{
2625639145 .required_features = .{ .avx, null, null, null },
26257 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26258 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
39146 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
39147 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2625939148 .patterns = &.{
26260 .{ .src = .{ .to_mem, .none } },
39149 .{ .src = .{ .to_mem, .none, .none } },
2626139150 },
2626239151 .extra_temps = .{
2626339152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26264 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
39153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
2626539154 .unused,
2626639155 .unused,
2626739156 .unused,
......@@ -26274,21 +39163,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2627439163 .clobbers = .{ .eflags = true },
2627539164 .each = .{ .once = &.{
2627639165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26277 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26278 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26279 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39166 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39167 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39168 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2628039169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2628139170 } },
2628239171 }, .{
2628339172 .required_features = .{ .sse4_1, null, null, null },
26284 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26285 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
39173 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
39174 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2628639175 .patterns = &.{
26287 .{ .src = .{ .to_mem, .none } },
39176 .{ .src = .{ .to_mem, .none, .none } },
2628839177 },
2628939178 .extra_temps = .{
2629039179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26291 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
39180 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
2629239181 .unused,
2629339182 .unused,
2629439183 .unused,
......@@ -26301,21 +39190,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2630139190 .clobbers = .{ .eflags = true },
2630239191 .each = .{ .once = &.{
2630339192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26304 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26305 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26306 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39193 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39194 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39195 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2630739196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2630839197 } },
2630939198 }, .{
2631039199 .required_features = .{ .sse4_1, null, null, null },
26311 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26312 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
39200 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
39201 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2631339202 .patterns = &.{
26314 .{ .src = .{ .to_mem, .none } },
39203 .{ .src = .{ .to_mem, .none, .none } },
2631539204 },
2631639205 .extra_temps = .{
2631739206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26318 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
39207 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
2631939208 .unused,
2632039209 .unused,
2632139210 .unused,
......@@ -26328,21 +39217,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2632839217 .clobbers = .{ .eflags = true },
2632939218 .each = .{ .once = &.{
2633039219 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26331 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26332 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26333 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39220 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39221 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39222 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2633439223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2633539224 } },
2633639225 }, .{
26337 .required_features = .{ .slow_incdec, null, null, null },
26338 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26339 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
39226 .required_features = .{ .@"64bit", .slow_incdec, null, null },
39227 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39228 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2634039229 .patterns = &.{
26341 .{ .src = .{ .to_mem, .none } },
39230 .{ .src = .{ .to_mem, .none, .none } },
2634239231 },
2634339232 .extra_temps = .{
2634439233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26345 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
39234 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2634639235 .unused,
2634739236 .unused,
2634839237 .unused,
......@@ -26355,20 +39244,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2635539244 .clobbers = .{ .eflags = true },
2635639245 .each = .{ .once = &.{
2635739246 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26359 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39247 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39248 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
2636039249 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2636139250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2636239251 } },
2636339252 }, .{
26364 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26365 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
39253 .required_features = .{ .@"64bit", null, null, null },
39254 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39255 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2636639256 .patterns = &.{
26367 .{ .src = .{ .to_mem, .none } },
39257 .{ .src = .{ .to_mem, .none, .none } },
2636839258 },
2636939259 .extra_temps = .{
2637039260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26371 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
39261 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2637239262 .unused,
2637339263 .unused,
2637439264 .unused,
......@@ -26381,21 +39271,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2638139271 .clobbers = .{ .eflags = true },
2638239272 .each = .{ .once = &.{
2638339273 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26384 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26385 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39274 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39275 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
2638639276 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
2638739277 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2638839278 } },
2638939279 }, .{
2639039280 .required_features = .{ .slow_incdec, null, null, null },
26391 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26392 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39281 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39282 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
2639339283 .patterns = &.{
26394 .{ .src = .{ .to_mem, .none } },
39284 .{ .src = .{ .to_mem, .none, .none } },
2639539285 },
2639639286 .extra_temps = .{
2639739287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26398 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39288 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2639939289 .unused,
2640039290 .unused,
2640139291 .unused,
......@@ -26409,19 +39299,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2640939299 .each = .{ .once = &.{
2641039300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2641139301 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26412 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39302 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
2641339303 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2641439304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2641539305 } },
2641639306 }, .{
26417 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26418 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
39307 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39308 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
2641939309 .patterns = &.{
26420 .{ .src = .{ .to_mem, .none } },
39310 .{ .src = .{ .to_mem, .none, .none } },
2642139311 },
2642239312 .extra_temps = .{
2642339313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26424 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
39314 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
2642539315 .unused,
2642639316 .unused,
2642739317 .unused,
......@@ -26435,64 +39325,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2643539325 .each = .{ .once = &.{
2643639326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2643739327 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26438 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
39328 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
2643939329 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
2644039330 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2644139331 } },
2644239332 }, .{
2644339333 .required_features = .{ .avx, null, null, null },
26444 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26445 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39334 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39335 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2644639336 .patterns = &.{
26447 .{ .src = .{ .mem, .none } },
26448 .{ .src = .{ .to_sse, .none } },
39337 .{ .src = .{ .mem, .none, .none } },
39338 .{ .src = .{ .to_sse, .none, .none } },
2644939339 },
2645039340 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2645139341 .each = .{ .once = &.{
26452 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
39342 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
39343 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2645339344 } },
2645439345 }, .{
2645539346 .required_features = .{ .avx, null, null, null },
26456 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26457 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39347 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39348 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2645839349 .patterns = &.{
26459 .{ .src = .{ .mem, .none } },
26460 .{ .src = .{ .to_sse, .none } },
39350 .{ .src = .{ .mem, .none, .none } },
39351 .{ .src = .{ .to_sse, .none, .none } },
2646139352 },
2646239353 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2646339354 .each = .{ .once = &.{
26464 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
39355 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
39356 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2646539357 } },
2646639358 }, .{
2646739359 .required_features = .{ .sse4_1, null, null, null },
26468 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26469 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39360 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39361 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2647039362 .patterns = &.{
26471 .{ .src = .{ .mem, .none } },
26472 .{ .src = .{ .to_sse, .none } },
39363 .{ .src = .{ .mem, .none, .none } },
39364 .{ .src = .{ .to_sse, .none, .none } },
2647339365 },
2647439366 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2647539367 .each = .{ .once = &.{
26476 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
39368 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
39369 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2647739370 } },
2647839371 }, .{
2647939372 .required_features = .{ .sse4_1, null, null, null },
26480 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26481 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39373 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39374 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2648239375 .patterns = &.{
26483 .{ .src = .{ .mem, .none } },
26484 .{ .src = .{ .to_sse, .none } },
39376 .{ .src = .{ .mem, .none, .none } },
39377 .{ .src = .{ .to_sse, .none, .none } },
2648539378 },
2648639379 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2648739380 .each = .{ .once = &.{
26488 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
39381 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
39382 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2648939383 } },
2649039384 }, .{
2649139385 .required_features = .{ .sse2, null, null, null },
26492 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26493 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39386 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39387 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2649439388 .patterns = &.{
26495 .{ .src = .{ .to_mut_sse, .none } },
39389 .{ .src = .{ .to_mut_sse, .none, .none } },
2649639390 },
2649739391 .extra_temps = .{
2649839392 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
......@@ -26512,13 +39406,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2651239406 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2651339407 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
2651439408 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39409 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
39410 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
39411 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
39412 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2651539413 } },
2651639414 }, .{
2651739415 .required_features = .{ .sse2, null, null, null },
26518 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26519 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39416 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39417 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2652039418 .patterns = &.{
26521 .{ .src = .{ .to_mut_sse, .none } },
39419 .{ .src = .{ .to_mut_sse, .none, .none } },
2652239420 },
2652339421 .extra_temps = .{
2652439422 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -26536,43 +39434,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2653639434 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
2653739435 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2653839436 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39437 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
39438 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2653939439 } },
2654039440 }, .{
26541 .required_features = .{ .avx2, null, null, null },
26542 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26543 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
39441 .required_features = .{ .@"64bit", .slow_incdec, null, null },
39442 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39443 .dst_constraints = .{.any_scalar_signed_int},
2654439444 .patterns = &.{
26545 .{ .src = .{ .mem, .none } },
26546 .{ .src = .{ .to_sse, .none } },
39445 .{ .src = .{ .to_mem, .none, .none } },
2654739446 },
26548 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39447 .extra_temps = .{
39448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39449 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39450 .{ .type = .i64, .kind = .{ .reg = .rax } },
39451 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39452 .unused,
39453 .unused,
39454 .unused,
39455 .unused,
39456 .unused,
39457 },
39458 .dst_temps = .{.mem},
39459 .clobbers = .{ .eflags = true },
2654939460 .each = .{ .once = &.{
26550 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
39461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
39462 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
39463 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39464 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39465 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
39466 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
39467 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39468 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
39469 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2655139470 } },
2655239471 }, .{
26553 .required_features = .{ .avx2, null, null, null },
26554 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26555 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
39472 .required_features = .{ .@"64bit", null, null, null },
39473 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39474 .dst_constraints = .{.any_scalar_signed_int},
2655639475 .patterns = &.{
26557 .{ .src = .{ .mem, .none } },
26558 .{ .src = .{ .to_sse, .none } },
39476 .{ .src = .{ .to_mem, .none, .none } },
2655939477 },
26560 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39478 .extra_temps = .{
39479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39480 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39481 .{ .type = .i64, .kind = .{ .reg = .rax } },
39482 .{ .type = .u32, .kind = .{ .reg = .ecx } },
39483 .unused,
39484 .unused,
39485 .unused,
39486 .unused,
39487 .unused,
39488 },
39489 .dst_temps = .{.mem},
39490 .clobbers = .{ .eflags = true },
2656139491 .each = .{ .once = &.{
26562 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
39492 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
39493 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
39494 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39495 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39496 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
39497 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
39498 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39499 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
39500 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2656339501 } },
2656439502 }, .{
26565 .required_features = .{ .avx2, null, null, null },
26566 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26567 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
39503 .required_features = .{ .@"64bit", .slow_incdec, null, null },
39504 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39505 .dst_constraints = .{.any_scalar_int},
2656839506 .patterns = &.{
26569 .{ .src = .{ .to_mem, .none } },
39507 .{ .src = .{ .to_mem, .none, .none } },
2657039508 },
2657139509 .extra_temps = .{
2657239510 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26573 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
26574 .unused,
26575 .unused,
39511 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39512 .{ .type = .u64, .kind = .{ .reg = .rax } },
39513 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2657639514 .unused,
2657739515 .unused,
2657839516 .unused,
......@@ -26583,23 +39521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2658339521 .clobbers = .{ .eflags = true },
2658439522 .each = .{ .once = &.{
2658539523 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26586 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26587 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39524 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
39525 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39526 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39527 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
39528 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
39529 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39530 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2658939531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2659039532 } },
2659139533 }, .{
26592 .required_features = .{ .avx2, null, null, null },
26593 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26594 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
39534 .required_features = .{ .@"64bit", null, null, null },
39535 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39536 .dst_constraints = .{.any_scalar_int},
2659539537 .patterns = &.{
26596 .{ .src = .{ .to_mem, .none } },
39538 .{ .src = .{ .to_mem, .none, .none } },
2659739539 },
2659839540 .extra_temps = .{
2659939541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26600 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
26601 .unused,
26602 .unused,
39542 .{ .type = .usize, .kind = .{ .reg = .rdi } },
39543 .{ .type = .u64, .kind = .{ .reg = .rax } },
39544 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2660339545 .unused,
2660439546 .unused,
2660539547 .unused,
......@@ -26610,21 +39552,144 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2661039552 .clobbers = .{ .eflags = true },
2661139553 .each = .{ .once = &.{
2661239554 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26613 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
26614 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26615 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26616 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39555 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
39556 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
39557 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
39558 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
39559 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
39560 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
39561 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
39562 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2661739563 } },
2661839564 }, .{
2661939565 .required_features = .{ .avx, null, null, null },
26620 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26621 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39566 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
39567 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39568 .patterns = &.{
39569 .{ .src = .{ .mem, .none, .none } },
39570 .{ .src = .{ .to_sse, .none, .none } },
39571 },
39572 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39573 .each = .{ .once = &.{
39574 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
39575 } },
39576 }, .{
39577 .required_features = .{ .avx, null, null, null },
39578 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
39579 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39580 .patterns = &.{
39581 .{ .src = .{ .mem, .none, .none } },
39582 .{ .src = .{ .to_sse, .none, .none } },
39583 },
39584 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39585 .each = .{ .once = &.{
39586 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
39587 } },
39588 }, .{
39589 .required_features = .{ .sse4_1, null, null, null },
39590 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
39591 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39592 .patterns = &.{
39593 .{ .src = .{ .mem, .none, .none } },
39594 .{ .src = .{ .to_sse, .none, .none } },
39595 },
39596 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39597 .each = .{ .once = &.{
39598 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
39599 } },
39600 }, .{
39601 .required_features = .{ .sse4_1, null, null, null },
39602 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
39603 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39604 .patterns = &.{
39605 .{ .src = .{ .mem, .none, .none } },
39606 .{ .src = .{ .to_sse, .none, .none } },
39607 },
39608 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39609 .each = .{ .once = &.{
39610 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
39611 } },
39612 }, .{
39613 .required_features = .{ .sse2, null, null, null },
39614 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
39615 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
39616 .patterns = &.{
39617 .{ .src = .{ .to_mut_sse, .none, .none } },
39618 },
39619 .extra_temps = .{
39620 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
39621 .unused,
39622 .unused,
39623 .unused,
39624 .unused,
39625 .unused,
39626 .unused,
39627 .unused,
39628 .unused,
39629 },
39630 .dst_temps = .{.{ .ref = .src0 }},
39631 .each = .{ .once = &.{
39632 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
39633 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
39634 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39635 } },
39636 }, .{
39637 .required_features = .{ .sse2, null, null, null },
39638 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
39639 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
39640 .patterns = &.{
39641 .{ .src = .{ .to_mut_sse, .none, .none } },
39642 },
39643 .extra_temps = .{
39644 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
39645 .unused,
39646 .unused,
39647 .unused,
39648 .unused,
39649 .unused,
39650 .unused,
39651 .unused,
39652 .unused,
39653 },
39654 .dst_temps = .{.{ .ref = .src0 }},
39655 .each = .{ .once = &.{
39656 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
39657 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39658 } },
39659 }, .{
39660 .required_features = .{ .avx2, null, null, null },
39661 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
39662 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
39663 .patterns = &.{
39664 .{ .src = .{ .mem, .none, .none } },
39665 .{ .src = .{ .to_sse, .none, .none } },
39666 },
39667 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39668 .each = .{ .once = &.{
39669 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
39670 } },
39671 }, .{
39672 .required_features = .{ .avx2, null, null, null },
39673 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
39674 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
39675 .patterns = &.{
39676 .{ .src = .{ .mem, .none, .none } },
39677 .{ .src = .{ .to_sse, .none, .none } },
39678 },
39679 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
39680 .each = .{ .once = &.{
39681 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
39682 } },
39683 }, .{
39684 .required_features = .{ .avx2, null, null, null },
39685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
39686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
2662239687 .patterns = &.{
26623 .{ .src = .{ .to_mem, .none } },
39688 .{ .src = .{ .to_mem, .none, .none } },
2662439689 },
2662539690 .extra_temps = .{
2662639691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26627 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
39692 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
2662839693 .unused,
2662939694 .unused,
2663039695 .unused,
......@@ -26637,21 +39702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2663739702 .clobbers = .{ .eflags = true },
2663839703 .each = .{ .once = &.{
2663939704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26640 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26641 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39705 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
39706 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
39707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2664339708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2664439709 } },
2664539710 }, .{
26646 .required_features = .{ .avx, null, null, null },
26647 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26648 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
39711 .required_features = .{ .avx2, null, null, null },
39712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
39713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
2664939714 .patterns = &.{
26650 .{ .src = .{ .to_mem, .none } },
39715 .{ .src = .{ .to_mem, .none, .none } },
2665139716 },
2665239717 .extra_temps = .{
2665339718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26654 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
39719 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
2665539720 .unused,
2665639721 .unused,
2665739722 .unused,
......@@ -26664,17 +39729,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2666439729 .clobbers = .{ .eflags = true },
2666539730 .each = .{ .once = &.{
2666639731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26667 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26668 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26669 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39732 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
39733 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
39734 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2667039735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2667139736 } },
2667239737 }, .{
26673 .required_features = .{ .sse4_1, null, null, null },
26674 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
39738 .required_features = .{ .avx, null, null, null },
39739 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
2667539740 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2667639741 .patterns = &.{
26677 .{ .src = .{ .to_mem, .none } },
39742 .{ .src = .{ .to_mem, .none, .none } },
2667839743 },
2667939744 .extra_temps = .{
2668039745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -26691,17 +39756,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2669139756 .clobbers = .{ .eflags = true },
2669239757 .each = .{ .once = &.{
2669339758 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26694 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26695 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26696 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39759 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
39760 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39761 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2669739762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2669839763 } },
2669939764 }, .{
26700 .required_features = .{ .sse4_1, null, null, null },
26701 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
39765 .required_features = .{ .avx, null, null, null },
39766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
2670239767 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
2670339768 .patterns = &.{
26704 .{ .src = .{ .to_mem, .none } },
39769 .{ .src = .{ .to_mem, .none, .none } },
2670539770 },
2670639771 .extra_temps = .{
2670739772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -26718,21 +39783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2671839783 .clobbers = .{ .eflags = true },
2671939784 .each = .{ .once = &.{
2672039785 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26721 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26722 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26723 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
39786 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
39787 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39788 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2672439789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2672539790 } },
2672639791 }, .{
26727 .required_features = .{ .slow_incdec, null, null, null },
26728 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26729 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
39792 .required_features = .{ .sse4_1, null, null, null },
39793 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
39794 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
2673039795 .patterns = &.{
26731 .{ .src = .{ .to_mem, .none } },
39796 .{ .src = .{ .to_mem, .none, .none } },
2673239797 },
2673339798 .extra_temps = .{
2673439799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26735 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
39800 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
2673639801 .unused,
2673739802 .unused,
2673839803 .unused,
......@@ -26745,20 +39810,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2674539810 .clobbers = .{ .eflags = true },
2674639811 .each = .{ .once = &.{
2674739812 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26748 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26749 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26750 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
39813 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
39814 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2675139816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2675239817 } },
2675339818 }, .{
26754 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26755 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
39819 .required_features = .{ .sse4_1, null, null, null },
39820 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
39821 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
2675639822 .patterns = &.{
26757 .{ .src = .{ .to_mem, .none } },
39823 .{ .src = .{ .to_mem, .none, .none } },
2675839824 },
2675939825 .extra_temps = .{
2676039826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26761 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
39827 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
2676239828 .unused,
2676339829 .unused,
2676439830 .unused,
......@@ -26771,21 +39837,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2677139837 .clobbers = .{ .eflags = true },
2677239838 .each = .{ .once = &.{
2677339839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26774 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26775 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26776 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26777 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
39840 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
39841 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
39842 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
39843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2677839844 } },
2677939845 }, .{
26780 .required_features = .{ .slow_incdec, null, null, null },
26781 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26782 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
39846 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
39847 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
2678339848 .patterns = &.{
26784 .{ .src = .{ .to_mem, .none } },
39849 .{ .src = .{ .to_mem, .none, .none } },
2678539850 },
2678639851 .extra_temps = .{
2678739852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26788 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
39853 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
2678939854 .unused,
2679039855 .unused,
2679139856 .unused,
......@@ -26798,16 +39863,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2679839863 .clobbers = .{ .eflags = true },
2679939864 .each = .{ .once = &.{
2680039865 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26801 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26802 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26803 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
39866 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39867 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
39868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2680439869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2680539870 } },
2680639871 }, .{
26807 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
39872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2680839873 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
2680939874 .patterns = &.{
26810 .{ .src = .{ .to_mem, .none } },
39875 .{ .src = .{ .to_mem, .none, .none } },
2681139876 },
2681239877 .extra_temps = .{
2681339878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -26824,68 +39889,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2682439889 .clobbers = .{ .eflags = true },
2682539890 .each = .{ .once = &.{
2682639891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26827 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26828 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26829 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26830 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
39892 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
39893 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
39894 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
39895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2683139896 } },
2683239897 }, .{
2683339898 .required_features = .{ .avx, null, null, null },
26834 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
39899 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
2683539900 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2683639901 .patterns = &.{
26837 .{ .src = .{ .mem, .none } },
26838 .{ .src = .{ .to_sse, .none } },
39902 .{ .src = .{ .mem, .none, .none } },
39903 .{ .src = .{ .to_sse, .none, .none } },
2683939904 },
2684039905 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2684139906 .each = .{ .once = &.{
26842 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
39907 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
2684339908 } },
2684439909 }, .{
2684539910 .required_features = .{ .avx, null, null, null },
26846 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
39911 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
2684739912 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2684839913 .patterns = &.{
26849 .{ .src = .{ .mem, .none } },
26850 .{ .src = .{ .to_sse, .none } },
39914 .{ .src = .{ .mem, .none, .none } },
39915 .{ .src = .{ .to_sse, .none, .none } },
2685139916 },
2685239917 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2685339918 .each = .{ .once = &.{
26854 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
39919 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
2685539920 } },
2685639921 }, .{
2685739922 .required_features = .{ .sse4_1, null, null, null },
26858 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
39923 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
2685939924 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2686039925 .patterns = &.{
26861 .{ .src = .{ .mem, .none } },
26862 .{ .src = .{ .to_sse, .none } },
39926 .{ .src = .{ .mem, .none, .none } },
39927 .{ .src = .{ .to_sse, .none, .none } },
2686339928 },
2686439929 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2686539930 .each = .{ .once = &.{
26866 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
39931 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
2686739932 } },
2686839933 }, .{
2686939934 .required_features = .{ .sse4_1, null, null, null },
26870 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
39935 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
2687139936 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2687239937 .patterns = &.{
26873 .{ .src = .{ .mem, .none } },
26874 .{ .src = .{ .to_sse, .none } },
39938 .{ .src = .{ .mem, .none, .none } },
39939 .{ .src = .{ .to_sse, .none, .none } },
2687539940 },
2687639941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2687739942 .each = .{ .once = &.{
26878 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
39943 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
2687939944 } },
2688039945 }, .{
2688139946 .required_features = .{ .sse2, null, null, null },
26882 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
39947 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
2688339948 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2688439949 .patterns = &.{
26885 .{ .src = .{ .to_mut_sse, .none } },
39950 .{ .src = .{ .to_mut_sse, .none, .none } },
2688639951 },
2688739952 .extra_temps = .{
26888 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
39953 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
2688939954 .unused,
2689039955 .unused,
2689139956 .unused,
......@@ -26898,22 +39963,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2689839963 .dst_temps = .{.{ .ref = .src0 }},
2689939964 .each = .{ .once = &.{
2690039965 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26901 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26902 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26903 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
39966 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
2690439967 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2690539968 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
2690639969 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2690739970 } },
2690839971 }, .{
2690939972 .required_features = .{ .sse2, null, null, null },
26910 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
39973 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
2691139974 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2691239975 .patterns = &.{
26913 .{ .src = .{ .to_mut_sse, .none } },
39976 .{ .src = .{ .to_mut_sse, .none, .none } },
2691439977 },
2691539978 .extra_temps = .{
26916 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
39979 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
2691739980 .unused,
2691839981 .unused,
2691939982 .unused,
......@@ -26926,40 +39989,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2692639989 .dst_temps = .{.{ .ref = .src0 }},
2692739990 .each = .{ .once = &.{
2692839991 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26929 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2693039992 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2693139993 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2693239994 } },
2693339995 }, .{
2693439996 .required_features = .{ .avx2, null, null, null },
26935 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
39997 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
2693639998 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2693739999 .patterns = &.{
26938 .{ .src = .{ .mem, .none } },
26939 .{ .src = .{ .to_sse, .none } },
40000 .{ .src = .{ .mem, .none, .none } },
40001 .{ .src = .{ .to_sse, .none, .none } },
2694040002 },
2694140003 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2694240004 .each = .{ .once = &.{
26943 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
40005 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
2694440006 } },
2694540007 }, .{
2694640008 .required_features = .{ .avx2, null, null, null },
26947 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
40009 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
2694840010 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
2694940011 .patterns = &.{
26950 .{ .src = .{ .mem, .none } },
26951 .{ .src = .{ .to_sse, .none } },
40012 .{ .src = .{ .mem, .none, .none } },
40013 .{ .src = .{ .to_sse, .none, .none } },
2695240014 },
2695340015 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2695440016 .each = .{ .once = &.{
26955 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
40017 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
2695640018 } },
2695740019 }, .{
2695840020 .required_features = .{ .avx2, null, null, null },
26959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
40021 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
2696040022 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2696140023 .patterns = &.{
26962 .{ .src = .{ .to_mem, .none } },
40024 .{ .src = .{ .to_mem, .none, .none } },
2696340025 },
2696440026 .extra_temps = .{
2696540027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -26976,17 +40038,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2697640038 .clobbers = .{ .eflags = true },
2697740039 .each = .{ .once = &.{
2697840040 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26979 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26980 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40041 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40042 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2698240044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2698340045 } },
2698440046 }, .{
2698540047 .required_features = .{ .avx2, null, null, null },
26986 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
40048 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
2698740049 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
2698840050 .patterns = &.{
26989 .{ .src = .{ .to_mem, .none } },
40051 .{ .src = .{ .to_mem, .none, .none } },
2699040052 },
2699140053 .extra_temps = .{
2699240054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27003,17 +40065,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2700340065 .clobbers = .{ .eflags = true },
2700440066 .each = .{ .once = &.{
2700540067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27006 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27007 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27008 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
40068 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40069 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
40070 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2700940071 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2701040072 } },
2701140073 }, .{
2701240074 .required_features = .{ .avx, null, null, null },
27013 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
40075 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
2701440076 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2701540077 .patterns = &.{
27016 .{ .src = .{ .to_mem, .none } },
40078 .{ .src = .{ .to_mem, .none, .none } },
2701740079 },
2701840080 .extra_temps = .{
2701940081 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27030,17 +40092,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2703040092 .clobbers = .{ .eflags = true },
2703140093 .each = .{ .once = &.{
2703240094 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27033 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27034 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27035 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40095 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40096 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40097 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2703640098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2703740099 } },
2703840100 }, .{
2703940101 .required_features = .{ .avx, null, null, null },
27040 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
40102 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
2704140103 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2704240104 .patterns = &.{
27043 .{ .src = .{ .to_mem, .none } },
40105 .{ .src = .{ .to_mem, .none, .none } },
2704440106 },
2704540107 .extra_temps = .{
2704640108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27057,17 +40119,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2705740119 .clobbers = .{ .eflags = true },
2705840120 .each = .{ .once = &.{
2705940121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27060 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27061 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27062 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40122 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40123 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40124 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2706340125 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2706440126 } },
2706540127 }, .{
2706640128 .required_features = .{ .sse4_1, null, null, null },
27067 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
40129 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
2706840130 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2706940131 .patterns = &.{
27070 .{ .src = .{ .to_mem, .none } },
40132 .{ .src = .{ .to_mem, .none, .none } },
2707140133 },
2707240134 .extra_temps = .{
2707340135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27084,17 +40146,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2708440146 .clobbers = .{ .eflags = true },
2708540147 .each = .{ .once = &.{
2708640148 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27087 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27088 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27089 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40149 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40150 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40151 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2709040152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2709140153 } },
2709240154 }, .{
2709340155 .required_features = .{ .sse4_1, null, null, null },
27094 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
40156 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
2709540157 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2709640158 .patterns = &.{
27097 .{ .src = .{ .to_mem, .none } },
40159 .{ .src = .{ .to_mem, .none, .none } },
2709840160 },
2709940161 .extra_temps = .{
2710040162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27111,44 +40173,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2711140173 .clobbers = .{ .eflags = true },
2711240174 .each = .{ .once = &.{
2711340175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27114 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27115 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27116 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27117 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27118 } },
27119 }, .{
27120 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27121 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27122 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27123 .patterns = &.{
27124 .{ .src = .{ .to_mem, .none } },
27125 },
27126 .extra_temps = .{
27127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27128 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27129 .unused,
27130 .unused,
27131 .unused,
27132 .unused,
27133 .unused,
27134 .unused,
27135 .unused,
27136 },
27137 .dst_temps = .{.mem},
27138 .clobbers = .{ .eflags = true },
27139 .each = .{ .once = &.{
27140 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27141 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27142 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27143 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40176 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40177 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
40178 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2714440179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2714540180 } },
2714640181 }, .{
2714740182 .required_features = .{ .@"64bit", null, null, null },
27148 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
40183 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
2714940184 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2715040185 .patterns = &.{
27151 .{ .src = .{ .to_mem, .none } },
40186 .{ .src = .{ .to_mem, .none, .none } },
2715240187 },
2715340188 .extra_temps = .{
2715440189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27164,48 +40199,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2716440199 .dst_temps = .{.mem},
2716540200 .clobbers = .{ .eflags = true },
2716640201 .each = .{ .once = &.{
27167 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27168 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27169 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27170 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27171 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27172 } },
27173 }, .{
27174 .required_features = .{ .slow_incdec, null, null, null },
27175 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27176 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
27177 .patterns = &.{
27178 .{ .src = .{ .to_mem, .none } },
27179 },
27180 .extra_temps = .{
27181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27182 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27183 .unused,
27184 .unused,
27185 .unused,
27186 .unused,
27187 .unused,
27188 .unused,
27189 .unused,
27190 },
27191 .dst_temps = .{.mem},
27192 .clobbers = .{ .eflags = true },
27193 .each = .{ .once = &.{
27194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27195 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27196 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27197 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
40203 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
40204 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
40205 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2719840206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2719940207 } },
2720040208 }, .{
27201 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
40209 .required_features = .{ .@"64bit", null, null, null },
40210 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2720240211 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
2720340212 .patterns = &.{
27204 .{ .src = .{ .to_mem, .none } },
40213 .{ .src = .{ .to_mem, .none, .none } },
2720540214 },
2720640215 .extra_temps = .{
2720740216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27208 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40217 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2720940218 .unused,
2721040219 .unused,
2721140220 .unused,
......@@ -27218,72 +40227,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2721840227 .clobbers = .{ .eflags = true },
2721940228 .each = .{ .once = &.{
2722040229 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27221 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27222 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27223 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27224 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40230 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
40231 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
40232 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2722540234 } },
2722640235 }, .{
2722740236 .required_features = .{ .avx, null, null, null },
27228 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
40237 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
2722940238 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2723040239 .patterns = &.{
27231 .{ .src = .{ .mem, .none } },
27232 .{ .src = .{ .to_sse, .none } },
40240 .{ .src = .{ .mem, .none, .none } },
40241 .{ .src = .{ .to_sse, .none, .none } },
2723340242 },
2723440243 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2723540244 .each = .{ .once = &.{
27236 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
40245 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
2723740246 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2723840247 } },
2723940248 }, .{
2724040249 .required_features = .{ .avx, null, null, null },
27241 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
40250 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2724240251 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2724340252 .patterns = &.{
27244 .{ .src = .{ .mem, .none } },
27245 .{ .src = .{ .to_sse, .none } },
40253 .{ .src = .{ .mem, .none, .none } },
40254 .{ .src = .{ .to_sse, .none, .none } },
2724640255 },
2724740256 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2724840257 .each = .{ .once = &.{
27249 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
40258 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
2725040259 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2725140260 } },
2725240261 }, .{
2725340262 .required_features = .{ .sse4_1, null, null, null },
27254 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
40263 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
2725540264 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2725640265 .patterns = &.{
27257 .{ .src = .{ .mem, .none } },
27258 .{ .src = .{ .to_sse, .none } },
40266 .{ .src = .{ .mem, .none, .none } },
40267 .{ .src = .{ .to_sse, .none, .none } },
2725940268 },
2726040269 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2726140270 .each = .{ .once = &.{
27262 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
40271 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
2726340272 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2726440273 } },
2726540274 }, .{
2726640275 .required_features = .{ .sse4_1, null, null, null },
27267 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
40276 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2726840277 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2726940278 .patterns = &.{
27270 .{ .src = .{ .mem, .none } },
27271 .{ .src = .{ .to_sse, .none } },
40279 .{ .src = .{ .mem, .none, .none } },
40280 .{ .src = .{ .to_sse, .none, .none } },
2727240281 },
2727340282 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2727440283 .each = .{ .once = &.{
27275 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
40284 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
2727640285 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2727740286 } },
2727840287 }, .{
2727940288 .required_features = .{ .sse2, null, null, null },
27280 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
40289 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
2728140290 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2728240291 .patterns = &.{
27283 .{ .src = .{ .to_mut_sse, .none } },
40292 .{ .src = .{ .to_mut_sse, .none, .none } },
2728440293 },
2728540294 .extra_temps = .{
27286 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
40295 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
2728740296 .unused,
2728840297 .unused,
2728940298 .unused,
......@@ -27296,9 +40305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2729640305 .dst_temps = .{.{ .ref = .src0 }},
2729740306 .each = .{ .once = &.{
2729840307 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27299 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
27300 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27301 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
40308 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
2730240309 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2730340310 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
2730440311 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
......@@ -27307,13 +40314,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2730740314 } },
2730840315 }, .{
2730940316 .required_features = .{ .sse2, null, null, null },
27310 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
40317 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2731140318 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2731240319 .patterns = &.{
27313 .{ .src = .{ .to_mut_sse, .none } },
40320 .{ .src = .{ .to_mut_sse, .none, .none } },
2731440321 },
2731540322 .extra_temps = .{
27316 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
40323 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
2731740324 .unused,
2731840325 .unused,
2731940326 .unused,
......@@ -27326,48 +40333,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2732640333 .dst_temps = .{.{ .ref = .src0 }},
2732740334 .each = .{ .once = &.{
2732840335 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27329 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
2733040336 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2733140337 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2733240338 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2733340339 } },
27334 }, .{
27335 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27336 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27337 .dst_constraints = .{.any_scalar_signed_int},
27338 .patterns = &.{
27339 .{ .src = .{ .to_mem, .none } },
27340 },
27341 .extra_temps = .{
27342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27343 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27344 .{ .type = .i64, .kind = .{ .reg = .rax } },
27345 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27346 .unused,
27347 .unused,
27348 .unused,
27349 .unused,
27350 .unused,
27351 },
27352 .dst_temps = .{.mem},
27353 .clobbers = .{ .eflags = true },
27354 .each = .{ .once = &.{
27355 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27356 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27357 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27358 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27359 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27360 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27361 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27362 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27364 } },
2736540340 }, .{
2736640341 .required_features = .{ .@"64bit", null, null, null },
27367 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
40342 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
2736840343 .dst_constraints = .{.any_scalar_signed_int},
2736940344 .patterns = &.{
27370 .{ .src = .{ .to_mem, .none } },
40345 .{ .src = .{ .to_mem, .none, .none } },
2737140346 },
2737240347 .extra_temps = .{
2737340348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27385,51 +40360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2738540360 .each = .{ .once = &.{
2738640361 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2738740362 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27388 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40363 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
2738940364 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
2739040365 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
2739140366 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
2739240367 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27393 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27394 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27395 } },
27396 }, .{
27397 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27398 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27399 .dst_constraints = .{.any_scalar_int},
27400 .patterns = &.{
27401 .{ .src = .{ .to_mem, .none } },
27402 },
27403 .extra_temps = .{
27404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27405 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27406 .{ .type = .u64, .kind = .{ .reg = .rax } },
27407 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27408 .unused,
27409 .unused,
27410 .unused,
27411 .unused,
27412 .unused,
27413 },
27414 .dst_temps = .{.mem},
27415 .clobbers = .{ .eflags = true },
27416 .each = .{ .once = &.{
27417 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27418 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27419 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27420 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27421 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27422 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27423 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27424 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
40368 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
2742540369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2742640370 } },
2742740371 }, .{
2742840372 .required_features = .{ .@"64bit", null, null, null },
27429 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
40373 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
2743040374 .dst_constraints = .{.any_scalar_int},
2743140375 .patterns = &.{
27432 .{ .src = .{ .to_mem, .none } },
40376 .{ .src = .{ .to_mem, .none, .none } },
2743340377 },
2743440378 .extra_temps = .{
2743540379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -27447,71 +40391,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2744740391 .each = .{ .once = &.{
2744840392 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2744940393 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27450 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
40394 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
2745140395 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
2745240396 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
2745340397 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
2745440398 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27455 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27456 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
40399 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2745740401 } },
2745840402 }, .{
2745940403 .required_features = .{ .avx, null, null, null },
27460 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27461 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40404 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40405 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2746240406 .patterns = &.{
27463 .{ .src = .{ .mem, .none } },
27464 .{ .src = .{ .to_sse, .none } },
40407 .{ .src = .{ .mem, .none, .none } },
40408 .{ .src = .{ .to_sse, .none, .none } },
2746540409 },
2746640410 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2746740411 .each = .{ .once = &.{
27468 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
40412 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
2746940413 } },
2747040414 }, .{
2747140415 .required_features = .{ .avx, null, null, null },
27472 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27473 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40416 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40417 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2747440418 .patterns = &.{
27475 .{ .src = .{ .mem, .none } },
27476 .{ .src = .{ .to_sse, .none } },
40419 .{ .src = .{ .mem, .none, .none } },
40420 .{ .src = .{ .to_sse, .none, .none } },
2747740421 },
2747840422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2747940423 .each = .{ .once = &.{
27480 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
40424 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
2748140425 } },
2748240426 }, .{
2748340427 .required_features = .{ .sse4_1, null, null, null },
27484 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27485 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40428 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40429 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2748640430 .patterns = &.{
27487 .{ .src = .{ .mem, .none } },
27488 .{ .src = .{ .to_sse, .none } },
40431 .{ .src = .{ .mem, .none, .none } },
40432 .{ .src = .{ .to_sse, .none, .none } },
2748940433 },
2749040434 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2749140435 .each = .{ .once = &.{
27492 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
40436 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
2749340437 } },
2749440438 }, .{
2749540439 .required_features = .{ .sse4_1, null, null, null },
27496 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27497 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40440 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40441 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2749840442 .patterns = &.{
27499 .{ .src = .{ .mem, .none } },
27500 .{ .src = .{ .to_sse, .none } },
40443 .{ .src = .{ .mem, .none, .none } },
40444 .{ .src = .{ .to_sse, .none, .none } },
2750140445 },
2750240446 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2750340447 .each = .{ .once = &.{
27504 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
40448 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
2750540449 } },
2750640450 }, .{
2750740451 .required_features = .{ .sse2, null, null, null },
27508 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27509 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40452 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40453 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2751040454 .patterns = &.{
27511 .{ .src = .{ .to_mut_sse, .none } },
40455 .{ .src = .{ .to_mut_sse, .none, .none } },
2751240456 },
2751340457 .extra_temps = .{
27514 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
40458 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
2751540459 .unused,
2751640460 .unused,
2751740461 .unused,
......@@ -27524,18 +40468,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2752440468 .dst_temps = .{.{ .ref = .src0 }},
2752540469 .each = .{ .once = &.{
2752640470 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27527 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27528 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40471 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
40472 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2752940473 } },
2753040474 }, .{
2753140475 .required_features = .{ .sse2, null, null, null },
27532 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27533 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
40476 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40477 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
2753440478 .patterns = &.{
27535 .{ .src = .{ .to_mut_sse, .none } },
40479 .{ .src = .{ .to_mut_sse, .none, .none } },
2753640480 },
2753740481 .extra_temps = .{
27538 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
40482 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
2753940483 .unused,
2754040484 .unused,
2754140485 .unused,
......@@ -27548,42 +40492,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2754840492 .dst_temps = .{.{ .ref = .src0 }},
2754940493 .each = .{ .once = &.{
2755040494 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27551 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
40495 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
2755240496 } },
2755340497 }, .{
2755440498 .required_features = .{ .avx2, null, null, null },
27555 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27556 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
40499 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
40500 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2755740501 .patterns = &.{
27558 .{ .src = .{ .mem, .none } },
27559 .{ .src = .{ .to_sse, .none } },
40502 .{ .src = .{ .mem, .none, .none } },
40503 .{ .src = .{ .to_sse, .none, .none } },
2756040504 },
2756140505 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2756240506 .each = .{ .once = &.{
27563 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
40507 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
2756440508 } },
2756540509 }, .{
2756640510 .required_features = .{ .avx2, null, null, null },
27567 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
27568 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
40511 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
40512 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
2756940513 .patterns = &.{
27570 .{ .src = .{ .mem, .none } },
27571 .{ .src = .{ .to_sse, .none } },
40514 .{ .src = .{ .mem, .none, .none } },
40515 .{ .src = .{ .to_sse, .none, .none } },
2757240516 },
2757340517 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2757440518 .each = .{ .once = &.{
27575 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
40519 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
2757640520 } },
2757740521 }, .{
2757840522 .required_features = .{ .avx2, null, null, null },
27579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
40523 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
40524 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
2758140525 .patterns = &.{
27582 .{ .src = .{ .to_mem, .none } },
40526 .{ .src = .{ .to_mem, .none, .none } },
2758340527 },
2758440528 .extra_temps = .{
2758540529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27586 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
40530 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
2758740531 .unused,
2758840532 .unused,
2758940533 .unused,
......@@ -27596,21 +40540,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2759640540 .clobbers = .{ .eflags = true },
2759740541 .each = .{ .once = &.{
2759840542 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27599 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
40543 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2760040544 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2760140545 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2760240546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2760340547 } },
2760440548 }, .{
2760540549 .required_features = .{ .avx2, null, null, null },
27606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
27607 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
40550 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
40551 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
2760840552 .patterns = &.{
27609 .{ .src = .{ .to_mem, .none } },
40553 .{ .src = .{ .to_mem, .none, .none } },
2761040554 },
2761140555 .extra_temps = .{
2761240556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27613 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
40557 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
2761440558 .unused,
2761540559 .unused,
2761640560 .unused,
......@@ -27623,21 +40567,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2762340567 .clobbers = .{ .eflags = true },
2762440568 .each = .{ .once = &.{
2762540569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27626 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
40570 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2762740571 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2762840572 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2762940573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2763040574 } },
2763140575 }, .{
2763240576 .required_features = .{ .avx, null, null, null },
27633 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27634 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40577 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40578 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2763540579 .patterns = &.{
27636 .{ .src = .{ .to_mem, .none } },
40580 .{ .src = .{ .to_mem, .none, .none } },
2763740581 },
2763840582 .extra_temps = .{
2763940583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27640 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
40584 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
2764140585 .unused,
2764240586 .unused,
2764340587 .unused,
......@@ -27650,21 +40594,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2765040594 .clobbers = .{ .eflags = true },
2765140595 .each = .{ .once = &.{
2765240596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27653 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40597 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2765440598 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2765540599 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2765640600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2765740601 } },
2765840602 }, .{
2765940603 .required_features = .{ .avx, null, null, null },
27660 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27661 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
40604 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
40605 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2766240606 .patterns = &.{
27663 .{ .src = .{ .to_mem, .none } },
40607 .{ .src = .{ .to_mem, .none, .none } },
2766440608 },
2766540609 .extra_temps = .{
2766640610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27667 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
40611 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
2766840612 .unused,
2766940613 .unused,
2767040614 .unused,
......@@ -27677,21 +40621,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2767740621 .clobbers = .{ .eflags = true },
2767840622 .each = .{ .once = &.{
2767940623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27680 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40624 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2768140625 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2768240626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2768340627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2768440628 } },
2768540629 }, .{
2768640630 .required_features = .{ .sse4_1, null, null, null },
27687 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27688 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
40631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
2768940633 .patterns = &.{
27690 .{ .src = .{ .to_mem, .none } },
40634 .{ .src = .{ .to_mem, .none, .none } },
2769140635 },
2769240636 .extra_temps = .{
2769340637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27694 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
40638 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
2769540639 .unused,
2769640640 .unused,
2769740641 .unused,
......@@ -27704,21 +40648,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2770440648 .clobbers = .{ .eflags = true },
2770540649 .each = .{ .once = &.{
2770640650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27707 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40651 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2770840652 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2770940653 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2771040654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2771140655 } },
2771240656 }, .{
2771340657 .required_features = .{ .sse4_1, null, null, null },
27714 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27715 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
40658 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
40659 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
2771640660 .patterns = &.{
27717 .{ .src = .{ .to_mem, .none } },
40661 .{ .src = .{ .to_mem, .none, .none } },
2771840662 },
2771940663 .extra_temps = .{
2772040664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27721 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
40665 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
2772240666 .unused,
2772340667 .unused,
2772440668 .unused,
......@@ -27731,20 +40675,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2773140675 .clobbers = .{ .eflags = true },
2773240676 .each = .{ .once = &.{
2773340677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27734 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
40678 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
2773540679 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
2773640680 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
2773740681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2773840682 } },
2773940683 }, .{
27740 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
27741 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
40684 .required_features = .{ .@"64bit", null, null, null },
40685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
2774240687 .patterns = &.{
27743 .{ .src = .{ .to_mem, .none } },
40688 .{ .src = .{ .to_mem, .none, .none } },
2774440689 },
2774540690 .extra_temps = .{
2774640691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27747 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
40692 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
2774840693 .unused,
2774940694 .unused,
2775040695 .unused,
......@@ -27757,20 +40702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2775740702 .clobbers = .{ .eflags = true },
2775840703 .each = .{ .once = &.{
2775940704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27760 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27761 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27762 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40705 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40706 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
40707 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2776340708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2776440709 } },
2776540710 }, .{
27766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
27767 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
40711 .required_features = .{ .@"64bit", null, null, null },
40712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
2776840714 .patterns = &.{
27769 .{ .src = .{ .to_mem, .none } },
40715 .{ .src = .{ .to_mem, .none, .none } },
2777040716 },
2777140717 .extra_temps = .{
2777240718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40719 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
2777440720 .unused,
2777540721 .unused,
2777640722 .unused,
......@@ -27783,68 +40729,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2778340729 .clobbers = .{ .eflags = true },
2778440730 .each = .{ .once = &.{
2778540731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27786 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27787 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27788 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
40732 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40733 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
40734 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2778940735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2779040736 } },
2779140737 }, .{
2779240738 .required_features = .{ .avx, null, null, null },
27793 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27794 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40739 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40740 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2779540741 .patterns = &.{
27796 .{ .src = .{ .mem, .none } },
27797 .{ .src = .{ .to_sse, .none } },
40742 .{ .src = .{ .mem, .none, .none } },
40743 .{ .src = .{ .to_sse, .none, .none } },
2779840744 },
2779940745 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2780040746 .each = .{ .once = &.{
27801 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
40747 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
40748 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2780240749 } },
2780340750 }, .{
2780440751 .required_features = .{ .avx, null, null, null },
27805 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27806 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40752 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40753 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2780740754 .patterns = &.{
27808 .{ .src = .{ .mem, .none } },
27809 .{ .src = .{ .to_sse, .none } },
40755 .{ .src = .{ .mem, .none, .none } },
40756 .{ .src = .{ .to_sse, .none, .none } },
2781040757 },
2781140758 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2781240759 .each = .{ .once = &.{
27813 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
40760 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
40761 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2781440762 } },
2781540763 }, .{
2781640764 .required_features = .{ .sse4_1, null, null, null },
27817 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27818 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40765 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40766 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2781940767 .patterns = &.{
27820 .{ .src = .{ .mem, .none } },
27821 .{ .src = .{ .to_sse, .none } },
40768 .{ .src = .{ .mem, .none, .none } },
40769 .{ .src = .{ .to_sse, .none, .none } },
2782240770 },
2782340771 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2782440772 .each = .{ .once = &.{
27825 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
40773 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
40774 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
2782640775 } },
2782740776 }, .{
2782840777 .required_features = .{ .sse4_1, null, null, null },
27829 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27830 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40778 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40779 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2783140780 .patterns = &.{
27832 .{ .src = .{ .mem, .none } },
27833 .{ .src = .{ .to_sse, .none } },
40781 .{ .src = .{ .mem, .none, .none } },
40782 .{ .src = .{ .to_sse, .none, .none } },
2783440783 },
2783540784 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2783640785 .each = .{ .once = &.{
27837 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
40786 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
40787 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
2783840788 } },
2783940789 }, .{
2784040790 .required_features = .{ .sse2, null, null, null },
27841 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27842 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40792 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
2784340793 .patterns = &.{
27844 .{ .src = .{ .to_mut_sse, .none } },
40794 .{ .src = .{ .to_mut_sse, .none, .none } },
2784540795 },
2784640796 .extra_temps = .{
27847 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
40797 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
2784840798 .unused,
2784940799 .unused,
2785040800 .unused,
......@@ -27857,20 +40807,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2785740807 .dst_temps = .{.{ .ref = .src0 }},
2785840808 .each = .{ .once = &.{
2785940809 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27860 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27861 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27862 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
40810 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
2786340811 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40812 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
40813 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2786440814 } },
2786540815 }, .{
2786640816 .required_features = .{ .sse2, null, null, null },
27867 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27868 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
40817 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40818 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
2786940819 .patterns = &.{
27870 .{ .src = .{ .to_mut_sse, .none } },
40820 .{ .src = .{ .to_mut_sse, .none, .none } },
2787140821 },
2787240822 .extra_temps = .{
27873 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
40823 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
2787440824 .unused,
2787540825 .unused,
2787640826 .unused,
......@@ -27883,45 +40833,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2788340833 .dst_temps = .{.{ .ref = .src0 }},
2788440834 .each = .{ .once = &.{
2788540835 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27886 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
2788740836 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40837 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
2788840838 } },
2788940839 }, .{
27890 .required_features = .{ .avx2, null, null, null },
27891 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27892 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27893 .patterns = &.{
27894 .{ .src = .{ .mem, .none } },
27895 .{ .src = .{ .to_sse, .none } },
27896 },
27897 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27898 .each = .{ .once = &.{
27899 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
27900 } },
27901 }, .{
27902 .required_features = .{ .avx2, null, null, null },
27903 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27904 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
27905 .patterns = &.{
27906 .{ .src = .{ .mem, .none } },
27907 .{ .src = .{ .to_sse, .none } },
27908 },
27909 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27910 .each = .{ .once = &.{
27911 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
27912 } },
27913 }, .{
27914 .required_features = .{ .avx2, null, null, null },
27915 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27916 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
40840 .required_features = .{ .@"64bit", null, null, null },
40841 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40842 .dst_constraints = .{.any_scalar_signed_int},
2791740843 .patterns = &.{
27918 .{ .src = .{ .to_mem, .none } },
40844 .{ .src = .{ .to_mem, .none, .none } },
2791940845 },
2792040846 .extra_temps = .{
2792140847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27922 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
27923 .unused,
27924 .unused,
40848 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40849 .{ .type = .i64, .kind = .{ .reg = .rax } },
40850 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2792540851 .unused,
2792640852 .unused,
2792740853 .unused,
......@@ -27932,23 +40858,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2793240858 .clobbers = .{ .eflags = true },
2793340859 .each = .{ .once = &.{
2793440860 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27935 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
27936 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27937 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40861 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
40862 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40863 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40864 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
40865 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
40866 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40867 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2793840868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2793940869 } },
2794040870 }, .{
27941 .required_features = .{ .avx2, null, null, null },
27942 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27943 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
40871 .required_features = .{ .@"64bit", null, null, null },
40872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40873 .dst_constraints = .{.any_scalar_int},
2794440874 .patterns = &.{
27945 .{ .src = .{ .to_mem, .none } },
40875 .{ .src = .{ .to_mem, .none, .none } },
2794640876 },
2794740877 .extra_temps = .{
2794840878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27949 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
27950 .unused,
27951 .unused,
40879 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40880 .{ .type = .u64, .kind = .{ .reg = .rax } },
40881 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2795240882 .unused,
2795340883 .unused,
2795440884 .unused,
......@@ -27959,24 +40889,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2795940889 .clobbers = .{ .eflags = true },
2796040890 .each = .{ .once = &.{
2796140891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27962 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
27963 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27964 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
40892 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
40893 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
40894 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40895 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
40896 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
40897 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40898 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
2796540899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2796640900 } },
2796740901 }, .{
27968 .required_features = .{ .avx, null, null, null },
27969 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27970 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40902 .required_features = .{ .@"64bit", .slow_incdec, null, null },
40903 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
40904 .dst_constraints = .{.any_scalar_signed_int},
2797140905 .patterns = &.{
27972 .{ .src = .{ .to_mem, .none } },
40906 .{ .src = .{ .to_mem, .none, .none } },
2797340907 },
2797440908 .extra_temps = .{
27975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27976 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27977 .unused,
27978 .unused,
27979 .unused,
40909 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40910 .{ .type = .usize, .kind = .{ .reg = .rsi } },
40911 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40912 .{ .type = .u32, .kind = .{ .reg = .ecx } },
40913 .{ .type = .i64, .kind = .{ .reg = .rax } },
2798040914 .unused,
2798140915 .unused,
2798240916 .unused,
......@@ -27985,25 +40919,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2798540919 .dst_temps = .{.mem},
2798640920 .clobbers = .{ .eflags = true },
2798740921 .each = .{ .once = &.{
27988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27989 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27990 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27991 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40922 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
40923 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
40924 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
40925 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
40926 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
40927 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
40928 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40929 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
40930 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
40931 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40932 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
40933 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
2799340934 } },
2799440935 }, .{
27995 .required_features = .{ .avx, null, null, null },
27996 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
27997 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
40936 .required_features = .{ .@"64bit", null, null, null },
40937 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
40938 .dst_constraints = .{.any_scalar_signed_int},
2799840939 .patterns = &.{
27999 .{ .src = .{ .to_mem, .none } },
40940 .{ .src = .{ .to_mem, .none, .none } },
2800040941 },
2800140942 .extra_temps = .{
28002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28003 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28004 .unused,
28005 .unused,
28006 .unused,
40943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40944 .{ .type = .usize, .kind = .{ .reg = .rsi } },
40945 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40946 .{ .type = .u32, .kind = .{ .reg = .ecx } },
40947 .{ .type = .i64, .kind = .{ .reg = .rax } },
2800740948 .unused,
2800840949 .unused,
2800940950 .unused,
......@@ -28012,25 +40953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2801240953 .dst_temps = .{.mem},
2801340954 .clobbers = .{ .eflags = true },
2801440955 .each = .{ .once = &.{
28015 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28016 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28017 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28018 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40956 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
40957 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
40958 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
40959 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
40960 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
40961 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
40962 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
40963 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
40964 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
40965 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40966 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
40967 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2802040968 } },
2802140969 }, .{
28022 .required_features = .{ .sse4_1, null, null, null },
28023 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
28024 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
40970 .required_features = .{ .@"64bit", .slow_incdec, null, null },
40971 .src_constraints = .{ .any_scalar_int, .any, .any },
40972 .dst_constraints = .{.any_scalar_int},
2802540973 .patterns = &.{
28026 .{ .src = .{ .to_mem, .none } },
40974 .{ .src = .{ .to_mem, .none, .none } },
2802740975 },
2802840976 .extra_temps = .{
28029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28030 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28031 .unused,
28032 .unused,
28033 .unused,
40977 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
40978 .{ .type = .usize, .kind = .{ .reg = .rsi } },
40979 .{ .type = .usize, .kind = .{ .reg = .rdi } },
40980 .{ .type = .u32, .kind = .{ .reg = .ecx } },
40981 .{ .type = .u64, .kind = .{ .reg = .rax } },
2803440982 .unused,
2803540983 .unused,
2803640984 .unused,
......@@ -28039,319 +40987,374 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2803940987 .dst_temps = .{.mem},
2804040988 .clobbers = .{ .eflags = true },
2804140989 .each = .{ .once = &.{
28042 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28043 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28044 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28045 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28046 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40990 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
40991 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
40992 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
40993 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
40994 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
40995 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
40996 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
40997 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
40998 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
40999 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
2804741000 } },
2804841001 }, .{
28049 .required_features = .{ .sse4_1, null, null, null },
28050 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
28051 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
41002 .required_features = .{ .@"64bit", null, null, null },
41003 .src_constraints = .{ .any_scalar_int, .any, .any },
41004 .dst_constraints = .{.any_scalar_int},
2805241005 .patterns = &.{
28053 .{ .src = .{ .to_mem, .none } },
41006 .{ .src = .{ .to_mem, .none, .none } },
2805441007 },
2805541008 .extra_temps = .{
28056 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28057 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28058 .unused,
28059 .unused,
28060 .unused,
41009 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
41010 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41011 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41012 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41013 .{ .type = .u64, .kind = .{ .reg = .rax } },
2806141014 .unused,
2806241015 .unused,
2806341016 .unused,
2806441017 .unused,
2806541018 },
28066 .dst_temps = .{.mem},
28067 .clobbers = .{ .eflags = true },
41019 .dst_temps = .{.mem},
41020 .clobbers = .{ .eflags = true },
41021 .each = .{ .once = &.{
41022 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
41023 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
41024 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
41025 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
41026 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41027 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
41028 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
41029 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
41030 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
41031 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41032 } },
41033 } }) catch |err| switch (err) {
41034 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
41035 @tagName(air_tag),
41036 dst_ty.fmt(pt),
41037 src_ty.fmt(pt),
41038 ops[0].tracking(cg),
41039 }),
41040 else => |e| return e,
41041 };
41042 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
41043 },
41044 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
41045 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
41046 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
41047 var res: [1]Temp = undefined;
41048 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
41049 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
41050 .dst_constraints = .{.{ .exact_signed_int = 1 }},
41051 .patterns = &.{
41052 .{ .src = .{ .to_mut_gpr, .none, .none } },
41053 },
41054 .dst_temps = .{.{ .ref = .src0 }},
41055 .clobbers = .{ .eflags = true },
41056 .each = .{ .once = &.{
41057 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
41058 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
41059 } },
41060 }, .{
41061 .src_constraints = .{ .any_signed_int, .any, .any },
41062 .dst_constraints = .{.{ .exact_signed_int = 1 }},
41063 .patterns = &.{
41064 .{ .src = .{ .to_mem, .none, .none } },
41065 },
41066 .dst_temps = .{.{ .rc = .general_purpose }},
41067 .clobbers = .{ .eflags = true },
41068 .each = .{ .once = &.{
41069 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
41070 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
41071 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
41072 } },
41073 }, .{
41074 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
41075 .dst_constraints = .{.{ .exact_int = 8 }},
41076 .patterns = &.{
41077 .{ .src = .{ .to_mut_gpr, .none, .none } },
41078 },
41079 .dst_temps = .{.{ .ref = .src0 }},
41080 .each = .{ .once = &.{} },
41081 }, .{
41082 .src_constraints = .{ .any_signed_int, .any, .any },
41083 .dst_constraints = .{.{ .exact_signed_int = 8 }},
41084 .patterns = &.{
41085 .{ .src = .{ .to_mem, .none, .none } },
41086 },
41087 .dst_temps = .{.{ .rc = .general_purpose }},
41088 .each = .{ .once = &.{
41089 .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ },
41090 } },
41091 }, .{
41092 .src_constraints = .{ .any_unsigned_int, .any, .any },
41093 .dst_constraints = .{.{ .exact_unsigned_int = 8 }},
41094 .patterns = &.{
41095 .{ .src = .{ .to_mem, .none, .none } },
41096 },
41097 .dst_temps = .{.{ .rc = .general_purpose }},
41098 .each = .{ .once = &.{
41099 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
41100 } },
41101 }, .{
41102 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
41103 .dst_constraints = .{.{ .signed_int = .byte }},
41104 .patterns = &.{
41105 .{ .src = .{ .to_mut_gpr, .none, .none } },
41106 },
41107 .dst_temps = .{.{ .ref = .src0 }},
41108 .clobbers = .{ .eflags = true },
41109 .each = .{ .once = &.{
41110 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
41111 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
41112 } },
41113 }, .{
41114 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
41115 .dst_constraints = .{.{ .unsigned_int = .byte }},
41116 .patterns = &.{
41117 .{ .src = .{ .to_mut_gpr, .none, .none } },
41118 },
41119 .dst_temps = .{.{ .ref = .src0 }},
41120 .clobbers = .{ .eflags = true },
41121 .each = .{ .once = &.{
41122 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
41123 } },
41124 }, .{
41125 .src_constraints = .{ .any_int, .any, .any },
41126 .dst_constraints = .{.{ .unsigned_int = .byte }},
41127 .patterns = &.{
41128 .{ .src = .{ .to_mem, .none, .none } },
41129 },
41130 .dst_temps = .{.{ .rc = .general_purpose }},
41131 .clobbers = .{ .eflags = true },
41132 .each = .{ .once = &.{
41133 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
41134 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
41135 } },
41136 }, .{
41137 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
41138 .dst_constraints = .{.{ .exact_int = 16 }},
41139 .patterns = &.{
41140 .{ .src = .{ .to_mut_gpr, .none, .none } },
41141 },
41142 .dst_temps = .{.{ .ref = .src0 }},
41143 .each = .{ .once = &.{} },
41144 }, .{
41145 .src_constraints = .{ .any_signed_int, .any, .any },
41146 .dst_constraints = .{.{ .exact_signed_int = 16 }},
41147 .patterns = &.{
41148 .{ .src = .{ .to_mem, .none, .none } },
41149 },
41150 .dst_temps = .{.{ .rc = .general_purpose }},
41151 .each = .{ .once = &.{
41152 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
41153 } },
41154 }, .{
41155 .src_constraints = .{ .any_unsigned_int, .any, .any },
41156 .dst_constraints = .{.{ .exact_unsigned_int = 16 }},
41157 .patterns = &.{
41158 .{ .src = .{ .to_mem, .none, .none } },
41159 },
41160 .dst_temps = .{.{ .rc = .general_purpose }},
2806841161 .each = .{ .once = &.{
28069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28070 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28071 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28072 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41162 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
2807441163 } },
2807541164 }, .{
28076 .required_features = .{ .@"64bit", null, null, null },
28077 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28078 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
41165 .required_features = .{ .fast_imm16, null, null, null },
41166 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
41167 .dst_constraints = .{.{ .unsigned_int = .word }},
2807941168 .patterns = &.{
28080 .{ .src = .{ .to_mem, .none } },
28081 },
28082 .extra_temps = .{
28083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28084 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28085 .unused,
28086 .unused,
28087 .unused,
28088 .unused,
28089 .unused,
28090 .unused,
28091 .unused,
41169 .{ .src = .{ .to_mut_gpr, .none, .none } },
2809241170 },
28093 .dst_temps = .{.mem},
41171 .dst_temps = .{.{ .ref = .src0 }},
2809441172 .clobbers = .{ .eflags = true },
2809541173 .each = .{ .once = &.{
28096 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28097 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28098 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28099 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41174 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
2810141175 } },
2810241176 }, .{
28103 .required_features = .{ .@"64bit", null, null, null },
28104 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28105 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
41177 .required_features = .{ .fast_imm16, null, null, null },
41178 .src_constraints = .{ .any_unsigned_int, .any, .any },
41179 .dst_constraints = .{.{ .unsigned_int = .word }},
2810641180 .patterns = &.{
28107 .{ .src = .{ .to_mem, .none } },
28108 },
28109 .extra_temps = .{
28110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28111 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28112 .unused,
28113 .unused,
28114 .unused,
28115 .unused,
28116 .unused,
28117 .unused,
28118 .unused,
41181 .{ .src = .{ .to_mem, .none, .none } },
2811941182 },
28120 .dst_temps = .{.mem},
41183 .dst_temps = .{.{ .rc = .general_purpose }},
2812141184 .clobbers = .{ .eflags = true },
2812241185 .each = .{ .once = &.{
28123 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28124 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28125 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28126 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41186 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
41187 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
2812841188 } },
2812941189 }, .{
28130 .required_features = .{ .avx, null, null, null },
28131 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28132 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41190 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
41191 .dst_constraints = .{.{ .exact_int = 32 }},
2813341192 .patterns = &.{
28134 .{ .src = .{ .mem, .none } },
28135 .{ .src = .{ .to_sse, .none } },
41193 .{ .src = .{ .to_mut_gpr, .none, .none } },
2813641194 },
28137 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28138 .each = .{ .once = &.{
28139 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
28140 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28141 } },
41195 .dst_temps = .{.{ .ref = .src0 }},
41196 .each = .{ .once = &.{} },
2814241197 }, .{
28143 .required_features = .{ .avx, null, null, null },
28144 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28145 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41198 .src_constraints = .{ .any_int, .any, .any },
41199 .dst_constraints = .{.{ .exact_int = 32 }},
2814641200 .patterns = &.{
28147 .{ .src = .{ .mem, .none } },
28148 .{ .src = .{ .to_sse, .none } },
41201 .{ .src = .{ .to_mem, .none, .none } },
2814941202 },
28150 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41203 .dst_temps = .{.{ .rc = .general_purpose }},
2815141204 .each = .{ .once = &.{
28152 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
28153 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
41205 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
2815441206 } },
2815541207 }, .{
28156 .required_features = .{ .sse4_1, null, null, null },
28157 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28158 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41208 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
41209 .dst_constraints = .{.{ .signed_int = .dword }},
2815941210 .patterns = &.{
28160 .{ .src = .{ .mem, .none } },
28161 .{ .src = .{ .to_sse, .none } },
41211 .{ .src = .{ .to_mut_gpr, .none, .none } },
2816241212 },
28163 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41213 .dst_temps = .{.{ .ref = .src0 }},
41214 .clobbers = .{ .eflags = true },
2816441215 .each = .{ .once = &.{
28165 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
28166 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
41216 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
41217 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
2816741218 } },
2816841219 }, .{
28169 .required_features = .{ .sse4_1, null, null, null },
28170 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28171 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41220 .src_constraints = .{ .any_signed_int, .any, .any },
41221 .dst_constraints = .{.{ .signed_int = .dword }},
2817241222 .patterns = &.{
28173 .{ .src = .{ .mem, .none } },
28174 .{ .src = .{ .to_sse, .none } },
41223 .{ .src = .{ .to_mem, .none, .none } },
2817541224 },
28176 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41225 .dst_temps = .{.{ .rc = .general_purpose }},
41226 .clobbers = .{ .eflags = true },
2817741227 .each = .{ .once = &.{
28178 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
28179 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
41228 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
41229 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
41230 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
2818041231 } },
2818141232 }, .{
28182 .required_features = .{ .sse2, null, null, null },
28183 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28184 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41233 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
41234 .dst_constraints = .{.{ .unsigned_int = .dword }},
2818541235 .patterns = &.{
28186 .{ .src = .{ .to_mut_sse, .none } },
28187 },
28188 .extra_temps = .{
28189 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
28190 .unused,
28191 .unused,
28192 .unused,
28193 .unused,
28194 .unused,
28195 .unused,
28196 .unused,
28197 .unused,
41236 .{ .src = .{ .to_mut_gpr, .none, .none } },
2819841237 },
2819941238 .dst_temps = .{.{ .ref = .src0 }},
41239 .clobbers = .{ .eflags = true },
2820041240 .each = .{ .once = &.{
28201 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28202 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
28203 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28204 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
28205 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28206 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28207 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41241 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
2820841242 } },
2820941243 }, .{
28210 .required_features = .{ .sse2, null, null, null },
28211 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28212 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41244 .src_constraints = .{ .any_unsigned_int, .any, .any },
41245 .dst_constraints = .{.{ .unsigned_int = .dword }},
2821341246 .patterns = &.{
28214 .{ .src = .{ .to_mut_sse, .none } },
28215 },
28216 .extra_temps = .{
28217 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
28218 .unused,
28219 .unused,
28220 .unused,
28221 .unused,
28222 .unused,
28223 .unused,
28224 .unused,
28225 .unused,
41247 .{ .src = .{ .to_mem, .none, .none } },
2822641248 },
28227 .dst_temps = .{.{ .ref = .src0 }},
41249 .dst_temps = .{.{ .rc = .general_purpose }},
41250 .clobbers = .{ .eflags = true },
2822841251 .each = .{ .once = &.{
28229 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28230 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28231 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28232 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41252 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
41253 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
2823341254 } },
2823441255 }, .{
2823541256 .required_features = .{ .@"64bit", null, null, null },
28236 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28237 .dst_constraints = .{.any_scalar_signed_int},
41257 .src_constraints = .{ .any_int, .any, .any },
41258 .dst_constraints = .{.{ .exact_int = 64 }},
2823841259 .patterns = &.{
28239 .{ .src = .{ .to_mem, .none } },
41260 .{ .src = .{ .to_mem, .none, .none } },
2824041261 },
28241 .extra_temps = .{
28242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28243 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28244 .{ .type = .i64, .kind = .{ .reg = .rax } },
28245 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28246 .unused,
28247 .unused,
28248 .unused,
28249 .unused,
28250 .unused,
41262 .dst_temps = .{.{ .rc = .general_purpose }},
41263 .each = .{ .once = &.{
41264 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
41265 } },
41266 }, .{
41267 .required_features = .{ .@"64bit", null, null, null },
41268 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
41269 .dst_constraints = .{.{ .signed_int = .qword }},
41270 .patterns = &.{
41271 .{ .src = .{ .to_mut_gpr, .none, .none } },
2825141272 },
28252 .dst_temps = .{.mem},
41273 .dst_temps = .{.{ .ref = .src0 }},
2825341274 .clobbers = .{ .eflags = true },
2825441275 .each = .{ .once = &.{
28255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28256 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28257 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28258 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28259 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28260 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28261 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28262 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28263 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41276 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
41277 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
2826441278 } },
2826541279 }, .{
2826641280 .required_features = .{ .@"64bit", null, null, null },
28267 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28268 .dst_constraints = .{.any_scalar_int},
41281 .src_constraints = .{ .any_signed_int, .any, .any },
41282 .dst_constraints = .{.{ .signed_int = .qword }},
2826941283 .patterns = &.{
28270 .{ .src = .{ .to_mem, .none } },
28271 },
28272 .extra_temps = .{
28273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28274 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28275 .{ .type = .u64, .kind = .{ .reg = .rax } },
28276 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28277 .unused,
28278 .unused,
28279 .unused,
28280 .unused,
28281 .unused,
41284 .{ .src = .{ .to_mem, .none, .none } },
2828241285 },
28283 .dst_temps = .{.mem},
41286 .dst_temps = .{.{ .rc = .general_purpose }},
2828441287 .clobbers = .{ .eflags = true },
2828541288 .each = .{ .once = &.{
28286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28287 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28288 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28289 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28290 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28291 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28292 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28293 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41289 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
41290 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
41291 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
2829541292 } },
2829641293 }, .{
28297 .required_features = .{ .avx, null, null, null },
28298 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28299 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41294 .required_features = .{ .@"64bit", .bmi2, null, null },
41295 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
41296 .dst_constraints = .{.{ .unsigned_int = .qword }},
2830041297 .patterns = &.{
28301 .{ .src = .{ .mem, .none } },
28302 .{ .src = .{ .to_sse, .none } },
41298 .{ .src = .{ .mem, .none, .none } },
41299 .{ .src = .{ .to_gpr, .none, .none } },
2830341300 },
28304 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41301 .dst_temps = .{.{ .rc = .general_purpose }},
41302 .clobbers = .{ .eflags = true },
2830541303 .each = .{ .once = &.{
28306 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
41304 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
41305 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
2830741306 } },
2830841307 }, .{
28309 .required_features = .{ .avx, null, null, null },
28310 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28311 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41308 .required_features = .{ .@"64bit", .bmi2, null, null },
41309 .src_constraints = .{ .any_unsigned_int, .any, .any },
41310 .dst_constraints = .{.{ .unsigned_int = .qword }},
2831241311 .patterns = &.{
28313 .{ .src = .{ .mem, .none } },
28314 .{ .src = .{ .to_sse, .none } },
41312 .{ .src = .{ .to_mem, .none, .none } },
2831541313 },
28316 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41314 .dst_temps = .{.{ .rc = .general_purpose }},
41315 .clobbers = .{ .eflags = true },
2831741316 .each = .{ .once = &.{
28318 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
41317 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
41318 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
2831941319 } },
2832041320 }, .{
28321 .required_features = .{ .sse4_1, null, null, null },
28322 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28323 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41321 .required_features = .{ .@"64bit", null, null, null },
41322 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
41323 .dst_constraints = .{.{ .unsigned_int = .qword }},
2832441324 .patterns = &.{
28325 .{ .src = .{ .mem, .none } },
28326 .{ .src = .{ .to_sse, .none } },
41325 .{ .src = .{ .mem, .none, .none } },
41326 .{ .src = .{ .to_gpr, .none, .none } },
2832741327 },
28328 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41328 .dst_temps = .{.{ .rc = .general_purpose }},
41329 .clobbers = .{ .eflags = true },
2832941330 .each = .{ .once = &.{
28330 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
41331 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
41332 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
2833141333 } },
2833241334 }, .{
28333 .required_features = .{ .sse4_1, null, null, null },
28334 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28335 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41335 .required_features = .{ .@"64bit", null, null, null },
41336 .src_constraints = .{ .any_unsigned_int, .any, .any },
41337 .dst_constraints = .{.{ .unsigned_int = .qword }},
2833641338 .patterns = &.{
28337 .{ .src = .{ .mem, .none } },
28338 .{ .src = .{ .to_sse, .none } },
41339 .{ .src = .{ .to_mem, .none, .none } },
2833941340 },
28340 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41341 .dst_temps = .{.{ .rc = .general_purpose }},
41342 .clobbers = .{ .eflags = true },
2834141343 .each = .{ .once = &.{
28342 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
41344 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
41345 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
2834341346 } },
2834441347 }, .{
28345 .required_features = .{ .sse2, null, null, null },
28346 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28347 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41348 .required_features = .{ .@"64bit", null, null, null },
41349 .src_constraints = .{ .any_int, .any, .any },
41350 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
2834841351 .patterns = &.{
28349 .{ .src = .{ .to_mut_sse, .none } },
41352 .{ .src = .{ .to_mem, .none, .none } },
2835041353 },
2835141354 .extra_temps = .{
28352 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
28353 .unused,
28354 .unused,
41355 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41356 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41357 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2835541358 .unused,
2835641359 .unused,
2835741360 .unused,
......@@ -28359,23 +41362,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2835941362 .unused,
2836041363 .unused,
2836141364 },
28362 .dst_temps = .{.{ .ref = .src0 }},
41365 .dst_temps = .{.mem},
2836341366 .each = .{ .once = &.{
28364 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28365 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28366 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
41367 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41368 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41369 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
41370 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
2836741371 } },
2836841372 }, .{
28369 .required_features = .{ .sse2, null, null, null },
28370 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28371 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
41373 .required_features = .{ .@"64bit", null, null, null },
41374 .src_constraints = .{ .any_signed_int, .any, .any },
41375 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2837241376 .patterns = &.{
28373 .{ .src = .{ .to_mut_sse, .none } },
41377 .{ .src = .{ .to_mem, .none, .none } },
2837441378 },
2837541379 .extra_temps = .{
28376 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28377 .unused,
28378 .unused,
41380 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41381 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41382 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2837941383 .unused,
2838041384 .unused,
2838141385 .unused,
......@@ -28383,46 +41387,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2838341387 .unused,
2838441388 .unused,
2838541389 },
28386 .dst_temps = .{.{ .ref = .src0 }},
28387 .each = .{ .once = &.{
28388 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28389 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28390 } },
28391 }, .{
28392 .required_features = .{ .avx2, null, null, null },
28393 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28394 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
28395 .patterns = &.{
28396 .{ .src = .{ .mem, .none } },
28397 .{ .src = .{ .to_sse, .none } },
28398 },
28399 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28400 .each = .{ .once = &.{
28401 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
28402 } },
28403 }, .{
28404 .required_features = .{ .avx2, null, null, null },
28405 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28406 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
28407 .patterns = &.{
28408 .{ .src = .{ .mem, .none } },
28409 .{ .src = .{ .to_sse, .none } },
28410 },
28411 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41390 .dst_temps = .{.mem},
41391 .clobbers = .{ .eflags = true },
2841241392 .each = .{ .once = &.{
28413 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
41393 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41394 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41395 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
41396 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41397 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
41398 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
41399 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
41400 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2841441401 } },
2841541402 }, .{
28416 .required_features = .{ .avx2, null, null, null },
28417 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28418 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
41403 .required_features = .{ .@"64bit", null, null, null },
41404 .src_constraints = .{ .any_signed_int, .any, .any },
41405 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
2841941406 .patterns = &.{
28420 .{ .src = .{ .to_mem, .none } },
41407 .{ .src = .{ .to_mem, .none, .none } },
2842141408 },
2842241409 .extra_temps = .{
28423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28424 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
28425 .unused,
41410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41411 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41412 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2842641413 .unused,
2842741414 .unused,
2842841415 .unused,
......@@ -28433,23 +41420,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2843341420 .dst_temps = .{.mem},
2843441421 .clobbers = .{ .eflags = true },
2843541422 .each = .{ .once = &.{
28436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28437 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28438 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
28439 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41423 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41424 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41425 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
41426 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41427 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
41428 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
41429 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
41430 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
41431 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
41432 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2844141433 } },
2844241434 }, .{
28443 .required_features = .{ .avx2, null, null, null },
28444 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28445 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
41435 .required_features = .{ .@"64bit", null, null, null },
41436 .src_constraints = .{ .any_signed_int, .any, .any },
41437 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},
2844641438 .patterns = &.{
28447 .{ .src = .{ .to_mem, .none } },
41439 .{ .src = .{ .to_mem, .none, .none } },
2844841440 },
2844941441 .extra_temps = .{
28450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28451 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
28452 .unused,
41442 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41443 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41444 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2845341445 .unused,
2845441446 .unused,
2845541447 .unused,
......@@ -28460,23 +41452,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2846041452 .dst_temps = .{.mem},
2846141453 .clobbers = .{ .eflags = true },
2846241454 .each = .{ .once = &.{
28463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28464 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
28465 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
28466 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41455 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41456 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41457 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
41458 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41459 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
41460 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
41461 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
41462 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2846841463 } },
2846941464 }, .{
28470 .required_features = .{ .avx, null, null, null },
28471 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28472 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41465 .required_features = .{ .@"64bit", null, null, null },
41466 .src_constraints = .{ .any_unsigned_int, .any, .any },
41467 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2847341468 .patterns = &.{
28474 .{ .src = .{ .to_mem, .none } },
41469 .{ .src = .{ .to_mem, .none, .none } },
2847541470 },
2847641471 .extra_temps = .{
28477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28478 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28479 .unused,
41472 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41473 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41474 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2848041475 .unused,
2848141476 .unused,
2848241477 .unused,
......@@ -28485,25 +41480,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2848541480 .unused,
2848641481 },
2848741482 .dst_temps = .{.mem},
28488 .clobbers = .{ .eflags = true },
2848941483 .each = .{ .once = &.{
28490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28491 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28492 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41484 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41485 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41486 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
41487 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41488 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
2849541489 } },
2849641490 }, .{
28497 .required_features = .{ .avx, null, null, null },
28498 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
28499 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
41491 .required_features = .{ .@"64bit", .bmi2, null, null },
41492 .src_constraints = .{ .any_unsigned_int, .any, .any },
41493 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2850041494 .patterns = &.{
28501 .{ .src = .{ .to_mem, .none } },
41495 .{ .src = .{ .to_mem, .none, .none } },
2850241496 },
2850341497 .extra_temps = .{
28504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28505 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28506 .unused,
41498 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41499 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41500 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2850741501 .unused,
2850841502 .unused,
2850941503 .unused,
......@@ -28514,23 +41508,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2851441508 .dst_temps = .{.mem},
2851541509 .clobbers = .{ .eflags = true },
2851641510 .each = .{ .once = &.{
28517 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28518 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28519 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28520 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28521 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41511 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41512 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41513 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
41514 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41515 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
41516 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
41517 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
41518 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
2852241519 } },
2852341520 }, .{
28524 .required_features = .{ .sse4_1, null, null, null },
28525 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28526 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
41521 .required_features = .{ .@"64bit", .bmi2, null, null },
41522 .src_constraints = .{ .any_unsigned_int, .any, .any },
41523 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2852741524 .patterns = &.{
28528 .{ .src = .{ .to_mem, .none } },
41525 .{ .src = .{ .to_mem, .none, .none } },
2852941526 },
2853041527 .extra_temps = .{
28531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28532 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28533 .unused,
41528 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41529 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41530 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2853441531 .unused,
2853541532 .unused,
2853641533 .unused,
......@@ -28541,23 +41538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2854141538 .dst_temps = .{.mem},
2854241539 .clobbers = .{ .eflags = true },
2854341540 .each = .{ .once = &.{
28544 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28545 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28546 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28547 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41541 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41542 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41543 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
41544 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41545 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
41546 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },
41547 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
2854941548 } },
2855041549 }, .{
28551 .required_features = .{ .sse4_1, null, null, null },
28552 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28553 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
41550 .required_features = .{ .@"64bit", null, null, null },
41551 .src_constraints = .{ .any_unsigned_int, .any, .any },
41552 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
2855441553 .patterns = &.{
28555 .{ .src = .{ .to_mem, .none } },
41554 .{ .src = .{ .to_mem, .none, .none } },
2855641555 },
2855741556 .extra_temps = .{
28558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28559 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28560 .unused,
41557 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41558 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41559 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2856141560 .unused,
2856241561 .unused,
2856341562 .unused,
......@@ -28568,23 +41567,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2856841567 .dst_temps = .{.mem},
2856941568 .clobbers = .{ .eflags = true },
2857041569 .each = .{ .once = &.{
28571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28572 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
28573 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
28574 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41570 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41571 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41572 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
41573 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41574 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
41575 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
41576 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
41577 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
2857641578 } },
2857741579 }, .{
2857841580 .required_features = .{ .@"64bit", null, null, null },
28579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
41581 .src_constraints = .{ .any_unsigned_int, .any, .any },
41582 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
2858141583 .patterns = &.{
28582 .{ .src = .{ .to_mem, .none } },
41584 .{ .src = .{ .to_mem, .none, .none } },
2858341585 },
2858441586 .extra_temps = .{
28585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28586 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28587 .unused,
41587 .{ .type = .usize, .kind = .{ .reg = .rsi } },
41588 .{ .type = .usize, .kind = .{ .reg = .rdi } },
41589 .{ .type = .u32, .kind = .{ .reg = .ecx } },
2858841590 .unused,
2858941591 .unused,
2859041592 .unused,
......@@ -28595,23 +41597,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2859541597 .dst_temps = .{.mem},
2859641598 .clobbers = .{ .eflags = true },
2859741599 .each = .{ .once = &.{
28598 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28599 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28600 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28601 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41600 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
41601 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
41602 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
41603 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
41604 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
41605 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
41606 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
2860341607 } },
2860441608 }, .{
28605 .required_features = .{ .@"64bit", null, null, null },
28606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28607 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
41609 .required_features = .{ .avx, null, null, null },
41610 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41611 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2860841612 .patterns = &.{
28609 .{ .src = .{ .to_mem, .none } },
41613 .{ .src = .{ .to_sse, .none, .none } },
2861041614 },
2861141615 .extra_temps = .{
28612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28613 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28614 .unused,
41616 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41617 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41618 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2861541619 .unused,
2861641620 .unused,
2861741621 .unused,
......@@ -28619,77 +41623,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2861941623 .unused,
2862041624 .unused,
2862141625 },
28622 .dst_temps = .{.mem},
28623 .clobbers = .{ .eflags = true },
28624 .each = .{ .once = &.{
28625 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28626 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28627 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28628 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28629 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28630 } },
28631 }, .{
28632 .required_features = .{ .avx, null, null, null },
28633 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28634 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28635 .patterns = &.{
28636 .{ .src = .{ .mem, .none } },
28637 .{ .src = .{ .to_sse, .none } },
28638 },
2863941626 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2864041627 .each = .{ .once = &.{
28641 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
28642 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
41628 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41629 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
41630 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
41631 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
41632 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
2864341633 } },
2864441634 }, .{
2864541635 .required_features = .{ .avx, null, null, null },
28646 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28647 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41636 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41637 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2864841638 .patterns = &.{
28649 .{ .src = .{ .mem, .none } },
28650 .{ .src = .{ .to_sse, .none } },
41639 .{ .src = .{ .to_sse, .none, .none } },
2865141640 },
28652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28653 .each = .{ .once = &.{
28654 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
28655 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28656 } },
28657 }, .{
28658 .required_features = .{ .sse4_1, null, null, null },
28659 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28660 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28661 .patterns = &.{
28662 .{ .src = .{ .mem, .none } },
28663 .{ .src = .{ .to_sse, .none } },
41641 .extra_temps = .{
41642 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41643 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
41644 .unused,
41645 .unused,
41646 .unused,
41647 .unused,
41648 .unused,
41649 .unused,
41650 .unused,
2866441651 },
2866541652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2866641653 .each = .{ .once = &.{
28667 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
28668 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
41654 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41655 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2866941656 } },
2867041657 }, .{
28671 .required_features = .{ .sse4_1, null, null, null },
28672 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28673 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41658 .required_features = .{ .sse2, null, null, null },
41659 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41660 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2867441661 .patterns = &.{
28675 .{ .src = .{ .mem, .none } },
28676 .{ .src = .{ .to_sse, .none } },
41662 .{ .src = .{ .to_mut_sse, .none, .none } },
2867741663 },
28678 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
41664 .extra_temps = .{
41665 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41666 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41667 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
41668 .unused,
41669 .unused,
41670 .unused,
41671 .unused,
41672 .unused,
41673 .unused,
41674 },
41675 .dst_temps = .{.{ .ref = .src0 }},
2867941676 .each = .{ .once = &.{
28680 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
28681 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
41677 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41678 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
41679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
41680 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
41681 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
2868241682 } },
2868341683 }, .{
2868441684 .required_features = .{ .sse2, null, null, null },
28685 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28686 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
41685 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41686 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2868741687 .patterns = &.{
28688 .{ .src = .{ .to_mut_sse, .none } },
41688 .{ .src = .{ .to_mut_sse, .none, .none } },
2868941689 },
2869041690 .extra_temps = .{
28691 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
28692 .unused,
41691 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41692 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2869341693 .unused,
2869441694 .unused,
2869541695 .unused,
......@@ -28700,22 +41700,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2870041700 },
2870141701 .dst_temps = .{.{ .ref = .src0 }},
2870241702 .each = .{ .once = &.{
28703 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28704 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28705 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28706 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28707 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41703 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41704 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2870841705 } },
2870941706 }, .{
28710 .required_features = .{ .sse2, null, null, null },
28711 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28712 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
41707 .required_features = .{ .sse, null, null, null },
41708 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41709 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2871341710 .patterns = &.{
28714 .{ .src = .{ .to_mut_sse, .none } },
41711 .{ .src = .{ .to_mut_sse, .none, .none } },
2871541712 },
2871641713 .extra_temps = .{
28717 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28718 .unused,
41714 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41715 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2871941716 .unused,
2872041717 .unused,
2872141718 .unused,
......@@ -28726,86 +41723,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2872641723 },
2872741724 .dst_temps = .{.{ .ref = .src0 }},
2872841725 .each = .{ .once = &.{
28729 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28730 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28731 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
41726 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41727 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2873241728 } },
2873341729 }, .{
28734 .required_features = .{ .@"64bit", null, null, null },
28735 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28736 .dst_constraints = .{.any_scalar_signed_int},
41730 .required_features = .{ .avx2, null, null, null },
41731 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
41732 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},
2873741733 .patterns = &.{
28738 .{ .src = .{ .to_mem, .none } },
41734 .{ .src = .{ .to_sse, .none, .none } },
2873941735 },
2874041736 .extra_temps = .{
28741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28742 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28743 .{ .type = .i64, .kind = .{ .reg = .rax } },
28744 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41737 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41738 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41739 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
41740 .unused,
2874541741 .unused,
2874641742 .unused,
2874741743 .unused,
2874841744 .unused,
2874941745 .unused,
2875041746 },
28751 .dst_temps = .{.mem},
28752 .clobbers = .{ .eflags = true },
41747 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2875341748 .each = .{ .once = &.{
28754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28755 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28756 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28757 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28758 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28759 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28760 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28761 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41749 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41750 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
41751 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
41752 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
41753 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
2876341754 } },
2876441755 }, .{
28765 .required_features = .{ .@"64bit", null, null, null },
28766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28767 .dst_constraints = .{.any_scalar_int},
41756 .required_features = .{ .avx2, null, null, null },
41757 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
41758 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
2876841759 .patterns = &.{
28769 .{ .src = .{ .to_mem, .none } },
41760 .{ .src = .{ .to_sse, .none, .none } },
2877041761 },
2877141762 .extra_temps = .{
28772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28773 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28774 .{ .type = .u64, .kind = .{ .reg = .rax } },
28775 .{ .type = .u32, .kind = .{ .reg = .ecx } },
41763 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
41764 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
41765 .unused,
41766 .unused,
2877641767 .unused,
2877741768 .unused,
2877841769 .unused,
2877941770 .unused,
2878041771 .unused,
2878141772 },
28782 .dst_temps = .{.mem},
28783 .clobbers = .{ .eflags = true },
41773 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2878441774 .each = .{ .once = &.{
28785 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28786 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28787 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28788 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28789 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28790 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28791 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28792 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41775 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
41776 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2879441777 } },
2879541778 }, .{
28796 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28797 .src_constraints = .{ .any_scalar_signed_int, .any },
28798 .dst_constraints = .{.any_scalar_signed_int},
41779 .required_features = .{ .avx2, null, null, null },
41780 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
41781 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
2879941782 .patterns = &.{
28800 .{ .src = .{ .to_mem, .none } },
41783 .{ .src = .{ .to_mem, .none, .none } },
2880141784 },
2880241785 .extra_temps = .{
28803 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28804 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28805 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28806 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28807 .{ .type = .i64, .kind = .{ .reg = .rax } },
28808 .unused,
41786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41787 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
41788 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
41789 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
41790 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41791 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2880941792 .unused,
2881041793 .unused,
2881141794 .unused,
......@@ -28813,32 +41796,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2881341796 .dst_temps = .{.mem},
2881441797 .clobbers = .{ .eflags = true },
2881541798 .each = .{ .once = &.{
28816 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28817 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28818 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28819 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28820 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28821 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28822 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28823 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28824 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28825 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28826 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28827 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
41799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
41800 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
41801 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
41802 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
41803 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41804 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
41805 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
41806 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
41807 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
41808 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
41809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2882841810 } },
2882941811 }, .{
28830 .required_features = .{ .@"64bit", null, null, null },
28831 .src_constraints = .{ .any_scalar_signed_int, .any },
28832 .dst_constraints = .{.any_scalar_signed_int},
41812 .required_features = .{ .avx2, null, null, null },
41813 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
41814 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
2883341815 .patterns = &.{
28834 .{ .src = .{ .to_mem, .none } },
41816 .{ .src = .{ .to_mem, .none, .none } },
2883541817 },
2883641818 .extra_temps = .{
28837 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28838 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28839 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28840 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28841 .{ .type = .i64, .kind = .{ .reg = .rax } },
41819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41820 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
41821 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
41822 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41823 .unused,
2884241824 .unused,
2884341825 .unused,
2884441826 .unused,
......@@ -28847,33 +41829,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2884741829 .dst_temps = .{.mem},
2884841830 .clobbers = .{ .eflags = true },
2884941831 .each = .{ .once = &.{
28850 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28851 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28852 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28853 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28854 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28855 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28856 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28857 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28858 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28859 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28860 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28861 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
41832 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
41833 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
41834 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41835 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
41836 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
41837 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
41838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2886241839 } },
2886341840 }, .{
28864 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28865 .src_constraints = .{ .any_scalar_int, .any },
28866 .dst_constraints = .{.any_scalar_int},
41841 .required_features = .{ .avx, null, null, null },
41842 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41843 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2886741844 .patterns = &.{
28868 .{ .src = .{ .to_mem, .none } },
41845 .{ .src = .{ .to_mem, .none, .none } },
2886941846 },
2887041847 .extra_temps = .{
28871 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28872 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28873 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28874 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28875 .{ .type = .u64, .kind = .{ .reg = .rax } },
28876 .unused,
41848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41849 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41850 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41851 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41852 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41853 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
2887741854 .unused,
2887841855 .unused,
2887941856 .unused,
......@@ -28881,30 +41858,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2888141858 .dst_temps = .{.mem},
2888241859 .clobbers = .{ .eflags = true },
2888341860 .each = .{ .once = &.{
28884 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28885 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28886 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28887 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28888 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28889 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28890 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28891 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28892 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28893 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
41861 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
41862 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
41863 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
41864 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
41865 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41866 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
41867 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
41868 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
41869 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
41870 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2889441872 } },
2889541873 }, .{
28896 .required_features = .{ .@"64bit", null, null, null },
28897 .src_constraints = .{ .any_scalar_int, .any },
28898 .dst_constraints = .{.any_scalar_int},
41874 .required_features = .{ .avx, null, null, null },
41875 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2889941877 .patterns = &.{
28900 .{ .src = .{ .to_mem, .none } },
41878 .{ .src = .{ .to_mem, .none, .none } },
2890141879 },
2890241880 .extra_temps = .{
28903 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28904 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28905 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28906 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28907 .{ .type = .u64, .kind = .{ .reg = .rax } },
41881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41882 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41883 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41884 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41885 .unused,
2890841886 .unused,
2890941887 .unused,
2891041888 .unused,
......@@ -28913,342 +41891,425 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2891341891 .dst_temps = .{.mem},
2891441892 .clobbers = .{ .eflags = true },
2891541893 .each = .{ .once = &.{
28916 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28917 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28918 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28919 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28920 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28921 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28922 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28923 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28924 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28925 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28926 } },
28927 } }) catch |err| switch (err) {
28928 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
28929 @tagName(air_tag),
28930 dst_ty.fmt(pt),
28931 src_ty.fmt(pt),
28932 ops[0].tracking(cg),
28933 }),
28934 else => |e| return e,
28935 };
28936 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
28937 },
28938 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
28939 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
28940 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
28941 var res: [1]Temp = undefined;
28942 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
28943 .src_constraints = .{ .{ .signed_int = .gpr }, .any },
28944 .dst_constraints = .{.{ .exact_signed_int = 1 }},
28945 .patterns = &.{
28946 .{ .src = .{ .to_mut_gpr, .none } },
28947 },
28948 .dst_temps = .{.{ .ref = .src0 }},
28949 .clobbers = .{ .eflags = true },
28950 .each = .{ .once = &.{
28951 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
28952 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
28953 } },
28954 }, .{
28955 .src_constraints = .{ .any_signed_int, .any },
28956 .dst_constraints = .{.{ .exact_signed_int = 1 }},
28957 .patterns = &.{
28958 .{ .src = .{ .to_mem, .none } },
28959 },
28960 .dst_temps = .{.{ .rc = .general_purpose }},
28961 .clobbers = .{ .eflags = true },
28962 .each = .{ .once = &.{
28963 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
28964 .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ },
28965 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
28966 } },
28967 }, .{
28968 .src_constraints = .{ .{ .int = .gpr }, .any },
28969 .dst_constraints = .{.{ .exact_int = 8 }},
28970 .patterns = &.{
28971 .{ .src = .{ .to_mut_gpr, .none } },
28972 },
28973 .dst_temps = .{.{ .ref = .src0 }},
28974 .each = .{ .once = &.{} },
28975 }, .{
28976 .src_constraints = .{ .any_signed_int, .any },
28977 .dst_constraints = .{.{ .exact_signed_int = 8 }},
28978 .patterns = &.{
28979 .{ .src = .{ .to_mem, .none } },
28980 },
28981 .dst_temps = .{.{ .rc = .general_purpose }},
28982 .each = .{ .once = &.{
28983 .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ },
41894 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
41895 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
41896 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41897 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
41898 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
41899 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41900 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2898441901 } },
2898541902 }, .{
28986 .src_constraints = .{ .any_unsigned_int, .any },
28987 .dst_constraints = .{.{ .exact_unsigned_int = 8 }},
41903 .required_features = .{ .sse2, null, null, null },
41904 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41905 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
2898841906 .patterns = &.{
28989 .{ .src = .{ .to_mem, .none } },
41907 .{ .src = .{ .to_mem, .none, .none } },
2899041908 },
28991 .dst_temps = .{.{ .rc = .general_purpose }},
28992 .each = .{ .once = &.{
28993 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
28994 } },
28995 }, .{
28996 .src_constraints = .{ .{ .signed_int = .gpr }, .any },
28997 .dst_constraints = .{.{ .signed_int = .byte }},
28998 .patterns = &.{
28999 .{ .src = .{ .to_mut_gpr, .none } },
41909 .extra_temps = .{
41910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41911 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41912 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41913 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
41914 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41915 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
41916 .unused,
41917 .unused,
41918 .unused,
2900041919 },
29001 .dst_temps = .{.{ .ref = .src0 }},
41920 .dst_temps = .{.mem},
2900241921 .clobbers = .{ .eflags = true },
2900341922 .each = .{ .once = &.{
29004 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29005 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
41923 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
41924 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
41925 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
41926 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
41927 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41928 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
41929 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
41930 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
41931 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
41932 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
41933 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41934 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2900641935 } },
2900741936 }, .{
29008 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },
29009 .dst_constraints = .{.{ .unsigned_int = .byte }},
41937 .required_features = .{ .sse2, null, null, null },
41938 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41939 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2901041940 .patterns = &.{
29011 .{ .src = .{ .to_mut_gpr, .none } },
41941 .{ .src = .{ .to_mem, .none, .none } },
2901241942 },
29013 .dst_temps = .{.{ .ref = .src0 }},
29014 .clobbers = .{ .eflags = true },
29015 .each = .{ .once = &.{
29016 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
29017 } },
29018 }, .{
29019 .src_constraints = .{ .any_int, .any },
29020 .dst_constraints = .{.{ .unsigned_int = .byte }},
29021 .patterns = &.{
29022 .{ .src = .{ .to_mem, .none } },
41943 .extra_temps = .{
41944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41945 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41946 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41947 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41948 .unused,
41949 .unused,
41950 .unused,
41951 .unused,
41952 .unused,
2902341953 },
29024 .dst_temps = .{.{ .rc = .general_purpose }},
41954 .dst_temps = .{.mem},
2902541955 .clobbers = .{ .eflags = true },
2902641956 .each = .{ .once = &.{
29027 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },
29028 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },
41957 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
41958 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
41959 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41960 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
41961 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
41962 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
41963 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2902941965 } },
2903041966 }, .{
29031 .src_constraints = .{ .{ .int = .gpr }, .any },
29032 .dst_constraints = .{.{ .exact_int = 16 }},
41967 .required_features = .{ .sse, null, null, null },
41968 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41969 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
2903341970 .patterns = &.{
29034 .{ .src = .{ .to_mut_gpr, .none } },
41971 .{ .src = .{ .to_mem, .none, .none } },
2903541972 },
29036 .dst_temps = .{.{ .ref = .src0 }},
29037 .each = .{ .once = &.{} },
29038 }, .{
29039 .src_constraints = .{ .any_signed_int, .any },
29040 .dst_constraints = .{.{ .exact_signed_int = 16 }},
29041 .patterns = &.{
29042 .{ .src = .{ .to_mem, .none } },
41973 .extra_temps = .{
41974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
41975 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41976 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
41977 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
41978 .unused,
41979 .unused,
41980 .unused,
41981 .unused,
41982 .unused,
2904341983 },
29044 .dst_temps = .{.{ .rc = .general_purpose }},
41984 .dst_temps = .{.mem},
41985 .clobbers = .{ .eflags = true },
2904541986 .each = .{ .once = &.{
29046 .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ },
41987 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
41988 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
41989 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
41990 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
41991 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
41992 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
41993 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41994 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2904741995 } },
2904841996 }, .{
29049 .src_constraints = .{ .any_unsigned_int, .any },
29050 .dst_constraints = .{.{ .exact_unsigned_int = 16 }},
41997 .required_features = .{ .slow_incdec, null, null, null },
41998 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
41999 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
2905142000 .patterns = &.{
29052 .{ .src = .{ .to_mem, .none } },
42001 .{ .src = .{ .to_mem, .none, .none } },
2905342002 },
29054 .dst_temps = .{.{ .rc = .general_purpose }},
29055 .each = .{ .once = &.{
29056 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
29057 } },
29058 }, .{
29059 .required_features = .{ .fast_imm16, null, null, null },
29060 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },
29061 .dst_constraints = .{.{ .unsigned_int = .word }},
29062 .patterns = &.{
29063 .{ .src = .{ .to_mut_gpr, .none } },
42003 .extra_temps = .{
42004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42005 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42006 .unused,
42007 .unused,
42008 .unused,
42009 .unused,
42010 .unused,
42011 .unused,
42012 .unused,
2906442013 },
29065 .dst_temps = .{.{ .ref = .src0 }},
42014 .dst_temps = .{.mem},
2906642015 .clobbers = .{ .eflags = true },
2906742016 .each = .{ .once = &.{
29068 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
42017 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42018 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42019 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
42020 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
42021 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42022 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2906942024 } },
2907042025 }, .{
29071 .required_features = .{ .fast_imm16, null, null, null },
29072 .src_constraints = .{ .any_unsigned_int, .any },
29073 .dst_constraints = .{.{ .unsigned_int = .word }},
42026 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42027 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
2907442028 .patterns = &.{
29075 .{ .src = .{ .to_mem, .none } },
42029 .{ .src = .{ .to_mem, .none, .none } },
2907642030 },
29077 .dst_temps = .{.{ .rc = .general_purpose }},
42031 .extra_temps = .{
42032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42033 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42034 .unused,
42035 .unused,
42036 .unused,
42037 .unused,
42038 .unused,
42039 .unused,
42040 .unused,
42041 },
42042 .dst_temps = .{.mem},
2907842043 .clobbers = .{ .eflags = true },
2907942044 .each = .{ .once = &.{
29080 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
29081 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
42045 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42046 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42047 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
42048 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
42049 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42050 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42051 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2908242052 } },
2908342053 }, .{
29084 .src_constraints = .{ .{ .int = .gpr }, .any },
29085 .dst_constraints = .{.{ .exact_int = 32 }},
29086 .patterns = &.{
29087 .{ .src = .{ .to_mut_gpr, .none } },
29088 },
29089 .dst_temps = .{.{ .ref = .src0 }},
29090 .each = .{ .once = &.{} },
29091 }, .{
29092 .src_constraints = .{ .any_int, .any },
29093 .dst_constraints = .{.{ .exact_int = 32 }},
42054 .required_features = .{ .slow_incdec, null, null, null },
42055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42056 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2909442057 .patterns = &.{
29095 .{ .src = .{ .to_mem, .none } },
42058 .{ .src = .{ .to_mem, .none, .none } },
2909642059 },
29097 .dst_temps = .{.{ .rc = .general_purpose }},
29098 .each = .{ .once = &.{
29099 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
29100 } },
29101 }, .{
29102 .src_constraints = .{ .{ .signed_int = .gpr }, .any },
29103 .dst_constraints = .{.{ .signed_int = .dword }},
29104 .patterns = &.{
29105 .{ .src = .{ .to_mut_gpr, .none } },
42060 .extra_temps = .{
42061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42062 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42063 .unused,
42064 .unused,
42065 .unused,
42066 .unused,
42067 .unused,
42068 .unused,
42069 .unused,
2910642070 },
29107 .dst_temps = .{.{ .ref = .src0 }},
42071 .dst_temps = .{.mem},
2910842072 .clobbers = .{ .eflags = true },
2910942073 .each = .{ .once = &.{
29110 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
29111 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
42074 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42075 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42076 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42077 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42078 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42079 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42080 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2911242081 } },
2911342082 }, .{
29114 .src_constraints = .{ .any_signed_int, .any },
29115 .dst_constraints = .{.{ .signed_int = .dword }},
42083 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42084 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2911642085 .patterns = &.{
29117 .{ .src = .{ .to_mem, .none } },
42086 .{ .src = .{ .to_mem, .none, .none } },
2911842087 },
29119 .dst_temps = .{.{ .rc = .general_purpose }},
29120 .clobbers = .{ .eflags = true },
29121 .each = .{ .once = &.{
29122 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
29123 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
29124 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
29125 } },
29126 }, .{
29127 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },
29128 .dst_constraints = .{.{ .unsigned_int = .dword }},
29129 .patterns = &.{
29130 .{ .src = .{ .to_mut_gpr, .none } },
42088 .extra_temps = .{
42089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42090 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42091 .unused,
42092 .unused,
42093 .unused,
42094 .unused,
42095 .unused,
42096 .unused,
42097 .unused,
2913142098 },
29132 .dst_temps = .{.{ .ref = .src0 }},
42099 .dst_temps = .{.mem},
2913342100 .clobbers = .{ .eflags = true },
2913442101 .each = .{ .once = &.{
29135 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
42102 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42103 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42104 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42105 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42106 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42107 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42108 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2913642109 } },
2913742110 }, .{
29138 .src_constraints = .{ .any_unsigned_int, .any },
29139 .dst_constraints = .{.{ .unsigned_int = .dword }},
42111 .required_features = .{ .slow_incdec, null, null, null },
42112 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42113 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2914042114 .patterns = &.{
29141 .{ .src = .{ .to_mem, .none } },
42115 .{ .src = .{ .to_mem, .none, .none } },
2914242116 },
29143 .dst_temps = .{.{ .rc = .general_purpose }},
42117 .extra_temps = .{
42118 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42119 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42120 .unused,
42121 .unused,
42122 .unused,
42123 .unused,
42124 .unused,
42125 .unused,
42126 .unused,
42127 },
42128 .dst_temps = .{.mem},
2914442129 .clobbers = .{ .eflags = true },
2914542130 .each = .{ .once = &.{
29146 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
29147 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
42131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42132 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42133 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42134 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42135 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2914842137 } },
2914942138 }, .{
29150 .required_features = .{ .@"64bit", null, null, null },
29151 .src_constraints = .{ .any_int, .any },
29152 .dst_constraints = .{.{ .exact_int = 64 }},
42139 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42140 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2915342141 .patterns = &.{
29154 .{ .src = .{ .to_mem, .none } },
42142 .{ .src = .{ .to_mem, .none, .none } },
2915542143 },
29156 .dst_temps = .{.{ .rc = .general_purpose }},
29157 .each = .{ .once = &.{
29158 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
29159 } },
29160 }, .{
29161 .required_features = .{ .@"64bit", null, null, null },
29162 .src_constraints = .{ .{ .signed_int = .gpr }, .any },
29163 .dst_constraints = .{.{ .signed_int = .qword }},
29164 .patterns = &.{
29165 .{ .src = .{ .to_mut_gpr, .none } },
42144 .extra_temps = .{
42145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42146 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42147 .unused,
42148 .unused,
42149 .unused,
42150 .unused,
42151 .unused,
42152 .unused,
42153 .unused,
2916642154 },
29167 .dst_temps = .{.{ .ref = .src0 }},
42155 .dst_temps = .{.mem},
2916842156 .clobbers = .{ .eflags = true },
2916942157 .each = .{ .once = &.{
29170 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
29171 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
42158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42159 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
42160 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42161 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42162 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42163 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2917242164 } },
2917342165 }, .{
29174 .required_features = .{ .@"64bit", null, null, null },
29175 .src_constraints = .{ .any_signed_int, .any },
29176 .dst_constraints = .{.{ .signed_int = .qword }},
42166 .required_features = .{ .slow_incdec, null, null, null },
42167 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42168 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2917742169 .patterns = &.{
29178 .{ .src = .{ .to_mem, .none } },
42170 .{ .src = .{ .to_mem, .none, .none } },
2917942171 },
29180 .dst_temps = .{.{ .rc = .general_purpose }},
42172 .extra_temps = .{
42173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42174 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42175 .unused,
42176 .unused,
42177 .unused,
42178 .unused,
42179 .unused,
42180 .unused,
42181 .unused,
42182 },
42183 .dst_temps = .{.mem},
2918142184 .clobbers = .{ .eflags = true },
2918242185 .each = .{ .once = &.{
29183 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
29184 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
29185 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
42186 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42187 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42188 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42189 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2918642191 } },
2918742192 }, .{
29188 .required_features = .{ .@"64bit", .bmi2, null, null },
29189 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },
29190 .dst_constraints = .{.{ .unsigned_int = .qword }},
42193 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
42194 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2919142195 .patterns = &.{
29192 .{ .src = .{ .mem, .none } },
29193 .{ .src = .{ .to_gpr, .none } },
42196 .{ .src = .{ .to_mem, .none, .none } },
2919442197 },
29195 .dst_temps = .{.{ .rc = .general_purpose }},
42198 .extra_temps = .{
42199 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42200 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42201 .unused,
42202 .unused,
42203 .unused,
42204 .unused,
42205 .unused,
42206 .unused,
42207 .unused,
42208 },
42209 .dst_temps = .{.mem},
2919642210 .clobbers = .{ .eflags = true },
2919742211 .each = .{ .once = &.{
29198 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
29199 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
42212 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42213 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42214 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42215 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42216 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2920042217 } },
2920142218 }, .{
29202 .required_features = .{ .@"64bit", .bmi2, null, null },
29203 .src_constraints = .{ .any_unsigned_int, .any },
29204 .dst_constraints = .{.{ .unsigned_int = .qword }},
42219 .required_features = .{ .slow_incdec, null, null, null },
42220 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42221 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2920542222 .patterns = &.{
29206 .{ .src = .{ .to_mem, .none } },
42223 .{ .src = .{ .to_mem, .none, .none } },
2920742224 },
29208 .dst_temps = .{.{ .rc = .general_purpose }},
42225 .extra_temps = .{
42226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42227 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42228 .unused,
42229 .unused,
42230 .unused,
42231 .unused,
42232 .unused,
42233 .unused,
42234 .unused,
42235 },
42236 .dst_temps = .{.mem},
2920942237 .clobbers = .{ .eflags = true },
2921042238 .each = .{ .once = &.{
29211 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
29212 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
42239 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42240 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42241 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42242 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42243 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42244 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2921342246 } },
2921442247 }, .{
29215 .required_features = .{ .@"64bit", null, null, null },
29216 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },
29217 .dst_constraints = .{.{ .unsigned_int = .qword }},
42248 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
42249 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2921842250 .patterns = &.{
29219 .{ .src = .{ .mem, .none } },
29220 .{ .src = .{ .to_gpr, .none } },
42251 .{ .src = .{ .to_mem, .none, .none } },
2922142252 },
29222 .dst_temps = .{.{ .rc = .general_purpose }},
42253 .extra_temps = .{
42254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42255 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42256 .unused,
42257 .unused,
42258 .unused,
42259 .unused,
42260 .unused,
42261 .unused,
42262 .unused,
42263 },
42264 .dst_temps = .{.mem},
2922342265 .clobbers = .{ .eflags = true },
2922442266 .each = .{ .once = &.{
29225 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
29226 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
42267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42268 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42269 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42270 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42271 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42272 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42273 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2922742274 } },
2922842275 }, .{
29229 .required_features = .{ .@"64bit", null, null, null },
29230 .src_constraints = .{ .any_unsigned_int, .any },
29231 .dst_constraints = .{.{ .unsigned_int = .qword }},
42276 .required_features = .{ .slow_incdec, null, null, null },
42277 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
42278 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2923242279 .patterns = &.{
29233 .{ .src = .{ .to_mem, .none } },
42280 .{ .src = .{ .to_mem, .none, .none } },
2923442281 },
29235 .dst_temps = .{.{ .rc = .general_purpose }},
42282 .extra_temps = .{
42283 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42284 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42285 .unused,
42286 .unused,
42287 .unused,
42288 .unused,
42289 .unused,
42290 .unused,
42291 .unused,
42292 },
42293 .dst_temps = .{.mem},
2923642294 .clobbers = .{ .eflags = true },
2923742295 .each = .{ .once = &.{
29238 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
29239 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
42296 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42297 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42298 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42299 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42300 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2924042302 } },
2924142303 }, .{
29242 .required_features = .{ .@"64bit", null, null, null },
29243 .src_constraints = .{ .any_int, .any },
29244 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
42304 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
42305 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2924542306 .patterns = &.{
29246 .{ .src = .{ .to_mem, .none } },
42307 .{ .src = .{ .to_mem, .none, .none } },
2924742308 },
2924842309 .extra_temps = .{
29249 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29250 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29251 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42311 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42312 .unused,
2925242313 .unused,
2925342314 .unused,
2925442315 .unused,
......@@ -29257,23 +42318,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2925742318 .unused,
2925842319 },
2925942320 .dst_temps = .{.mem},
42321 .clobbers = .{ .eflags = true },
2926042322 .each = .{ .once = &.{
29261 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29262 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29263 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
29264 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
42323 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42324 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
42325 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42326 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42327 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42328 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2926542329 } },
2926642330 }, .{
29267 .required_features = .{ .@"64bit", null, null, null },
29268 .src_constraints = .{ .any_signed_int, .any },
29269 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
42331 .required_features = .{ .slow_incdec, null, null, null },
42332 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42333 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2927042334 .patterns = &.{
29271 .{ .src = .{ .to_mem, .none } },
42335 .{ .src = .{ .to_mem, .none, .none } },
2927242336 },
2927342337 .extra_temps = .{
29274 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29275 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29276 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42339 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42340 .unused,
2927742341 .unused,
2927842342 .unused,
2927942343 .unused,
......@@ -29284,26 +42348,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2928442348 .dst_temps = .{.mem},
2928542349 .clobbers = .{ .eflags = true },
2928642350 .each = .{ .once = &.{
29287 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29288 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29289 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29290 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29291 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
29292 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29293 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29294 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
42351 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42352 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42353 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42354 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2929542356 } },
2929642357 }, .{
29297 .required_features = .{ .@"64bit", null, null, null },
29298 .src_constraints = .{ .any_signed_int, .any },
29299 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
42358 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42359 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2930042360 .patterns = &.{
29301 .{ .src = .{ .to_mem, .none } },
42361 .{ .src = .{ .to_mem, .none, .none } },
2930242362 },
2930342363 .extra_temps = .{
29304 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29305 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29306 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42365 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42366 .unused,
2930742367 .unused,
2930842368 .unused,
2930942369 .unused,
......@@ -29314,28 +42374,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2931442374 .dst_temps = .{.mem},
2931542375 .clobbers = .{ .eflags = true },
2931642376 .each = .{ .once = &.{
29317 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29318 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29319 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29320 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29321 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
29322 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
29323 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
29324 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29325 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29326 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
42377 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42378 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42379 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42380 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42381 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2932742382 } },
2932842383 }, .{
29329 .required_features = .{ .@"64bit", null, null, null },
29330 .src_constraints = .{ .any_signed_int, .any },
29331 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},
42384 .required_features = .{ .slow_incdec, null, null, null },
42385 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42386 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2933242387 .patterns = &.{
29333 .{ .src = .{ .to_mem, .none } },
42388 .{ .src = .{ .to_mem, .none, .none } },
2933442389 },
2933542390 .extra_temps = .{
29336 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29337 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29338 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42392 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42393 .unused,
2933942394 .unused,
2934042395 .unused,
2934142396 .unused,
......@@ -29346,26 +42401,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2934642401 .dst_temps = .{.mem},
2934742402 .clobbers = .{ .eflags = true },
2934842403 .each = .{ .once = &.{
29349 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29350 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29351 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
29352 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29353 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
29354 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
29355 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
29356 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
42404 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42405 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42406 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42407 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42408 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42409 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2935742411 } },
2935842412 }, .{
29359 .required_features = .{ .@"64bit", null, null, null },
29360 .src_constraints = .{ .any_unsigned_int, .any },
29361 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
42413 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42414 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2936242415 .patterns = &.{
29363 .{ .src = .{ .to_mem, .none } },
42416 .{ .src = .{ .to_mem, .none, .none } },
2936442417 },
2936542418 .extra_temps = .{
29366 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29367 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29368 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42421 .unused,
2936942422 .unused,
2937042423 .unused,
2937142424 .unused,
......@@ -29374,24 +42427,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2937442427 .unused,
2937542428 },
2937642429 .dst_temps = .{.mem},
42430 .clobbers = .{ .eflags = true },
2937742431 .each = .{ .once = &.{
29378 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29379 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29380 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
29381 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29382 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
42432 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42433 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42434 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42435 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42436 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42437 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42438 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2938342439 } },
2938442440 }, .{
29385 .required_features = .{ .@"64bit", .bmi2, null, null },
29386 .src_constraints = .{ .any_unsigned_int, .any },
29387 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
42441 .required_features = .{ .bmi2, .slow_incdec, null, null },
42442 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42443 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2938842444 .patterns = &.{
29389 .{ .src = .{ .to_mem, .none } },
42445 .{ .src = .{ .to_mem, .none, .none } },
2939042446 },
2939142447 .extra_temps = .{
29392 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29393 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29394 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42449 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42450 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2939542451 .unused,
2939642452 .unused,
2939742453 .unused,
......@@ -29402,26 +42458,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2940242458 .dst_temps = .{.mem},
2940342459 .clobbers = .{ .eflags = true },
2940442460 .each = .{ .once = &.{
29405 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29406 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29407 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29408 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29409 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
29410 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
29411 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
29412 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
42461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42462 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
42463 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
42464 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42465 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2941342467 } },
2941442468 }, .{
29415 .required_features = .{ .@"64bit", .bmi2, null, null },
29416 .src_constraints = .{ .any_unsigned_int, .any },
29417 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
42469 .required_features = .{ .bmi2, null, null, null },
42470 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42471 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2941842472 .patterns = &.{
29419 .{ .src = .{ .to_mem, .none } },
42473 .{ .src = .{ .to_mem, .none, .none } },
2942042474 },
2942142475 .extra_temps = .{
29422 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29423 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29424 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42477 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42478 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2942542479 .unused,
2942642480 .unused,
2942742481 .unused,
......@@ -29432,25 +42486,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2943242486 .dst_temps = .{.mem},
2943342487 .clobbers = .{ .eflags = true },
2943442488 .each = .{ .once = &.{
29435 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29436 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29437 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
29438 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29439 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
29440 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },
29441 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
42489 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42490 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
42491 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
42492 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42493 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42494 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2944242495 } },
2944342496 }, .{
29444 .required_features = .{ .@"64bit", null, null, null },
29445 .src_constraints = .{ .any_unsigned_int, .any },
29446 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
42497 .required_features = .{ .slow_incdec, null, null, null },
42498 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42499 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2944742500 .patterns = &.{
29448 .{ .src = .{ .to_mem, .none } },
42501 .{ .src = .{ .to_mem, .none, .none } },
2944942502 },
2945042503 .extra_temps = .{
29451 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29452 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29453 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42505 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42506 .unused,
2945442507 .unused,
2945542508 .unused,
2945642509 .unused,
......@@ -29461,26 +42514,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2946142514 .dst_temps = .{.mem},
2946242515 .clobbers = .{ .eflags = true },
2946342516 .each = .{ .once = &.{
29464 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29465 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29466 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29467 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29468 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
29469 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
29470 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29471 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
42517 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42518 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42519 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42520 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42521 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2947242523 } },
2947342524 }, .{
29474 .required_features = .{ .@"64bit", null, null, null },
29475 .src_constraints = .{ .any_unsigned_int, .any },
29476 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
42525 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
42526 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2947742527 .patterns = &.{
29478 .{ .src = .{ .to_mem, .none } },
42528 .{ .src = .{ .to_mem, .none, .none } },
2947942529 },
2948042530 .extra_temps = .{
29481 .{ .type = .usize, .kind = .{ .reg = .rsi } },
29482 .{ .type = .usize, .kind = .{ .reg = .rdi } },
29483 .{ .type = .u32, .kind = .{ .reg = .ecx } },
42531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42532 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42533 .unused,
2948442534 .unused,
2948542535 .unused,
2948642536 .unused,
......@@ -29491,25 +42541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2949142541 .dst_temps = .{.mem},
2949242542 .clobbers = .{ .eflags = true },
2949342543 .each = .{ .once = &.{
29494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
29495 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
29496 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
29497 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
29498 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
29499 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
29500 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
42544 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42545 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
42546 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42547 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42548 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42549 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2950142550 } },
2950242551 }, .{
29503 .required_features = .{ .avx, null, null, null },
29504 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
29505 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
42552 .required_features = .{ .slow_incdec, null, null, null },
42553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42554 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2950642555 .patterns = &.{
29507 .{ .src = .{ .to_sse, .none } },
42556 .{ .src = .{ .to_mem, .none, .none } },
2950842557 },
2950942558 .extra_temps = .{
29510 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29511 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29512 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42560 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42561 .unused,
2951342562 .unused,
2951442563 .unused,
2951542564 .unused,
......@@ -29517,24 +42566,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2951742566 .unused,
2951842567 .unused,
2951942568 },
29520 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42569 .dst_temps = .{.mem},
42570 .clobbers = .{ .eflags = true },
2952142571 .each = .{ .once = &.{
29522 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29523 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
29524 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
29525 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
29526 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
42572 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42573 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42574 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42575 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2952742577 } },
2952842578 }, .{
29529 .required_features = .{ .avx, null, null, null },
29530 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29531 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42579 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42580 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2953242581 .patterns = &.{
29533 .{ .src = .{ .to_sse, .none } },
42582 .{ .src = .{ .to_mem, .none, .none } },
2953442583 },
2953542584 .extra_temps = .{
29536 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29537 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
42585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42586 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2953842587 .unused,
2953942588 .unused,
2954042589 .unused,
......@@ -29543,22 +42592,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2954342592 .unused,
2954442593 .unused,
2954542594 },
29546 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42595 .dst_temps = .{.mem},
42596 .clobbers = .{ .eflags = true },
2954742597 .each = .{ .once = &.{
29548 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29549 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
42598 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42599 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42600 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42601 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42602 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2955042603 } },
2955142604 }, .{
29552 .required_features = .{ .sse2, null, null, null },
29553 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
29554 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
42605 .required_features = .{ .slow_incdec, null, null, null },
42606 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42607 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2955542608 .patterns = &.{
29556 .{ .src = .{ .to_mut_sse, .none } },
42609 .{ .src = .{ .to_mem, .none, .none } },
2955742610 },
2955842611 .extra_temps = .{
29559 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29560 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29561 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42613 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42614 .unused,
2956242615 .unused,
2956342616 .unused,
2956442617 .unused,
......@@ -29566,24 +42619,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2956642619 .unused,
2956742620 .unused,
2956842621 },
29569 .dst_temps = .{.{ .ref = .src0 }},
42622 .dst_temps = .{.mem},
42623 .clobbers = .{ .eflags = true },
2957042624 .each = .{ .once = &.{
29571 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29572 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
29573 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
29574 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
29575 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
42625 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42626 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42627 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42628 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42629 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42630 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2957642632 } },
2957742633 }, .{
29578 .required_features = .{ .sse2, null, null, null },
29579 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29580 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42634 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42635 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2958142636 .patterns = &.{
29582 .{ .src = .{ .to_mut_sse, .none } },
42637 .{ .src = .{ .to_mem, .none, .none } },
2958342638 },
2958442639 .extra_temps = .{
29585 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29586 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
42640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42641 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
2958742642 .unused,
2958842643 .unused,
2958942644 .unused,
......@@ -29592,22 +42647,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2959242647 .unused,
2959342648 .unused,
2959442649 },
29595 .dst_temps = .{.{ .ref = .src0 }},
42650 .dst_temps = .{.mem},
42651 .clobbers = .{ .eflags = true },
2959642652 .each = .{ .once = &.{
29597 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29598 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
42653 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42654 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42655 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42656 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42657 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42658 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42659 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2959942660 } },
2960042661 }, .{
29601 .required_features = .{ .sse, null, null, null },
29602 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29603 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42662 .required_features = .{ .bmi2, .slow_incdec, null, null },
42663 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42664 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2960442665 .patterns = &.{
29605 .{ .src = .{ .to_mut_sse, .none } },
42666 .{ .src = .{ .to_mem, .none, .none } },
2960642667 },
2960742668 .extra_temps = .{
29608 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29609 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
29610 .unused,
42669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42670 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42671 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2961142672 .unused,
2961242673 .unused,
2961342674 .unused,
......@@ -29615,22 +42676,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2961542676 .unused,
2961642677 .unused,
2961742678 },
29618 .dst_temps = .{.{ .ref = .src0 }},
42679 .dst_temps = .{.mem},
42680 .clobbers = .{ .eflags = true },
2961942681 .each = .{ .once = &.{
29620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29621 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
42682 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42683 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
42684 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
42685 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42686 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42687 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2962242688 } },
2962342689 }, .{
29624 .required_features = .{ .avx2, null, null, null },
29625 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
29626 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},
42690 .required_features = .{ .bmi2, null, null, null },
42691 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42692 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2962742693 .patterns = &.{
29628 .{ .src = .{ .to_sse, .none } },
42694 .{ .src = .{ .to_mem, .none, .none } },
2962942695 },
2963042696 .extra_temps = .{
29631 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29632 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29633 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42698 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42699 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2963442700 .unused,
2963542701 .unused,
2963642702 .unused,
......@@ -29638,24 +42704,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2963842704 .unused,
2963942705 .unused,
2964042706 },
29641 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42707 .dst_temps = .{.mem},
42708 .clobbers = .{ .eflags = true },
2964242709 .each = .{ .once = &.{
29643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29644 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
29645 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
29646 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
29647 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
42710 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42711 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
42712 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
42713 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42714 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42715 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2964842716 } },
2964942717 }, .{
29650 .required_features = .{ .avx2, null, null, null },
29651 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
29652 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
42718 .required_features = .{ .slow_incdec, null, null, null },
42719 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42720 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2965342721 .patterns = &.{
29654 .{ .src = .{ .to_sse, .none } },
42722 .{ .src = .{ .to_mem, .none, .none } },
2965542723 },
2965642724 .extra_temps = .{
29657 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29658 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
42725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42726 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2965942727 .unused,
2966042728 .unused,
2966142729 .unused,
......@@ -29664,25 +42732,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2966442732 .unused,
2966542733 .unused,
2966642734 },
29667 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
42735 .dst_temps = .{.mem},
42736 .clobbers = .{ .eflags = true },
2966842737 .each = .{ .once = &.{
29669 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29670 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
42738 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
42739 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42740 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42741 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42742 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42743 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2967142744 } },
2967242745 }, .{
29673 .required_features = .{ .avx2, null, null, null },
29674 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
29675 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
42746 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
42747 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2967642748 .patterns = &.{
29677 .{ .src = .{ .to_mem, .none } },
42749 .{ .src = .{ .to_mem, .none, .none } },
2967842750 },
2967942751 .extra_temps = .{
2968042752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29681 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
29682 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
29683 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
29684 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29685 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42753 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42754 .unused,
42755 .unused,
42756 .unused,
42757 .unused,
2968642758 .unused,
2968742759 .unused,
2968842760 .unused,
......@@ -29690,30 +42762,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2969042762 .dst_temps = .{.mem},
2969142763 .clobbers = .{ .eflags = true },
2969242764 .each = .{ .once = &.{
29693 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
29694 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
29695 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
29696 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2969742765 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29698 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
29699 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
29700 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
29701 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
29702 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
29703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42766 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
42767 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
42768 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42769 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42770 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2970442771 } },
2970542772 }, .{
29706 .required_features = .{ .avx2, null, null, null },
29707 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
29708 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
42773 .required_features = .{ .slow_incdec, null, null, null },
42774 .src_constraints = .{ .any_scalar_int, .any, .any },
42775 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2970942776 .patterns = &.{
29710 .{ .src = .{ .to_mem, .none } },
42777 .{ .src = .{ .to_mem, .none, .none } },
2971142778 },
2971242779 .extra_temps = .{
2971342780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29714 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
29715 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
29716 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
42781 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42782 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42783 .unused,
2971742784 .unused,
2971842785 .unused,
2971942786 .unused,
......@@ -29723,28 +42790,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2972342790 .dst_temps = .{.mem},
2972442791 .clobbers = .{ .eflags = true },
2972542792 .each = .{ .once = &.{
29726 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29727 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
2972842793 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29729 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
29730 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
29731 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
42794 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42795 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
42796 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42797 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42798 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2973242799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2973342800 } },
2973442801 }, .{
29735 .required_features = .{ .avx, null, null, null },
29736 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
29737 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
42802 .src_constraints = .{ .any_scalar_int, .any, .any },
42803 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
2973842804 .patterns = &.{
29739 .{ .src = .{ .to_mem, .none } },
42805 .{ .src = .{ .to_mem, .none, .none } },
2974042806 },
2974142807 .extra_temps = .{
2974242808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29743 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29744 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29745 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29746 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29747 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42809 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42810 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42811 .unused,
42812 .unused,
42813 .unused,
2974842814 .unused,
2974942815 .unused,
2975042816 .unused,
......@@ -29752,30 +42818,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2975242818 .dst_temps = .{.mem},
2975342819 .clobbers = .{ .eflags = true },
2975442820 .each = .{ .once = &.{
29755 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
29756 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
29757 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
29758 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2975942821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29760 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
29761 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
29762 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
29763 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
29764 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42822 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42823 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
42824 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42825 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42826 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42827 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2976642828 } },
2976742829 }, .{
29768 .required_features = .{ .avx, null, null, null },
29769 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29770 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42830 .required_features = .{ .slow_incdec, null, null, null },
42831 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
42832 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2977142833 .patterns = &.{
29772 .{ .src = .{ .to_mem, .none } },
42834 .{ .src = .{ .to_mem, .none, .none } },
2977342835 },
2977442836 .extra_temps = .{
2977542837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29776 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29777 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29778 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
42838 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42839 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42840 .unused,
2977942841 .unused,
2978042842 .unused,
2978142843 .unused,
......@@ -29785,28 +42847,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2978542847 .dst_temps = .{.mem},
2978642848 .clobbers = .{ .eflags = true },
2978742849 .each = .{ .once = &.{
29788 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29789 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
2979042850 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29791 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
29792 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
29793 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42851 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42852 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
42853 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42854 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42855 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42856 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42857 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2979442858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2979542859 } },
2979642860 }, .{
29797 .required_features = .{ .sse2, null, null, null },
29798 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
29799 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
42861 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
42862 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
2980042863 .patterns = &.{
29801 .{ .src = .{ .to_mem, .none } },
42864 .{ .src = .{ .to_mem, .none, .none } },
2980242865 },
2980342866 .extra_temps = .{
2980442867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29805 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29806 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29807 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
29808 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29809 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
42868 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42869 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
42870 .unused,
42871 .unused,
42872 .unused,
2981042873 .unused,
2981142874 .unused,
2981242875 .unused,
......@@ -29814,31 +42877,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2981442877 .dst_temps = .{.mem},
2981542878 .clobbers = .{ .eflags = true },
2981642879 .each = .{ .once = &.{
29817 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
29818 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
29819 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
29820 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2982142880 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29822 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
29823 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29824 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },
29825 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
29826 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
29827 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42881 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42882 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
42883 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42884 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
42885 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42886 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42887 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42888 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2982942889 } },
2983042890 }, .{
29831 .required_features = .{ .sse2, null, null, null },
29832 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29833 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42891 .required_features = .{ .bmi2, .slow_incdec, null, null },
42892 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
42893 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2983442894 .patterns = &.{
29835 .{ .src = .{ .to_mem, .none } },
42895 .{ .src = .{ .to_mem, .none, .none } },
2983642896 },
2983742897 .extra_temps = .{
2983842898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29839 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29840 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29841 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
42899 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42900 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42901 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2984242902 .unused,
2984342903 .unused,
2984442904 .unused,
......@@ -29848,27 +42908,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2984842908 .dst_temps = .{.mem},
2984942909 .clobbers = .{ .eflags = true },
2985042910 .each = .{ .once = &.{
29851 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29852 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
2985342911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29854 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
29855 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29856 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
29857 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
42912 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42913 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
42914 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
42915 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
42916 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42917 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2985842918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2985942919 } },
2986042920 }, .{
29861 .required_features = .{ .sse, null, null, null },
29862 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
29863 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
42921 .required_features = .{ .bmi2, null, null, null },
42922 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
42923 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2986442924 .patterns = &.{
29865 .{ .src = .{ .to_mem, .none } },
42925 .{ .src = .{ .to_mem, .none, .none } },
2986642926 },
2986742927 .extra_temps = .{
2986842928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29869 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29870 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29871 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
42929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42930 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
42931 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2987242932 .unused,
2987342933 .unused,
2987442934 .unused,
......@@ -29878,26 +42938,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2987842938 .dst_temps = .{.mem},
2987942939 .clobbers = .{ .eflags = true },
2988042940 .each = .{ .once = &.{
29881 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29882 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
2988342941 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29884 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
29885 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
29886 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
29887 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
29888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
42942 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42943 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
42944 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
42945 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
42946 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42947 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42948 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2988942949 } },
2989042950 }, .{
2989142951 .required_features = .{ .slow_incdec, null, null, null },
29892 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
29893 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
42952 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
42953 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2989442954 .patterns = &.{
29895 .{ .src = .{ .to_mem, .none } },
42955 .{ .src = .{ .to_mem, .none, .none } },
2989642956 },
2989742957 .extra_temps = .{
2989842958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29899 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29900 .unused,
42959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42960 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2990142961 .unused,
2990242962 .unused,
2990342963 .unused,
......@@ -29909,23 +42969,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2990942969 .clobbers = .{ .eflags = true },
2991042970 .each = .{ .once = &.{
2991142971 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29912 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
29913 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
29914 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
29915 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42972 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
42973 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
42974 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
42975 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42976 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
2991642977 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
2991742978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2991842979 } },
2991942980 }, .{
29920 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
29921 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
42981 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
42982 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
2992242983 .patterns = &.{
29923 .{ .src = .{ .to_mem, .none } },
42984 .{ .src = .{ .to_mem, .none, .none } },
2992442985 },
2992542986 .extra_temps = .{
2992642987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29927 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29928 .unused,
42988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
42989 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
2992942990 .unused,
2993042991 .unused,
2993142992 .unused,
......@@ -29937,23 +42998,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2993742998 .clobbers = .{ .eflags = true },
2993842999 .each = .{ .once = &.{
2993943000 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29940 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
29941 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
29942 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
29943 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
43001 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
43002 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
43003 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
43004 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
43005 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
2994443006 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
2994543007 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
2994643008 } },
2994743009 }, .{
29948 .required_features = .{ .slow_incdec, null, null, null },
29949 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
29950 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43010 .required_features = .{ .avx, null, null, null },
43011 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
43012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
43013 .patterns = &.{
43014 .{ .src = .{ .to_sse, .none, .none } },
43015 },
43016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43017 .each = .{ .once = &.{
43018 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },
43019 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },
43020 } },
43021 }, .{
43022 .required_features = .{ .avx, null, null, null },
43023 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43024 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2995143025 .patterns = &.{
29952 .{ .src = .{ .to_mem, .none } },
43026 .{ .src = .{ .to_sse, .none, .none } },
2995343027 },
2995443028 .extra_temps = .{
29955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29956 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43029 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43030 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2995743031 .unused,
2995843032 .unused,
2995943033 .unused,
......@@ -29962,26 +43036,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2996243036 .unused,
2996343037 .unused,
2996443038 },
29965 .dst_temps = .{.mem},
29966 .clobbers = .{ .eflags = true },
43039 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2996743040 .each = .{ .once = &.{
29968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29969 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
29970 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29971 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29972 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29973 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43041 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43042 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2997543043 } },
2997643044 }, .{
29977 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
29978 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43045 .required_features = .{ .sse2, null, null, null },
43046 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
43047 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
43048 .patterns = &.{
43049 .{ .src = .{ .to_mut_sse, .none, .none } },
43050 },
43051 .dst_temps = .{.{ .ref = .src0 }},
43052 .each = .{ .once = &.{
43053 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
43054 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
43055 } },
43056 }, .{
43057 .required_features = .{ .sse2, null, null, null },
43058 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43059 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
2997943060 .patterns = &.{
29980 .{ .src = .{ .to_mem, .none } },
43061 .{ .src = .{ .to_mut_sse, .none, .none } },
2998143062 },
2998243063 .extra_temps = .{
29983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29984 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43064 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43065 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
2998543066 .unused,
2998643067 .unused,
2998743068 .unused,
......@@ -29990,27 +43071,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2999043071 .unused,
2999143072 .unused,
2999243073 },
29993 .dst_temps = .{.mem},
29994 .clobbers = .{ .eflags = true },
43074 .dst_temps = .{.{ .ref = .src0 }},
2999543075 .each = .{ .once = &.{
29996 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29997 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
29998 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29999 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30000 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30001 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30002 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43076 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43077 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
3000343078 } },
3000443079 }, .{
30005 .required_features = .{ .slow_incdec, null, null, null },
30006 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
30007 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43080 .required_features = .{ .sse, null, null, null },
43081 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43082 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
3000843083 .patterns = &.{
30009 .{ .src = .{ .to_mem, .none } },
43084 .{ .src = .{ .to_mut_sse, .none, .none } },
3001043085 },
3001143086 .extra_temps = .{
30012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30013 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43088 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
3001443089 .unused,
3001543090 .unused,
3001643091 .unused,
......@@ -30019,25 +43094,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3001943094 .unused,
3002043095 .unused,
3002143096 },
30022 .dst_temps = .{.mem},
30023 .clobbers = .{ .eflags = true },
43097 .dst_temps = .{.{ .ref = .src0 }},
3002443098 .each = .{ .once = &.{
30025 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30026 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
30027 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30028 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30029 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43099 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43100 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
3003143101 } },
3003243102 }, .{
30033 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
30034 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43103 .required_features = .{ .avx2, null, null, null },
43104 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
43105 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
43106 .patterns = &.{
43107 .{ .src = .{ .to_sse, .none, .none } },
43108 },
43109 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
43110 .each = .{ .once = &.{
43111 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },
43112 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },
43113 } },
43114 }, .{
43115 .required_features = .{ .avx2, null, null, null },
43116 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
43117 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
3003543118 .patterns = &.{
30036 .{ .src = .{ .to_mem, .none } },
43119 .{ .src = .{ .to_sse, .none, .none } },
3003743120 },
3003843121 .extra_temps = .{
30039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30040 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
43123 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
3004143124 .unused,
3004243125 .unused,
3004343126 .unused,
......@@ -30046,26 +43129,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3004643129 .unused,
3004743130 .unused,
3004843131 },
30049 .dst_temps = .{.mem},
30050 .clobbers = .{ .eflags = true },
43132 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3005143133 .each = .{ .once = &.{
30052 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30053 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
30054 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30055 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30056 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30057 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43134 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
43135 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
3005843136 } },
3005943137 }, .{
30060 .required_features = .{ .slow_incdec, null, null, null },
30061 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
30062 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43138 .required_features = .{ .avx2, null, null, null },
43139 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
43140 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
3006343141 .patterns = &.{
30064 .{ .src = .{ .to_mem, .none } },
43142 .{ .src = .{ .to_mem, .none, .none } },
3006543143 },
3006643144 .extra_temps = .{
3006743145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30068 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43146 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
3006943147 .unused,
3007043148 .unused,
3007143149 .unused,
......@@ -30078,22 +43156,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3007843156 .clobbers = .{ .eflags = true },
3007943157 .each = .{ .once = &.{
3008043158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30081 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30082 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30083 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43159 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
43160 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
43161 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
43162 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
43163 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3008443164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3008543165 } },
3008643166 }, .{
30087 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
30088 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43167 .required_features = .{ .avx2, null, null, null },
43168 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
43169 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
3008943170 .patterns = &.{
30090 .{ .src = .{ .to_mem, .none } },
43171 .{ .src = .{ .to_mem, .none, .none } },
3009143172 },
3009243173 .extra_temps = .{
3009343174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30094 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30095 .unused,
30096 .unused,
43175 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
43176 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
43177 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3009743178 .unused,
3009843179 .unused,
3009943180 .unused,
......@@ -30103,22 +43184,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3010343184 .dst_temps = .{.mem},
3010443185 .clobbers = .{ .eflags = true },
3010543186 .each = .{ .once = &.{
43187 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43188 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
3010643189 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30107 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30108 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30109 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30110 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43190 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
43191 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
43192 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
43193 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3011143194 } },
3011243195 }, .{
30113 .required_features = .{ .slow_incdec, null, null, null },
30114 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
30115 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43196 .required_features = .{ .avx, null, null, null },
43197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
43198 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
3011643199 .patterns = &.{
30117 .{ .src = .{ .to_mem, .none } },
43200 .{ .src = .{ .to_mem, .none, .none } },
3011843201 },
3011943202 .extra_temps = .{
3012043203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30121 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43204 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
3012243205 .unused,
3012343206 .unused,
3012443207 .unused,
......@@ -30131,24 +43214,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3013143214 .clobbers = .{ .eflags = true },
3013243215 .each = .{ .once = &.{
3013343216 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30134 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30135 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30136 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30137 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30138 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43217 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43218 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
43219 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
43220 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
43221 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3013943222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3014043223 } },
3014143224 }, .{
30142 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
30143 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43225 .required_features = .{ .avx, null, null, null },
43226 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43227 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
3014443228 .patterns = &.{
30145 .{ .src = .{ .to_mem, .none } },
43229 .{ .src = .{ .to_mem, .none, .none } },
3014643230 },
3014743231 .extra_temps = .{
3014843232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30149 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
30150 .unused,
30151 .unused,
43233 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43234 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43235 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3015243236 .unused,
3015343237 .unused,
3015443238 .unused,
......@@ -30158,24 +43242,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3015843242 .dst_temps = .{.mem},
3015943243 .clobbers = .{ .eflags = true },
3016043244 .each = .{ .once = &.{
43245 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43246 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
3016143247 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30162 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30163 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30164 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30165 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30166 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30167 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43248 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
43249 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43250 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3016843252 } },
3016943253 }, .{
30170 .required_features = .{ .slow_incdec, null, null, null },
30171 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
30172 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43254 .required_features = .{ .sse2, null, null, null },
43255 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
43256 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
3017343257 .patterns = &.{
30174 .{ .src = .{ .to_mem, .none } },
43258 .{ .src = .{ .to_mem, .none, .none } },
3017543259 },
3017643260 .extra_temps = .{
3017743261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30178 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43262 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
3017943263 .unused,
3018043264 .unused,
3018143265 .unused,
......@@ -30188,24 +43272,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3018843272 .clobbers = .{ .eflags = true },
3018943273 .each = .{ .once = &.{
3019043274 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30191 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30192 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30193 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30194 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43275 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43276 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
43277 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
43278 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
43279 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3019543280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3019643281 } },
3019743282 }, .{
30198 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
30199 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43283 .required_features = .{ .sse2, null, null, null },
43284 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43285 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
3020043286 .patterns = &.{
30201 .{ .src = .{ .to_mem, .none } },
43287 .{ .src = .{ .to_mem, .none, .none } },
3020243288 },
3020343289 .extra_temps = .{
3020443290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30205 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43291 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43292 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43293 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43294 .unused,
43295 .unused,
3020643296 .unused,
3020743297 .unused,
3020843298 .unused,
43299 },
43300 .dst_temps = .{.mem},
43301 .clobbers = .{ .eflags = true },
43302 .each = .{ .once = &.{
43303 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43304 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
43305 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
43306 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
43307 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43308 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43309 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
43311 } },
43312 }, .{
43313 .required_features = .{ .sse, null, null, null },
43314 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43315 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
43316 .patterns = &.{
43317 .{ .src = .{ .to_mem, .none, .none } },
43318 },
43319 .extra_temps = .{
43320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43321 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43322 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
43323 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
43324 .unused,
3020943325 .unused,
3021043326 .unused,
3021143327 .unused,
......@@ -30214,23 +43330,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3021443330 .dst_temps = .{.mem},
3021543331 .clobbers = .{ .eflags = true },
3021643332 .each = .{ .once = &.{
43333 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43334 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
3021743335 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30218 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30219 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30220 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30221 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30222 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43336 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
43337 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
43338 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
43339 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
43340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3022343341 } },
3022443342 }, .{
30225 .required_features = .{ .slow_incdec, null, null, null },
30226 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
30227 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43343 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
43344 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
3022843345 .patterns = &.{
30229 .{ .src = .{ .to_mem, .none } },
43346 .{ .src = .{ .to_mem, .none, .none } },
3023043347 },
3023143348 .extra_temps = .{
3023243349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30233 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43350 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3023443351 .unused,
3023543352 .unused,
3023643353 .unused,
......@@ -30243,20 +43360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3024343360 .clobbers = .{ .eflags = true },
3024443361 .each = .{ .once = &.{
3024543362 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30246 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30247 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30248 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43363 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
43364 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43365 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3024943366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3025043367 } },
3025143368 }, .{
30252 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
30253 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43369 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
43370 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
3025443371 .patterns = &.{
30255 .{ .src = .{ .to_mem, .none } },
43372 .{ .src = .{ .to_mem, .none, .none } },
3025643373 },
3025743374 .extra_temps = .{
3025843375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30259 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43376 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
3026043377 .unused,
3026143378 .unused,
3026243379 .unused,
......@@ -30269,21 +43386,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3026943386 .clobbers = .{ .eflags = true },
3027043387 .each = .{ .once = &.{
3027143388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30272 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30273 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30274 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30275 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43389 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
43390 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43391 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43392 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43393 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3027643395 } },
3027743396 }, .{
30278 .required_features = .{ .slow_incdec, null, null, null },
30279 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
30280 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43397 .required_features = .{ .fast_imm16, null, null, null },
43398 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
43399 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3028143400 .patterns = &.{
30282 .{ .src = .{ .to_mem, .none } },
43401 .{ .src = .{ .to_mem, .none, .none } },
3028343402 },
3028443403 .extra_temps = .{
3028543404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30286 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43405 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3028743406 .unused,
3028843407 .unused,
3028943408 .unused,
......@@ -30296,22 +43415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3029643415 .clobbers = .{ .eflags = true },
3029743416 .each = .{ .once = &.{
3029843417 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30299 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30300 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30301 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30302 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30303 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43418 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
43419 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
43420 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43421 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3030443422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3030543423 } },
3030643424 }, .{
30307 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
30308 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43425 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
43426 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3030943427 .patterns = &.{
30310 .{ .src = .{ .to_mem, .none } },
43428 .{ .src = .{ .to_mem, .none, .none } },
3031143429 },
3031243430 .extra_temps = .{
3031343431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30314 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43432 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3031543433 .unused,
3031643434 .unused,
3031743435 .unused,
......@@ -30324,24 +43442,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3032443442 .clobbers = .{ .eflags = true },
3032543443 .each = .{ .once = &.{
3032643444 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30327 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30328 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30329 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30330 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30331 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30332 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43445 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
43446 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
43447 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43448 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3033343450 } },
3033443451 }, .{
30335 .required_features = .{ .bmi2, .slow_incdec, null, null },
30336 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
30337 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43452 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43453 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
3033843454 .patterns = &.{
30339 .{ .src = .{ .to_mem, .none } },
43455 .{ .src = .{ .to_mem, .none, .none } },
3034043456 },
3034143457 .extra_temps = .{
3034243458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30343 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30344 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43459 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
43460 .unused,
3034543461 .unused,
3034643462 .unused,
3034743463 .unused,
......@@ -30353,23 +43469,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3035343469 .clobbers = .{ .eflags = true },
3035443470 .each = .{ .once = &.{
3035543471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30356 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30357 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30358 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30359 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43472 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
43473 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43474 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3036043475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3036143476 } },
3036243477 }, .{
30363 .required_features = .{ .bmi2, null, null, null },
30364 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
30365 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43478 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43479 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
3036643480 .patterns = &.{
30367 .{ .src = .{ .to_mem, .none } },
43481 .{ .src = .{ .to_mem, .none, .none } },
3036843482 },
3036943483 .extra_temps = .{
3037043484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30371 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30372 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43485 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
43486 .unused,
3037343487 .unused,
3037443488 .unused,
3037543489 .unused,
......@@ -30381,23 +43495,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3038143495 .clobbers = .{ .eflags = true },
3038243496 .each = .{ .once = &.{
3038343497 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30384 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30385 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30386 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30387 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30388 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43498 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
43499 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43500 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43501 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43502 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3038943504 } },
3039043505 }, .{
30391 .required_features = .{ .slow_incdec, null, null, null },
30392 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
30393 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43506 .required_features = .{ .bmi2, null, null, null },
43507 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43508 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3039443509 .patterns = &.{
30395 .{ .src = .{ .to_mem, .none } },
43510 .{ .src = .{ .to_mem, .none, .none } },
3039643511 },
3039743512 .extra_temps = .{
3039843513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3039943514 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30400 .unused,
43515 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3040143516 .unused,
3040243517 .unused,
3040343518 .unused,
......@@ -30409,21 +43524,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3040943524 .clobbers = .{ .eflags = true },
3041043525 .each = .{ .once = &.{
3041143526 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30412 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30413 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30414 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30415 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43527 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
43528 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
43529 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
43530 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3041643531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3041743532 } },
3041843533 }, .{
30419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
30420 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43534 .required_features = .{ .fast_imm16, null, null, null },
43535 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43536 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3042143537 .patterns = &.{
30422 .{ .src = .{ .to_mem, .none } },
43538 .{ .src = .{ .to_mem, .none, .none } },
3042343539 },
3042443540 .extra_temps = .{
3042543541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30426 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43542 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3042743543 .unused,
3042843544 .unused,
3042943545 .unused,
......@@ -30436,22 +43552,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3043643552 .clobbers = .{ .eflags = true },
3043743553 .each = .{ .once = &.{
3043843554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30439 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30440 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30441 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30442 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30443 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43555 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
43556 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
43557 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43558 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3044443560 } },
3044543561 }, .{
30446 .required_features = .{ .slow_incdec, null, null, null },
30447 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
30448 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43562 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43563 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3044943564 .patterns = &.{
30450 .{ .src = .{ .to_mem, .none } },
43565 .{ .src = .{ .to_mem, .none, .none } },
3045143566 },
3045243567 .extra_temps = .{
3045343568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30454 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43569 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3045543570 .unused,
3045643571 .unused,
3045743572 .unused,
......@@ -30464,20 +43579,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3046443579 .clobbers = .{ .eflags = true },
3046543580 .each = .{ .once = &.{
3046643581 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30467 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30468 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30469 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43582 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
43583 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
43584 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3047043586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3047143587 } },
3047243588 }, .{
30473 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
30474 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43589 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43590 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
3047543591 .patterns = &.{
30476 .{ .src = .{ .to_mem, .none } },
43592 .{ .src = .{ .to_mem, .none, .none } },
3047743593 },
3047843594 .extra_temps = .{
3047943595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30480 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43596 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3048143597 .unused,
3048243598 .unused,
3048343599 .unused,
......@@ -30490,21 +43606,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3049043606 .clobbers = .{ .eflags = true },
3049143607 .each = .{ .once = &.{
3049243608 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30493 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30494 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30495 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30496 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43609 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
43610 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43611 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3049743613 } },
3049843614 }, .{
30499 .required_features = .{ .slow_incdec, null, null, null },
30500 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
30501 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43615 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43616 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
3050243617 .patterns = &.{
30503 .{ .src = .{ .to_mem, .none } },
43618 .{ .src = .{ .to_mem, .none, .none } },
3050443619 },
3050543620 .extra_temps = .{
3050643621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30507 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43622 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
3050843623 .unused,
3050943624 .unused,
3051043625 .unused,
......@@ -30517,23 +43632,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3051743632 .clobbers = .{ .eflags = true },
3051843633 .each = .{ .once = &.{
3051943634 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30520 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30521 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30522 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30523 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30524 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43635 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
43636 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43637 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43638 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43639 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3052543640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3052643641 } },
3052743642 }, .{
30528 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
30529 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43643 .required_features = .{ .bmi2, null, null, null },
43644 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43645 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3053043646 .patterns = &.{
30531 .{ .src = .{ .to_mem, .none } },
43647 .{ .src = .{ .to_mem, .none, .none } },
3053243648 },
3053343649 .extra_temps = .{
3053443650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30535 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
30536 .unused,
43651 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43652 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3053743653 .unused,
3053843654 .unused,
3053943655 .unused,
......@@ -30545,24 +43661,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3054543661 .clobbers = .{ .eflags = true },
3054643662 .each = .{ .once = &.{
3054743663 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30548 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30549 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30550 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30551 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30552 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30553 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43664 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
43665 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
43666 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
43667 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43668 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3055443669 } },
3055543670 }, .{
30556 .required_features = .{ .bmi2, .slow_incdec, null, null },
30557 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
30558 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43671 .required_features = .{ .fast_imm16, null, null, null },
43672 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43673 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3055943674 .patterns = &.{
30560 .{ .src = .{ .to_mem, .none } },
43675 .{ .src = .{ .to_mem, .none, .none } },
3056143676 },
3056243677 .extra_temps = .{
3056343678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30564 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30565 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43679 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
43680 .unused,
3056643681 .unused,
3056743682 .unused,
3056843683 .unused,
......@@ -30574,23 +43689,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3057443689 .clobbers = .{ .eflags = true },
3057543690 .each = .{ .once = &.{
3057643691 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30577 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30578 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30579 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30580 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43692 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
43693 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
43694 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43695 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3058143696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3058243697 } },
3058343698 }, .{
30584 .required_features = .{ .bmi2, null, null, null },
30585 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
30586 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43699 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43700 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3058743701 .patterns = &.{
30588 .{ .src = .{ .to_mem, .none } },
43702 .{ .src = .{ .to_mem, .none, .none } },
3058943703 },
3059043704 .extra_temps = .{
3059143705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30592 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30593 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43706 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
43707 .unused,
3059443708 .unused,
3059543709 .unused,
3059643710 .unused,
......@@ -30602,22 +43716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3060243716 .clobbers = .{ .eflags = true },
3060343717 .each = .{ .once = &.{
3060443718 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30605 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30606 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30607 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30608 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30609 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43719 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
43720 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
43721 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43722 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3061043724 } },
3061143725 }, .{
30612 .required_features = .{ .slow_incdec, null, null, null },
30613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
30614 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43726 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43727 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
3061543728 .patterns = &.{
30616 .{ .src = .{ .to_mem, .none } },
43729 .{ .src = .{ .to_mem, .none, .none } },
3061743730 },
3061843731 .extra_temps = .{
3061943732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30620 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43733 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3062143734 .unused,
3062243735 .unused,
3062343736 .unused,
......@@ -30631,20 +43744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3063143744 .each = .{ .once = &.{
3063243745 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3063343746 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30634 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30635 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30636 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43747 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43748 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3063743749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3063843750 } },
3063943751 }, .{
30640 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
30641 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43752 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43753 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
3064243754 .patterns = &.{
30643 .{ .src = .{ .to_mem, .none } },
43755 .{ .src = .{ .to_mem, .none, .none } },
3064443756 },
3064543757 .extra_temps = .{
3064643758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30647 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43759 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
3064843760 .unused,
3064943761 .unused,
3065043762 .unused,
......@@ -30658,22 +43770,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3065843770 .each = .{ .once = &.{
3065943771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3066043772 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30661 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30662 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30663 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30664 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43773 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43774 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43775 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43776 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43777 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3066543778 } },
3066643779 }, .{
30667 .required_features = .{ .slow_incdec, null, null, null },
30668 .src_constraints = .{ .any_scalar_int, .any },
30669 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43780 .required_features = .{ .bmi2, null, null, null },
43781 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43782 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3067043783 .patterns = &.{
30671 .{ .src = .{ .to_mem, .none } },
43784 .{ .src = .{ .to_mem, .none, .none } },
3067243785 },
3067343786 .extra_temps = .{
3067443787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30675 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3067643788 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43789 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3067743790 .unused,
3067843791 .unused,
3067943792 .unused,
......@@ -30685,23 +43798,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3068543798 .clobbers = .{ .eflags = true },
3068643799 .each = .{ .once = &.{
3068743800 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30688 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30689 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30690 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30691 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30692 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43801 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
43802 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
43803 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
43804 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3069343805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3069443806 } },
3069543807 }, .{
30696 .src_constraints = .{ .any_scalar_int, .any },
30697 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
43808 .required_features = .{ .fast_imm16, null, null, null },
43809 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43810 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3069843811 .patterns = &.{
30699 .{ .src = .{ .to_mem, .none } },
43812 .{ .src = .{ .to_mem, .none, .none } },
3070043813 },
3070143814 .extra_temps = .{
3070243815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30703 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30704 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43816 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
43817 .unused,
3070543818 .unused,
3070643819 .unused,
3070743820 .unused,
......@@ -30713,24 +43826,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3071343826 .clobbers = .{ .eflags = true },
3071443827 .each = .{ .once = &.{
3071543828 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30716 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30717 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30718 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30719 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30720 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30721 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43829 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
43830 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
43831 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43832 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3072243834 } },
3072343835 }, .{
30724 .required_features = .{ .slow_incdec, null, null, null },
30725 .src_constraints = .{ .any_scalar_signed_int, .any },
30726 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43836 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43837 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3072743838 .patterns = &.{
30728 .{ .src = .{ .to_mem, .none } },
43839 .{ .src = .{ .to_mem, .none, .none } },
3072943840 },
3073043841 .extra_temps = .{
3073143842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30732 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30733 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43843 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
43844 .unused,
3073443845 .unused,
3073543846 .unused,
3073643847 .unused,
......@@ -30742,25 +43853,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3074243853 .clobbers = .{ .eflags = true },
3074343854 .each = .{ .once = &.{
3074443855 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30745 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30746 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30747 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30748 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30749 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30750 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30751 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43856 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
43857 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
43858 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43859 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3075243860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3075343861 } },
3075443862 }, .{
30755 .src_constraints = .{ .any_scalar_signed_int, .any },
30756 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
43863 .src_constraints = .{ .any_scalar_int, .any, .any },
43864 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
3075743865 .patterns = &.{
30758 .{ .src = .{ .to_mem, .none } },
43866 .{ .src = .{ .to_mem, .none, .none } },
3075943867 },
3076043868 .extra_temps = .{
3076143869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3076243870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30763 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
43871 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3076443872 .unused,
3076543873 .unused,
3076643874 .unused,
......@@ -30774,25 +43882,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3077443882 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3077543883 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3077643884 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30777 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30778 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30779 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
43885 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
3078043886 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30781 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30782 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43887 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3078343889 } },
3078443890 }, .{
30785 .required_features = .{ .bmi2, .slow_incdec, null, null },
30786 .src_constraints = .{ .any_scalar_unsigned_int, .any },
30787 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43891 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
43892 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
3078843893 .patterns = &.{
30789 .{ .src = .{ .to_mem, .none } },
43894 .{ .src = .{ .to_mem, .none, .none } },
3079043895 },
3079143896 .extra_temps = .{
3079243897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3079343898 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30794 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30795 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43899 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
43900 .unused,
3079643901 .unused,
3079743902 .unused,
3079843903 .unused,
......@@ -30804,25 +43909,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3080443909 .each = .{ .once = &.{
3080543910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3080643911 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30807 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
30808 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
30809 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
43912 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
43913 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43914 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43915 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
3081043916 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30811 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43917 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3081243918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3081343919 } },
3081443920 }, .{
3081543921 .required_features = .{ .bmi2, null, null, null },
30816 .src_constraints = .{ .any_scalar_unsigned_int, .any },
30817 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43922 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
43923 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3081843924 .patterns = &.{
30819 .{ .src = .{ .to_mem, .none } },
43925 .{ .src = .{ .to_mem, .none, .none } },
3082043926 },
3082143927 .extra_temps = .{
3082243928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3082343929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3082443930 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30825 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43931 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3082643932 .unused,
3082743933 .unused,
3082843934 .unused,
......@@ -30836,22 +43942,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3083643942 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3083743943 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
3083843944 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
30839 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
43945 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
3084043946 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30841 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30842 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
43947 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3084343949 } },
3084443950 }, .{
30845 .required_features = .{ .slow_incdec, null, null, null },
30846 .src_constraints = .{ .any_scalar_unsigned_int, .any },
30847 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43951 .required_features = .{ .fast_imm16, null, null, null },
43952 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
43953 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3084843954 .patterns = &.{
30849 .{ .src = .{ .to_mem, .none } },
43955 .{ .src = .{ .to_mem, .none, .none } },
3085043956 },
3085143957 .extra_temps = .{
3085243958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3085343959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30854 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43960 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3085543961 .unused,
3085643962 .unused,
3085743963 .unused,
......@@ -30865,22 +43971,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3086543971 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3086643972 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3086743973 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30868 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
30869 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
43974 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
43975 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
3087043976 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30871 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
43977 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3087243978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3087343979 } },
3087443980 }, .{
30875 .src_constraints = .{ .any_scalar_unsigned_int, .any },
30876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
43981 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
43982 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
3087743983 .patterns = &.{
30878 .{ .src = .{ .to_mem, .none } },
43984 .{ .src = .{ .to_mem, .none, .none } },
3087943985 },
3088043986 .extra_temps = .{
3088143987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3088243988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30883 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43989 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
3088443990 .unused,
3088543991 .unused,
3088643992 .unused,
......@@ -30894,30 +44000,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3089444000 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3089544001 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3089644002 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30897 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
30898 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
44003 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
44004 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
3089944005 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30900 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30901 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
44006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3090244008 } },
3090344009 }, .{
3090444010 .required_features = .{ .avx, null, null, null },
30905 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
30906 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
44011 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
3090744013 .patterns = &.{
30908 .{ .src = .{ .to_sse, .none } },
44014 .{ .src = .{ .to_sse, .none, .none } },
3090944015 },
3091044016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3091144017 .each = .{ .once = &.{
30912 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },
30913 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },
44018 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
44019 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
3091444020 } },
3091544021 }, .{
3091644022 .required_features = .{ .avx, null, null, null },
30917 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
30918 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44023 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44024 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3091944025 .patterns = &.{
30920 .{ .src = .{ .to_sse, .none } },
44026 .{ .src = .{ .to_sse, .none, .none } },
3092144027 },
3092244028 .extra_temps = .{
3092344029 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -30937,22 +44043,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3093744043 } },
3093844044 }, .{
3093944045 .required_features = .{ .sse2, null, null, null },
30940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
30941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
44046 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44047 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
3094244048 .patterns = &.{
30943 .{ .src = .{ .to_mut_sse, .none } },
44049 .{ .src = .{ .to_mut_sse, .none, .none } },
3094444050 },
3094544051 .dst_temps = .{.{ .ref = .src0 }},
3094644052 .each = .{ .once = &.{
30947 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
30948 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
44053 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
44054 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
3094944055 } },
3095044056 }, .{
3095144057 .required_features = .{ .sse2, null, null, null },
30952 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
30953 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44058 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44059 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3095444060 .patterns = &.{
30955 .{ .src = .{ .to_mut_sse, .none } },
44061 .{ .src = .{ .to_mut_sse, .none, .none } },
3095644062 },
3095744063 .extra_temps = .{
3095844064 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -30972,10 +44078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3097244078 } },
3097344079 }, .{
3097444080 .required_features = .{ .sse, null, null, null },
30975 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
30976 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44081 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44082 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3097744083 .patterns = &.{
30978 .{ .src = .{ .to_mut_sse, .none } },
44084 .{ .src = .{ .to_mut_sse, .none, .none } },
3097944085 },
3098044086 .extra_temps = .{
3098144087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -30995,22 +44101,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3099544101 } },
3099644102 }, .{
3099744103 .required_features = .{ .avx2, null, null, null },
30998 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
30999 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
44104 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
44105 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
3100044106 .patterns = &.{
31001 .{ .src = .{ .to_sse, .none } },
44107 .{ .src = .{ .to_sse, .none, .none } },
3100244108 },
3100344109 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3100444110 .each = .{ .once = &.{
31005 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },
31006 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },
44111 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
44112 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
3100744113 } },
3100844114 }, .{
3100944115 .required_features = .{ .avx2, null, null, null },
31010 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
31011 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
44116 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
44117 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
3101244118 .patterns = &.{
31013 .{ .src = .{ .to_sse, .none } },
44119 .{ .src = .{ .to_sse, .none, .none } },
3101444120 },
3101544121 .extra_temps = .{
3101644122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -31030,14 +44136,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3103044136 } },
3103144137 }, .{
3103244138 .required_features = .{ .avx2, null, null, null },
31033 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
31034 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
44139 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
44140 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
3103544141 .patterns = &.{
31036 .{ .src = .{ .to_mem, .none } },
44142 .{ .src = .{ .to_mem, .none, .none } },
3103744143 },
3103844144 .extra_temps = .{
3103944145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31040 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
44146 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
3104144147 .unused,
3104244148 .unused,
3104344149 .unused,
......@@ -31051,23 +44157,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3105144157 .each = .{ .once = &.{
3105244158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3105344159 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
31054 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
31055 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
44160 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
44161 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
3105644162 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3105744163 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3105844164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3105944165 } },
3106044166 }, .{
3106144167 .required_features = .{ .avx2, null, null, null },
31062 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
31063 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
44168 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
44169 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
3106444170 .patterns = &.{
31065 .{ .src = .{ .to_mem, .none } },
44171 .{ .src = .{ .to_mem, .none, .none } },
3106644172 },
3106744173 .extra_temps = .{
3106844174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31069 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
31070 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
44175 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
44176 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
3107144177 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3107244178 .unused,
3107344179 .unused,
......@@ -31088,14 +44194,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3108844194 } },
3108944195 }, .{
3109044196 .required_features = .{ .avx, null, null, null },
31091 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
31092 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
44197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44198 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
3109344199 .patterns = &.{
31094 .{ .src = .{ .to_mem, .none } },
44200 .{ .src = .{ .to_mem, .none, .none } },
3109544201 },
3109644202 .extra_temps = .{
3109744203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31098 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
44204 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
3109944205 .unused,
3110044206 .unused,
3110144207 .unused,
......@@ -31109,23 +44215,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3110944215 .each = .{ .once = &.{
3111044216 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3111144217 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31112 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
31113 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
44218 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
44219 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
3111444220 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3111544221 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3111644222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3111744223 } },
3111844224 }, .{
3111944225 .required_features = .{ .avx, null, null, null },
31120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
31121 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44226 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44227 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3112244228 .patterns = &.{
31123 .{ .src = .{ .to_mem, .none } },
44229 .{ .src = .{ .to_mem, .none, .none } },
3112444230 },
3112544231 .extra_temps = .{
3112644232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31127 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
31128 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
44233 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
44234 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
3112944235 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3113044236 .unused,
3113144237 .unused,
......@@ -31146,14 +44252,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3114644252 } },
3114744253 }, .{
3114844254 .required_features = .{ .sse2, null, null, null },
31149 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
31150 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
44255 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44256 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
3115144257 .patterns = &.{
31152 .{ .src = .{ .to_mem, .none } },
44258 .{ .src = .{ .to_mem, .none, .none } },
3115344259 },
3115444260 .extra_temps = .{
3115544261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31156 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
44262 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
3115744263 .unused,
3115844264 .unused,
3115944265 .unused,
......@@ -31167,23 +44273,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3116744273 .each = .{ .once = &.{
3116844274 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3116944275 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31170 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
31171 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
44276 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
44277 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
3117244278 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3117344279 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3117444280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3117544281 } },
3117644282 }, .{
3117744283 .required_features = .{ .sse2, null, null, null },
31178 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
31179 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44284 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44285 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3118044286 .patterns = &.{
31181 .{ .src = .{ .to_mem, .none } },
44287 .{ .src = .{ .to_mem, .none, .none } },
3118244288 },
3118344289 .extra_temps = .{
3118444290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31185 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
31186 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
44291 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
44292 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
3118744293 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3118844294 .unused,
3118944295 .unused,
......@@ -31205,15 +44311,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3120544311 } },
3120644312 }, .{
3120744313 .required_features = .{ .sse, null, null, null },
31208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
31209 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
44314 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
44315 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
3121044316 .patterns = &.{
31211 .{ .src = .{ .to_mem, .none } },
44317 .{ .src = .{ .to_mem, .none, .none } },
3121244318 },
3121344319 .extra_temps = .{
3121444320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31215 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
31216 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
44321 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
44322 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
3121744323 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3121844324 .unused,
3121944325 .unused,
......@@ -31234,14 +44340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3123444340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3123544341 } },
3123644342 }, .{
31237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
31238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
44343 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44344 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
3123944345 .patterns = &.{
31240 .{ .src = .{ .to_mem, .none } },
44346 .{ .src = .{ .to_mem, .none, .none } },
3124144347 },
3124244348 .extra_temps = .{
3124344349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31244 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44350 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3124544351 .unused,
3124644352 .unused,
3124744353 .unused,
......@@ -31254,20 +44360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3125444360 .clobbers = .{ .eflags = true },
3125544361 .each = .{ .once = &.{
3125644362 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31257 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
31258 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31259 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44363 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
44364 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44365 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3126044366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3126144367 } },
3126244368 }, .{
31263 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
31264 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
44369 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44370 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
3126544371 .patterns = &.{
31266 .{ .src = .{ .to_mem, .none } },
44372 .{ .src = .{ .to_mem, .none, .none } },
3126744373 },
3126844374 .extra_temps = .{
3126944375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31270 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
44376 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
3127144377 .unused,
3127244378 .unused,
3127344379 .unused,
......@@ -31280,24 +44386,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3128044386 .clobbers = .{ .eflags = true },
3128144387 .each = .{ .once = &.{
3128244388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31283 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
44389 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
3128444390 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
3128544391 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31286 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31287 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44392 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44393 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3128844394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3128944395 } },
3129044396 }, .{
31291 .required_features = .{ .fast_imm16, null, null, null },
31292 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
31293 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44397 .required_features = .{ .bmi2, null, null, null },
44398 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44399 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3129444400 .patterns = &.{
31295 .{ .src = .{ .to_mem, .none } },
44401 .{ .src = .{ .to_mem, .none, .none } },
3129644402 },
3129744403 .extra_temps = .{
3129844404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31299 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
31300 .unused,
44405 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44406 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3130144407 .unused,
3130244408 .unused,
3130344409 .unused,
......@@ -31309,21 +44415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3130944415 .clobbers = .{ .eflags = true },
3131044416 .each = .{ .once = &.{
3131144417 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31312 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
31313 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
31314 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31315 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44418 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44419 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
44420 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
44421 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3131644422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3131744423 } },
3131844424 }, .{
31319 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
31320 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44425 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
44426 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3132144427 .patterns = &.{
31322 .{ .src = .{ .to_mem, .none } },
44428 .{ .src = .{ .to_mem, .none, .none } },
3132344429 },
3132444430 .extra_temps = .{
3132544431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31326 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3132744433 .unused,
3132844434 .unused,
3132944435 .unused,
......@@ -31336,21 +44442,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3133644442 .clobbers = .{ .eflags = true },
3133744443 .each = .{ .once = &.{
3133844444 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31339 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
44445 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
3134044446 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31341 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31342 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44447 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44448 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3134344449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3134444450 } },
3134544451 }, .{
31346 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
31347 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
44452 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44453 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
3134844454 .patterns = &.{
31349 .{ .src = .{ .to_mem, .none } },
44455 .{ .src = .{ .to_mem, .none, .none } },
3135044456 },
3135144457 .extra_temps = .{
3135244458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31353 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44459 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3135444460 .unused,
3135544461 .unused,
3135644462 .unused,
......@@ -31364,19 +44470,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3136444470 .each = .{ .once = &.{
3136544471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3136644472 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
31367 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31368 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44473 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44474 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3136944475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3137044476 } },
3137144477 }, .{
31372 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
31373 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
44478 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44479 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
3137444480 .patterns = &.{
31375 .{ .src = .{ .to_mem, .none } },
44481 .{ .src = .{ .to_mem, .none, .none } },
3137644482 },
3137744483 .extra_temps = .{
3137844484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31379 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
44485 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
3138044486 .unused,
3138144487 .unused,
3138244488 .unused,
......@@ -31392,21 +44498,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3139244498 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
3139344499 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
3139444500 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31395 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31396 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44501 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44502 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3139744503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3139844504 } },
3139944505 }, .{
3140044506 .required_features = .{ .bmi2, null, null, null },
31401 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
31402 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44507 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44508 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3140344509 .patterns = &.{
31404 .{ .src = .{ .to_mem, .none } },
44510 .{ .src = .{ .to_mem, .none, .none } },
3140544511 },
3140644512 .extra_temps = .{
3140744513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3140844514 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31409 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3141044516 .unused,
3141144517 .unused,
3141244518 .unused,
......@@ -31420,47 +44526,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3142044526 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3142144527 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
3142244528 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31423 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
31424 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31426 } },
31427 }, .{
31428 .required_features = .{ .fast_imm16, null, null, null },
31429 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
31430 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
31431 .patterns = &.{
31432 .{ .src = .{ .to_mem, .none } },
31433 },
31434 .extra_temps = .{
31435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31436 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
31437 .unused,
31438 .unused,
31439 .unused,
31440 .unused,
31441 .unused,
31442 .unused,
31443 .unused,
31444 },
31445 .dst_temps = .{.mem},
31446 .clobbers = .{ .eflags = true },
31447 .each = .{ .once = &.{
31448 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31449 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
31450 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
31451 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31452 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44529 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
44530 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3145344531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3145444532 } },
3145544533 }, .{
31456 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
31457 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44534 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
44535 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3145844536 .patterns = &.{
31459 .{ .src = .{ .to_mem, .none } },
44537 .{ .src = .{ .to_mem, .none, .none } },
3146044538 },
3146144539 .extra_temps = .{
3146244540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31463 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44541 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3146444542 .unused,
3146544543 .unused,
3146644544 .unused,
......@@ -31475,45 +44553,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3147544553 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3147644554 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
3147744555 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31478 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31479 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31480 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31481 } },
31482 }, .{
31483 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
31484 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
31485 .patterns = &.{
31486 .{ .src = .{ .to_mem, .none } },
31487 },
31488 .extra_temps = .{
31489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31490 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
31491 .unused,
31492 .unused,
31493 .unused,
31494 .unused,
31495 .unused,
31496 .unused,
31497 .unused,
31498 },
31499 .dst_temps = .{.mem},
31500 .clobbers = .{ .eflags = true },
31501 .each = .{ .once = &.{
31502 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31503 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31504 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31505 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44556 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44557 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3150644558 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3150744559 } },
3150844560 }, .{
31509 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
31510 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
44561 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
44562 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
3151144563 .patterns = &.{
31512 .{ .src = .{ .to_mem, .none } },
44564 .{ .src = .{ .to_mem, .none, .none } },
3151344565 },
3151444566 .extra_temps = .{
3151544567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31516 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
44568 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3151744569 .unused,
3151844570 .unused,
3151944571 .unused,
......@@ -31527,23 +44579,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3152744579 .each = .{ .once = &.{
3152844580 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3152944581 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31530 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31531 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31532 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31533 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44582 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44583 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3153444584 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3153544585 } },
3153644586 }, .{
31537 .required_features = .{ .bmi2, null, null, null },
31538 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
31539 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44587 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
44588 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
3154044589 .patterns = &.{
31541 .{ .src = .{ .to_mem, .none } },
44590 .{ .src = .{ .to_mem, .none, .none } },
3154244591 },
3154344592 .extra_temps = .{
3154444593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31545 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31546 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44594 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
44595 .unused,
3154744596 .unused,
3154844597 .unused,
3154944598 .unused,
......@@ -31555,23 +44604,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3155544604 .clobbers = .{ .eflags = true },
3155644605 .each = .{ .once = &.{
3155744606 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31558 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
31559 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31560 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
31561 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44607 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
44608 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
44609 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
44610 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44611 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3156244612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3156344613 } },
3156444614 }, .{
31565 .required_features = .{ .fast_imm16, null, null, null },
31566 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
31567 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44615 .required_features = .{ .bmi2, null, null, null },
44616 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
44617 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3156844618 .patterns = &.{
31569 .{ .src = .{ .to_mem, .none } },
44619 .{ .src = .{ .to_mem, .none, .none } },
3157044620 },
3157144621 .extra_temps = .{
3157244622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31573 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
31574 .unused,
44623 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
44624 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3157544625 .unused,
3157644626 .unused,
3157744627 .unused,
......@@ -31583,21 +44633,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3158344633 .clobbers = .{ .eflags = true },
3158444634 .each = .{ .once = &.{
3158544635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31586 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31587 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
31588 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31589 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44636 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
44637 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
44638 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
44639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3159044640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3159144641 } },
3159244642 }, .{
31593 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
31594 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44643 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
44644 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3159544645 .patterns = &.{
31596 .{ .src = .{ .to_mem, .none } },
44646 .{ .src = .{ .to_mem, .none, .none } },
3159744647 },
3159844648 .extra_temps = .{
3159944649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31600 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44650 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3160144651 .unused,
3160244652 .unused,
3160344653 .unused,
......@@ -31612,19 +44662,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3161244662 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3161344663 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
3161444664 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31615 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31616 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44665 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44666 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3161744667 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3161844668 } },
3161944669 }, .{
31620 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
31621 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
44670 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
44671 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
3162244672 .patterns = &.{
31623 .{ .src = .{ .to_mem, .none } },
44673 .{ .src = .{ .to_mem, .none, .none } },
3162444674 },
3162544675 .extra_temps = .{
3162644676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31627 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44677 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3162844678 .unused,
3162944679 .unused,
3163044680 .unused,
......@@ -31638,19 +44688,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3163844688 .each = .{ .once = &.{
3163944689 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3164044690 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
31641 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31642 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44691 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44692 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3164344693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3164444694 } },
3164544695 }, .{
31646 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
31647 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
44696 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
44697 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
3164844698 .patterns = &.{
31649 .{ .src = .{ .to_mem, .none } },
44699 .{ .src = .{ .to_mem, .none, .none } },
3165044700 },
3165144701 .extra_temps = .{
3165244702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31653 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
44703 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
3165444704 .unused,
3165544705 .unused,
3165644706 .unused,
......@@ -31666,21 +44716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3166644716 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
3166744717 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
3166844718 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31669 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31670 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44719 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44720 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3167144721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3167244722 } },
3167344723 }, .{
3167444724 .required_features = .{ .bmi2, null, null, null },
31675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
31676 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44725 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
44726 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3167744727 .patterns = &.{
31678 .{ .src = .{ .to_mem, .none } },
44728 .{ .src = .{ .to_mem, .none, .none } },
3167944729 },
3168044730 .extra_temps = .{
3168144731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3168244732 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31683 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44733 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3168444734 .unused,
3168544735 .unused,
3168644736 .unused,
......@@ -31694,47 +44744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3169444744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3169544745 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
3169644746 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31697 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
31698 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31699 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31700 } },
31701 }, .{
31702 .required_features = .{ .fast_imm16, null, null, null },
31703 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
31704 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
31705 .patterns = &.{
31706 .{ .src = .{ .to_mem, .none } },
31707 },
31708 .extra_temps = .{
31709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31710 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
31711 .unused,
31712 .unused,
31713 .unused,
31714 .unused,
31715 .unused,
31716 .unused,
31717 .unused,
31718 },
31719 .dst_temps = .{.mem},
31720 .clobbers = .{ .eflags = true },
31721 .each = .{ .once = &.{
31722 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31723 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
31724 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
31725 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31726 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44747 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
44748 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3172744749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3172844750 } },
3172944751 }, .{
31730 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
31731 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44752 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
44753 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3173244754 .patterns = &.{
31733 .{ .src = .{ .to_mem, .none } },
44755 .{ .src = .{ .to_mem, .none, .none } },
3173444756 },
3173544757 .extra_temps = .{
3173644758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31737 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44759 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3173844760 .unused,
3173944761 .unused,
3174044762 .unused,
......@@ -31749,20 +44771,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3174944771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3175044772 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
3175144773 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31752 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31753 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44774 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44775 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3175444776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3175544777 } },
3175644778 }, .{
31757 .src_constraints = .{ .any_scalar_int, .any },
31758 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
44779 .src_constraints = .{ .any_scalar_int, .any, .any },
44780 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
3175944781 .patterns = &.{
31760 .{ .src = .{ .to_mem, .none } },
44782 .{ .src = .{ .to_mem, .none, .none } },
3176144783 },
3176244784 .extra_temps = .{
3176344785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3176444786 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31765 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44787 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3176644788 .unused,
3176744789 .unused,
3176844790 .unused,
......@@ -31776,21 +44798,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3177644798 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3177744799 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3177844800 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31779 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
44801 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
3178044802 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31781 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44803 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3178244804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3178344805 } },
3178444806 }, .{
31785 .src_constraints = .{ .any_scalar_signed_int, .any },
31786 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
44807 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
44808 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
3178744809 .patterns = &.{
31788 .{ .src = .{ .to_mem, .none } },
44810 .{ .src = .{ .to_mem, .none, .none } },
3178944811 },
3179044812 .extra_temps = .{
3179144813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3179244814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31793 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
44815 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
3179444816 .unused,
3179544817 .unused,
3179644818 .unused,
......@@ -31806,23 +44828,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3180644828 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
3180744829 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
3180844830 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31809 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
44831 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
3181044832 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31811 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44833 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3181244834 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3181344835 } },
3181444836 }, .{
3181544837 .required_features = .{ .bmi2, null, null, null },
31816 .src_constraints = .{ .any_scalar_unsigned_int, .any },
31817 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44838 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44839 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3181844840 .patterns = &.{
31819 .{ .src = .{ .to_mem, .none } },
44841 .{ .src = .{ .to_mem, .none, .none } },
3182044842 },
3182144843 .extra_temps = .{
3182244844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3182344845 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3182444846 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31825 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44847 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3182644848 .unused,
3182744849 .unused,
3182844850 .unused,
......@@ -31836,22 +44858,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3183644858 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3183744859 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
3183844860 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
31839 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
44861 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
3184044862 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31841 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3184244864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3184344865 } },
3184444866 }, .{
31845 .required_features = .{ .fast_imm16, null, null, null },
31846 .src_constraints = .{ .any_scalar_unsigned_int, .any },
31847 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44867 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
44868 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
3184844869 .patterns = &.{
31849 .{ .src = .{ .to_mem, .none } },
44870 .{ .src = .{ .to_mem, .none, .none } },
3185044871 },
3185144872 .extra_temps = .{
3185244873 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3185344874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31854 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3185544876 .unused,
3185644877 .unused,
3185744878 .unused,
......@@ -31865,22 +44886,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3186544886 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3186644887 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
3186744888 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31868 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
31869 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
44889 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
44890 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
3187044891 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31871 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
44892 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
3187244893 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3187344894 } },
3187444895 }, .{
31875 .src_constraints = .{ .any_scalar_unsigned_int, .any },
31876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
44896 .required_features = .{ .avx, null, null, null },
44897 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44898 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
3187744899 .patterns = &.{
31878 .{ .src = .{ .to_mem, .none } },
44900 .{ .src = .{ .to_sse, .none, .none } },
3187944901 },
3188044902 .extra_temps = .{
31881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31883 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
44903 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
44904 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
44905 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
3188444906 .unused,
3188544907 .unused,
3188644908 .unused,
......@@ -31888,36 +44910,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3188844910 .unused,
3188944911 .unused,
3189044912 },
31891 .dst_temps = .{.mem},
31892 .clobbers = .{ .eflags = true },
31893 .each = .{ .once = &.{
31894 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31895 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
31896 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31897 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
31898 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
31899 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31900 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31902 } },
31903 }, .{
31904 .required_features = .{ .avx, null, null, null },
31905 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
31906 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
31907 .patterns = &.{
31908 .{ .src = .{ .to_sse, .none } },
31909 },
3191044913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3191144914 .each = .{ .once = &.{
31912 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
31913 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
44915 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
44916 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
44917 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
44918 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
44919 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
3191444920 } },
3191544921 }, .{
3191644922 .required_features = .{ .avx, null, null, null },
31917 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
31918 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
44923 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44924 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3191944925 .patterns = &.{
31920 .{ .src = .{ .to_sse, .none } },
44926 .{ .src = .{ .to_sse, .none, .none } },
3192144927 },
3192244928 .extra_temps = .{
3192344929 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -31937,22 +44943,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3193744943 } },
3193844944 }, .{
3193944945 .required_features = .{ .sse2, null, null, null },
31940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
31941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
44946 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44947 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
3194244948 .patterns = &.{
31943 .{ .src = .{ .to_mut_sse, .none } },
44949 .{ .src = .{ .to_mut_sse, .none, .none } },
44950 },
44951 .extra_temps = .{
44952 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
44953 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
44954 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
44955 .unused,
44956 .unused,
44957 .unused,
44958 .unused,
44959 .unused,
44960 .unused,
3194444961 },
3194544962 .dst_temps = .{.{ .ref = .src0 }},
3194644963 .each = .{ .once = &.{
31947 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31948 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
44964 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
44965 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
44966 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
44967 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
44968 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
3194944969 } },
3195044970 }, .{
3195144971 .required_features = .{ .sse2, null, null, null },
31952 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
31953 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
44972 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44973 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3195444974 .patterns = &.{
31955 .{ .src = .{ .to_mut_sse, .none } },
44975 .{ .src = .{ .to_mut_sse, .none, .none } },
3195644976 },
3195744977 .extra_temps = .{
3195844978 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -31972,10 +44992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3197244992 } },
3197344993 }, .{
3197444994 .required_features = .{ .sse, null, null, null },
31975 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
31976 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
44995 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44996 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3197744997 .patterns = &.{
31978 .{ .src = .{ .to_mut_sse, .none } },
44998 .{ .src = .{ .to_mut_sse, .none, .none } },
3197944999 },
3198045000 .extra_temps = .{
3198145001 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -31995,22 +45015,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3199545015 } },
3199645016 }, .{
3199745017 .required_features = .{ .avx2, null, null, null },
31998 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
31999 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
45018 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
45019 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
3200045020 .patterns = &.{
32001 .{ .src = .{ .to_sse, .none } },
45021 .{ .src = .{ .to_sse, .none, .none } },
45022 },
45023 .extra_temps = .{
45024 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
45025 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
45026 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
45027 .unused,
45028 .unused,
45029 .unused,
45030 .unused,
45031 .unused,
45032 .unused,
3200245033 },
3200345034 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3200445035 .each = .{ .once = &.{
32005 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
32006 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
45036 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
45037 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
45038 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
45039 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
45040 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
3200745041 } },
3200845042 }, .{
3200945043 .required_features = .{ .avx2, null, null, null },
32010 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
32011 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
45044 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
45045 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
3201245046 .patterns = &.{
32013 .{ .src = .{ .to_sse, .none } },
45047 .{ .src = .{ .to_sse, .none, .none } },
3201445048 },
3201545049 .extra_temps = .{
3201645050 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
......@@ -32030,18 +45064,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3203045064 } },
3203145065 }, .{
3203245066 .required_features = .{ .avx2, null, null, null },
32033 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
32034 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
45067 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
45068 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
3203545069 .patterns = &.{
32036 .{ .src = .{ .to_mem, .none } },
45070 .{ .src = .{ .to_mem, .none, .none } },
3203745071 },
3203845072 .extra_temps = .{
3203945073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32040 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
32041 .unused,
32042 .unused,
32043 .unused,
32044 .unused,
45074 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
45075 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
45076 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
45077 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
45078 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
3204545079 .unused,
3204645080 .unused,
3204745081 .unused,
......@@ -32049,25 +45083,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3204945083 .dst_temps = .{.mem},
3205045084 .clobbers = .{ .eflags = true },
3205145085 .each = .{ .once = &.{
45086 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
45087 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
45088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
45089 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
3205245090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32053 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
32054 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
32055 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
32056 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
45091 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
45092 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
45093 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
45094 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
3205745095 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3205845096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3205945097 } },
3206045098 }, .{
3206145099 .required_features = .{ .avx2, null, null, null },
32062 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
32063 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
45100 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
45101 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
3206445102 .patterns = &.{
32065 .{ .src = .{ .to_mem, .none } },
45103 .{ .src = .{ .to_mem, .none, .none } },
3206645104 },
3206745105 .extra_temps = .{
3206845106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32069 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
32070 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
45107 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
45108 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
3207145109 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3207245110 .unused,
3207345111 .unused,
......@@ -32088,18 +45126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3208845126 } },
3208945127 }, .{
3209045128 .required_features = .{ .avx, null, null, null },
32091 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
32092 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
45129 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
45130 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
3209345131 .patterns = &.{
32094 .{ .src = .{ .to_mem, .none } },
45132 .{ .src = .{ .to_mem, .none, .none } },
3209545133 },
3209645134 .extra_temps = .{
3209745135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32098 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
32099 .unused,
32100 .unused,
32101 .unused,
32102 .unused,
45136 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45137 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45138 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45139 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
45140 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
3210345141 .unused,
3210445142 .unused,
3210545143 .unused,
......@@ -32107,25 +45145,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3210745145 .dst_temps = .{.mem},
3210845146 .clobbers = .{ .eflags = true },
3210945147 .each = .{ .once = &.{
45148 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
45149 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
45150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
45151 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
3211045152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32111 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32112 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
32113 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
32114 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
45153 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
45154 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
45155 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
45156 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
3211545157 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3211645158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3211745159 } },
3211845160 }, .{
3211945161 .required_features = .{ .avx, null, null, null },
32120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
32121 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
45162 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
45163 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3212245164 .patterns = &.{
32123 .{ .src = .{ .to_mem, .none } },
45165 .{ .src = .{ .to_mem, .none, .none } },
3212445166 },
3212545167 .extra_temps = .{
3212645168 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32127 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
32128 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
45169 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
45170 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
3212945171 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3213045172 .unused,
3213145173 .unused,
......@@ -32146,18 +45188,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3214645188 } },
3214745189 }, .{
3214845190 .required_features = .{ .sse2, null, null, null },
32149 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
32150 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
45191 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
45192 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
3215145193 .patterns = &.{
32152 .{ .src = .{ .to_mem, .none } },
45194 .{ .src = .{ .to_mem, .none, .none } },
3215345195 },
3215445196 .extra_temps = .{
3215545197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32156 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
32157 .unused,
32158 .unused,
32159 .unused,
32160 .unused,
45198 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45199 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45200 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
45201 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
45202 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
3216145203 .unused,
3216245204 .unused,
3216345205 .unused,
......@@ -32165,25 +45207,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3216545207 .dst_temps = .{.mem},
3216645208 .clobbers = .{ .eflags = true },
3216745209 .each = .{ .once = &.{
45210 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
45211 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
45212 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
45213 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
3216845214 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32169 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32170 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
32171 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
32172 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
45215 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
45216 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
45217 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
45218 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
45219 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
3217345220 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3217445221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3217545222 } },
3217645223 }, .{
3217745224 .required_features = .{ .sse2, null, null, null },
32178 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
32179 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
45225 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
45226 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3218045227 .patterns = &.{
32181 .{ .src = .{ .to_mem, .none } },
45228 .{ .src = .{ .to_mem, .none, .none } },
3218245229 },
3218345230 .extra_temps = .{
3218445231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32185 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
32186 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
45232 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
45233 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
3218745234 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3218845235 .unused,
3218945236 .unused,
......@@ -32205,15 +45252,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3220545252 } },
3220645253 }, .{
3220745254 .required_features = .{ .sse, null, null, null },
32208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
32209 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
45255 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
45256 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3221045257 .patterns = &.{
32211 .{ .src = .{ .to_mem, .none } },
45258 .{ .src = .{ .to_mem, .none, .none } },
3221245259 },
3221345260 .extra_temps = .{
3221445261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32215 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
32216 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
45262 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
45263 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
3221745264 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
3221845265 .unused,
3221945266 .unused,
......@@ -32234,14 +45281,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3223445281 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3223545282 } },
3223645283 }, .{
32237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
32238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
45284 .required_features = .{ .@"64bit", null, null, null },
45285 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45286 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
3223945287 .patterns = &.{
32240 .{ .src = .{ .to_mem, .none } },
45288 .{ .src = .{ .to_mem, .none, .none } },
3224145289 },
3224245290 .extra_temps = .{
3224345291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45292 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3224545293 .unused,
3224645294 .unused,
3224745295 .unused,
......@@ -32254,20 +45302,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3225445302 .clobbers = .{ .eflags = true },
3225545303 .each = .{ .once = &.{
3225645304 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32257 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
32258 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32259 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45305 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
45306 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45307 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3226045308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3226145309 } },
3226245310 }, .{
32263 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
32264 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
45311 .required_features = .{ .@"64bit", null, null, null },
45312 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45313 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
3226545314 .patterns = &.{
32266 .{ .src = .{ .to_mem, .none } },
45315 .{ .src = .{ .to_mem, .none, .none } },
3226745316 },
3226845317 .extra_temps = .{
3226945318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32270 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
45319 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3227145320 .unused,
3227245321 .unused,
3227345322 .unused,
......@@ -32280,24 +45329,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3228045329 .clobbers = .{ .eflags = true },
3228145330 .each = .{ .once = &.{
3228245331 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32283 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
32284 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32285 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32286 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32287 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45332 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
45333 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45334 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45335 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45336 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3228845337 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3228945338 } },
3229045339 }, .{
32291 .required_features = .{ .bmi2, null, null, null },
32292 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
32293 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45340 .required_features = .{ .@"64bit", .bmi2, null, null },
45341 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45342 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3229445343 .patterns = &.{
32295 .{ .src = .{ .to_mem, .none } },
45344 .{ .src = .{ .to_mem, .none, .none } },
3229645345 },
3229745346 .extra_temps = .{
3229845347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3229945348 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32300 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45349 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3230145350 .unused,
3230245351 .unused,
3230345352 .unused,
......@@ -32310,20 +45359,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3231045359 .each = .{ .once = &.{
3231145360 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3231245361 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32313 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
32314 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32315 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45362 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
45363 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45364 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3231645365 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3231745366 } },
3231845367 }, .{
32319 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
32320 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45368 .required_features = .{ .@"64bit", null, null, null },
45369 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45370 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3232145371 .patterns = &.{
32322 .{ .src = .{ .to_mem, .none } },
45372 .{ .src = .{ .to_mem, .none, .none } },
3232345373 },
3232445374 .extra_temps = .{
3232545375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32326 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45376 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3232745377 .unused,
3232845378 .unused,
3232945379 .unused,
......@@ -32336,21 +45386,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3233645386 .clobbers = .{ .eflags = true },
3233745387 .each = .{ .once = &.{
3233845388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32339 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
32340 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
32341 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32342 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45389 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
45390 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
45391 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45392 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3234345393 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3234445394 } },
3234545395 }, .{
32346 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
32347 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
45396 .required_features = .{ .@"64bit", null, null, null },
45397 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45398 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
3234845399 .patterns = &.{
32349 .{ .src = .{ .to_mem, .none } },
45400 .{ .src = .{ .to_mem, .none, .none } },
3235045401 },
3235145402 .extra_temps = .{
3235245403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32353 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45404 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3235445405 .unused,
3235545406 .unused,
3235645407 .unused,
......@@ -32363,20 +45414,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3236345414 .clobbers = .{ .eflags = true },
3236445415 .each = .{ .once = &.{
3236545416 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32366 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32367 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32368 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45417 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45418 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45419 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3236945420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3237045421 } },
3237145422 }, .{
32372 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
32373 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
45423 .required_features = .{ .@"64bit", null, null, null },
45424 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45425 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
3237445426 .patterns = &.{
32375 .{ .src = .{ .to_mem, .none } },
45427 .{ .src = .{ .to_mem, .none, .none } },
3237645428 },
3237745429 .extra_temps = .{
3237845430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32379 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
45431 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3238045432 .unused,
3238145433 .unused,
3238245434 .unused,
......@@ -32389,24 +45441,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3238945441 .clobbers = .{ .eflags = true },
3239045442 .each = .{ .once = &.{
3239145443 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32392 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32393 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32394 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32395 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32396 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45444 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45445 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45446 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45447 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45448 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3239745449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3239845450 } },
3239945451 }, .{
32400 .required_features = .{ .bmi2, null, null, null },
32401 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
32402 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45452 .required_features = .{ .@"64bit", .bmi2, null, null },
45453 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45454 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3240345455 .patterns = &.{
32404 .{ .src = .{ .to_mem, .none } },
45456 .{ .src = .{ .to_mem, .none, .none } },
3240545457 },
3240645458 .extra_temps = .{
3240745459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3240845460 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45461 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3241045462 .unused,
3241145463 .unused,
3241245464 .unused,
......@@ -32419,20 +45471,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3241945471 .each = .{ .once = &.{
3242045472 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3242145473 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32422 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
32423 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32424 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45474 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
45475 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45476 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3242545477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3242645478 } },
3242745479 }, .{
32428 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
32429 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45480 .required_features = .{ .@"64bit", null, null, null },
45481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45482 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3243045483 .patterns = &.{
32431 .{ .src = .{ .to_mem, .none } },
45484 .{ .src = .{ .to_mem, .none, .none } },
3243245485 },
3243345486 .extra_temps = .{
3243445487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32435 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45488 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3243645489 .unused,
3243745490 .unused,
3243845491 .unused,
......@@ -32445,21 +45498,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3244545498 .clobbers = .{ .eflags = true },
3244645499 .each = .{ .once = &.{
3244745500 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32448 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32449 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
32450 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32451 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45501 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
45502 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
45503 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3245245505 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3245345506 } },
3245445507 }, .{
32455 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
32456 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
45508 .required_features = .{ .@"64bit", null, null, null },
45509 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45510 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
3245745511 .patterns = &.{
32458 .{ .src = .{ .to_mem, .none } },
45512 .{ .src = .{ .to_mem, .none, .none } },
3245945513 },
3246045514 .extra_temps = .{
3246145515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32462 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45516 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3246345517 .unused,
3246445518 .unused,
3246545519 .unused,
......@@ -32472,20 +45526,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3247245526 .clobbers = .{ .eflags = true },
3247345527 .each = .{ .once = &.{
3247445528 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32475 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
32476 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32477 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45529 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45530 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45531 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3247845532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3247945533 } },
3248045534 }, .{
32481 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
32482 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
45535 .required_features = .{ .@"64bit", null, null, null },
45536 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45537 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
3248345538 .patterns = &.{
32484 .{ .src = .{ .to_mem, .none } },
45539 .{ .src = .{ .to_mem, .none, .none } },
3248545540 },
3248645541 .extra_temps = .{
3248745542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32488 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
45543 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3248945544 .unused,
3249045545 .unused,
3249145546 .unused,
......@@ -32498,24 +45553,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3249845553 .clobbers = .{ .eflags = true },
3249945554 .each = .{ .once = &.{
3250045555 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32501 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
32502 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32503 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32504 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32505 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45556 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45557 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45558 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45559 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45560 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3250645561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3250745562 } },
3250845563 }, .{
32509 .required_features = .{ .bmi2, null, null, null },
32510 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
32511 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45564 .required_features = .{ .@"64bit", .bmi2, null, null },
45565 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45566 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3251245567 .patterns = &.{
32513 .{ .src = .{ .to_mem, .none } },
45568 .{ .src = .{ .to_mem, .none, .none } },
3251445569 },
3251545570 .extra_temps = .{
3251645571 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3251745572 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32518 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45573 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3251945574 .unused,
3252045575 .unused,
3252145576 .unused,
......@@ -32528,25 +45583,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3252845583 .each = .{ .once = &.{
3252945584 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
3253045585 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32531 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
32532 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32533 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45586 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
45587 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3253445589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3253545590 } },
3253645591 }, .{
32537 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
32538 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45592 .required_features = .{ .@"64bit", null, null, null },
45593 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45594 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
45595 .patterns = &.{
45596 .{ .src = .{ .to_mem, .none, .none } },
45597 },
45598 .extra_temps = .{
45599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45600 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
45601 .unused,
45602 .unused,
45603 .unused,
45604 .unused,
45605 .unused,
45606 .unused,
45607 .unused,
45608 },
45609 .dst_temps = .{.mem},
45610 .clobbers = .{ .eflags = true },
45611 .each = .{ .once = &.{
45612 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45613 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
45614 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
45615 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
45616 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
45617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45618 } },
45619 }, .{
45620 .required_features = .{ .@"64bit", null, null, null },
45621 .src_constraints = .{ .any_scalar_int, .any, .any },
45622 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
3253945623 .patterns = &.{
32540 .{ .src = .{ .to_mem, .none } },
45624 .{ .src = .{ .to_mem, .none, .none } },
3254145625 },
3254245626 .extra_temps = .{
3254345627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3254445628 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45629 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
45630 .unused,
3254545631 .unused,
3254645632 .unused,
3254745633 .unused,
3254845634 .unused,
3254945635 .unused,
45636 },
45637 .dst_temps = .{.mem},
45638 .clobbers = .{ .eflags = true },
45639 .each = .{ .once = &.{
45640 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
45641 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45642 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
45643 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45644 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45645 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
45646 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45647 } },
45648 }, .{
45649 .required_features = .{ .@"64bit", null, null, null },
45650 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45651 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
45652 .patterns = &.{
45653 .{ .src = .{ .to_mem, .none, .none } },
45654 },
45655 .extra_temps = .{
45656 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45657 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45658 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
45659 .unused,
45660 .unused,
45661 .unused,
45662 .unused,
3255045663 .unused,
3255145664 .unused,
3255245665 },
......@@ -32554,23 +45667,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3255445667 .clobbers = .{ .eflags = true },
3255545668 .each = .{ .once = &.{
3255645669 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32557 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
32558 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
32559 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32560 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45670 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45671 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
45672 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45673 .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
45674 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45675 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45676 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3256145677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3256245678 } },
3256345679 }, .{
32564 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },
32565 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
45680 .required_features = .{ .@"64bit", .bmi2, null, null },
45681 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45682 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3256645683 .patterns = &.{
32567 .{ .src = .{ .to_mem, .none } },
45684 .{ .src = .{ .to_mem, .none, .none } },
3256845685 },
3256945686 .extra_temps = .{
3257045687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3257145688 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32572 .unused,
32573 .unused,
45689 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
45690 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3257445691 .unused,
3257545692 .unused,
3257645693 .unused,
......@@ -32581,21 +45698,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3258145698 .clobbers = .{ .eflags = true },
3258245699 .each = .{ .once = &.{
3258345700 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32584 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
32585 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32586 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45701 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45702 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
45703 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
45704 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
45705 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45706 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3258745707 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3258845708 } },
3258945709 }, .{
32590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any },
32591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
45710 .required_features = .{ .@"64bit", null, null, null },
45711 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45712 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
3259245713 .patterns = &.{
32593 .{ .src = .{ .to_mem, .none } },
45714 .{ .src = .{ .to_mem, .none, .none } },
3259445715 },
3259545716 .extra_temps = .{
3259645717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32597 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
32598 .unused,
45718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45719 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
3259945720 .unused,
3260045721 .unused,
3260145722 .unused,
......@@ -32607,25 +45728,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3260745728 .clobbers = .{ .eflags = true },
3260845729 .each = .{ .once = &.{
3260945730 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32610 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
32611 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32612 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32613 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32614 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
45731 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
45732 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
45733 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
45734 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
45735 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45736 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3261545737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3261645738 } },
3261745739 }, .{
32618 .required_features = .{ .bmi2, null, null, null },
32619 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },
32620 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45740 .required_features = .{ .@"64bit", .slow_incdec, null, null },
45741 .src_constraints = .{ .any_scalar_int, .any, .any },
45742 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
3262145743 .patterns = &.{
32622 .{ .src = .{ .to_mem, .none } },
45744 .{ .src = .{ .to_mem, .none, .none } },
3262345745 },
3262445746 .extra_temps = .{
32625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32626 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3262745747 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32628 .unused,
45748 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45749 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45750 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3262945751 .unused,
3263045752 .unused,
3263145753 .unused,
......@@ -32635,24 +45757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3263545757 .dst_temps = .{.mem},
3263645758 .clobbers = .{ .eflags = true },
3263745759 .each = .{ .once = &.{
32638 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32639 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32640 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
32641 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45760 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45761 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45762 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45763 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
45764 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45765 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
45766 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
45767 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3264445768 } },
3264545769 }, .{
32646 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },
32647 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45770 .required_features = .{ .@"64bit", null, null, null },
45771 .src_constraints = .{ .any_scalar_int, .any, .any },
45772 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
3264845773 .patterns = &.{
32649 .{ .src = .{ .to_mem, .none } },
45774 .{ .src = .{ .to_mem, .none, .none } },
3265045775 },
3265145776 .extra_temps = .{
32652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3265345777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32654 .unused,
32655 .unused,
45778 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45779 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45780 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3265645781 .unused,
3265745782 .unused,
3265845783 .unused,
......@@ -32662,24 +45787,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3266245787 .dst_temps = .{.mem},
3266345788 .clobbers = .{ .eflags = true },
3266445789 .each = .{ .once = &.{
32665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32666 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
32667 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
32668 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
32669 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45790 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45791 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45792 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45793 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
45794 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45795 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
45796 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
45797 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3267145798 } },
3267245799 }, .{
32673 .src_constraints = .{ .any_scalar_int, .any },
32674 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
45800 .required_features = .{ .@"64bit", .slow_incdec, null, null },
45801 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45802 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
3267545803 .patterns = &.{
32676 .{ .src = .{ .to_mem, .none } },
45804 .{ .src = .{ .to_mem, .none, .none } },
3267745805 },
3267845806 .extra_temps = .{
32679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
3268145807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32682 .unused,
45808 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45809 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45810 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3268345811 .unused,
3268445812 .unused,
3268545813 .unused,
......@@ -32689,25 +45817,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3268945817 .dst_temps = .{.mem},
3269045818 .clobbers = .{ .eflags = true },
3269145819 .each = .{ .once = &.{
32692 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32693 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32694 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
32695 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32696 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
32697 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32698 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45820 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45821 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45822 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45823 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
45824 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45825 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
45826 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
45827 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
45828 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
45829 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
45830 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
45831 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
45832 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3269945833 } },
3270045834 }, .{
32701 .src_constraints = .{ .any_scalar_signed_int, .any },
32702 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
45835 .required_features = .{ .@"64bit", null, null, null },
45836 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45837 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
3270345838 .patterns = &.{
32704 .{ .src = .{ .to_mem, .none } },
45839 .{ .src = .{ .to_mem, .none, .none } },
3270545840 },
3270645841 .extra_temps = .{
32707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3270845842 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32709 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
32710 .unused,
45843 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45844 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3271145846 .unused,
3271245847 .unused,
3271345848 .unused,
......@@ -32717,28 +45852,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3271745852 .dst_temps = .{.mem},
3271845853 .clobbers = .{ .eflags = true },
3271945854 .each = .{ .once = &.{
32720 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32721 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32722 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
32723 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32724 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
32725 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32726 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
32727 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45855 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45856 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45857 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45858 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
45859 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45860 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
45861 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
45862 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
45863 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
45864 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
45865 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
45866 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
45867 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3272945868 } },
3273045869 }, .{
32731 .required_features = .{ .bmi2, null, null, null },
32732 .src_constraints = .{ .any_scalar_unsigned_int, .any },
32733 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45870 .required_features = .{ .@"64bit", .slow_incdec, null, null },
45871 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45872 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
3273445873 .patterns = &.{
32735 .{ .src = .{ .to_mem, .none } },
45874 .{ .src = .{ .to_mem, .none, .none } },
3273645875 },
3273745876 .extra_temps = .{
32738 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32739 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32740 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
3274145877 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45878 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45879 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45880 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3274245881 .unused,
3274345882 .unused,
3274445883 .unused,
......@@ -32748,26 +45887,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3274845887 .dst_temps = .{.mem},
3274945888 .clobbers = .{ .eflags = true },
3275045889 .each = .{ .once = &.{
32751 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32752 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32753 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
32754 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
32755 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
32756 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
32757 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45890 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45891 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45892 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45893 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
45894 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45895 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
45896 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45897 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45898 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
45899 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
45900 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
45901 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
45902 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
45903 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
45904 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3275945905 } },
3276045906 }, .{
32761 .src_constraints = .{ .any_scalar_unsigned_int, .any },
32762 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
45907 .required_features = .{ .@"64bit", null, null, null },
45908 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45909 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
3276345910 .patterns = &.{
32764 .{ .src = .{ .to_mem, .none } },
45911 .{ .src = .{ .to_mem, .none, .none } },
3276545912 },
3276645913 .extra_temps = .{
32767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3276845914 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32770 .unused,
45915 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45916 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45917 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3277145918 .unused,
3277245919 .unused,
3277345920 .unused,
......@@ -32777,199 +45924,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3277745924 .dst_temps = .{.mem},
3277845925 .clobbers = .{ .eflags = true },
3277945926 .each = .{ .once = &.{
32780 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32781 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32782 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
32783 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
32784 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
32785 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
32786 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
32787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
45927 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45928 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45929 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45930 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
45931 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45932 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
45933 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45934 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45935 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
45936 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
45937 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
45938 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
45939 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
45940 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
45941 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3278845942 } },
3278945943 }, .{
32790 .required_features = .{ .avx, null, null, null },
32791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
32792 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
45944 .required_features = .{ .@"64bit", .slow_incdec, null, null },
45945 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45946 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
3279345947 .patterns = &.{
32794 .{ .src = .{ .to_sse, .none } },
45948 .{ .src = .{ .to_mem, .none, .none } },
3279545949 },
3279645950 .extra_temps = .{
32797 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32798 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32799 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32800 .unused,
32801 .unused,
45951 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45952 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45953 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45954 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45955 .{ .type = .u64, .kind = .{ .reg = .rax } },
3280245956 .unused,
3280345957 .unused,
3280445958 .unused,
3280545959 .unused,
3280645960 },
32807 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45961 .dst_temps = .{.mem},
45962 .clobbers = .{ .eflags = true },
3280845963 .each = .{ .once = &.{
32809 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32810 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
32811 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
32812 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },
32813 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },
45964 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45965 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
45966 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
45967 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
45968 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
45969 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
45970 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45971 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
45972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
45973 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
45974 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
45975 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3281445976 } },
3281545977 }, .{
32816 .required_features = .{ .avx, null, null, null },
32817 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
32818 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
45978 .required_features = .{ .@"64bit", null, null, null },
45979 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45980 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
3281945981 .patterns = &.{
32820 .{ .src = .{ .to_sse, .none } },
45982 .{ .src = .{ .to_mem, .none, .none } },
3282145983 },
3282245984 .extra_temps = .{
32823 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32824 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
32825 .unused,
32826 .unused,
32827 .unused,
45985 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45986 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45987 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45988 .{ .type = .u32, .kind = .{ .reg = .ecx } },
45989 .{ .type = .u64, .kind = .{ .reg = .rax } },
3282845990 .unused,
3282945991 .unused,
3283045992 .unused,
3283145993 .unused,
3283245994 },
32833 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
45995 .dst_temps = .{.mem},
45996 .clobbers = .{ .eflags = true },
3283445997 .each = .{ .once = &.{
32835 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32836 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
45998 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
45999 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46000 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46001 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46002 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46003 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
46004 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
46005 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
46006 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46007 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46008 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46009 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3283746010 } },
3283846011 }, .{
32839 .required_features = .{ .sse2, null, null, null },
32840 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
32841 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
46012 .required_features = .{ .@"64bit", .slow_incdec, null, null },
46013 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46014 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3284246015 .patterns = &.{
32843 .{ .src = .{ .to_mut_sse, .none } },
46016 .{ .src = .{ .to_mem, .none, .none } },
3284446017 },
3284546018 .extra_temps = .{
32846 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32847 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32848 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32849 .unused,
32850 .unused,
46019 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46020 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46021 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46022 .{ .type = .u64, .kind = .{ .reg = .rax } },
46023 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3285146024 .unused,
3285246025 .unused,
3285346026 .unused,
3285446027 .unused,
3285546028 },
32856 .dst_temps = .{.{ .ref = .src0 }},
46029 .dst_temps = .{.mem},
46030 .clobbers = .{ .eflags = true },
3285746031 .each = .{ .once = &.{
32858 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32859 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
32860 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
32861 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
32862 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
46032 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46033 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46034 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46035 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
46036 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46037 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46038 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46039 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
46040 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46041 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3286346042 } },
3286446043 }, .{
32865 .required_features = .{ .sse2, null, null, null },
32866 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
32867 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
46044 .required_features = .{ .@"64bit", null, null, null },
46045 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46046 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3286846047 .patterns = &.{
32869 .{ .src = .{ .to_mut_sse, .none } },
46048 .{ .src = .{ .to_mem, .none, .none } },
3287046049 },
3287146050 .extra_temps = .{
32872 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32873 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
32874 .unused,
32875 .unused,
32876 .unused,
46051 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46052 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46053 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46054 .{ .type = .u64, .kind = .{ .reg = .rax } },
46055 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3287746056 .unused,
3287846057 .unused,
3287946058 .unused,
3288046059 .unused,
3288146060 },
32882 .dst_temps = .{.{ .ref = .src0 }},
46061 .dst_temps = .{.mem},
46062 .clobbers = .{ .eflags = true },
3288346063 .each = .{ .once = &.{
32884 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32885 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
46064 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46065 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46066 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46067 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
46068 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46069 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46070 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46071 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
46072 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46073 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3288646074 } },
3288746075 }, .{
32888 .required_features = .{ .sse, null, null, null },
32889 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
32890 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
46076 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
46077 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46078 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3289146079 .patterns = &.{
32892 .{ .src = .{ .to_mut_sse, .none } },
46080 .{ .src = .{ .to_mem, .none, .none } },
3289346081 },
3289446082 .extra_temps = .{
32895 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32896 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
32897 .unused,
32898 .unused,
32899 .unused,
46083 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46084 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46085 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46086 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46087 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3290046088 .unused,
3290146089 .unused,
3290246090 .unused,
3290346091 .unused,
3290446092 },
32905 .dst_temps = .{.{ .ref = .src0 }},
46093 .dst_temps = .{.mem},
46094 .clobbers = .{ .eflags = true },
3290646095 .each = .{ .once = &.{
32907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32908 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
46096 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46097 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46098 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46099 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
46100 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
46101 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46102 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
46103 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
46104 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
46105 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46106 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
46107 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46108 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3290946109 } },
3291046110 }, .{
32911 .required_features = .{ .avx2, null, null, null },
32912 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
32913 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
46111 .required_features = .{ .@"64bit", .bmi2, null, null },
46112 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46113 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3291446114 .patterns = &.{
32915 .{ .src = .{ .to_sse, .none } },
46115 .{ .src = .{ .to_mem, .none, .none } },
3291646116 },
3291746117 .extra_temps = .{
32918 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32919 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32920 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32921 .unused,
32922 .unused,
46118 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46119 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46120 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46121 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46122 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3292346123 .unused,
3292446124 .unused,
3292546125 .unused,
3292646126 .unused,
3292746127 },
32928 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
46128 .dst_temps = .{.mem},
46129 .clobbers = .{ .eflags = true },
3292946130 .each = .{ .once = &.{
32930 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32931 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
32932 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
32933 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
32934 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
46131 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46132 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46133 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46134 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
46135 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
46136 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46137 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
46138 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
46139 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
46140 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46141 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
46142 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46143 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3293546144 } },
3293646145 }, .{
32937 .required_features = .{ .avx2, null, null, null },
32938 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
32939 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
46146 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
46147 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46148 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
3294046149 .patterns = &.{
32941 .{ .src = .{ .to_sse, .none } },
46150 .{ .src = .{ .to_mem, .none, .none } },
3294246151 },
3294346152 .extra_temps = .{
32944 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
32945 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
32946 .unused,
46153 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46154 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46155 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46156 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46157 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46158 .{ .type = .u64, .kind = .{ .reg = .rax } },
3294746159 .unused,
3294846160 .unused,
3294946161 .unused,
46162 },
46163 .dst_temps = .{.mem},
46164 .clobbers = .{ .eflags = true },
46165 .each = .{ .once = &.{
46166 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46167 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46168 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46169 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
46170 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46171 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46172 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
46173 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46174 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46175 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46176 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
46177 } },
46178 }, .{
46179 .required_features = .{ .@"64bit", .bmi2, null, null },
46180 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46181 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
46182 .patterns = &.{
46183 .{ .src = .{ .to_mem, .none, .none } },
46184 },
46185 .extra_temps = .{
46186 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46187 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46188 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46189 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46190 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46191 .{ .type = .u64, .kind = .{ .reg = .rax } },
3295046192 .unused,
3295146193 .unused,
3295246194 .unused,
3295346195 },
32954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
46196 .dst_temps = .{.mem},
46197 .clobbers = .{ .eflags = true },
3295546198 .each = .{ .once = &.{
32956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32957 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
46199 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46200 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46201 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46202 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
46203 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46204 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46205 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
46206 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46207 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46208 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46209 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3295846210 } },
3295946211 }, .{
32960 .required_features = .{ .avx2, null, null, null },
32961 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
32962 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
46212 .required_features = .{ .@"64bit", .slow_incdec, null, null },
46213 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46214 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3296346215 .patterns = &.{
32964 .{ .src = .{ .to_mem, .none } },
46216 .{ .src = .{ .to_mem, .none, .none } },
3296546217 },
3296646218 .extra_temps = .{
32967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32968 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32969 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32970 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32971 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32972 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46220 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46221 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46222 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46223 .unused,
46224 .unused,
3297346225 .unused,
3297446226 .unused,
3297546227 .unused,
......@@ -32977,30 +46229,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3297746229 .dst_temps = .{.mem},
3297846230 .clobbers = .{ .eflags = true },
3297946231 .each = .{ .once = &.{
32980 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
32981 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
32982 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
32983 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
32984 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32985 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
32986 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
32987 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
32988 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
32989 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
32990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46232 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46233 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46234 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46235 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
46236 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46237 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
46238 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
46239 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
46240 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
46241 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46242 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
46243 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46244 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3299146245 } },
3299246246 }, .{
32993 .required_features = .{ .avx2, null, null, null },
32994 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
32995 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
46247 .required_features = .{ .@"64bit", null, null, null },
46248 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46249 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
3299646250 .patterns = &.{
32997 .{ .src = .{ .to_mem, .none } },
46251 .{ .src = .{ .to_mem, .none, .none } },
3299846252 },
3299946253 .extra_temps = .{
33000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33001 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
33002 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
33003 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46255 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46256 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46257 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3300446258 .unused,
3300546259 .unused,
3300646260 .unused,
......@@ -33010,28 +46264,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3301046264 .dst_temps = .{.mem},
3301146265 .clobbers = .{ .eflags = true },
3301246266 .each = .{ .once = &.{
33013 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
33014 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
33015 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33016 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
33017 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
33018 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
33019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46267 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46268 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46269 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46270 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
46271 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46272 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
46273 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
46274 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
46275 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
46276 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46277 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
46278 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46279 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3302046280 } },
3302146281 }, .{
33022 .required_features = .{ .avx, null, null, null },
33023 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
33024 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
46282 .required_features = .{ .@"64bit", .slow_incdec, null, null },
46283 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46284 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
3302546285 .patterns = &.{
33026 .{ .src = .{ .to_mem, .none } },
46286 .{ .src = .{ .to_mem, .none, .none } },
3302746287 },
3302846288 .extra_temps = .{
33029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33030 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33031 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33032 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33033 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
33034 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
46289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46290 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46291 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46292 .{ .type = .u64, .kind = .{ .reg = .rax } },
46293 .{ .type = .u32, .kind = .{ .reg = .ecx } },
46294 .unused,
3303546295 .unused,
3303646296 .unused,
3303746297 .unused,
......@@ -33039,31 +46299,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3303946299 .dst_temps = .{.mem},
3304046300 .clobbers = .{ .eflags = true },
3304146301 .each = .{ .once = &.{
33042 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
33043 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
33044 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
33045 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
33046 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33047 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
33048 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
33049 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
33050 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
33051 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46302 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46303 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46304 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46305 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
46306 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46307 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46308 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
46309 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
46310 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46311 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46312 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46313 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
3305346314 } },
3305446315 }, .{
33055 .required_features = .{ .avx, null, null, null },
33056 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
33057 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
46316 .required_features = .{ .@"64bit", null, null, null },
46317 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
46318 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
3305846319 .patterns = &.{
33059 .{ .src = .{ .to_mem, .none } },
46320 .{ .src = .{ .to_mem, .none, .none } },
3306046321 },
3306146322 .extra_temps = .{
33062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33063 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33064 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33065 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
33066 .unused,
46323 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
46324 .{ .type = .usize, .kind = .{ .reg = .rsi } },
46325 .{ .type = .usize, .kind = .{ .reg = .rdi } },
46326 .{ .type = .u64, .kind = .{ .reg = .rax } },
46327 .{ .type = .u32, .kind = .{ .reg = .ecx } },
3306746328 .unused,
3306846329 .unused,
3306946330 .unused,
......@@ -33072,118 +46333,456 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3307246333 .dst_temps = .{.mem},
3307346334 .clobbers = .{ .eflags = true },
3307446335 .each = .{ .once = &.{
33075 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
33076 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
33077 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33078 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
33079 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
33080 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46336 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
46337 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
46338 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
46339 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
46340 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
46341 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
46342 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
46343 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
46344 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
46345 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
46346 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46347 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46348 } },
46349 } }) catch |err| switch (err) {
46350 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
46351 @tagName(air_tag),
46352 ty_op.ty.toType().fmt(pt),
46353 cg.typeOf(ty_op.operand).fmt(pt),
46354 ops[0].tracking(cg),
46355 }),
46356 else => |e| return e,
46357 };
46358 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46359 },
46360 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
46361 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46362 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46363 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46364 },
46365 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
46366 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46367 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
46368 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46369 if (!opt_ty.optionalReprIsPayload(zcu)) {
46370 const opt_child_ty = opt_ty.optionalChild(zcu);
46371 const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu));
46372 try ops[0].toOffset(opt_child_abi_size, cg);
46373 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
46374 try ops[0].store(&has_value, .{}, cg);
46375 try has_value.die(cg);
46376 try ops[0].toOffset(-opt_child_abi_size, cg);
46377 }
46378 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46379 },
46380 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
46381 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46382 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
46383 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
46384 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
46385 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46386 try ops[0].toOffset(eu_pl_off, cg);
46387 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46388 },
46389 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
46390 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46391 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
46392 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
46393 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
46394 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46395 try ops[0].toOffset(eu_err_off, cg);
46396 const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg);
46397 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
46398 },
46399 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
46400 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46401 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
46402 const eu_err_ty = eu_ty.errorUnionSet(zcu);
46403 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
46404 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
46405 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
46406 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46407 try ops[0].toOffset(eu_err_off, cg);
46408 var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
46409 try ops[0].store(&no_err, .{}, cg);
46410 try no_err.die(cg);
46411 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
46412 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46413 },
46414 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
46415 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
46416 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
46417 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
46418 try ops[0].toOffset(cg.fieldOffset(
46419 cg.typeOf(extra.struct_operand),
46420 ty_pl.ty.toType(),
46421 extra.field_index,
46422 ), cg);
46423 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
46424 },
46425 .struct_field_ptr_index_0,
46426 .struct_field_ptr_index_1,
46427 .struct_field_ptr_index_2,
46428 .struct_field_ptr_index_3,
46429 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
46430 else => unreachable,
46431 .struct_field_ptr_index_0 => 0,
46432 .struct_field_ptr_index_1 => 1,
46433 .struct_field_ptr_index_2 => 2,
46434 .struct_field_ptr_index_3 => 3,
46435 }) else {
46436 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46437 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46438 try ops[0].toOffset(cg.fieldOffset(
46439 cg.typeOf(ty_op.operand),
46440 ty_op.ty.toType(),
46441 switch (air_tag) {
46442 else => unreachable,
46443 .struct_field_ptr_index_0 => 0,
46444 .struct_field_ptr_index_1 => 1,
46445 .struct_field_ptr_index_2 => 2,
46446 .struct_field_ptr_index_3 => 3,
46447 },
46448 ), cg);
46449 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46450 },
46451 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
46452 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
46453 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
46454 const agg_ty = cg.typeOf(extra.struct_operand);
46455 const field_ty = ty_pl.ty.toType();
46456 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
46457 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
46458 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
46459 };
46460 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
46461 // hack around Sema OPV bugs
46462 var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu))
46463 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
46464 else
46465 try cg.tempInit(field_ty, .none);
46466 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
46467 },
46468 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
46469 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
46470 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
46471 const union_layout = union_ty.unionGetLayout(zcu);
46472 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
46473 // hack around Sema OPV bugs
46474 if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
46475 .disp = @intCast(union_layout.tagOffset()),
46476 }, cg);
46477 const res = try cg.tempInit(.void, .none);
46478 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
46479 },
46480 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
46481 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46482 const union_ty = cg.typeOf(ty_op.operand);
46483 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46484 const union_layout = union_ty.unionGetLayout(zcu);
46485 assert(union_layout.tag_size > 0);
46486 const res = try ops[0].read(ty_op.ty.toType(), .{
46487 .disp = @intCast(union_layout.tagOffset()),
46488 }, cg);
46489 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
46490 },
46491 .slice => if (use_old) try cg.airSlice(inst) else {
46492 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
46493 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
46494 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
46495 try ops[0].toPair(&ops[1], cg);
46496 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
46497 },
46498 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
46499 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46500 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46501 try ops[0].toSliceLen(cg);
46502 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46503 },
46504 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
46505 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46506 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46507 try ops[0].toSlicePtr(cg);
46508 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46509 },
46510 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
46511 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46512 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46513 try ops[0].toOffset(8, cg);
46514 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46515 },
46516 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
46517 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46518 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46519 try ops[0].toOffset(0, cg);
46520 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46521 },
46522 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
46523 else => unreachable,
46524 .slice_elem_val => try cg.airSliceElemVal(inst),
46525 .ptr_elem_val => try cg.airPtrElemVal(inst),
46526 } else {
46527 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
46528 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
46529 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
46530 try ops[0].toSlicePtr(cg);
46531 var res: [1]Temp = undefined;
46532 if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
46533 .dst_constraints = .{.{ .int = .byte }},
46534 .patterns = &.{
46535 .{ .src = .{ .to_gpr, .simm32, .none } },
46536 },
46537 .dst_temps = .{.{ .rc = .general_purpose }},
46538 .each = .{ .once = &.{
46539 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
3308246540 } },
3308346541 }, .{
33084 .required_features = .{ .sse2, null, null, null },
33085 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
33086 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
46542 .dst_constraints = .{.{ .int = .byte }},
3308746543 .patterns = &.{
33088 .{ .src = .{ .to_mem, .none } },
46544 .{ .src = .{ .to_gpr, .to_gpr, .none } },
3308946545 },
33090 .extra_temps = .{
33091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33092 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33093 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33094 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
33095 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
33096 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
33097 .unused,
33098 .unused,
33099 .unused,
46546 .dst_temps = .{.{ .rc = .general_purpose }},
46547 .each = .{ .once = &.{
46548 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
46549 } },
46550 }, .{
46551 .dst_constraints = .{.{ .int = .word }},
46552 .patterns = &.{
46553 .{ .src = .{ .to_gpr, .simm32, .none } },
3310046554 },
33101 .dst_temps = .{.mem},
33102 .clobbers = .{ .eflags = true },
46555 .dst_temps = .{.{ .rc = .general_purpose }},
3310346556 .each = .{ .once = &.{
33104 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
33105 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
33106 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
33107 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
33108 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33109 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
33110 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33111 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
33112 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
33113 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
33114 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33115 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46557 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
3311646558 } },
3311746559 }, .{
33118 .required_features = .{ .sse2, null, null, null },
33119 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
33120 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
46560 .dst_constraints = .{.{ .int = .word }},
3312146561 .patterns = &.{
33122 .{ .src = .{ .to_mem, .none } },
46562 .{ .src = .{ .to_gpr, .to_gpr, .none } },
3312346563 },
33124 .extra_temps = .{
33125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33126 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33127 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33128 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
33129 .unused,
33130 .unused,
33131 .unused,
33132 .unused,
33133 .unused,
46564 .dst_temps = .{.{ .rc = .general_purpose }},
46565 .each = .{ .once = &.{
46566 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
46567 } },
46568 }, .{
46569 .dst_constraints = .{.{ .int = .dword }},
46570 .patterns = &.{
46571 .{ .src = .{ .to_gpr, .simm32, .none } },
46572 },
46573 .dst_temps = .{.{ .rc = .general_purpose }},
46574 .each = .{ .once = &.{
46575 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
46576 } },
46577 }, .{
46578 .dst_constraints = .{.{ .int = .dword }},
46579 .patterns = &.{
46580 .{ .src = .{ .to_gpr, .to_gpr, .none } },
46581 },
46582 .dst_temps = .{.{ .rc = .general_purpose }},
46583 .each = .{ .once = &.{
46584 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
46585 } },
46586 }, .{
46587 .dst_constraints = .{.{ .int = .qword }},
46588 .patterns = &.{
46589 .{ .src = .{ .to_gpr, .simm32, .none } },
46590 },
46591 .dst_temps = .{.{ .rc = .general_purpose }},
46592 .each = .{ .once = &.{
46593 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
46594 } },
46595 }, .{
46596 .required_features = .{ .@"64bit", null, null, null },
46597 .dst_constraints = .{.{ .int = .qword }},
46598 .patterns = &.{
46599 .{ .src = .{ .to_gpr, .to_gpr, .none } },
46600 },
46601 .dst_temps = .{.{ .rc = .general_purpose }},
46602 .each = .{ .once = &.{
46603 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
46604 } },
46605 } }) catch |err| switch (err) {
46606 error.SelectFailed => {
46607 const elem_size = res_ty.abiSize(zcu);
46608 while (true) for (&ops) |*op| {
46609 if (try op.toRegClass(true, .general_purpose, cg)) break;
46610 } else break;
46611 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
46612 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
46613 if (!std.math.isPowerOfTwo(elem_size)) {
46614 try cg.spillEflagsIfOccupied();
46615 try cg.asmRegisterRegisterImmediate(
46616 .{ .i_, .mul },
46617 rhs_reg,
46618 rhs_reg,
46619 .u(elem_size),
46620 );
46621 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46622 .base = .{ .reg = lhs_reg },
46623 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
46624 });
46625 } else if (elem_size > 8) {
46626 try cg.spillEflagsIfOccupied();
46627 try cg.asmRegisterImmediate(
46628 .{ ._l, .sh },
46629 rhs_reg,
46630 .u(std.math.log2_int(u64, elem_size)),
46631 );
46632 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46633 .base = .{ .reg = lhs_reg },
46634 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
46635 });
46636 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46637 .base = .{ .reg = lhs_reg },
46638 .mod = .{ .rm = .{
46639 .size = .qword,
46640 .index = rhs_reg,
46641 .scale = .fromFactor(@intCast(elem_size)),
46642 } },
46643 });
46644 res[0] = try ops[0].load(res_ty, .{}, cg);
46645 },
46646 else => |e| return e,
46647 } else {
46648 // hack around Sema OPV bugs
46649 res[0] = try cg.tempInit(res_ty, .none);
46650 }
46651 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
46652 },
46653 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
46654 else => unreachable,
46655 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
46656 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
46657 } else {
46658 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
46659 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
46660 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
46661 try ops[0].toSlicePtr(cg);
46662 const dst_ty = ty_pl.ty.toType();
46663 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
46664 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
46665 // hack around Sema OPV bugs
46666 if (elem_size == 0) break :zero_offset;
46667 while (true) for (&ops) |*op| {
46668 if (try op.toRegClass(true, .general_purpose, cg)) break;
46669 } else break;
46670 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
46671 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
46672 if (!std.math.isPowerOfTwo(elem_size)) {
46673 try cg.spillEflagsIfOccupied();
46674 try cg.asmRegisterRegisterImmediate(
46675 .{ .i_, .mul },
46676 rhs_reg,
46677 rhs_reg,
46678 .u(elem_size),
46679 );
46680 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46681 .base = .{ .reg = lhs_reg },
46682 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
46683 });
46684 } else if (elem_size > 8) {
46685 try cg.spillEflagsIfOccupied();
46686 try cg.asmRegisterImmediate(
46687 .{ ._l, .sh },
46688 rhs_reg,
46689 .u(std.math.log2_int(u64, elem_size)),
46690 );
46691 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46692 .base = .{ .reg = lhs_reg },
46693 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
46694 });
46695 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
46696 .base = .{ .reg = lhs_reg },
46697 .mod = .{ .rm = .{
46698 .size = .qword,
46699 .index = rhs_reg,
46700 .scale = .fromFactor(@intCast(elem_size)),
46701 } },
46702 });
46703 }
46704 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
46705 },
46706 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
46707 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
46708 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
46709 var len = try cg.tempInit(.usize, .{
46710 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
46711 });
46712 try ops[0].toPair(&len, cg);
46713 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
46714 },
46715 .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}),
46716 .union_init => if (use_old) try cg.airUnionInit(inst) else {
46717 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
46718 const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
46719 const union_ty = ty_pl.ty.toType();
46720 var ops = try cg.tempsFromOperands(inst, .{extra.init});
46721 var res = try cg.tempAllocMem(union_ty);
46722 const union_layout = union_ty.unionGetLayout(zcu);
46723 if (union_layout.tag_size > 0) {
46724 var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex(
46725 union_ty.unionTagTypeSafety(zcu).?,
46726 extra.field_index,
46727 ));
46728 try res.write(&tag_temp, .{
46729 .disp = @intCast(union_layout.tagOffset()),
46730 }, cg);
46731 try tag_temp.die(cg);
46732 }
46733 try res.write(&ops[0], .{
46734 .disp = @intCast(union_layout.payloadOffset()),
46735 }, cg);
46736 try res.finish(inst, &.{extra.init}, &ops, cg);
46737 },
46738 .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else {
46739 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
46740 const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data;
46741 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand });
46742 var res: [1]Temp = undefined;
46743 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
46744 .required_features = .{ .fma, .f16c, null, null },
46745 .src_constraints = .{
46746 .{ .scalar_float = .{ .of = .word, .is = .word } },
46747 .{ .scalar_float = .{ .of = .word, .is = .word } },
46748 .{ .scalar_float = .{ .of = .word, .is = .word } },
3313446749 },
33135 .dst_temps = .{.mem},
33136 .clobbers = .{ .eflags = true },
33137 .each = .{ .once = &.{
33138 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
33139 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
33140 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33141 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
33142 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33143 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
33144 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33145 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33146 } },
33147 }, .{
33148 .required_features = .{ .sse, null, null, null },
33149 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
33150 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
3315146750 .patterns = &.{
33152 .{ .src = .{ .to_mem, .none } },
46751 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
3315346752 },
3315446753 .extra_temps = .{
33155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33156 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33157 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
33158 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
46754 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
46755 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
46756 .unused,
46757 .unused,
3315946758 .unused,
3316046759 .unused,
3316146760 .unused,
3316246761 .unused,
3316346762 .unused,
3316446763 },
33165 .dst_temps = .{.mem},
33166 .clobbers = .{ .eflags = true },
46764 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3316746765 .each = .{ .once = &.{
33168 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
33169 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
33170 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33171 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
33172 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33173 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
33174 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46766 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
46767 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
46768 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
46769 .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ },
46770 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
3317646771 } },
3317746772 }, .{
33178 .required_features = .{ .@"64bit", null, null, null },
33179 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
33180 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
46773 .required_features = .{ .sse, null, null, null },
46774 .src_constraints = .{
46775 .{ .scalar_float = .{ .of = .word, .is = .word } },
46776 .{ .scalar_float = .{ .of = .word, .is = .word } },
46777 .{ .scalar_float = .{ .of = .word, .is = .word } },
46778 },
3318146779 .patterns = &.{
33182 .{ .src = .{ .to_mem, .none } },
46780 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
3318346781 },
46782 .call_frame = .{ .alignment = .@"16" },
3318446783 .extra_temps = .{
33185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33186 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46784 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
46785 .unused,
3318746786 .unused,
3318846787 .unused,
3318946788 .unused,
......@@ -33192,25 +46791,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3319246791 .unused,
3319346792 .unused,
3319446793 },
33195 .dst_temps = .{.mem},
33196 .clobbers = .{ .eflags = true },
46794 .dst_temps = .{.{ .ref = .src0 }},
46795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3319746796 .each = .{ .once = &.{
33198 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33199 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33200 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33201 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33202 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46797 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3320346798 } },
3320446799 }, .{
33205 .required_features = .{ .@"64bit", null, null, null },
33206 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
33207 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
46800 .required_features = .{ .fma, .f16c, null, null },
46801 .src_constraints = .{
46802 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46803 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46804 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46805 },
3320846806 .patterns = &.{
33209 .{ .src = .{ .to_mem, .none } },
46807 .{ .src = .{ .mem, .mem, .mem } },
46808 .{ .src = .{ .to_sse, .mem, .mem } },
46809 .{ .src = .{ .mem, .to_sse, .mem } },
46810 .{ .src = .{ .mem, .mem, .to_sse } },
46811 .{ .src = .{ .to_sse, .to_sse, .mem } },
46812 .{ .src = .{ .to_sse, .mem, .to_sse } },
46813 .{ .src = .{ .mem, .to_sse, .to_sse } },
46814 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
3321046815 },
3321146816 .extra_temps = .{
33212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33213 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
46817 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
46818 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
3321446819 .unused,
3321546820 .unused,
3321646821 .unused,
......@@ -33219,28 +46824,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3321946824 .unused,
3322046825 .unused,
3322146826 },
33222 .dst_temps = .{.mem},
33223 .clobbers = .{ .eflags = true },
46827 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3322446828 .each = .{ .once = &.{
33225 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33226 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33227 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33228 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33229 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33230 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46829 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
46830 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
46831 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
46832 .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ },
46833 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
3323246834 } },
3323346835 }, .{
33234 .required_features = .{ .@"64bit", .bmi2, null, null },
33235 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
33236 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
46836 .required_features = .{ .fma, .f16c, null, null },
46837 .src_constraints = .{
46838 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46839 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46840 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46841 },
3323746842 .patterns = &.{
33238 .{ .src = .{ .to_mem, .none } },
46843 .{ .src = .{ .mem, .mem, .mem } },
46844 .{ .src = .{ .to_sse, .mem, .mem } },
46845 .{ .src = .{ .mem, .to_sse, .mem } },
46846 .{ .src = .{ .mem, .mem, .to_sse } },
46847 .{ .src = .{ .to_sse, .to_sse, .mem } },
46848 .{ .src = .{ .to_sse, .mem, .to_sse } },
46849 .{ .src = .{ .mem, .to_sse, .to_sse } },
46850 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
3323946851 },
3324046852 .extra_temps = .{
33241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33242 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33243 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46853 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
46854 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
46855 .unused,
3324446856 .unused,
3324546857 .unused,
3324646858 .unused,
......@@ -33248,28 +46860,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3324846860 .unused,
3324946861 .unused,
3325046862 },
33251 .dst_temps = .{.mem},
33252 .clobbers = .{ .eflags = true },
46863 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3325346864 .each = .{ .once = &.{
33254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33255 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
33256 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
33257 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33258 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
46865 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
46866 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
46867 .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ },
46868 .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ },
46869 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
3326046870 } },
3326146871 }, .{
33262 .required_features = .{ .@"64bit", null, null, null },
33263 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
33264 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
46872 .required_features = .{ .fma, .f16c, null, null },
46873 .src_constraints = .{
46874 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
46875 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
46876 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
46877 },
3326546878 .patterns = &.{
33266 .{ .src = .{ .to_mem, .none } },
46879 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3326746880 },
3326846881 .extra_temps = .{
3326946882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33270 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33271 .unused,
33272 .unused,
46883 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
46884 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
46885 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
3327346886 .unused,
3327446887 .unused,
3327546888 .unused,
......@@ -33277,221 +46890,232 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3327746890 .unused,
3327846891 },
3327946892 .dst_temps = .{.mem},
33280 .clobbers = .{ .eflags = true },
3328146893 .each = .{ .once = &.{
33282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33283 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
33284 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33285 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33286 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
46895 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
46896 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
46897 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
46898 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },
46899 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
46900 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3328746901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3328846902 } },
3328946903 }, .{
33290 .required_features = .{ .@"64bit", null, null, null },
33291 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
33292 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
46904 .required_features = .{ .avx, null, null, null },
46905 .src_constraints = .{
46906 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46907 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46908 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46909 },
3329346910 .patterns = &.{
33294 .{ .src = .{ .to_mem, .none } },
46911 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3329546912 },
46913 .call_frame = .{ .alignment = .@"16" },
3329646914 .extra_temps = .{
3329746915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33298 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33299 .unused,
33300 .unused,
33301 .unused,
46916 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
46917 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
46918 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
46919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
3330246920 .unused,
3330346921 .unused,
3330446922 .unused,
3330546923 .unused,
3330646924 },
3330746925 .dst_temps = .{.mem},
33308 .clobbers = .{ .eflags = true },
46926 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3330946927 .each = .{ .once = &.{
33310 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33311 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
33312 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33313 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46928 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
46929 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
46930 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
46931 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
46932 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) },
46933 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
46934 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
46935 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3331446936 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3331546937 } },
3331646938 }, .{
33317 .required_features = .{ .@"64bit", null, null, null },
33318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
33319 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
46939 .required_features = .{ .sse4_1, null, null, null },
46940 .src_constraints = .{
46941 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46942 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46943 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46944 },
3332046945 .patterns = &.{
33321 .{ .src = .{ .to_mem, .none } },
46946 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3332246947 },
46948 .call_frame = .{ .alignment = .@"16" },
3332346949 .extra_temps = .{
3332446950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33325 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
33326 .unused,
33327 .unused,
33328 .unused,
46951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
46952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
46953 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
46954 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
3332946955 .unused,
3333046956 .unused,
3333146957 .unused,
3333246958 .unused,
3333346959 },
3333446960 .dst_temps = .{.mem},
33335 .clobbers = .{ .eflags = true },
46961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3333646962 .each = .{ .once = &.{
33337 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33338 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
33339 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33340 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33341 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33342 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
46963 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
46964 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
46965 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
46966 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
46967 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
46968 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
46969 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
46970 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
46971 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
46972 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3334346973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3334446974 } },
3334546975 }, .{
33346 .required_features = .{ .@"64bit", .bmi2, null, null },
33347 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
33348 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
46976 .required_features = .{ .sse2, null, null, null },
46977 .src_constraints = .{
46978 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46979 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46980 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
46981 },
3334946982 .patterns = &.{
33350 .{ .src = .{ .to_mem, .none } },
46983 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3335146984 },
46985 .call_frame = .{ .alignment = .@"16" },
3335246986 .extra_temps = .{
3335346987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33354 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33355 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33356 .unused,
33357 .unused,
33358 .unused,
46988 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
46989 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
46990 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
46991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
46992 .{ .type = .f16, .kind = .{ .reg = .ax } },
3335946993 .unused,
3336046994 .unused,
3336146995 .unused,
3336246996 },
3336346997 .dst_temps = .{.mem},
33364 .clobbers = .{ .eflags = true },
46998 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3336546999 .each = .{ .once = &.{
33366 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33367 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
33368 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
33369 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33370 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47001 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
47002 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
47003 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
47004 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
47005 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
47006 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
47007 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47008 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
47009 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
47010 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3337147011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3337247012 } },
3337347013 }, .{
33374 .required_features = .{ .@"64bit", null, null, null },
33375 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
33376 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
47014 .required_features = .{ .sse, null, null, null },
47015 .src_constraints = .{
47016 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
47017 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
47018 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
47019 },
3337747020 .patterns = &.{
33378 .{ .src = .{ .to_mem, .none } },
47021 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3337947022 },
47023 .call_frame = .{ .alignment = .@"16" },
3338047024 .extra_temps = .{
3338147025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33382 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33383 .unused,
33384 .unused,
33385 .unused,
33386 .unused,
33387 .unused,
47026 .{ .type = .f16, .kind = .{ .reg = .ax } },
47027 .{ .type = .f32, .kind = .mem },
47028 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
47029 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
47030 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
47031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
3338847032 .unused,
3338947033 .unused,
3339047034 },
3339147035 .dst_temps = .{.mem},
33392 .clobbers = .{ .eflags = true },
47036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3339347037 .each = .{ .once = &.{
33394 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33395 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
33396 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
33397 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33398 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47039 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
47040 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
47041 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
47042 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
47043 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
47044 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
47045 .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ },
47046 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
47047 .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ },
47048 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
47049 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
47050 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
47051 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
47052 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3339947053 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3340047054 } },
3340147055 }, .{
33402 .required_features = .{ .@"64bit", null, null, null },
33403 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },
33404 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
33405 .patterns = &.{
33406 .{ .src = .{ .to_mem, .none } },
47056 .required_features = .{ .fma, null, null, null },
47057 .src_constraints = .{
47058 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47059 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47060 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3340747061 },
33408 .extra_temps = .{
33409 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33410 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33411 .unused,
33412 .unused,
33413 .unused,
33414 .unused,
33415 .unused,
33416 .unused,
33417 .unused,
47062 .patterns = &.{
47063 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47064 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47065 .{ .src = .{ .mut_sse, .sse, .sse } },
47066 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3341847067 },
33419 .dst_temps = .{.mem},
33420 .clobbers = .{ .eflags = true },
47068 .dst_temps = .{.{ .ref = .src0 }},
3342147069 .each = .{ .once = &.{
33422 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33423 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
33424 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33425 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33426 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47070 .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ },
3342747071 } },
3342847072 }, .{
33429 .required_features = .{ .@"64bit", null, null, null },
33430 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any },
33431 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
33432 .patterns = &.{
33433 .{ .src = .{ .to_mem, .none } },
47073 .required_features = .{ .fma, null, null, null },
47074 .src_constraints = .{
47075 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47076 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47077 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3343447078 },
33435 .extra_temps = .{
33436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33437 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
33438 .unused,
33439 .unused,
33440 .unused,
33441 .unused,
33442 .unused,
33443 .unused,
33444 .unused,
47079 .patterns = &.{
47080 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47081 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47082 .{ .src = .{ .mut_sse, .sse, .sse } },
47083 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3344547084 },
33446 .dst_temps = .{.mem},
33447 .clobbers = .{ .eflags = true },
47085 .dst_temps = .{.{ .ref = .src0 }},
3344847086 .each = .{ .once = &.{
33449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33450 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
33451 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33452 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33453 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33454 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47087 .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ },
3345647088 } },
3345747089 }, .{
33458 .required_features = .{ .@"64bit", .bmi2, null, null },
33459 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },
33460 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
33461 .patterns = &.{
33462 .{ .src = .{ .to_mem, .none } },
47090 .required_features = .{ .fma, null, null, null },
47091 .src_constraints = .{
47092 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47093 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47094 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3346347095 },
33464 .extra_temps = .{
33465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33466 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33467 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33468 .unused,
33469 .unused,
33470 .unused,
33471 .unused,
33472 .unused,
33473 .unused,
47096 .patterns = &.{
47097 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47098 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47099 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
3347447100 },
33475 .dst_temps = .{.mem},
33476 .clobbers = .{ .eflags = true },
47101 .dst_temps = .{.{ .ref = .src2 }},
3347747102 .each = .{ .once = &.{
33478 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33479 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
33480 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
33481 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33482 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47103 .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ },
3348447104 } },
3348547105 }, .{
33486 .required_features = .{ .@"64bit", null, null, null },
33487 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },
33488 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
47106 .required_features = .{ .sse, null, null, null },
47107 .src_constraints = .{
47108 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47109 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47110 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47111 },
3348947112 .patterns = &.{
33490 .{ .src = .{ .to_mem, .none } },
47113 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
3349147114 },
47115 .call_frame = .{ .alignment = .@"16" },
3349247116 .extra_temps = .{
33493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33494 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
47117 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
47118 .unused,
3349547119 .unused,
3349647120 .unused,
3349747121 .unused,
......@@ -33500,178 +47124,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3350047124 .unused,
3350147125 .unused,
3350247126 },
33503 .dst_temps = .{.mem},
33504 .clobbers = .{ .eflags = true },
47127 .dst_temps = .{.{ .ref = .src0 }},
47128 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3350547129 .each = .{ .once = &.{
33506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33507 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
33508 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
33509 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
33510 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47130 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3351247131 } },
3351347132 }, .{
33514 .required_features = .{ .@"64bit", null, null, null },
33515 .src_constraints = .{ .any_scalar_int, .any },
33516 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
33517 .patterns = &.{
33518 .{ .src = .{ .to_mem, .none } },
47133 .required_features = .{ .fma, null, null, null },
47134 .src_constraints = .{
47135 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47136 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47137 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3351947138 },
33520 .extra_temps = .{
33521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33523 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33524 .unused,
33525 .unused,
33526 .unused,
33527 .unused,
33528 .unused,
33529 .unused,
47139 .patterns = &.{
47140 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47141 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47142 .{ .src = .{ .mut_sse, .sse, .sse } },
47143 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3353047144 },
33531 .dst_temps = .{.mem},
33532 .clobbers = .{ .eflags = true },
47145 .dst_temps = .{.{ .ref = .src0 }},
3353347146 .each = .{ .once = &.{
33534 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33535 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
33536 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
33537 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33538 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
33539 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47147 .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ },
3354147148 } },
3354247149 }, .{
33543 .required_features = .{ .@"64bit", null, null, null },
33544 .src_constraints = .{ .any_scalar_signed_int, .any },
33545 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
33546 .patterns = &.{
33547 .{ .src = .{ .to_mem, .none } },
47150 .required_features = .{ .fma, null, null, null },
47151 .src_constraints = .{
47152 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47153 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47154 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3354847155 },
33549 .extra_temps = .{
33550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33551 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33552 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
33553 .unused,
33554 .unused,
33555 .unused,
33556 .unused,
33557 .unused,
33558 .unused,
47156 .patterns = &.{
47157 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47158 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47159 .{ .src = .{ .mut_sse, .sse, .sse } },
47160 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3355947161 },
33560 .dst_temps = .{.mem},
33561 .clobbers = .{ .eflags = true },
47162 .dst_temps = .{.{ .ref = .src0 }},
3356247163 .each = .{ .once = &.{
33563 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33564 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
33565 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
33566 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33567 .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
33568 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33569 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
33570 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47164 .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ },
3357247165 } },
3357347166 }, .{
33574 .required_features = .{ .@"64bit", .bmi2, null, null },
33575 .src_constraints = .{ .any_scalar_unsigned_int, .any },
33576 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
33577 .patterns = &.{
33578 .{ .src = .{ .to_mem, .none } },
47167 .required_features = .{ .fma, null, null, null },
47168 .src_constraints = .{
47169 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47170 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
47171 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3357947172 },
33580 .extra_temps = .{
33581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33583 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33584 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33585 .unused,
33586 .unused,
33587 .unused,
33588 .unused,
33589 .unused,
47173 .patterns = &.{
47174 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47175 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47176 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
3359047177 },
33591 .dst_temps = .{.mem},
33592 .clobbers = .{ .eflags = true },
47178 .dst_temps = .{.{ .ref = .src2 }},
3359347179 .each = .{ .once = &.{
33594 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33595 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
33596 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
33597 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
33598 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
33599 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
33600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47180 .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ },
3360247181 } },
3360347182 }, .{
33604 .required_features = .{ .@"64bit", null, null, null },
33605 .src_constraints = .{ .any_scalar_unsigned_int, .any },
33606 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
33607 .patterns = &.{
33608 .{ .src = .{ .to_mem, .none } },
47183 .required_features = .{ .fma, null, null, null },
47184 .src_constraints = .{
47185 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47186 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47187 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3360947188 },
33610 .extra_temps = .{
33611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33612 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33613 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33614 .unused,
33615 .unused,
33616 .unused,
33617 .unused,
33618 .unused,
33619 .unused,
47189 .patterns = &.{
47190 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47191 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47192 .{ .src = .{ .mut_sse, .sse, .sse } },
47193 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3362047194 },
33621 .dst_temps = .{.mem},
33622 .clobbers = .{ .eflags = true },
47195 .dst_temps = .{.{ .ref = .src0 }},
3362347196 .each = .{ .once = &.{
33624 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
33625 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
33626 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
33627 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
33628 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
33629 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
33630 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
47197 .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ },
3363247198 } },
3363347199 }, .{
33634 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33635 .src_constraints = .{ .any_scalar_int, .any },
33636 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
47200 .required_features = .{ .fma, null, null, null },
47201 .src_constraints = .{
47202 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47203 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47204 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47205 },
3363747206 .patterns = &.{
33638 .{ .src = .{ .to_mem, .none } },
47207 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47208 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47209 .{ .src = .{ .mut_sse, .sse, .sse } },
47210 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3363947211 },
33640 .extra_temps = .{
33641 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33642 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33643 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33644 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33645 .unused,
33646 .unused,
33647 .unused,
33648 .unused,
33649 .unused,
47212 .dst_temps = .{.{ .ref = .src0 }},
47213 .each = .{ .once = &.{
47214 .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ },
47215 } },
47216 }, .{
47217 .required_features = .{ .fma, null, null, null },
47218 .src_constraints = .{
47219 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47220 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47221 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3365047222 },
33651 .dst_temps = .{.mem},
33652 .clobbers = .{ .eflags = true },
47223 .patterns = &.{
47224 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47225 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47226 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
47227 },
47228 .dst_temps = .{.{ .ref = .src2 }},
3365347229 .each = .{ .once = &.{
33654 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33655 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33656 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33657 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
33658 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33659 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
33660 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33661 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47230 .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ },
3366247231 } },
3366347232 }, .{
33664 .required_features = .{ .@"64bit", null, null, null },
33665 .src_constraints = .{ .any_scalar_int, .any },
33666 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
47233 .required_features = .{ .fma, null, null, null },
47234 .src_constraints = .{
47235 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
47236 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
47237 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
47238 },
3366747239 .patterns = &.{
33668 .{ .src = .{ .to_mem, .none } },
47240 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3366947241 },
3367047242 .extra_temps = .{
33671 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33672 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33673 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33674 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47244 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
47245 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
47246 .unused,
3367547247 .unused,
3367647248 .unused,
3367747249 .unused,
......@@ -33679,955 +47251,607 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3367947251 .unused,
3368047252 },
3368147253 .dst_temps = .{.mem},
33682 .clobbers = .{ .eflags = true },
3368347254 .each = .{ .once = &.{
33684 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33685 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33686 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33687 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
33688 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33689 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
33690 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33691 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47256 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
47257 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
47258 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
47259 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
47260 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
47261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3369247262 } },
3369347263 }, .{
33694 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33695 .src_constraints = .{ .any_scalar_signed_int, .any },
33696 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
47264 .required_features = .{ .avx, null, null, null },
47265 .src_constraints = .{
47266 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47267 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47268 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47269 },
3369747270 .patterns = &.{
33698 .{ .src = .{ .to_mem, .none } },
47271 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3369947272 },
47273 .call_frame = .{ .alignment = .@"16" },
3370047274 .extra_temps = .{
33701 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33702 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33703 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33704 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33705 .unused,
47275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47276 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
47277 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
47278 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
47279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
3370647280 .unused,
3370747281 .unused,
3370847282 .unused,
3370947283 .unused,
3371047284 },
3371147285 .dst_temps = .{.mem},
33712 .clobbers = .{ .eflags = true },
47286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3371347287 .each = .{ .once = &.{
33714 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33715 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33716 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33717 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33718 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33719 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
33720 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
33721 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
33722 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
33723 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33724 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
33725 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33726 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47289 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
47290 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
47291 .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
47292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47293 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47294 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3372747296 } },
3372847297 }, .{
33729 .required_features = .{ .@"64bit", null, null, null },
33730 .src_constraints = .{ .any_scalar_signed_int, .any },
33731 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
47298 .required_features = .{ .sse, null, null, null },
47299 .src_constraints = .{
47300 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47301 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47302 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
47303 },
3373247304 .patterns = &.{
33733 .{ .src = .{ .to_mem, .none } },
47305 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3373447306 },
47307 .call_frame = .{ .alignment = .@"16" },
3373547308 .extra_temps = .{
33736 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33737 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33738 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33739 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33740 .unused,
47309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47310 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
47311 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
47312 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
47313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
3374147314 .unused,
3374247315 .unused,
3374347316 .unused,
3374447317 .unused,
3374547318 },
3374647319 .dst_temps = .{.mem},
33747 .clobbers = .{ .eflags = true },
47320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3374847321 .each = .{ .once = &.{
33749 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33750 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33751 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33752 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33753 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33754 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
33755 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
33756 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
33757 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
33758 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33759 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
33760 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33761 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47323 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
47324 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
47325 .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
47326 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47327 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47328 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
47329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3376247330 } },
3376347331 }, .{
33764 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33765 .src_constraints = .{ .any_scalar_signed_int, .any },
33766 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
47332 .required_features = .{ .fma, null, null, null },
47333 .src_constraints = .{
47334 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47335 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47336 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47337 },
3376747338 .patterns = &.{
33768 .{ .src = .{ .to_mem, .none } },
47339 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47340 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47341 .{ .src = .{ .mut_sse, .sse, .sse } },
47342 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3376947343 },
33770 .extra_temps = .{
33771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33772 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33773 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33774 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33775 .unused,
33776 .unused,
33777 .unused,
33778 .unused,
33779 .unused,
47344 .dst_temps = .{.{ .ref = .src0 }},
47345 .each = .{ .once = &.{
47346 .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ },
47347 } },
47348 }, .{
47349 .required_features = .{ .fma, null, null, null },
47350 .src_constraints = .{
47351 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47352 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47353 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3378047354 },
33781 .dst_temps = .{.mem},
33782 .clobbers = .{ .eflags = true },
47355 .patterns = &.{
47356 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47357 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47358 .{ .src = .{ .mut_sse, .sse, .sse } },
47359 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
47360 },
47361 .dst_temps = .{.{ .ref = .src0 }},
3378347362 .each = .{ .once = &.{
33784 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33785 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33786 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33787 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33788 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33789 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
33790 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33791 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33792 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
33793 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
33794 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
33795 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33796 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
33797 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33798 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47363 .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ },
3379947364 } },
3380047365 }, .{
33801 .required_features = .{ .@"64bit", null, null, null },
33802 .src_constraints = .{ .any_scalar_signed_int, .any },
33803 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
47366 .required_features = .{ .fma, null, null, null },
47367 .src_constraints = .{
47368 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47369 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47370 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47371 },
47372 .patterns = &.{
47373 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47374 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47375 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
47376 },
47377 .dst_temps = .{.{ .ref = .src2 }},
47378 .each = .{ .once = &.{
47379 .{ ._, .v_sd, .fmadd231, .dst0x, .src0x, .src1q, ._ },
47380 } },
47381 }, .{
47382 .required_features = .{ .sse, null, null, null },
47383 .src_constraints = .{
47384 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47385 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47386 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47387 },
3380447388 .patterns = &.{
33805 .{ .src = .{ .to_mem, .none } },
47389 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
3380647390 },
47391 .call_frame = .{ .alignment = .@"16" },
3380747392 .extra_temps = .{
33808 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33809 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33810 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33811 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
47394 .unused,
47395 .unused,
47396 .unused,
3381247397 .unused,
3381347398 .unused,
3381447399 .unused,
3381547400 .unused,
3381647401 .unused,
3381747402 },
33818 .dst_temps = .{.mem},
33819 .clobbers = .{ .eflags = true },
47403 .dst_temps = .{.{ .ref = .src0 }},
47404 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3382047405 .each = .{ .once = &.{
33821 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33822 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33823 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33824 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33825 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33826 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
33827 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33828 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33829 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
33830 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
33831 .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ },
33832 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33833 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
33834 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33835 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47406 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3383647407 } },
3383747408 }, .{
33838 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33839 .src_constraints = .{ .any_scalar_signed_int, .any },
33840 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
47409 .required_features = .{ .fma, null, null, null },
47410 .src_constraints = .{
47411 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47412 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47413 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47414 },
3384147415 .patterns = &.{
33842 .{ .src = .{ .to_mem, .none } },
47416 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47417 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47418 .{ .src = .{ .mut_sse, .sse, .sse } },
47419 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
3384347420 },
33844 .extra_temps = .{
33845 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33846 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33847 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33848 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33849 .{ .type = .u64, .kind = .{ .reg = .rax } },
33850 .unused,
33851 .unused,
33852 .unused,
33853 .unused,
47421 .dst_temps = .{.{ .ref = .src0 }},
47422 .each = .{ .once = &.{
47423 .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ },
47424 } },
47425 }, .{
47426 .required_features = .{ .fma, null, null, null },
47427 .src_constraints = .{
47428 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47429 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47430 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3385447431 },
33855 .dst_temps = .{.mem},
33856 .clobbers = .{ .eflags = true },
47432 .patterns = &.{
47433 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47434 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47435 .{ .src = .{ .mut_sse, .sse, .sse } },
47436 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
47437 },
47438 .dst_temps = .{.{ .ref = .src0 }},
3385747439 .each = .{ .once = &.{
33858 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33859 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33860 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33861 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33862 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33863 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
33864 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33865 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33866 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
33867 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33868 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33869 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47440 .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ },
3387047441 } },
3387147442 }, .{
33872 .required_features = .{ .@"64bit", null, null, null },
33873 .src_constraints = .{ .any_scalar_signed_int, .any },
33874 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
47443 .required_features = .{ .fma, null, null, null },
47444 .src_constraints = .{
47445 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47446 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47447 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47448 },
3387547449 .patterns = &.{
33876 .{ .src = .{ .to_mem, .none } },
47450 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47451 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47452 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
3387747453 },
33878 .extra_temps = .{
33879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33880 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33881 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33882 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33883 .{ .type = .u64, .kind = .{ .reg = .rax } },
33884 .unused,
33885 .unused,
33886 .unused,
33887 .unused,
47454 .dst_temps = .{.{ .ref = .src2 }},
47455 .each = .{ .once = &.{
47456 .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ },
47457 } },
47458 }, .{
47459 .required_features = .{ .fma, null, null, null },
47460 .src_constraints = .{
47461 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47462 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47463 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3388847464 },
33889 .dst_temps = .{.mem},
33890 .clobbers = .{ .eflags = true },
47465 .patterns = &.{
47466 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
47467 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
47468 .{ .src = .{ .mut_sse, .sse, .sse } },
47469 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
47470 },
47471 .dst_temps = .{.{ .ref = .src0 }},
3389147472 .each = .{ .once = &.{
33892 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33893 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33894 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33895 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33896 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33897 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },
33898 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33899 .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
33900 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
33901 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33902 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33903 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47473 .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ },
3390447474 } },
3390547475 }, .{
33906 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33907 .src_constraints = .{ .any_scalar_unsigned_int, .any },
33908 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47476 .required_features = .{ .fma, null, null, null },
47477 .src_constraints = .{
47478 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47479 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47480 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47481 },
47482 .patterns = &.{
47483 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
47484 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
47485 .{ .src = .{ .mut_sse, .sse, .sse } },
47486 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
47487 },
47488 .dst_temps = .{.{ .ref = .src0 }},
47489 .each = .{ .once = &.{
47490 .{ ._, .v_pd, .fmadd213, .dst0y, .src1y, .src2y, ._ },
47491 } },
47492 }, .{
47493 .required_features = .{ .fma, null, null, null },
47494 .src_constraints = .{
47495 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47496 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47497 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
47498 },
47499 .patterns = &.{
47500 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
47501 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
47502 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
47503 },
47504 .dst_temps = .{.{ .ref = .src2 }},
47505 .each = .{ .once = &.{
47506 .{ ._, .v_pd, .fmadd231, .dst0y, .src0y, .src1y, ._ },
47507 } },
47508 }, .{
47509 .required_features = .{ .fma, null, null, null },
47510 .src_constraints = .{
47511 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
47512 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
47513 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
47514 },
3390947515 .patterns = &.{
33910 .{ .src = .{ .to_mem, .none } },
47516 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3391147517 },
3391247518 .extra_temps = .{
33913 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33914 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33915 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33916 .{ .type = .u64, .kind = .{ .reg = .rax } },
33917 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47520 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
47521 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
47522 .unused,
47523 .unused,
3391847524 .unused,
3391947525 .unused,
3392047526 .unused,
3392147527 .unused,
3392247528 },
3392347529 .dst_temps = .{.mem},
33924 .clobbers = .{ .eflags = true },
3392547530 .each = .{ .once = &.{
33926 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33927 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33928 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33929 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33930 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33931 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33932 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
33933 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
33934 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33935 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47531 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47532 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
47533 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
47534 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
47535 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
47536 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
47537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3393647538 } },
3393747539 }, .{
33938 .required_features = .{ .@"64bit", null, null, null },
33939 .src_constraints = .{ .any_scalar_unsigned_int, .any },
33940 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47540 .required_features = .{ .avx, null, null, null },
47541 .src_constraints = .{
47542 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47543 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47544 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47545 },
3394147546 .patterns = &.{
33942 .{ .src = .{ .to_mem, .none } },
47547 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3394347548 },
47549 .call_frame = .{ .alignment = .@"16" },
3394447550 .extra_temps = .{
33945 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33946 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33947 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33948 .{ .type = .u64, .kind = .{ .reg = .rax } },
33949 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47552 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
47553 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
47554 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
47555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
3395047556 .unused,
3395147557 .unused,
3395247558 .unused,
3395347559 .unused,
3395447560 },
3395547561 .dst_temps = .{.mem},
33956 .clobbers = .{ .eflags = true },
47562 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3395747563 .each = .{ .once = &.{
33958 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33959 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33960 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33961 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33962 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33963 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33964 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
33965 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
33966 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33967 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47564 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47565 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47566 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
47567 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
47568 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47569 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47570 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3396847572 } },
3396947573 }, .{
33970 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
33971 .src_constraints = .{ .any_scalar_unsigned_int, .any },
33972 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47574 .required_features = .{ .sse2, null, null, null },
47575 .src_constraints = .{
47576 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47577 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47578 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47579 },
3397347580 .patterns = &.{
33974 .{ .src = .{ .to_mem, .none } },
47581 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3397547582 },
47583 .call_frame = .{ .alignment = .@"16" },
3397647584 .extra_temps = .{
33977 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33978 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33979 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33980 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
33981 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47586 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
47587 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
47588 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
47589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
3398247590 .unused,
3398347591 .unused,
3398447592 .unused,
3398547593 .unused,
3398647594 },
3398747595 .dst_temps = .{.mem},
33988 .clobbers = .{ .eflags = true },
47596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3398947597 .each = .{ .once = &.{
33990 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33991 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33992 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33993 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
33994 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33995 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33996 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
33997 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
33998 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
33999 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34000 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
34001 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34002 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47598 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47599 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47600 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
47601 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
47602 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47603 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47604 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3400347606 } },
3400447607 }, .{
34005 .required_features = .{ .@"64bit", .bmi2, null, null },
34006 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34007 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47608 .required_features = .{ .sse, null, null, null },
47609 .src_constraints = .{
47610 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47611 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47612 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
47613 },
3400847614 .patterns = &.{
34009 .{ .src = .{ .to_mem, .none } },
47615 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3401047616 },
47617 .call_frame = .{ .alignment = .@"16" },
3401147618 .extra_temps = .{
34012 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34013 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34014 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34015 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
34016 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47619 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47620 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
47621 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
47622 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
47623 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
3401747624 .unused,
3401847625 .unused,
3401947626 .unused,
3402047627 .unused,
3402147628 },
3402247629 .dst_temps = .{.mem},
34023 .clobbers = .{ .eflags = true },
47630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3402447631 .each = .{ .once = &.{
34025 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34026 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34027 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34028 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
34029 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
34030 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34031 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },
34032 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },
34033 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
34034 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34035 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
34036 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34037 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47633 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
47634 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
47635 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
47636 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
47637 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
47638 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
47639 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47640 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47641 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
47642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3403847643 } },
3403947644 }, .{
34040 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
34041 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34042 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
47645 .required_features = .{ .sse, .x87, null, null },
47646 .src_constraints = .{
47647 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47648 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47649 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47650 },
3404347651 .patterns = &.{
34044 .{ .src = .{ .to_mem, .none } },
47652 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3404547653 },
47654 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
3404647655 .extra_temps = .{
34047 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34048 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34049 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34050 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
34051 .{ .type = .u32, .kind = .{ .reg = .ecx } },
34052 .{ .type = .u64, .kind = .{ .reg = .rax } },
47656 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
47657 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
47658 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
47659 .unused,
47660 .unused,
47661 .unused,
3405347662 .unused,
3405447663 .unused,
3405547664 .unused,
3405647665 },
34057 .dst_temps = .{.mem},
34058 .clobbers = .{ .eflags = true },
47666 .dst_temps = .{.{ .reg = .st0 }},
47667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3405947668 .each = .{ .once = &.{
34060 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34061 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34062 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34063 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
34064 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
34065 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34066 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
34067 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34068 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34069 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34070 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47669 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
47670 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
47671 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
47672 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
47673 .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ },
47674 .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ },
47675 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
3407147676 } },
3407247677 }, .{
34073 .required_features = .{ .@"64bit", .bmi2, null, null },
34074 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34075 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
47678 .required_features = .{ .sse, .x87, null, null },
47679 .src_constraints = .{
47680 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
47681 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
47682 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
47683 },
3407647684 .patterns = &.{
34077 .{ .src = .{ .to_mem, .none } },
47685 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3407847686 },
47687 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
3407947688 .extra_temps = .{
34080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34081 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34082 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34083 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
34084 .{ .type = .u32, .kind = .{ .reg = .ecx } },
34085 .{ .type = .u64, .kind = .{ .reg = .rax } },
47689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47690 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
47691 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
47692 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
47693 .unused,
47694 .unused,
3408647695 .unused,
3408747696 .unused,
3408847697 .unused,
3408947698 },
3409047699 .dst_temps = .{.mem},
34091 .clobbers = .{ .eflags = true },
47700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3409247701 .each = .{ .once = &.{
34093 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34094 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34095 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34096 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
34097 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
34098 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34099 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },
34100 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34101 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34102 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34103 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47702 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47703 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47704 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
47705 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
47706 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
47707 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
47708 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
47709 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
47710 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
47711 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
47712 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3410447714 } },
3410547715 }, .{
34106 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34107 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34108 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47716 .required_features = .{ .sse, null, null, null },
47717 .src_constraints = .{
47718 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47719 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47720 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47721 },
3410947722 .patterns = &.{
34110 .{ .src = .{ .to_mem, .none } },
47723 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
3411147724 },
47725 .call_frame = .{ .alignment = .@"16" },
3411247726 .extra_temps = .{
34113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34114 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34115 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34116 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
47728 .unused,
47729 .unused,
47730 .unused,
3411747731 .unused,
3411847732 .unused,
3411947733 .unused,
3412047734 .unused,
3412147735 .unused,
3412247736 },
34123 .dst_temps = .{.mem},
34124 .clobbers = .{ .eflags = true },
47737 .dst_temps = .{.{ .ref = .src0 }},
47738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3412547739 .each = .{ .once = &.{
34126 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34127 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34128 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34129 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
34130 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34131 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
34132 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
34133 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
34134 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
34135 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34136 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
34137 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34138 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3413947741 } },
3414047742 }, .{
34141 .required_features = .{ .@"64bit", null, null, null },
34142 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34143 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
47743 .required_features = .{ .avx, null, null, null },
47744 .src_constraints = .{
47745 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47746 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47747 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47748 },
3414447749 .patterns = &.{
34145 .{ .src = .{ .to_mem, .none } },
47750 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3414647751 },
47752 .call_frame = .{ .alignment = .@"16" },
3414747753 .extra_temps = .{
34148 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34149 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34150 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34151 .{ .type = .u32, .kind = .{ .reg = .ecx } },
34152 .unused,
47754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47755 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
47756 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
47757 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
47758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
3415347759 .unused,
3415447760 .unused,
3415547761 .unused,
3415647762 .unused,
3415747763 },
3415847764 .dst_temps = .{.mem},
34159 .clobbers = .{ .eflags = true },
47765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3416047766 .each = .{ .once = &.{
34161 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34162 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34163 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34164 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
34165 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34166 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
34167 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
34168 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
34169 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
34170 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34171 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
34172 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34173 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47767 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47768 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47769 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
47770 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
47771 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47772 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47773 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3417447775 } },
3417547776 }, .{
34176 .required_features = .{ .@"64bit", .slow_incdec, null, null },
34177 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34178 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
47777 .required_features = .{ .sse2, null, null, null },
47778 .src_constraints = .{
47779 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47780 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47781 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47782 },
3417947783 .patterns = &.{
34180 .{ .src = .{ .to_mem, .none } },
47784 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3418147785 },
47786 .call_frame = .{ .alignment = .@"16" },
3418247787 .extra_temps = .{
34183 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34184 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34185 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34186 .{ .type = .u64, .kind = .{ .reg = .rax } },
34187 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47789 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
47790 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
47791 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
47792 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
3418847793 .unused,
3418947794 .unused,
3419047795 .unused,
3419147796 .unused,
3419247797 },
3419347798 .dst_temps = .{.mem},
34194 .clobbers = .{ .eflags = true },
47799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3419547800 .each = .{ .once = &.{
34196 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34197 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34198 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34199 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34200 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
34201 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34202 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
34203 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
34204 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34205 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34206 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34207 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
47801 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47802 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47803 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
47804 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
47805 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47806 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47807 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3420847809 } },
3420947810 }, .{
34210 .required_features = .{ .@"64bit", null, null, null },
34211 .src_constraints = .{ .any_scalar_unsigned_int, .any },
34212 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
47811 .required_features = .{ .sse, null, null, null },
47812 .src_constraints = .{
47813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47815 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
47816 },
3421347817 .patterns = &.{
34214 .{ .src = .{ .to_mem, .none } },
47818 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
3421547819 },
47820 .call_frame = .{ .alignment = .@"16" },
3421647821 .extra_temps = .{
34217 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
34218 .{ .type = .usize, .kind = .{ .reg = .rsi } },
34219 .{ .type = .usize, .kind = .{ .reg = .rdi } },
34220 .{ .type = .u64, .kind = .{ .reg = .rax } },
34221 .{ .type = .u32, .kind = .{ .reg = .ecx } },
47822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
47823 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
47824 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
47825 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
47826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
3422247827 .unused,
3422347828 .unused,
3422447829 .unused,
3422547830 .unused,
3422647831 },
3422747832 .dst_temps = .{.mem},
34228 .clobbers = .{ .eflags = true },
47833 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3422947834 .each = .{ .once = &.{
34230 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
34231 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
34232 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34233 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
34234 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
34235 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
34236 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
34237 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
34238 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34239 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34240 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34241 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
47835 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
47836 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
47837 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
47838 .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
47839 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
47840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
47841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3424247843 } },
3424347844 } }) catch |err| switch (err) {
34244 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
47845 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
3424547846 @tagName(air_tag),
34246 ty_op.ty.toType().fmt(pt),
34247 cg.typeOf(ty_op.operand).fmt(pt),
47847 cg.typeOf(bin_op.lhs).fmt(pt),
3424847848 ops[0].tracking(cg),
47849 ops[1].tracking(cg),
47850 ops[2].tracking(cg),
3424947851 }),
3425047852 else => |e| return e,
3425147853 };
34252 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34253 },
34254 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
34255 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34256 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34257 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34258 },
34259 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
34260 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34261 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
34262 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34263 if (!opt_ty.optionalReprIsPayload(zcu)) {
34264 const opt_child_ty = opt_ty.optionalChild(zcu);
34265 const opt_child_abi_size: i32 = @intCast(opt_child_ty.abiSize(zcu));
34266 try ops[0].toOffset(opt_child_abi_size, cg);
34267 var has_value = try cg.tempInit(.bool, .{ .immediate = 1 });
34268 try ops[0].store(&has_value, .{}, cg);
34269 try has_value.die(cg);
34270 try ops[0].toOffset(-opt_child_abi_size, cg);
34271 }
34272 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34273 },
34274 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
34275 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34276 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
34277 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
34278 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
34279 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34280 try ops[0].toOffset(eu_pl_off, cg);
34281 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34282 },
34283 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
34284 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34285 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
34286 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
34287 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
34288 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34289 try ops[0].toOffset(eu_err_off, cg);
34290 const err = try ops[0].load(eu_ty.errorUnionSet(zcu), .{}, cg);
34291 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
34292 },
34293 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
34294 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34295 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
34296 const eu_err_ty = eu_ty.errorUnionSet(zcu);
34297 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
34298 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
34299 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
34300 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34301 try ops[0].toOffset(eu_err_off, cg);
34302 var no_err = try cg.tempInit(eu_err_ty, .{ .immediate = 0 });
34303 try ops[0].store(&no_err, .{}, cg);
34304 try no_err.die(cg);
34305 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
34306 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34307 },
34308 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
34309 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
34310 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
34311 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
34312 try ops[0].toOffset(cg.fieldOffset(
34313 cg.typeOf(extra.struct_operand),
34314 ty_pl.ty.toType(),
34315 extra.field_index,
34316 ), cg);
34317 try ops[0].finish(inst, &.{extra.struct_operand}, &ops, cg);
34318 },
34319 .struct_field_ptr_index_0,
34320 .struct_field_ptr_index_1,
34321 .struct_field_ptr_index_2,
34322 .struct_field_ptr_index_3,
34323 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
34324 else => unreachable,
34325 .struct_field_ptr_index_0 => 0,
34326 .struct_field_ptr_index_1 => 1,
34327 .struct_field_ptr_index_2 => 2,
34328 .struct_field_ptr_index_3 => 3,
34329 }) else {
34330 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34331 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34332 try ops[0].toOffset(cg.fieldOffset(
34333 cg.typeOf(ty_op.operand),
34334 ty_op.ty.toType(),
34335 switch (air_tag) {
34336 else => unreachable,
34337 .struct_field_ptr_index_0 => 0,
34338 .struct_field_ptr_index_1 => 1,
34339 .struct_field_ptr_index_2 => 2,
34340 .struct_field_ptr_index_3 => 3,
34341 },
34342 ), cg);
34343 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34344 },
34345 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
34346 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
34347 const extra = cg.air.extraData(Air.StructField, ty_pl.payload).data;
34348 const agg_ty = cg.typeOf(extra.struct_operand);
34349 const field_ty = ty_pl.ty.toType();
34350 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
34351 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(extra.field_index, zcu)),
34352 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
34353 };
34354 var ops = try cg.tempsFromOperands(inst, .{extra.struct_operand});
34355 // hack around Sema OPV bugs
34356 var res = if (field_ty.hasRuntimeBitsIgnoreComptime(zcu))
34357 try ops[0].read(field_ty, .{ .disp = field_off }, cg)
34358 else
34359 try cg.tempInit(field_ty, .none);
34360 try res.finish(inst, &.{extra.struct_operand}, &ops, cg);
34361 },
34362 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
34363 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
34364 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
34365 const union_layout = union_ty.unionGetLayout(zcu);
34366 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
34367 // hack around Sema OPV bugs
34368 if (union_layout.tag_size > 0) try ops[0].store(&ops[1], .{
34369 .disp = @intCast(union_layout.tagOffset()),
34370 }, cg);
34371 const res = try cg.tempInit(.void, .none);
34372 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
34373 },
34374 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
34375 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34376 const union_ty = cg.typeOf(ty_op.operand);
34377 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34378 const union_layout = union_ty.unionGetLayout(zcu);
34379 assert(union_layout.tag_size > 0);
34380 const res = try ops[0].read(ty_op.ty.toType(), .{
34381 .disp = @intCast(union_layout.tagOffset()),
34382 }, cg);
34383 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
34384 },
34385 .slice => if (use_old) try cg.airSlice(inst) else {
34386 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
34387 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
34388 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
34389 try ops[0].toPair(&ops[1], cg);
34390 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
34391 },
34392 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
34393 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34394 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34395 try ops[0].toSliceLen(cg);
34396 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34397 },
34398 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
34399 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34400 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34401 try ops[0].toSlicePtr(cg);
34402 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34403 },
34404 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
34405 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34406 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34407 try ops[0].toOffset(8, cg);
34408 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34409 },
34410 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
34411 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34412 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34413 try ops[0].toOffset(0, cg);
34414 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34415 },
34416 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
34417 else => unreachable,
34418 .slice_elem_val => try cg.airSliceElemVal(inst),
34419 .ptr_elem_val => try cg.airPtrElemVal(inst),
34420 } else {
34421 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
34422 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
34423 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
34424 try ops[0].toSlicePtr(cg);
34425 var res: [1]Temp = undefined;
34426 if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{
34427 .dst_constraints = .{.{ .int = .byte }},
34428 .patterns = &.{
34429 .{ .src = .{ .to_gpr, .simm32 } },
34430 },
34431 .dst_temps = .{.{ .rc = .general_purpose }},
34432 .each = .{ .once = &.{
34433 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
34434 } },
34435 }, .{
34436 .dst_constraints = .{.{ .int = .byte }},
34437 .patterns = &.{
34438 .{ .src = .{ .to_gpr, .to_gpr } },
34439 },
34440 .dst_temps = .{.{ .rc = .general_purpose }},
34441 .each = .{ .once = &.{
34442 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
34443 } },
34444 }, .{
34445 .dst_constraints = .{.{ .int = .word }},
34446 .patterns = &.{
34447 .{ .src = .{ .to_gpr, .simm32 } },
34448 },
34449 .dst_temps = .{.{ .rc = .general_purpose }},
34450 .each = .{ .once = &.{
34451 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
34452 } },
34453 }, .{
34454 .dst_constraints = .{.{ .int = .word }},
34455 .patterns = &.{
34456 .{ .src = .{ .to_gpr, .to_gpr } },
34457 },
34458 .dst_temps = .{.{ .rc = .general_purpose }},
34459 .each = .{ .once = &.{
34460 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
34461 } },
34462 }, .{
34463 .dst_constraints = .{.{ .int = .dword }},
34464 .patterns = &.{
34465 .{ .src = .{ .to_gpr, .simm32 } },
34466 },
34467 .dst_temps = .{.{ .rc = .general_purpose }},
34468 .each = .{ .once = &.{
34469 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
34470 } },
34471 }, .{
34472 .dst_constraints = .{.{ .int = .dword }},
34473 .patterns = &.{
34474 .{ .src = .{ .to_gpr, .to_gpr } },
34475 },
34476 .dst_temps = .{.{ .rc = .general_purpose }},
34477 .each = .{ .once = &.{
34478 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
34479 } },
34480 }, .{
34481 .dst_constraints = .{.{ .int = .qword }},
34482 .patterns = &.{
34483 .{ .src = .{ .to_gpr, .simm32 } },
34484 },
34485 .dst_temps = .{.{ .rc = .general_purpose }},
34486 .each = .{ .once = &.{
34487 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
34488 } },
34489 }, .{
34490 .required_features = .{ .@"64bit", null, null, null },
34491 .dst_constraints = .{.{ .int = .qword }},
34492 .patterns = &.{
34493 .{ .src = .{ .to_gpr, .to_gpr } },
34494 },
34495 .dst_temps = .{.{ .rc = .general_purpose }},
34496 .each = .{ .once = &.{
34497 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
34498 } },
34499 } }) catch |err| switch (err) {
34500 error.SelectFailed => {
34501 const elem_size = res_ty.abiSize(zcu);
34502 while (true) for (&ops) |*op| {
34503 if (try op.toRegClass(true, .general_purpose, cg)) break;
34504 } else break;
34505 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
34506 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
34507 if (!std.math.isPowerOfTwo(elem_size)) {
34508 try cg.spillEflagsIfOccupied();
34509 try cg.asmRegisterRegisterImmediate(
34510 .{ .i_, .mul },
34511 rhs_reg,
34512 rhs_reg,
34513 .u(elem_size),
34514 );
34515 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34516 .base = .{ .reg = lhs_reg },
34517 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
34518 });
34519 } else if (elem_size > 8) {
34520 try cg.spillEflagsIfOccupied();
34521 try cg.asmRegisterImmediate(
34522 .{ ._l, .sh },
34523 rhs_reg,
34524 .u(std.math.log2_int(u64, elem_size)),
34525 );
34526 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34527 .base = .{ .reg = lhs_reg },
34528 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
34529 });
34530 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34531 .base = .{ .reg = lhs_reg },
34532 .mod = .{ .rm = .{
34533 .size = .qword,
34534 .index = rhs_reg,
34535 .scale = .fromFactor(@intCast(elem_size)),
34536 } },
34537 });
34538 res[0] = try ops[0].load(res_ty, .{}, cg);
34539 },
34540 else => |e| return e,
34541 } else {
34542 // hack around Sema OPV bugs
34543 res[0] = try cg.tempInit(res_ty, .none);
34544 }
34545 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
34546 },
34547 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
34548 else => unreachable,
34549 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
34550 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
34551 } else {
34552 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
34553 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
34554 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
34555 try ops[0].toSlicePtr(cg);
34556 const dst_ty = ty_pl.ty.toType();
34557 if (dst_ty.ptrInfo(zcu).flags.vector_index == .none) zero_offset: {
34558 const elem_size = dst_ty.childType(zcu).abiSize(zcu);
34559 // hack around Sema OPV bugs
34560 if (elem_size == 0) break :zero_offset;
34561 while (true) for (&ops) |*op| {
34562 if (try op.toRegClass(true, .general_purpose, cg)) break;
34563 } else break;
34564 const lhs_reg = ops[0].unwrap(cg).temp.tracking(cg).short.register.to64();
34565 const rhs_reg = ops[1].unwrap(cg).temp.tracking(cg).short.register.to64();
34566 if (!std.math.isPowerOfTwo(elem_size)) {
34567 try cg.spillEflagsIfOccupied();
34568 try cg.asmRegisterRegisterImmediate(
34569 .{ .i_, .mul },
34570 rhs_reg,
34571 rhs_reg,
34572 .u(elem_size),
34573 );
34574 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34575 .base = .{ .reg = lhs_reg },
34576 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
34577 });
34578 } else if (elem_size > 8) {
34579 try cg.spillEflagsIfOccupied();
34580 try cg.asmRegisterImmediate(
34581 .{ ._l, .sh },
34582 rhs_reg,
34583 .u(std.math.log2_int(u64, elem_size)),
34584 );
34585 try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34586 .base = .{ .reg = lhs_reg },
34587 .mod = .{ .rm = .{ .size = .qword, .index = rhs_reg } },
34588 });
34589 } else try cg.asmRegisterMemory(.{ ._, .lea }, lhs_reg, .{
34590 .base = .{ .reg = lhs_reg },
34591 .mod = .{ .rm = .{
34592 .size = .qword,
34593 .index = rhs_reg,
34594 .scale = .fromFactor(@intCast(elem_size)),
34595 } },
34596 });
34597 }
34598 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
34599 },
34600 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
34601 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
34602 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
34603 var len = try cg.tempInit(.usize, .{
34604 .immediate = cg.typeOf(ty_op.operand).childType(zcu).arrayLen(zcu),
34605 });
34606 try ops[0].toPair(&len, cg);
34607 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
34608 },
34609 .error_set_has_value => return cg.fail("TODO implement error_set_has_value", .{}),
34610 .union_init => if (use_old) try cg.airUnionInit(inst) else {
34611 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
34612 const extra = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
34613 const union_ty = ty_pl.ty.toType();
34614 var ops = try cg.tempsFromOperands(inst, .{extra.init});
34615 var res = try cg.tempAllocMem(union_ty);
34616 const union_layout = union_ty.unionGetLayout(zcu);
34617 if (union_layout.tag_size > 0) {
34618 var tag_temp = try cg.tempFromValue(try pt.enumValueFieldIndex(
34619 union_ty.unionTagTypeSafety(zcu).?,
34620 extra.field_index,
34621 ));
34622 try res.write(&tag_temp, .{
34623 .disp = @intCast(union_layout.tagOffset()),
34624 }, cg);
34625 try tag_temp.die(cg);
34626 }
34627 try res.write(&ops[0], .{
34628 .disp = @intCast(union_layout.payloadOffset()),
34629 }, cg);
34630 try res.finish(inst, &.{extra.init}, &ops, cg);
47854 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);
3463147855 },
3463247856 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {
3463347857 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
......@@ -39565,7 +52789,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
3956552789 .param_types = &.{ty.toIntern()},
3956652790 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
3956752791 floatLibcAbiPrefix(ty),
39568 switch (mode.mode) {
52792 switch (mode.direction) {
3956952793 .down => "floor",
3957052794 .up => "ceil",
3957152795 .zero => "trunc",
......@@ -42209,7 +55433,7 @@ fn genBinOp(
4220955433 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
4221055434 },
4221155435 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
42212 .mode = switch (air_tag) {
55436 .direction = switch (air_tag) {
4221355437 .div_trunc => .zero,
4221455438 .div_floor => .down,
4221555439 else => unreachable,
......@@ -42667,7 +55891,7 @@ fn genBinOp(
4266755891 dst_reg,
4266855892 dst_reg,
4266955893 bits.RoundMode.imm(.{
42670 .mode = switch (air_tag) {
55894 .direction = switch (air_tag) {
4267155895 .div_trunc => .zero,
4267255896 .div_floor => .down,
4267355897 else => unreachable,
......@@ -43469,7 +56693,7 @@ fn genBinOp(
4346956693 switch (air_tag) {
4347056694 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},
4347156695 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{
43472 .mode = switch (air_tag) {
56696 .direction = switch (air_tag) {
4347356697 .div_trunc => .zero,
4347456698 .div_floor => .down,
4347556699 else => unreachable,
......@@ -51237,10 +64461,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
5123764461 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
5123864462 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);
5123964463 defer self.register_manager.unlockReg(acc_lock);
51240 var limb_offset: i31 = 0;
51241 while (limb_offset < abi_size) : (limb_offset += 8) {
64464 var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8);
64465 const need_mask = mask_len % 64 != 0;
64466 if (need_mask) try self.asmRegisterImmediate(
64467 .{ ._, .mov },
64468 if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(),
64469 .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))),
64470 );
64471 var first = true;
64472 while (true) : (limb_offset -= 8) {
5124264473 try self.asmRegisterMemory(
51243 .{ ._, if (limb_offset == 0) .mov else switch (reduce.operation) {
64474 .{ ._, if (first) if (need_mask) .@"and" else .mov else switch (reduce.operation) {
5124464475 .Or => .@"or",
5124564476 .And => .@"and",
5124664477 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),
......@@ -51251,6 +64482,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
5125164482 .disp = limb_offset,
5125264483 }),
5125364484 );
64485 if (limb_offset == 0) break;
64486 first = false;
5125464487 }
5125564488 switch (reduce.operation) {
5125664489 .Or => {
......@@ -53741,11 +66974,11 @@ const Temp = struct {
5374166974 };
5374266975 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);
5374366976 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
53744 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
66977 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
5374566978 .patterns = &.{
53746 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
53747 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
53748 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
66979 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
66980 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
66981 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5374966982 },
5375066983 .dst_temps = .{.{ .cc = .g }},
5375166984 .clobbers = .{ .eflags = true },
......@@ -53753,12 +66986,12 @@ const Temp = struct {
5375366986 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
5375466987 } },
5375566988 }, .{
53756 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },
66989 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
5375766990 .patterns = &.{
53758 .{ .src = .{ .mem, .imm8 } },
53759 .{ .src = .{ .to_gpr, .imm8 } },
53760 .{ .src = .{ .to_gpr, .mem } },
53761 .{ .src = .{ .to_gpr, .to_gpr } },
66991 .{ .src = .{ .mem, .imm8, .none } },
66992 .{ .src = .{ .to_gpr, .imm8, .none } },
66993 .{ .src = .{ .to_gpr, .mem, .none } },
66994 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5376266995 },
5376366996 .dst_temps = .{.{ .cc = .l }},
5376466997 .clobbers = .{ .eflags = true },
......@@ -53766,11 +66999,11 @@ const Temp = struct {
5376666999 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
5376767000 } },
5376867001 }, .{
53769 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
67002 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
5377067003 .patterns = &.{
53771 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
53772 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
53773 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67004 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
67005 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
67006 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5377467007 },
5377567008 .dst_temps = .{.{ .cc = .a }},
5377667009 .clobbers = .{ .eflags = true },
......@@ -53778,12 +67011,12 @@ const Temp = struct {
5377867011 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
5377967012 } },
5378067013 }, .{
53781 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },
67014 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
5378267015 .patterns = &.{
53783 .{ .src = .{ .mem, .imm8 } },
53784 .{ .src = .{ .to_gpr, .imm8 } },
53785 .{ .src = .{ .to_gpr, .mem } },
53786 .{ .src = .{ .to_gpr, .to_gpr } },
67016 .{ .src = .{ .mem, .imm8, .none } },
67017 .{ .src = .{ .to_gpr, .imm8, .none } },
67018 .{ .src = .{ .to_gpr, .mem, .none } },
67019 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5378767020 },
5378867021 .dst_temps = .{.{ .cc = .b }},
5378967022 .clobbers = .{ .eflags = true },
......@@ -53791,11 +67024,11 @@ const Temp = struct {
5379167024 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
5379267025 } },
5379367026 }, .{
53794 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
67027 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
5379567028 .patterns = &.{
53796 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
53797 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
53798 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67029 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
67030 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
67031 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5379967032 },
5380067033 .dst_temps = .{.{ .cc = .g }},
5380167034 .clobbers = .{ .eflags = true },
......@@ -53803,12 +67036,12 @@ const Temp = struct {
5380367036 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
5380467037 } },
5380567038 }, .{
53806 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },
67039 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
5380767040 .patterns = &.{
53808 .{ .src = .{ .mem, .imm16 } },
53809 .{ .src = .{ .to_gpr, .imm16 } },
53810 .{ .src = .{ .to_gpr, .mem } },
53811 .{ .src = .{ .to_gpr, .to_gpr } },
67041 .{ .src = .{ .mem, .imm16, .none } },
67042 .{ .src = .{ .to_gpr, .imm16, .none } },
67043 .{ .src = .{ .to_gpr, .mem, .none } },
67044 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5381267045 },
5381367046 .dst_temps = .{.{ .cc = .l }},
5381467047 .clobbers = .{ .eflags = true },
......@@ -53816,11 +67049,11 @@ const Temp = struct {
5381667049 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
5381767050 } },
5381867051 }, .{
53819 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
67052 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
5382067053 .patterns = &.{
53821 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
53822 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
53823 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67054 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
67055 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
67056 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5382467057 },
5382567058 .dst_temps = .{.{ .cc = .a }},
5382667059 .clobbers = .{ .eflags = true },
......@@ -53828,12 +67061,12 @@ const Temp = struct {
5382867061 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
5382967062 } },
5383067063 }, .{
53831 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },
67064 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
5383267065 .patterns = &.{
53833 .{ .src = .{ .mem, .imm16 } },
53834 .{ .src = .{ .to_gpr, .imm16 } },
53835 .{ .src = .{ .to_gpr, .mem } },
53836 .{ .src = .{ .to_gpr, .to_gpr } },
67066 .{ .src = .{ .mem, .imm16, .none } },
67067 .{ .src = .{ .to_gpr, .imm16, .none } },
67068 .{ .src = .{ .to_gpr, .mem, .none } },
67069 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5383767070 },
5383867071 .dst_temps = .{.{ .cc = .b }},
5383967072 .clobbers = .{ .eflags = true },
......@@ -53841,11 +67074,11 @@ const Temp = struct {
5384167074 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
5384267075 } },
5384367076 }, .{
53844 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
67077 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
5384567078 .patterns = &.{
53846 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
53847 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
53848 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67079 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
67080 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67081 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5384967082 },
5385067083 .dst_temps = .{.{ .cc = .g }},
5385167084 .clobbers = .{ .eflags = true },
......@@ -53853,12 +67086,12 @@ const Temp = struct {
5385367086 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
5385467087 } },
5385567088 }, .{
53856 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },
67089 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
5385767090 .patterns = &.{
53858 .{ .src = .{ .mem, .imm32 } },
53859 .{ .src = .{ .to_gpr, .imm32 } },
53860 .{ .src = .{ .to_gpr, .mem } },
53861 .{ .src = .{ .to_gpr, .to_gpr } },
67091 .{ .src = .{ .mem, .imm32, .none } },
67092 .{ .src = .{ .to_gpr, .imm32, .none } },
67093 .{ .src = .{ .to_gpr, .mem, .none } },
67094 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5386267095 },
5386367096 .dst_temps = .{.{ .cc = .l }},
5386467097 .clobbers = .{ .eflags = true },
......@@ -53866,11 +67099,11 @@ const Temp = struct {
5386667099 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
5386767100 } },
5386867101 }, .{
53869 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
67102 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
5387067103 .patterns = &.{
53871 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
53872 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
53873 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67104 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
67105 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67106 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5387467107 },
5387567108 .dst_temps = .{.{ .cc = .a }},
5387667109 .clobbers = .{ .eflags = true },
......@@ -53878,12 +67111,12 @@ const Temp = struct {
5387867111 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
5387967112 } },
5388067113 }, .{
53881 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },
67114 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
5388267115 .patterns = &.{
53883 .{ .src = .{ .mem, .imm32 } },
53884 .{ .src = .{ .to_gpr, .imm32 } },
53885 .{ .src = .{ .to_gpr, .mem } },
53886 .{ .src = .{ .to_gpr, .to_gpr } },
67116 .{ .src = .{ .mem, .imm32, .none } },
67117 .{ .src = .{ .to_gpr, .imm32, .none } },
67118 .{ .src = .{ .to_gpr, .mem, .none } },
67119 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5388767120 },
5388867121 .dst_temps = .{.{ .cc = .b }},
5388967122 .clobbers = .{ .eflags = true },
......@@ -53892,11 +67125,11 @@ const Temp = struct {
5389267125 } },
5389367126 }, .{
5389467127 .required_features = .{ .@"64bit", null, null, null },
53895 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
67128 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
5389667129 .patterns = &.{
53897 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
53898 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
53899 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67130 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
67131 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67132 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5390067133 },
5390167134 .dst_temps = .{.{ .cc = .g }},
5390267135 .clobbers = .{ .eflags = true },
......@@ -53905,12 +67138,12 @@ const Temp = struct {
5390567138 } },
5390667139 }, .{
5390767140 .required_features = .{ .@"64bit", null, null, null },
53908 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },
67141 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
5390967142 .patterns = &.{
53910 .{ .src = .{ .mem, .simm32 } },
53911 .{ .src = .{ .to_gpr, .simm32 } },
53912 .{ .src = .{ .to_gpr, .mem } },
53913 .{ .src = .{ .to_gpr, .to_gpr } },
67143 .{ .src = .{ .mem, .simm32, .none } },
67144 .{ .src = .{ .to_gpr, .simm32, .none } },
67145 .{ .src = .{ .to_gpr, .mem, .none } },
67146 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5391467147 },
5391567148 .dst_temps = .{.{ .cc = .l }},
5391667149 .clobbers = .{ .eflags = true },
......@@ -53919,11 +67152,11 @@ const Temp = struct {
5391967152 } },
5392067153 }, .{
5392167154 .required_features = .{ .@"64bit", null, null, null },
53922 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
67155 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
5392367156 .patterns = &.{
53924 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
53925 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
53926 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
67157 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
67158 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67159 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
5392767160 },
5392867161 .dst_temps = .{.{ .cc = .a }},
5392967162 .clobbers = .{ .eflags = true },
......@@ -53932,12 +67165,12 @@ const Temp = struct {
5393267165 } },
5393367166 }, .{
5393467167 .required_features = .{ .@"64bit", null, null, null },
53935 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },
67168 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
5393667169 .patterns = &.{
53937 .{ .src = .{ .mem, .simm32 } },
53938 .{ .src = .{ .to_gpr, .simm32 } },
53939 .{ .src = .{ .to_gpr, .mem } },
53940 .{ .src = .{ .to_gpr, .to_gpr } },
67170 .{ .src = .{ .mem, .simm32, .none } },
67171 .{ .src = .{ .to_gpr, .simm32, .none } },
67172 .{ .src = .{ .to_gpr, .mem, .none } },
67173 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5394167174 },
5394267175 .dst_temps = .{.{ .cc = .b }},
5394367176 .clobbers = .{ .eflags = true },
......@@ -53949,9 +67182,10 @@ const Temp = struct {
5394967182 .src_constraints = .{
5395067183 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
5395167184 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
67185 .any,
5395267186 },
5395367187 .patterns = &.{
53954 .{ .src = .{ .to_mem, .to_mem } },
67188 .{ .src = .{ .to_mem, .to_mem, .none } },
5395567189 },
5395667190 .extra_temps = .{
5395767191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -53981,9 +67215,10 @@ const Temp = struct {
5398167215 .src_constraints = .{
5398267216 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
5398367217 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
67218 .any,
5398467219 },
5398567220 .patterns = &.{
53986 .{ .src = .{ .to_mem, .to_mem } },
67221 .{ .src = .{ .to_mem, .to_mem, .none } },
5398767222 },
5398867223 .extra_temps = .{
5398967224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54010,9 +67245,10 @@ const Temp = struct {
5401067245 .src_constraints = .{
5401167246 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
5401267247 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
67248 .any,
5401367249 },
5401467250 .patterns = &.{
54015 .{ .src = .{ .to_mem, .to_mem } },
67251 .{ .src = .{ .to_mem, .to_mem, .none } },
5401667252 },
5401767253 .extra_temps = .{
5401867254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54041,9 +67277,10 @@ const Temp = struct {
5404167277 .src_constraints = .{
5404267278 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
5404367279 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
67280 .any,
5404467281 },
5404567282 .patterns = &.{
54046 .{ .src = .{ .to_mem, .to_mem } },
67283 .{ .src = .{ .to_mem, .to_mem, .none } },
5404767284 },
5404867285 .extra_temps = .{
5404967286 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54071,15 +67308,15 @@ const Temp = struct {
5407167308 },
5407267309 .eq, .neq => {
5407367310 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
54074 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } },
67311 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any },
5407567312 .patterns = &.{
54076 .{ .src = .{ .mem, .imm8 } },
54077 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },
54078 .{ .src = .{ .to_gpr, .imm8 } },
54079 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },
54080 .{ .src = .{ .to_gpr, .mem } },
54081 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
54082 .{ .src = .{ .to_gpr, .to_gpr } },
67313 .{ .src = .{ .mem, .imm8, .none } },
67314 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
67315 .{ .src = .{ .to_gpr, .imm8, .none } },
67316 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
67317 .{ .src = .{ .to_gpr, .mem, .none } },
67318 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
67319 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5408367320 },
5408467321 .dst_temps = .{.{ .cc = .e }},
5408567322 .clobbers = .{ .eflags = true },
......@@ -54087,15 +67324,15 @@ const Temp = struct {
5408767324 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
5408867325 } },
5408967326 }, .{
54090 .src_constraints = .{ .{ .int = .word }, .{ .int = .word } },
67327 .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any },
5409167328 .patterns = &.{
54092 .{ .src = .{ .mem, .imm16 } },
54093 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },
54094 .{ .src = .{ .to_gpr, .imm16 } },
54095 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },
54096 .{ .src = .{ .to_gpr, .mem } },
54097 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
54098 .{ .src = .{ .to_gpr, .to_gpr } },
67329 .{ .src = .{ .mem, .imm16, .none } },
67330 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
67331 .{ .src = .{ .to_gpr, .imm16, .none } },
67332 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
67333 .{ .src = .{ .to_gpr, .mem, .none } },
67334 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
67335 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5409967336 },
5410067337 .dst_temps = .{.{ .cc = .e }},
5410167338 .clobbers = .{ .eflags = true },
......@@ -54103,15 +67340,15 @@ const Temp = struct {
5410367340 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
5410467341 } },
5410567342 }, .{
54106 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } },
67343 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any },
5410767344 .patterns = &.{
54108 .{ .src = .{ .mem, .imm32 } },
54109 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },
54110 .{ .src = .{ .to_gpr, .imm32 } },
54111 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },
54112 .{ .src = .{ .to_gpr, .mem } },
54113 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
54114 .{ .src = .{ .to_gpr, .to_gpr } },
67345 .{ .src = .{ .mem, .imm32, .none } },
67346 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
67347 .{ .src = .{ .to_gpr, .imm32, .none } },
67348 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67349 .{ .src = .{ .to_gpr, .mem, .none } },
67350 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
67351 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5411567352 },
5411667353 .dst_temps = .{.{ .cc = .e }},
5411767354 .clobbers = .{ .eflags = true },
......@@ -54120,15 +67357,15 @@ const Temp = struct {
5412067357 } },
5412167358 }, .{
5412267359 .required_features = .{ .@"64bit", null, null, null },
54123 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },
67360 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
5412467361 .patterns = &.{
54125 .{ .src = .{ .mem, .simm32 } },
54126 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },
54127 .{ .src = .{ .to_gpr, .simm32 } },
54128 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },
54129 .{ .src = .{ .to_gpr, .mem } },
54130 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },
54131 .{ .src = .{ .to_gpr, .to_gpr } },
67362 .{ .src = .{ .mem, .simm32, .none } },
67363 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
67364 .{ .src = .{ .to_gpr, .simm32, .none } },
67365 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
67366 .{ .src = .{ .to_gpr, .mem, .none } },
67367 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
67368 .{ .src = .{ .to_gpr, .to_gpr, .none } },
5413267369 },
5413367370 .dst_temps = .{.{ .cc = .e }},
5413467371 .clobbers = .{ .eflags = true },
......@@ -54137,11 +67374,11 @@ const Temp = struct {
5413767374 } },
5413867375 }, .{
5413967376 .required_features = .{ .sse, .mmx, null, null },
54140 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },
67377 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
5414167378 .patterns = &.{
54142 .{ .src = .{ .to_mut_mm, .mem } },
54143 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },
54144 .{ .src = .{ .to_mut_mm, .to_mm } },
67379 .{ .src = .{ .to_mut_mm, .mem, .none } },
67380 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
67381 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
5414567382 },
5414667383 .extra_temps = .{
5414767384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -54165,11 +67402,11 @@ const Temp = struct {
5416567402 } },
5416667403 }, .{
5416767404 .required_features = .{ .avx, null, null, null },
54168 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
67405 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
5416967406 .patterns = &.{
54170 .{ .src = .{ .to_xmm, .mem } },
54171 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },
54172 .{ .src = .{ .to_xmm, .to_xmm } },
67407 .{ .src = .{ .to_xmm, .mem, .none } },
67408 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
67409 .{ .src = .{ .to_xmm, .to_xmm, .none } },
5417367410 },
5417467411 .extra_temps = .{
5417567412 .{ .kind = .{ .rc = .sse } },
......@@ -54190,11 +67427,11 @@ const Temp = struct {
5419067427 } },
5419167428 }, .{
5419267429 .required_features = .{ .sse4_1, null, null, null },
54193 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
67430 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
5419467431 .patterns = &.{
54195 .{ .src = .{ .to_mut_xmm, .mem } },
54196 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
54197 .{ .src = .{ .to_mut_xmm, .to_xmm } },
67432 .{ .src = .{ .to_mut_xmm, .mem, .none } },
67433 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
67434 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
5419867435 },
5419967436 .dst_temps = .{.{ .cc = .z }},
5420067437 .clobbers = .{ .eflags = true },
......@@ -54204,11 +67441,11 @@ const Temp = struct {
5420467441 } },
5420567442 }, .{
5420667443 .required_features = .{ .sse2, .fast_imm16, null, null },
54207 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
67444 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
5420867445 .patterns = &.{
54209 .{ .src = .{ .to_mut_xmm, .mem } },
54210 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
54211 .{ .src = .{ .to_mut_xmm, .to_xmm } },
67446 .{ .src = .{ .to_mut_xmm, .mem, .none } },
67447 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
67448 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
5421267449 },
5421367450 .extra_temps = .{
5421467451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -54232,11 +67469,11 @@ const Temp = struct {
5423267469 } },
5423367470 }, .{
5423467471 .required_features = .{ .sse2, null, null, null },
54235 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },
67472 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
5423667473 .patterns = &.{
54237 .{ .src = .{ .to_mut_xmm, .mem } },
54238 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },
54239 .{ .src = .{ .to_mut_xmm, .to_xmm } },
67474 .{ .src = .{ .to_mut_xmm, .mem, .none } },
67475 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
67476 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
5424067477 },
5424167478 .extra_temps = .{
5424267479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -54260,11 +67497,11 @@ const Temp = struct {
5426067497 } },
5426167498 }, .{
5426267499 .required_features = .{ .avx2, null, null, null },
54263 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },
67500 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
5426467501 .patterns = &.{
54265 .{ .src = .{ .to_ymm, .mem } },
54266 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
54267 .{ .src = .{ .to_ymm, .to_ymm } },
67502 .{ .src = .{ .to_ymm, .mem, .none } },
67503 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
67504 .{ .src = .{ .to_ymm, .to_ymm, .none } },
5426867505 },
5426967506 .extra_temps = .{
5427067507 .{ .kind = .{ .rc = .sse } },
......@@ -54285,11 +67522,11 @@ const Temp = struct {
5428567522 } },
5428667523 }, .{
5428767524 .required_features = .{ .avx, null, null, null },
54288 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },
67525 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
5428967526 .patterns = &.{
54290 .{ .src = .{ .to_ymm, .mem } },
54291 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },
54292 .{ .src = .{ .to_ymm, .to_ymm } },
67527 .{ .src = .{ .to_ymm, .mem, .none } },
67528 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
67529 .{ .src = .{ .to_ymm, .to_ymm, .none } },
5429367530 },
5429467531 .extra_temps = .{
5429567532 .{ .kind = .{ .rc = .sse } },
......@@ -54313,9 +67550,10 @@ const Temp = struct {
5431367550 .src_constraints = .{
5431467551 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
5431567552 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
67553 .any,
5431667554 },
5431767555 .patterns = &.{
54318 .{ .src = .{ .to_mem, .to_mem } },
67556 .{ .src = .{ .to_mem, .to_mem, .none } },
5431967557 },
5432067558 .extra_temps = .{
5432167559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54347,9 +67585,10 @@ const Temp = struct {
5434767585 .src_constraints = .{
5434867586 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
5434967587 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
67588 .any,
5435067589 },
5435167590 .patterns = &.{
54352 .{ .src = .{ .to_mem, .to_mem } },
67591 .{ .src = .{ .to_mem, .to_mem, .none } },
5435367592 },
5435467593 .extra_temps = .{
5435567594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54381,9 +67620,10 @@ const Temp = struct {
5438167620 .src_constraints = .{
5438267621 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
5438367622 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
67623 .any,
5438467624 },
5438567625 .patterns = &.{
54386 .{ .src = .{ .to_mem, .to_mem } },
67626 .{ .src = .{ .to_mem, .to_mem, .none } },
5438767627 },
5438867628 .extra_temps = .{
5438967629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54412,9 +67652,10 @@ const Temp = struct {
5441267652 .src_constraints = .{
5441367653 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
5441467654 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
67655 .any,
5441567656 },
5441667657 .patterns = &.{
54417 .{ .src = .{ .to_mem, .to_mem } },
67658 .{ .src = .{ .to_mem, .to_mem, .none } },
5441867659 },
5441967660 .extra_temps = .{
5442067661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54443,9 +67684,10 @@ const Temp = struct {
5444367684 .src_constraints = .{
5444467685 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
5444567686 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67687 .any,
5444667688 },
5444767689 .patterns = &.{
54448 .{ .src = .{ .to_mem, .to_mem } },
67690 .{ .src = .{ .to_mem, .to_mem, .none } },
5444967691 },
5445067692 .extra_temps = .{
5445167693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54474,9 +67716,10 @@ const Temp = struct {
5447467716 .src_constraints = .{
5447567717 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
5447667718 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67719 .any,
5447767720 },
5447867721 .patterns = &.{
54479 .{ .src = .{ .to_mem, .to_mem } },
67722 .{ .src = .{ .to_mem, .to_mem, .none } },
5448067723 },
5448167724 .extra_temps = .{
5448267725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54505,9 +67748,10 @@ const Temp = struct {
5450567748 .src_constraints = .{
5450667749 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
5450767750 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67751 .any,
5450867752 },
5450967753 .patterns = &.{
54510 .{ .src = .{ .to_mem, .to_mem } },
67754 .{ .src = .{ .to_mem, .to_mem, .none } },
5451167755 },
5451267756 .extra_temps = .{
5451367757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54537,9 +67781,10 @@ const Temp = struct {
5453767781 .src_constraints = .{
5453867782 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
5453967783 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67784 .any,
5454067785 },
5454167786 .patterns = &.{
54542 .{ .src = .{ .to_mem, .to_mem } },
67787 .{ .src = .{ .to_mem, .to_mem, .none } },
5454367788 },
5454467789 .extra_temps = .{
5454567790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54569,9 +67814,10 @@ const Temp = struct {
5456967814 .src_constraints = .{
5457067815 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
5457167816 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
67817 .any,
5457267818 },
5457367819 .patterns = &.{
54574 .{ .src = .{ .to_mem, .to_mem } },
67820 .{ .src = .{ .to_mem, .to_mem, .none } },
5457567821 },
5457667822 .extra_temps = .{
5457767823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54601,9 +67847,10 @@ const Temp = struct {
5460167847 .src_constraints = .{
5460267848 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
5460367849 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
67850 .any,
5460467851 },
5460567852 .patterns = &.{
54606 .{ .src = .{ .to_mem, .to_mem } },
67853 .{ .src = .{ .to_mem, .to_mem, .none } },
5460767854 },
5460867855 .extra_temps = .{
5460967856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -54630,9 +67877,10 @@ const Temp = struct {
5463067877 .src_constraints = .{
5463167878 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
5463267879 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
67880 .any,
5463367881 },
5463467882 .patterns = &.{
54635 .{ .src = .{ .to_mem, .to_mem } },
67883 .{ .src = .{ .to_mem, .to_mem, .none } },
5463667884 },
5463767885 .extra_temps = .{
5463867886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
......@@ -55344,7 +68592,7 @@ const Select = struct {
5534468592 };
5534568593
5534668594 const Pattern = struct {
55347 src: [2]Src,
68595 src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src,
5534868596 commute: struct { u8, u8 } = .{ 0, 0 },
5534968597
5535068598 const Src = union(enum) {
......@@ -55781,6 +69029,7 @@ const Select = struct {
5578169029 dst0,
5578269030 src0,
5578369031 src1,
69032 src2,
5578469033 none,
5578569034
5578669035 const Sized = packed struct(u8) {
......@@ -55920,6 +69169,17 @@ const Select = struct {
5592069169 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };
5592169170 const src1x: Sized = .{ .ref = .src1, .size = .xword };
5592269171 const src1y: Sized = .{ .ref = .src1, .size = .yword };
69172
69173 const src2: Sized = .{ .ref = .src2, .size = .none };
69174 const src2b: Sized = .{ .ref = .src2, .size = .byte };
69175 const src2w: Sized = .{ .ref = .src2, .size = .word };
69176 const src2d: Sized = .{ .ref = .src2, .size = .dword };
69177 const src2p: Sized = .{ .ref = .src2, .size = .ptr };
69178 const src2g: Sized = .{ .ref = .src2, .size = .gpr };
69179 const src2q: Sized = .{ .ref = .src2, .size = .qword };
69180 const src2t: Sized = .{ .ref = .src2, .size = .tbyte };
69181 const src2x: Sized = .{ .ref = .src2, .size = .xword };
69182 const src2y: Sized = .{ .ref = .src2, .size = .yword };
5592369183 };
5592469184
5592569185 fn typeOf(ref: Ref, s: *const Select) Type {
......@@ -56064,6 +69324,16 @@ const Select = struct {
5606469324 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
5606569325 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };
5606669326
69327 const src2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2b };
69328 const src2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2w };
69329 const src2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2d };
69330 const src2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2p };
69331 const src2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2g };
69332 const src2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2q };
69333 const src2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2t };
69334 const src2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2x };
69335 const src2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2y };
69336
5606769337 fn si(imm: i32) Select.Operand {
5606869338 return .{ .flags = .{ .tag = .simm }, .imm = imm };
5606969339 }
src/arch/x86_64/bits.zig+8-6
......@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {
177177
178178/// The immediate operand of vcvtps2ph.
179179pub const RoundMode = packed struct(u5) {
180 mode: enum(u4) {
180 direction: Direction = .mxcsr,
181 precision: enum(u1) {
182 normal = 0b0,
183 inexact = 0b1,
184 } = .normal,
185
186 pub const Direction = enum(u4) {
181187 /// Round to nearest (even)
182188 nearest = 0b0_00,
183189 /// Round down (toward -∞)
......@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {
188194 zero = 0b0_11,
189195 /// Use current rounding mode of MXCSR.RC
190196 mxcsr = 0b1_00,
191 } = .mxcsr,
192 precision: enum(u1) {
193 normal = 0b0,
194 inexact = 0b1,
195 } = .normal,
197 };
196198
197199 pub fn imm(mode: RoundMode) Immediate {
198200 return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode)));
src/arch/x86_64/encodings.zig+1-1
......@@ -19,7 +19,7 @@ pub const table = [_]Entry{
1919 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },
2020
2121 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
22 .{ .aam, .z, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
22 .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
2323
2424 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },
2525
test/behavior/floatop.zig+18-15
......@@ -156,7 +156,13 @@ test "cmp f128" {
156156}
157157
158158test "cmp f80/c_longdouble" {
159 if (true) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
160166
161167 try testCmp(f80);
162168 try comptime testCmp(f80);
......@@ -453,7 +459,7 @@ test "@sin with vectors" {
453459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
462 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
457463 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
458464
459465 try testSinWithVectors();
......@@ -526,7 +532,7 @@ test "@cos with vectors" {
526532 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
527533 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
535 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
530536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531537
532538 try testCosWithVectors();
......@@ -600,7 +606,7 @@ test "@tan with vectors" {
600606 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
601607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
603 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
609 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
604610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
605611
606612 try testTanWithVectors();
......@@ -677,7 +683,7 @@ test "@exp with vectors" {
677683 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
678684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
679685 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
680 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
686 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
681687 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
682688
683689 try testExpWithVectors();
......@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {
749755 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
750756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
758 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
753759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
754760
755761 try testExp2WithVectors();
......@@ -822,7 +828,7 @@ test "@log with @vectors" {
822828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
823829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824830 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
825 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
831 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
826832 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
827833
828834 {
......@@ -896,7 +902,7 @@ test "@log2 with vectors" {
896902 if (builtin.zig_backend == .stage2_llvm and
897903 builtin.cpu.arch == .aarch64 and
898904 builtin.os.tag == .windows) return error.SkipZigTest;
899 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
905 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
900906
901907 try testLog2WithVectors();
902908 try comptime testLog2WithVectors();
......@@ -967,7 +973,7 @@ test "@log10 with vectors" {
967973 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
968974 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
969975 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
970 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
976 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
971977 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
972978
973979 try testLog10WithVectors();
......@@ -1188,8 +1194,7 @@ test "@floor with vectors" {
11881194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11891195 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11901196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1191 if (builtin.zig_backend == .stage2_x86_64 and
1192 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1197 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
11931198
11941199 try testFloorWithVectors();
11951200 try comptime testFloorWithVectors();
......@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {
12861291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12871292 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12881293 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1289 if (builtin.zig_backend == .stage2_x86_64 and
1290 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1294 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
12911295
12921296 try testCeilWithVectors();
12931297 try comptime testCeilWithVectors();
......@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {
13841388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13851389 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13861390 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_x86_64 and
1388 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
1391 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13891392
13901393 try testTruncWithVectors();
13911394 try comptime testTruncWithVectors();
test/behavior/muladd.zig+9-13
......@@ -2,16 +2,12 @@ const std = @import("std");
22const builtin = @import("builtin");
33const expect = std.testing.expect;
44
5const no_x86_64_hardware_fma_support = builtin.zig_backend == .stage2_x86_64 and
6 !std.Target.x86.featureSetHas(builtin.cpu.features, .fma);
7
85test "@mulAdd" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1511
1612 try comptime testMulAdd();
1713 try testMulAdd();
......@@ -110,10 +106,10 @@ fn vector16() !void {
110106
111107test "vector f16" {
112108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
114109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
117113 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118114
119115 try comptime vector16();
......@@ -135,11 +131,11 @@ fn vector32() !void {
135131
136132test "vector f32" {
137133 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
139 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
140134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
138 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
143139
144140 try comptime vector32();
145141 try vector32();
......@@ -160,11 +156,11 @@ fn vector64() !void {
160156
161157test "vector f64" {
162158 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
164 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
165159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168164
169165 try comptime vector64();
170166 try vector64();
......@@ -184,12 +180,12 @@ fn vector80() !void {
184180
185181test "vector f80" {
186182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
190185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
192187 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
193189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
194190
195191 try comptime vector80();
......@@ -211,12 +207,12 @@ fn vector128() !void {
211207
212208test "vector f128" {
213209 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
217212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219214 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
220216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
221217
222218 try comptime vector128();
test/behavior/vector.zig+1-1
......@@ -102,7 +102,7 @@ test "vector float operators" {
102102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104104 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
106106
107107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
108108 // Triggers an assertion with LLVM 18:
test/behavior/x86_64/math.zig+346-72
......@@ -37,6 +37,14 @@ inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
3737 .vector => @splat(scalar),
3838 };
3939}
40// inline to avoid a runtime `@select`
41inline fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
42 return switch (@typeInfo(@TypeOf(cond))) {
43 .bool => if (cond) lhs else rhs,
44 .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs),
45 else => @compileError(@typeName(@TypeOf(cond))),
46 };
47}
4048fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
4149 else => bool,
4250 .vector => |vector| @Vector(vector.len, bool),
......@@ -84,65 +92,78 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
8492 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));
8593}
8694
95const Compare = enum { strict, relaxed, approx, approx_int };
8796// noinline for a more helpful stack trace
88noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime strict: bool) !void {
89 const info = @typeInfo(@TypeOf(expected));
90 const unexpected = unexpected: switch (switch (info) {
91 else => info,
92 .vector => |vector| @typeInfo(vector.child),
93 }) {
97noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime compare: Compare) !void {
98 const Expected = @TypeOf(expected);
99 const unexpected = unexpected: switch (@typeInfo(Scalar(Expected))) {
94100 else => expected != actual,
95 .float => {
96 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
97 break :unexpected switch (strict) {
98 false => unequal,
99 true => boolOr(unequal, sign(expected) != sign(actual)),
100 };
101 .float => switch (compare) {
102 .strict, .relaxed => {
103 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
104 break :unexpected switch (compare) {
105 .strict => boolOr(unequal, sign(expected) != sign(actual)),
106 .relaxed => unequal,
107 .approx, .approx_int => comptime unreachable,
108 };
109 },
110 .approx, .approx_int => {
111 const epsilon = math.floatEps(Scalar(Expected));
112 const tolerance = @sqrt(epsilon);
113 break :unexpected @abs(expected - actual) > @max(
114 @abs(expected) * splat(Expected, tolerance),
115 splat(Expected, switch (compare) {
116 .strict, .relaxed => comptime unreachable,
117 .approx => tolerance,
118 .approx_int => 1,
119 }),
120 );
121 },
101122 },
102123 };
103 if (switch (info) {
124 if (switch (@typeInfo(Expected)) {
104125 else => unexpected,
105126 .vector => @reduce(.Or, unexpected),
106127 }) return error.Unexpected;
107128}
108129test checkExpected {
109 if (checkExpected(nan(f16), nan(f16), true) == error.Unexpected) return error.Unexpected;
110 if (checkExpected(nan(f16), -nan(f16), true) != error.Unexpected) return error.Unexpected;
111 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), true) == error.Unexpected) return error.Unexpected;
112 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), true) == error.Unexpected) return error.Unexpected;
113 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), true) != error.Unexpected) return error.Unexpected;
114 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), true) != error.Unexpected) return error.Unexpected;
115
116 if (checkExpected(nan(f32), nan(f32), true) == error.Unexpected) return error.Unexpected;
117 if (checkExpected(nan(f32), -nan(f32), true) != error.Unexpected) return error.Unexpected;
118 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), true) == error.Unexpected) return error.Unexpected;
119 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), true) == error.Unexpected) return error.Unexpected;
120 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), true) != error.Unexpected) return error.Unexpected;
121 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), true) != error.Unexpected) return error.Unexpected;
122
123 if (checkExpected(nan(f64), nan(f64), true) == error.Unexpected) return error.Unexpected;
124 if (checkExpected(nan(f64), -nan(f64), true) != error.Unexpected) return error.Unexpected;
125 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), true) == error.Unexpected) return error.Unexpected;
126 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), true) == error.Unexpected) return error.Unexpected;
127 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), true) != error.Unexpected) return error.Unexpected;
128 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), true) != error.Unexpected) return error.Unexpected;
129
130 if (checkExpected(nan(f80), nan(f80), true) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f80), -nan(f80), true) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), true) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), true) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), true) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), true) != error.Unexpected) return error.Unexpected;
136
137 if (checkExpected(nan(f128), nan(f128), true) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f128), -nan(f128), true) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), true) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), true) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), true) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), true) != error.Unexpected) return error.Unexpected;
130 if (checkExpected(nan(f16), nan(f16), .strict) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f16), -nan(f16), .strict) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), .strict) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), .strict) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), .strict) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), .strict) != error.Unexpected) return error.Unexpected;
136
137 if (checkExpected(nan(f32), nan(f32), .strict) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f32), -nan(f32), .strict) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), .strict) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), .strict) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), .strict) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143
144 if (checkExpected(nan(f64), nan(f64), .strict) == error.Unexpected) return error.Unexpected;
145 if (checkExpected(nan(f64), -nan(f64), .strict) != error.Unexpected) return error.Unexpected;
146 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), .strict) == error.Unexpected) return error.Unexpected;
147 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), .strict) == error.Unexpected) return error.Unexpected;
148 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), .strict) != error.Unexpected) return error.Unexpected;
149 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), .strict) != error.Unexpected) return error.Unexpected;
150
151 if (checkExpected(nan(f80), nan(f80), .strict) == error.Unexpected) return error.Unexpected;
152 if (checkExpected(nan(f80), -nan(f80), .strict) != error.Unexpected) return error.Unexpected;
153 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), .strict) == error.Unexpected) return error.Unexpected;
154 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), .strict) == error.Unexpected) return error.Unexpected;
155 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), .strict) != error.Unexpected) return error.Unexpected;
156 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), .strict) != error.Unexpected) return error.Unexpected;
157
158 if (checkExpected(nan(f128), nan(f128), .strict) == error.Unexpected) return error.Unexpected;
159 if (checkExpected(nan(f128), -nan(f128), .strict) != error.Unexpected) return error.Unexpected;
160 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), .strict) == error.Unexpected) return error.Unexpected;
161 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), .strict) == error.Unexpected) return error.Unexpected;
162 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), .strict) != error.Unexpected) return error.Unexpected;
163 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143164}
144165
145fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
166fn unary(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type {
146167 return struct {
147168 // noinline so that `mem_arg` is on the stack
148169 noinline fn testArgKinds(
......@@ -169,9 +190,9 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
169190 const expected = comptime op(Type, imm_arg);
170191 var reg_arg = mem_arg;
171192 _ = .{&reg_arg};
172 try checkExpected(expected, op(Type, reg_arg), opts.strict);
173 try checkExpected(expected, op(Type, mem_arg), opts.strict);
174 try checkExpected(expected, op(Type, imm_arg), opts.strict);
193 try checkExpected(expected, op(Type, reg_arg), opts.compare);
194 try checkExpected(expected, op(Type, mem_arg), opts.compare);
195 try checkExpected(expected, op(Type, imm_arg), opts.compare);
175196 }
176197 // noinline for a more helpful stack trace
177198 noinline fn testArgs(comptime Type: type, comptime imm_arg: Type) !void {
......@@ -1628,7 +1649,7 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
16281649 };
16291650}
16301651
1631fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
1652fn cast(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type {
16321653 return struct {
16331654 // noinline so that `mem_arg` is on the stack
16341655 noinline fn testArgKinds(
......@@ -1656,9 +1677,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
16561677 const expected = comptime op(Result, Type, imm_arg, imm_arg);
16571678 var reg_arg = mem_arg;
16581679 _ = .{&reg_arg};
1659 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict);
1660 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict);
1661 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict);
1680 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.compare);
1681 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.compare);
1682 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.compare);
16621683 }
16631684 // noinline for a more helpful stack trace
16641685 noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {
......@@ -8504,7 +8525,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
85048525 };
85058526}
85068527
8507fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
8528fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type {
85088529 return struct {
85098530 // noinline so that `mem_lhs` and `mem_rhs` are on the stack
85108531 noinline fn testArgKinds(
......@@ -8534,14 +8555,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
85348555 var reg_lhs = mem_lhs;
85358556 var reg_rhs = mem_rhs;
85368557 _ = .{ &reg_lhs, &reg_rhs };
8537 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.strict);
8538 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.strict);
8539 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.strict);
8540 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.strict);
8541 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.strict);
8542 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.strict);
8543 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.strict);
8544 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.strict);
8558 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.compare);
8559 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.compare);
8560 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.compare);
8561 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.compare);
8562 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.compare);
8563 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.compare);
8564 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.compare);
8565 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.compare);
85458566 }
85468567 // noinline for a more helpful stack trace
85478568 noinline fn testArgs(comptime Type: type, comptime imm_lhs: Type, comptime imm_rhs: Type) !void {
......@@ -11315,6 +11336,124 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1131511336 };
1131611337}
1131711338
11339inline fn add(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs + rhs) {
11340 return lhs + rhs;
11341}
11342test add {
11343 const test_add = binary(add, .{});
11344 try test_add.testFloats();
11345 try test_add.testFloatVectors();
11346}
11347
11348inline fn subtract(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs - rhs) {
11349 return lhs - rhs;
11350}
11351test subtract {
11352 const test_subtract = binary(subtract, .{});
11353 try test_subtract.testFloats();
11354 try test_subtract.testFloatVectors();
11355}
11356
11357inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {
11358 if (@inComptime() and @typeInfo(Type) == .vector) {
11359 // workaround https://github.com/ziglang/zig/issues/22743
11360 // TODO: return @select(Scalar(Type), boolAnd(lhs == lhs, rhs == rhs), lhs * rhs, lhs + rhs);
11361 // workaround https://github.com/ziglang/zig/issues/22744
11362 var res: Type = undefined;
11363 for (0..@typeInfo(Type).vector.len) |i| res[i] = lhs[i] * rhs[i];
11364 return res;
11365 }
11366 // workaround https://github.com/ziglang/zig/issues/22745
11367 // TODO: return lhs * rhs;
11368 var rt_lhs = lhs;
11369 var rt_rhs = rhs;
11370 _ = .{ &rt_lhs, &rt_rhs };
11371 return rt_lhs * rt_rhs;
11372}
11373test multiply {
11374 const test_multiply = binary(multiply, .{});
11375 try test_multiply.testFloats();
11376 try test_multiply.testFloatVectors();
11377}
11378
11379inline fn divide(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11380 return lhs / rhs;
11381}
11382test divide {
11383 const test_divide = binary(divide, .{ .compare = .approx });
11384 try test_divide.testFloats();
11385 try test_divide.testFloatVectors();
11386}
11387
11388// workaround https://github.com/ziglang/zig/issues/22748
11389// TODO: @TypeOf(@divTrunc(lhs, rhs))
11390inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11391 if (@inComptime()) {
11392 // workaround https://github.com/ziglang/zig/issues/22748
11393 return @trunc(lhs / rhs);
11394 }
11395 // workaround https://github.com/ziglang/zig/issues/22748
11396 // workaround https://github.com/ziglang/zig/issues/22749
11397 // TODO: return @divTrunc(lhs, rhs);
11398 var rt_lhs = lhs;
11399 var rt_rhs = rhs;
11400 _ = .{ &rt_lhs, &rt_rhs };
11401 return @divTrunc(rt_lhs, rt_rhs);
11402}
11403test divTrunc {
11404 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });
11405 try test_div_trunc.testFloats();
11406 try test_div_trunc.testFloatVectors();
11407}
11408
11409// workaround https://github.com/ziglang/zig/issues/22748
11410// TODO: @TypeOf(@divFloor(lhs, rhs))
11411inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
11412 if (@inComptime()) {
11413 // workaround https://github.com/ziglang/zig/issues/22748
11414 return @floor(lhs / rhs);
11415 }
11416 // workaround https://github.com/ziglang/zig/issues/22748
11417 // workaround https://github.com/ziglang/zig/issues/22749
11418 // TODO: return @divFloor(lhs, rhs);
11419 var rt_lhs = lhs;
11420 var rt_rhs = rhs;
11421 _ = &rt_lhs;
11422 _ = &rt_rhs;
11423 return @divFloor(rt_lhs, rt_rhs);
11424}
11425test divFloor {
11426 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });
11427 try test_div_floor.testFloats();
11428 try test_div_floor.testFloatVectors();
11429}
11430
11431// workaround https://github.com/ziglang/zig/issues/22748
11432// TODO: @TypeOf(@rem(lhs, rhs))
11433inline fn rem(comptime Type: type, lhs: Type, rhs: Type) Type {
11434 if (@inComptime()) {
11435 // workaround https://github.com/ziglang/zig/issues/22748
11436 switch (@typeInfo(Type)) {
11437 else => return if (rhs != 0) @rem(lhs, rhs) else nan(Type),
11438 .vector => |info| {
11439 var res: Type = undefined;
11440 inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @rem(lhs[i], rhs[i]) else nan(Scalar(Type));
11441 return res;
11442 },
11443 }
11444 }
11445 // workaround https://github.com/ziglang/zig/issues/22748
11446 // TODO: return @rem(lhs, rhs);
11447 var rt_rhs = rhs;
11448 _ = &rt_rhs;
11449 return @rem(lhs, rt_rhs);
11450}
11451test rem {
11452 const test_rem = binary(rem, .{});
11453 try test_rem.testFloats();
11454 try test_rem.testFloatVectors();
11455}
11456
1131811457inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {
1131911458 return ~rhs;
1132011459}
......@@ -11324,24 +11463,150 @@ test bitNot {
1132411463 try test_bit_not.testIntVectors();
1132511464}
1132611465
11466inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {
11467 return @clz(rhs);
11468}
11469test clz {
11470 const test_clz = unary(clz, .{});
11471 try test_clz.testInts();
11472 try test_clz.testIntVectors();
11473}
11474
11475inline fn sqrt(comptime Type: type, rhs: Type) @TypeOf(@sqrt(rhs)) {
11476 return @sqrt(rhs);
11477}
11478test sqrt {
11479 const test_sqrt = unary(sqrt, .{});
11480 try test_sqrt.testFloats();
11481 try test_sqrt.testFloatVectors();
11482}
11483
11484inline fn sin(comptime Type: type, rhs: Type) @TypeOf(@sin(rhs)) {
11485 return @sin(rhs);
11486}
11487test sin {
11488 const test_sin = unary(sin, .{ .compare = .strict });
11489 try test_sin.testFloats();
11490 try test_sin.testFloatVectors();
11491}
11492
11493inline fn cos(comptime Type: type, rhs: Type) @TypeOf(@cos(rhs)) {
11494 return @cos(rhs);
11495}
11496test cos {
11497 const test_cos = unary(cos, .{ .compare = .strict });
11498 try test_cos.testFloats();
11499 try test_cos.testFloatVectors();
11500}
11501
11502inline fn tan(comptime Type: type, rhs: Type) @TypeOf(@tan(rhs)) {
11503 return @tan(rhs);
11504}
11505test tan {
11506 const test_tan = unary(tan, .{ .compare = .strict });
11507 try test_tan.testFloats();
11508 try test_tan.testFloatVectors();
11509}
11510
11511inline fn exp(comptime Type: type, rhs: Type) @TypeOf(@exp(rhs)) {
11512 return @exp(rhs);
11513}
11514test exp {
11515 const test_exp = unary(exp, .{ .compare = .strict });
11516 try test_exp.testFloats();
11517 try test_exp.testFloatVectors();
11518}
11519
11520inline fn exp2(comptime Type: type, rhs: Type) @TypeOf(@exp2(rhs)) {
11521 return @exp2(rhs);
11522}
11523test exp2 {
11524 const test_exp2 = unary(exp2, .{ .compare = .strict });
11525 try test_exp2.testFloats();
11526 try test_exp2.testFloatVectors();
11527}
11528
11529inline fn log(comptime Type: type, rhs: Type) @TypeOf(@log(rhs)) {
11530 return @log(rhs);
11531}
11532test log {
11533 const test_log = unary(log, .{ .compare = .strict });
11534 try test_log.testFloats();
11535 try test_log.testFloatVectors();
11536}
11537
11538inline fn log2(comptime Type: type, rhs: Type) @TypeOf(@log2(rhs)) {
11539 return @log2(rhs);
11540}
11541test log2 {
11542 const test_log2 = unary(log2, .{ .compare = .strict });
11543 try test_log2.testFloats();
11544 try test_log2.testFloatVectors();
11545}
11546
11547inline fn log10(comptime Type: type, rhs: Type) @TypeOf(@log10(rhs)) {
11548 return @log10(rhs);
11549}
11550test log10 {
11551 const test_log10 = unary(log10, .{ .compare = .strict });
11552 try test_log10.testFloats();
11553 try test_log10.testFloatVectors();
11554}
11555
1132711556inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {
1132811557 return @abs(rhs);
1132911558}
1133011559test abs {
11331 const test_abs = unary(abs, .{ .strict = true });
11560 const test_abs = unary(abs, .{ .compare = .strict });
1133211561 try test_abs.testInts();
1133311562 try test_abs.testIntVectors();
1133411563 try test_abs.testFloats();
1133511564 try test_abs.testFloatVectors();
1133611565}
1133711566
11338inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {
11339 return @clz(rhs);
11567inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {
11568 return @floor(rhs);
1134011569}
11341test clz {
11342 const test_clz = unary(clz, .{});
11343 try test_clz.testInts();
11344 try test_clz.testIntVectors();
11570test floor {
11571 const test_floor = unary(floor, .{ .compare = .strict });
11572 try test_floor.testFloats();
11573 try test_floor.testFloatVectors();
11574}
11575
11576inline fn ceil(comptime Type: type, rhs: Type) @TypeOf(@ceil(rhs)) {
11577 return @ceil(rhs);
11578}
11579test ceil {
11580 const test_ceil = unary(ceil, .{ .compare = .strict });
11581 try test_ceil.testFloats();
11582 try test_ceil.testFloatVectors();
11583}
11584
11585inline fn round(comptime Type: type, rhs: Type) @TypeOf(@round(rhs)) {
11586 return @round(rhs);
11587}
11588test round {
11589 const test_round = unary(round, .{ .compare = .strict });
11590 try test_round.testFloats();
11591 try test_round.testFloatVectors();
11592}
11593
11594inline fn trunc(comptime Type: type, rhs: Type) @TypeOf(@trunc(rhs)) {
11595 return @trunc(rhs);
11596}
11597test trunc {
11598 const test_trunc = unary(trunc, .{ .compare = .strict });
11599 try test_trunc.testFloats();
11600 try test_trunc.testFloatVectors();
11601}
11602
11603inline fn negate(comptime Type: type, rhs: Type) @TypeOf(-rhs) {
11604 return -rhs;
11605}
11606test negate {
11607 const test_negate = unary(negate, .{ .compare = .strict });
11608 try test_negate.testFloats();
11609 try test_negate.testFloatVectors();
1134511610}
1134611611
1134711612inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {
......@@ -11407,7 +11672,7 @@ inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, compt
1140711672 return @floatCast(rhs);
1140811673}
1140911674test floatCast {
11410 const test_float_cast = cast(floatCast, .{ .strict = true });
11675 const test_float_cast = cast(floatCast, .{ .compare = .strict });
1141111676 try test_float_cast.testFloats();
1141211677 try test_float_cast.testFloatVectors();
1141311678}
......@@ -11610,3 +11875,12 @@ test optionalsNotEqual {
1161011875 try test_optionals_not_equal.testInts();
1161111876 try test_optionals_not_equal.testFloats();
1161211877}
11878
11879inline fn mulAdd(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mulAdd(Type, lhs, rhs, rhs)) {
11880 return @mulAdd(Type, lhs, rhs, rhs);
11881}
11882test mulAdd {
11883 const test_mul_add = binary(mulAdd, .{ .compare = .approx });
11884 try test_mul_add.testFloats();
11885 try test_mul_add.testFloatVectors();
11886}