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 {...@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {
450 .skip_non_native = skip_non_native,450 .skip_non_native = skip_non_native,
451 .skip_libc = skip_libc,451 .skip_libc = skip_libc,
452 .use_llvm = use_llvm,452 .use_llvm = use_llvm,
453 .max_rss = 1.25 * 1024 * 1024 * 1024,453 .max_rss = 2 * 1024 * 1024 * 1024,
454 }));454 }));
455455
456 test_modules_step.dependOn(tests.addModuleTests(b, .{456 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 {...@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2414}2414}
24152415
2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(5_500);2417 @setEvalBranchQuota(9_200);
2418 const pt = cg.pt;2418 const pt = cg.pt;
2419 const zcu = pt.zcu;2419 const zcu = pt.zcu;
2420 const ip = &zcu.intern_pool;2420 const ip = &zcu.intern_pool;
...@@ -2450,23 +2450,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2450,23 +2450,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);2450 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
2451 switch (air_tags[@intFromEnum(inst)]) {2451 switch (air_tags[@intFromEnum(inst)]) {
2452 // zig fmt: off2452 // zig fmt: off
2453 .add,
2454 .add_wrap,2453 .add_wrap,
2455 .sub,
2456 .sub_wrap,2454 .sub_wrap,
2457 => |air_tag| try cg.airBinOp(inst, air_tag),2455 => |air_tag| try cg.airBinOp(inst, air_tag),
24582456
2459 .shr, .shr_exact => try cg.airShlShrBinOp(inst),2457 .shr, .shr_exact => try cg.airShlShrBinOp(inst),
2460 .shl, .shl_exact => try cg.airShlShrBinOp(inst),2458 .shl, .shl_exact => try cg.airShlShrBinOp(inst),
24612459
2462 .mul,
2463 .mul_wrap,2460 .mul_wrap,
2464 .rem,
2465 .mod,2461 .mod,
2466 .div_float,
2467 .div_trunc,
2468 .div_floor,
2469 .div_exact,
2470 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),2462 => |air_tag| try cg.airMulDivBinOp(inst, air_tag),
24712463
2472 .add_sat => try cg.airAddSat(inst),2464 .add_sat => try cg.airAddSat(inst),
...@@ -2474,23 +2466,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2474,23 +2466,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2474 .mul_sat => try cg.airMulSat(inst),2466 .mul_sat => try cg.airMulSat(inst),
2475 .shl_sat => try cg.airShlSat(inst),2467 .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
2494 .add_with_overflow => try cg.airAddSubWithOverflow(inst),2469 .add_with_overflow => try cg.airAddSubWithOverflow(inst),
2495 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),2470 .sub_with_overflow => try cg.airAddSubWithOverflow(inst),
2496 .mul_with_overflow => try cg.airMulWithOverflow(inst),2471 .mul_with_overflow => try cg.airMulWithOverflow(inst),
...@@ -2524,7 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2524,7 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2524 .reduce => try cg.airReduce(inst),2499 .reduce => try cg.airReduce(inst),
2525 .aggregate_init => try cg.airAggregateInit(inst),2500 .aggregate_init => try cg.airAggregateInit(inst),
2526 .prefetch => try cg.airPrefetch(inst),2501 .prefetch => try cg.airPrefetch(inst),
2527 .mul_add => try cg.airMulAdd(inst),
25282502
2529 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),2503 .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered),
2530 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),2504 .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic),
...@@ -2548,16 +2522,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2548,16 +2522,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2548 .intcast_safe,2522 .intcast_safe,
2549 => return cg.fail("TODO implement safety_checked_instructions", .{}),2523 => 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),
2559 .mod_optimized => try cg.airMulDivBinOp(inst, .mod),2525 .mod_optimized => try cg.airMulDivBinOp(inst, .mod),
2560 .neg_optimized => try cg.airFloatSign(inst, .neg),
2561 .reduce_optimized => try cg.airReduce(inst),2526 .reduce_optimized => try cg.airReduce(inst),
2562 .int_from_float_optimized => try cg.airIntFromFloat(inst),2527 .int_from_float_optimized => try cg.airIntFromFloat(inst),
25632528
...@@ -2575,490 +2540,661 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2575,490 +2540,661 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2575 if (arg != .none) break;2540 if (arg != .none) break;
2576 } else try cg.airDbgVarArgs();2541 } else try cg.airDbgVarArgs();
2577 },2542 },
2578 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {2543 .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: {
2579 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;2544 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2580 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;2545 if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag);
2581 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });2546 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2582 try ops[0].toSlicePtr(cg);
2583 var res: [1]Temp = undefined;2547 var res: [1]Temp = undefined;
2584 if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{2548 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
2585 .patterns = &.{2549 .required_features = .{ .f16c, null, null, null },
2586 .{ .src = .{ .to_gpr, .simm32 } },2550 .src_constraints = .{
2551 .{ .scalar_float = .{ .of = .word, .is = .word } },
2552 .{ .scalar_float = .{ .of = .word, .is = .word } },
2553 .any,
2587 },2554 },
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 }},
2594 .patterns = &.{2555 .patterns = &.{
2595 .{ .src = .{ .to_gpr, .to_gpr } },2556 .{ .src = .{ .to_sse, .to_sse, .none } },
2596 },2557 },
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 } }},
2598 .each = .{ .once = &.{2570 .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(.{}), ._ },
2600 } },2575 } },
2601 }, .{2576 }, .{
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 },
2603 .patterns = &.{2583 .patterns = &.{
2604 .{ .src = .{ .to_gpr, .to_gpr } },2584 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
2605 },2585 },
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 },
2607 .each = .{ .once = &.{2600 .each = .{ .once = &.{
2608 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },2601 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
2609 } },2602 } },
2610 }, .{2603 }, .{
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 },
2612 .patterns = &.{2610 .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 } },
2614 },2615 },
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 } }},
2616 .each = .{ .once = &.{2628 .each = .{ .once = &.{
2617 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },2629 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
2618 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },2630 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
2631 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
2632 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
2619 } },2633 } },
2620 }, .{2634 }, .{
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 },
2622 .patterns = &.{2641 .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 } },
2624 },2646 },
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 } }},
2626 .each = .{ .once = &.{2659 .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(.{}), ._ },
2628 } },2664 } },
2629 }, .{2665 }, .{
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 },
2631 .patterns = &.{2672 .patterns = &.{
2632 .{ .src = .{ .to_gpr, .to_gpr } },2673 .{ .src = .{ .to_mem, .to_mem, .none } },
2633 },2674 },
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 },
2635 .each = .{ .once = &.{2688 .each = .{ .once = &.{
2636 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },2689 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2637 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },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", ._, ._, ._ },
2638 } },2696 } },
2639 }, .{2697 }, .{
2640 .required_features = .{ .@"64bit", null, null, null },2698 .required_features = .{ .avx, null, null, null },
2641 .dst_constraints = .{.{ .elem_size_is = 8 }},2699 .src_constraints = .{
2700 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2701 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2702 .any,
2703 },
2642 .patterns = &.{2704 .patterns = &.{
2643 .{ .src = .{ .to_gpr, .to_gpr } },2705 .{ .src = .{ .to_mem, .to_mem, .none } },
2644 },2706 },
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 },
2646 .each = .{ .once = &.{2721 .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", ._, ._, ._ },
2648 } },2730 } },
2649 }, .{2731 }, .{
2650 .required_features = .{ .@"64bit", null, null, null },2732 .required_features = .{ .sse4_1, null, null, null },
2651 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},2733 .src_constraints = .{
2734 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2735 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2736 .any,
2737 },
2652 .patterns = &.{2738 .patterns = &.{
2653 .{ .src = .{ .to_gpr, .to_gpr } },2739 .{ .src = .{ .to_mem, .to_mem, .none } },
2654 },2740 },
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 },
2656 .each = .{ .once = &.{2755 .each = .{ .once = &.{
2657 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },2756 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2658 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },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", ._, ._, ._ },
2659 } },2765 } },
2660 }, .{2766 }, .{
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 },
2662 .patterns = &.{2773 .patterns = &.{
2663 .{ .src = .{ .to_gpr, .to_mut_gpr } },2774 .{ .src = .{ .to_mem, .to_mem, .none } },
2664 },2775 },
2665 .dst_temps = .{.{ .ref = .src1 }},2776 .call_frame = .{ .alignment = .@"16" },
2666 .clobbers = .{ .eflags = true },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 },
2667 .each = .{ .once = &.{2790 .each = .{ .once = &.{
2668 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2791 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2669 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },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", ._, ._, ._ },
2670 } },2801 } },
2671 }, .{2802 }, .{
2672 .patterns = &.{2803 .required_features = .{ .sse, null, null, null },
2673 .{ .src = .{ .to_gpr, .to_gpr } },2804 .src_constraints = .{
2805 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2806 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
2807 .any,
2674 },2808 },
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 &.{ .{
2701 .patterns = &.{2809 .patterns = &.{
2702 .{ .src = .{ .to_gpr, .simm32 } },2810 .{ .src = .{ .to_mem, .to_mem, .none } },
2703 },2811 },
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 },
2705 .each = .{ .once = &.{2826 .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", ._, ._, ._ },
2707 } },2840 } },
2708 }, .{2841 }, .{
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 },
2710 .patterns = &.{2848 .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 } },
2712 },2852 },
2713 .dst_temps = .{.{ .ref = .src1 }},2853 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2714 .clobbers = .{ .eflags = true },
2715 .each = .{ .once = &.{2854 .each = .{ .once = &.{
2716 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2855 .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ },
2717 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2718 } },2856 } },
2719 }, .{2857 }, .{
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 },
2721 .patterns = &.{2864 .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 } },
2723 },2868 },
2724 .dst_temps = .{.{ .ref = .src1 }},2869 .dst_temps = .{.{ .ref = .src0 }},
2725 .clobbers = .{ .eflags = true },
2726 .each = .{ .once = &.{2870 .each = .{ .once = &.{
2727 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2871 .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ },
2728 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2729 } },2872 } },
2730 }, .{2873 }, .{
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 },
2732 .patterns = &.{2880 .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 } },
2734 },2884 },
2735 .dst_temps = .{.{ .rc = .general_purpose }},2885 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2736 .clobbers = .{ .eflags = true },
2737 .each = .{ .once = &.{2886 .each = .{ .once = &.{
2738 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },2887 .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ },
2739 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2740 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2741 } },2888 } },
2742 }, .{2889 }, .{
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 },
2744 .patterns = &.{2896 .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 } },
2746 },2900 },
2747 .dst_temps = .{.{ .ref = .src1 }},2901 .dst_temps = .{.{ .ref = .src0 }},
2748 .clobbers = .{ .eflags = true },
2749 .each = .{ .once = &.{2902 .each = .{ .once = &.{
2750 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2903 .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ },
2751 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2752 } },2904 } },
2753 }, .{2905 }, .{
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 },
2755 .patterns = &.{2912 .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 } },
2757 },2916 },
2758 .dst_temps = .{.{ .rc = .general_purpose }},2917 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2759 .clobbers = .{ .eflags = true },
2760 .each = .{ .once = &.{2918 .each = .{ .once = &.{
2761 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },2919 .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ },
2762 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2763 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2764 } },2920 } },
2765 }, .{2921 }, .{
2766 .required_features = .{ .@"64bit", null, null, null },2922 .required_features = .{ .avx, null, null, null },
2767 .dst_constraints = .{.{ .elem_size_is = 8 }},2923 .src_constraints = .{
2924 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2925 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
2926 .any,
2927 },
2768 .patterns = &.{2928 .patterns = &.{
2769 .{ .src = .{ .to_gpr, .to_mut_gpr } },2929 .{ .src = .{ .to_mem, .to_mem, .none } },
2770 },2930 },
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},
2772 .clobbers = .{ .eflags = true },2943 .clobbers = .{ .eflags = true },
2773 .each = .{ .once = &.{2944 .each = .{ .once = &.{
2774 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2775 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },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", ._, ._, ._ },
2776 } },2951 } },
2777 }, .{2952 }, .{
2778 .required_features = .{ .@"64bit", null, null, null },2953 .required_features = .{ .sse, null, null, null },
2779 .dst_constraints = .{.{ .elem_size_is = 8 + 1 }},2954 .src_constraints = .{
2955 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2956 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
2957 .any,
2958 },
2780 .patterns = &.{2959 .patterns = &.{
2781 .{ .src = .{ .to_gpr, .to_gpr } },2960 .{ .src = .{ .to_mem, .to_mem, .none } },
2782 },2961 },
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},
2784 .clobbers = .{ .eflags = true },2974 .clobbers = .{ .eflags = true },
2785 .each = .{ .once = &.{2975 .each = .{ .once = &.{
2786 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },2976 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2787 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },2977 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2788 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },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", ._, ._, ._ },
2789 } },2982 } },
2790 }, .{2983 }, .{
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 },
2792 .patterns = &.{2990 .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 } },
2794 },2994 },
2795 .dst_temps = .{.{ .ref = .src1 }},2995 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2796 .clobbers = .{ .eflags = true },
2797 .each = .{ .once = &.{2996 .each = .{ .once = &.{
2798 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2997 .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ },
2799 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2800 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2801 } },2998 } },
2802 }, .{2999 }, .{
2803 .patterns = &.{3000 .required_features = .{ .sse2, null, null, null },
2804 .{ .src = .{ .to_gpr, .to_gpr } },3001 .src_constraints = .{
3002 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3003 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3004 .any,
2805 },3005 },
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 } },
2833 .patterns = &.{3006 .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 } },
2835 },3010 },
2836 .dst_temps = .{.{ .ref = .src0 }},3011 .dst_temps = .{.{ .ref = .src0 }},
2837 .clobbers = .{ .eflags = true },
2838 .each = .{ .once = &.{3012 .each = .{ .once = &.{
2839 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3013 .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ },
2840 .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ },
2841 } },3014 } },
2842 }, .{3015 }, .{
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 },
2844 .patterns = &.{3022 .patterns = &.{
2845 .{ .src = .{ .to_mut_gpr, .mem } },3023 .{ .src = .{ .mem, .mem, .none } },
2846 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2847 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2848 },3024 },
2849 .dst_temps = .{.{ .ref = .src0 }},3025 .extra_temps = .{
2850 .clobbers = .{ .eflags = true },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},
2851 .each = .{ .once = &.{3037 .each = .{ .once = &.{
2852 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3038 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
2853 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },3039 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
2854 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },3040 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3041 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
2855 } },3042 } },
2856 }, .{3043 }, .{
2857 .required_features = .{ .cmov, null, null, null },3044 .required_features = .{ .avx, null, null, null },
2858 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },3045 .src_constraints = .{
3046 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3047 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3048 .any,
3049 },
2859 .patterns = &.{3050 .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 } },
2861 },3054 },
2862 .dst_temps = .{.{ .ref = .src0 }},3055 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2863 .clobbers = .{ .eflags = true },
2864 .each = .{ .once = &.{3056 .each = .{ .once = &.{
2865 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3057 .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ },
2866 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },
2867 } },3058 } },
2868 }, .{3059 }, .{
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 },
2870 .patterns = &.{3066 .patterns = &.{
2871 .{ .src = .{ .to_mut_gpr, .mem } },3067 .{ .src = .{ .to_mut_sse, .mem, .none } },
2872 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3068 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
2873 .{ .src = .{ .to_mut_gpr, .to_gpr } },3069 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
2874 },3070 },
2875 .dst_temps = .{.{ .ref = .src0 }},3071 .dst_temps = .{.{ .ref = .src0 }},
2876 .clobbers = .{ .eflags = true },
2877 .each = .{ .once = &.{3072 .each = .{ .once = &.{
2878 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },3073 .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ },
2879 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },
2880 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },
2881 } },3074 } },
2882 }, .{3075 }, .{
2883 .required_features = .{ .cmov, null, null, null },3076 .required_features = .{ .avx, null, null, null },
2884 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },3077 .src_constraints = .{
3078 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3079 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3080 .any,
3081 },
2885 .patterns = &.{3082 .patterns = &.{
2886 .{ .src = .{ .to_mut_gpr, .mem } },3083 .{ .src = .{ .to_sse, .mem, .none } },
2887 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3084 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
2888 .{ .src = .{ .to_mut_gpr, .to_gpr } },3085 .{ .src = .{ .to_sse, .to_sse, .none } },
2889 },3086 },
2890 .dst_temps = .{.{ .ref = .src0 }},3087 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2891 .clobbers = .{ .eflags = true },
2892 .each = .{ .once = &.{3088 .each = .{ .once = &.{
2893 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3089 .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ },
2894 .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ },
2895 } },3090 } },
2896 }, .{3091 }, .{
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 },
2898 .patterns = &.{3098 .patterns = &.{
2899 .{ .src = .{ .to_mut_gpr, .mem } },3099 .{ .src = .{ .to_mem, .to_mem, .none } },
2900 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2901 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2902 },3100 },
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},
2904 .clobbers = .{ .eflags = true },3113 .clobbers = .{ .eflags = true },
2905 .each = .{ .once = &.{3114 .each = .{ .once = &.{
2906 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },3115 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2907 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },3116 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
2908 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },3117 .{ ._, .v_pd, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
2909 } },3118 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
2910 }, .{3119 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
2911 .required_features = .{ .cmov, null, null, null },3120 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
2951 } },3121 } },
2952 }, .{3122 }, .{
2953 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },3123 .required_features = .{ .sse2, null, null, null },
2954 .patterns = &.{3124 .src_constraints = .{
2955 .{ .src = .{ .to_mut_gpr, .mem } },3125 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
2956 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
2957 .{ .src = .{ .to_mut_gpr, .to_gpr } },3127 .any,
2958 },3128 },
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 } },
2969 .patterns = &.{3129 .patterns = &.{
2970 .{ .src = .{ .to_mut_gpr, .mem } },3130 .{ .src = .{ .to_mem, .to_mem, .none } },
2971 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2972 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2973 },3131 },
2974 .dst_temps = .{.{ .ref = .src0 }},3132 .extra_temps = .{
2975 .clobbers = .{ .eflags = true },3133 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2976 .each = .{ .once = &.{3134 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
2977 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },3135 .unused,
2978 .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ },3136 .unused,
2979 } },3137 .unused,
2980 }, .{3138 .unused,
2981 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },3139 .unused,
2982 .patterns = &.{3140 .unused,
2983 .{ .src = .{ .to_mut_gpr, .mem } },3141 .unused,
2984 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
2985 .{ .src = .{ .to_mut_gpr, .to_gpr } },
2986 },3142 },
2987 .dst_temps = .{.{ .ref = .src0 }},3143 .dst_temps = .{.mem},
2988 .clobbers = .{ .eflags = true },3144 .clobbers = .{ .eflags = true },
2989 .each = .{ .once = &.{3145 .each = .{ .once = &.{
2990 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },3146 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
2991 .{ ._, ._nb, .j, .@"0f", ._, ._, ._ },3147 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
2992 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },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", ._, ._, ._ },
2993 } },3152 } },
2994 }, .{3153 }, .{
2995 .required_features = .{ .@"64bit", .cmov, null, null },3154 .required_features = .{ .x87, null, null, null },
2996 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },3155 .src_constraints = .{
2997 .patterns = &.{3156 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
2998 .{ .src = .{ .to_mut_gpr, .mem } },3157 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
2999 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3158 .any,
3000 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3001 },3159 },
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 } },
3011 .patterns = &.{3160 .patterns = &.{
3012 .{ .src = .{ .to_mut_gpr, .mem } },3161 .{ .src = .{ .to_mem, .to_mem, .none } },
3013 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3014 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3015 },3162 },
3016 .dst_temps = .{.{ .ref = .src0 }},3163 .extra_temps = .{
3017 .clobbers = .{ .eflags = true },3164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3018 .each = .{ .once = &.{3165 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3019 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },3166 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3020 .{ ._, ._nl, .j, .@"0f", ._, ._, ._ },3167 .unused,
3021 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },3168 .unused,
3022 } },3169 .unused,
3023 }, .{3170 .unused,
3024 .required_features = .{ .@"64bit", .cmov, null, null },3171 .unused,
3025 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },3172 .unused,
3026 .patterns = &.{
3027 .{ .src = .{ .to_mut_gpr, .mem } },
3028 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },
3029 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3030 },3173 },
3031 .dst_temps = .{.{ .ref = .src0 }},3174 .dst_temps = .{.mem},
3032 .clobbers = .{ .eflags = true },
3033 .each = .{ .once = &.{3175 .each = .{ .once = &.{
3034 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },3176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3035 .{ ._, ._b, .cmov, .dst0q, .src1q, ._, ._ },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", ._, ._, ._ },
3036 } },3183 } },
3037 }, .{3184 }, .{
3038 .required_features = .{ .@"64bit", null, null, null },3185 .required_features = .{ .x87, null, null, null },
3039 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },3186 .src_constraints = .{
3040 .patterns = &.{3187 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3041 .{ .src = .{ .to_mut_gpr, .mem } },3188 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3042 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },3189 .any,
3043 .{ .src = .{ .to_mut_gpr, .to_gpr } },
3044 },3190 },
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 },
3055 .patterns = &.{3191 .patterns = &.{
3056 .{ .src = .{ .to_mem, .to_mem } },3192 .{ .src = .{ .mem, .mem, .none } },
3057 },3193 },
3058 .extra_temps = .{3194 .extra_temps = .{
3059 .{ .type = .isize, .kind = .{ .reg = .rsi } },3195 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3060 .{ .type = .u64, .kind = .{ .reg = .rdi } },3196 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3061 .{ .type = .u64, .kind = .{ .reg = .rcx } },3197 .unused,
3062 .unused,3198 .unused,
3063 .unused,3199 .unused,
3064 .unused,3200 .unused,
...@@ -3066,34 +3202,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3066,34 +3202,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3066 .unused,3202 .unused,
3067 .unused,3203 .unused,
3068 },3204 },
3069 .dst_temps = .{.mem},3205 .dst_temps = .{.{ .rc = .x87 }},
3070 .clobbers = .{ .eflags = true },
3071 .each = .{ .once = &.{3206 .each = .{ .once = &.{
3072 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },3207 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3073 .{ ._, ._c, .cl, ._, ._, ._, ._ },3208 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3074 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },3209 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3075 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },3210 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
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, ._, ._, ._, ._ },
3086 } },3211 } },
3087 }, .{3212 }, .{
3088 .required_features = .{ .@"64bit", null, null, null },3213 .required_features = .{ .x87, null, null, null },
3089 .src_constraints = .{ .any_signed_int, .any_signed_int },3214 .src_constraints = .{
3215 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3216 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3217 .any,
3218 },
3090 .patterns = &.{3219 .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 } },
3092 },3223 },
3093 .extra_temps = .{3224 .extra_temps = .{
3094 .{ .type = .isize, .kind = .{ .reg = .rsi } },3225 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3095 .{ .type = .u64, .kind = .{ .reg = .rdi } },3226 .unused,
3096 .{ .type = .u64, .kind = .{ .reg = .rcx } },3227 .unused,
3097 .unused,3228 .unused,
3098 .unused,3229 .unused,
3099 .unused,3230 .unused,
...@@ -3101,34 +3232,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3101,34 +3232,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3101 .unused,3232 .unused,
3102 .unused,3233 .unused,
3103 },3234 },
3104 .dst_temps = .{.mem},3235 .dst_temps = .{.{ .rc = .x87 }},
3105 .clobbers = .{ .eflags = true },
3106 .each = .{ .once = &.{3236 .each = .{ .once = &.{
3107 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },3237 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3108 .{ ._, ._c, .cl, ._, ._, ._, ._ },3238 .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ },
3109 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },3239 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
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, ._, ._, ._, ._ },
3121 } },3240 } },
3122 }, .{3241 }, .{
3123 .required_features = .{ .@"64bit", .cmov, null, null },3242 .required_features = .{ .x87, null, null, null },
3124 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },3243 .src_constraints = .{
3244 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3245 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
3246 .any,
3247 },
3125 .patterns = &.{3248 .patterns = &.{
3126 .{ .src = .{ .to_mem, .to_mem } },3249 .{ .src = .{ .to_mem, .to_mem, .none } },
3127 },3250 },
3128 .extra_temps = .{3251 .extra_temps = .{
3129 .{ .type = .isize, .kind = .{ .reg = .rsi } },3252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3130 .{ .type = .u64, .kind = .{ .reg = .rdi } },3253 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3131 .{ .type = .u64, .kind = .{ .reg = .rcx } },3254 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3132 .unused,3255 .unused,
3133 .unused,3256 .unused,
3134 .unused,3257 .unused,
...@@ -3137,31 +3260,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3137,31 +3260,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3137 .unused,3260 .unused,
3138 },3261 },
3139 .dst_temps = .{.mem},3262 .dst_temps = .{.mem},
3140 .clobbers = .{ .eflags = true },
3141 .each = .{ .once = &.{3263 .each = .{ .once = &.{
3142 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },3264 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3143 .{ ._, ._c, .cl, ._, ._, ._, ._ },3265 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3144 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },3266 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3145 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },3267 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3146 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3268 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
3147 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },3269 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3148 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },3270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._, ._, ._ },
3154 } },3271 } },
3155 }, .{3272 }, .{
3156 .required_features = .{ .@"64bit", null, null, null },3273 .required_features = .{ .sse, null, null, null },
3157 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },3274 .src_constraints = .{
3275 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3276 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
3277 .any,
3278 },
3158 .patterns = &.{3279 .patterns = &.{
3159 .{ .src = .{ .to_mem, .to_mem } },3280 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
3160 },3281 },
3282 .call_frame = .{ .alignment = .@"16" },
3161 .extra_temps = .{3283 .extra_temps = .{
3162 .{ .type = .isize, .kind = .{ .reg = .rsi } },3284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3163 .{ .type = .u64, .kind = .{ .reg = .rdi } },3285 .unused,
3164 .{ .type = .u64, .kind = .{ .reg = .rcx } },3286 .unused,
3165 .unused,3287 .unused,
3166 .unused,3288 .unused,
3167 .unused,3289 .unused,
...@@ -3169,100 +3291,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3169,100 +3291,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3169 .unused,3291 .unused,
3170 .unused,3292 .unused,
3171 },3293 },
3172 .dst_temps = .{.mem},3294 .dst_temps = .{.{ .ref = .src0 }},
3173 .clobbers = .{ .eflags = true },3295 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3174 .each = .{ .once = &.{3296 .each = .{ .once = &.{
3175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },3297 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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, ._, ._, ._, ._ },
3187 } },3298 } },
3188 }, .{3299 }, .{
3189 .required_features = .{ .avx, null, null, null },3300 .required_features = .{ .avx, null, null, null },
3190 .src_constraints = .{3301 .src_constraints = .{
3191 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3302 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3192 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3303 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3304 .any,
3193 },3305 },
3194 .patterns = &.{3306 .patterns = &.{
3195 .{ .src = .{ .to_sse, .mem } },3307 .{ .src = .{ .to_mem, .to_mem, .none } },
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 } },
3208 },3308 },
3209 .patterns = &.{3309 .call_frame = .{ .alignment = .@"16" },
3210 .{ .src = .{ .to_mut_sse, .mem } },3310 .extra_temps = .{
3211 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3212 .{ .src = .{ .to_mut_sse, .to_sse } },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,
3213 },3320 },
3214 .dst_temps = .{.{ .ref = .src0 }},3321 .dst_temps = .{.mem},
3322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3215 .each = .{ .once = &.{3323 .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", ._, ._, ._ },
3217 } },3331 } },
3218 }, .{3332 }, .{
3219 .required_features = .{ .sse2, null, null, null },3333 .required_features = .{ .sse2, null, null, null },
3220 .src_constraints = .{3334 .src_constraints = .{
3221 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3335 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3222 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },3336 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3337 .any,
3223 },3338 },
3224 .patterns = &.{3339 .patterns = &.{
3225 .{ .src = .{ .to_mut_sse, .mem } },3340 .{ .src = .{ .to_mem, .to_mem, .none } },
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 } },
3242 },3341 },
3243 .patterns = &.{3342 .call_frame = .{ .alignment = .@"16" },
3244 .{ .src = .{ .to_sse, .mem } },3343 .extra_temps = .{
3245 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3246 .{ .src = .{ .to_sse, .to_sse } },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,
3247 },3353 },
3248 .dst_temps = .{.{ .rc = .sse }},3354 .dst_temps = .{.mem},
3355 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3249 .each = .{ .once = &.{3356 .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", ._, ._, ._ },
3251 } },3364 } },
3252 }, .{3365 }, .{
3253 .required_features = .{ .avx2, null, null, null },3366 .required_features = .{ .sse, null, null, null },
3254 .src_constraints = .{3367 .src_constraints = .{
3255 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },3368 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3256 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },3369 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
3370 .any,
3257 },3371 },
3258 .patterns = &.{3372 .patterns = &.{
3259 .{ .src = .{ .to_mem, .to_mem } },3373 .{ .src = .{ .to_mem, .to_mem, .none } },
3260 },3374 },
3375 .call_frame = .{ .alignment = .@"16" },
3261 .extra_temps = .{3376 .extra_temps = .{
3262 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3263 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },3378 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3264 .unused,3379 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
3265 .unused,3380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
3266 .unused,3381 .unused,
3267 .unused,3382 .unused,
3268 .unused,3383 .unused,
...@@ -3270,27 +3385,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3270,27 +3385,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3270 .unused,3385 .unused,
3271 },3386 },
3272 .dst_temps = .{.mem},3387 .dst_temps = .{.mem},
3273 .clobbers = .{ .eflags = true },3388 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3274 .each = .{ .once = &.{3389 .each = .{ .once = &.{
3275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3276 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },3391 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3277 .{ ._, .vp_b, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },3392 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3278 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },3393 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3279 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },3394 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3395 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3396 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3281 } },3397 } },
3282 }, .{3398 } }) catch |err| switch (err) {
3283 .required_features = .{ .avx, null, null, null },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 },
3284 .src_constraints = .{3416 .src_constraints = .{
3285 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3417 .{ .scalar_float = .{ .of = .word, .is = .word } },
3286 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3418 .{ .scalar_float = .{ .of = .word, .is = .word } },
3419 .any,
3287 },3420 },
3288 .patterns = &.{3421 .patterns = &.{
3289 .{ .src = .{ .to_mem, .to_mem } },3422 .{ .src = .{ .to_sse, .to_sse, .none } },
3290 },3423 },
3291 .extra_temps = .{3424 .extra_temps = .{
3292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3425 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3293 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3426 .unused,
3294 .unused,3427 .unused,
3295 .unused,3428 .unused,
3296 .unused,3429 .unused,
...@@ -3299,28 +3432,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3299,28 +3432,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3299 .unused,3432 .unused,
3300 .unused,3433 .unused,
3301 },3434 },
3302 .dst_temps = .{.mem},3435 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3303 .clobbers = .{ .eflags = true },
3304 .each = .{ .once = &.{3436 .each = .{ .once = &.{
3305 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3437 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3306 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3438 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3307 .{ ._, .vp_b, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },3439 .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ },
3308 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },3440 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
3309 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3311 } },3441 } },
3312 }, .{3442 }, .{
3313 .required_features = .{ .sse4_1, null, null, null },3443 .required_features = .{ .sse, null, null, null },
3314 .src_constraints = .{3444 .src_constraints = .{
3315 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3445 .{ .scalar_float = .{ .of = .word, .is = .word } },
3316 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3446 .{ .scalar_float = .{ .of = .word, .is = .word } },
3447 .any,
3317 },3448 },
3318 .patterns = &.{3449 .patterns = &.{
3319 .{ .src = .{ .to_mem, .to_mem } },3450 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
3320 },3451 },
3452 .call_frame = .{ .alignment = .@"16" },
3321 .extra_temps = .{3453 .extra_temps = .{
3322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3323 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3455 .unused,
3324 .unused,3456 .unused,
3325 .unused,3457 .unused,
3326 .unused,3458 .unused,
...@@ -3329,29 +3461,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3329,29 +3461,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3329 .unused,3461 .unused,
3330 .unused,3462 .unused,
3331 },3463 },
3332 .dst_temps = .{.mem},3464 .dst_temps = .{.{ .ref = .src0 }},
3333 .clobbers = .{ .eflags = true },3465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3334 .each = .{ .once = &.{3466 .each = .{ .once = &.{
3335 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3467 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
3341 } },3468 } },
3342 }, .{3469 }, .{
3343 .required_features = .{ .sse2, null, null, null },3470 .required_features = .{ .f16c, null, null, null },
3344 .src_constraints = .{3471 .src_constraints = .{
3345 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3472 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3346 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },3473 .{ .scalar_float = .{ .of = .qword, .is = .word } },
3474 .any,
3347 },3475 },
3348 .patterns = &.{3476 .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 } },
3350 },3481 },
3351 .extra_temps = .{3482 .extra_temps = .{
3352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3483 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3353 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3484 .unused,
3354 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },3485 .unused,
3355 .unused,3486 .unused,
3356 .unused,3487 .unused,
3357 .unused,3488 .unused,
...@@ -3359,33 +3490,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3359,33 +3490,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3359 .unused,3490 .unused,
3360 .unused,3491 .unused,
3361 },3492 },
3362 .dst_temps = .{.mem},3493 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3363 .clobbers = .{ .eflags = true },
3364 .each = .{ .once = &.{3494 .each = .{ .once = &.{
3365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3495 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
3366 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3496 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
3367 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },3497 .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ },
3368 .{ ._, .p_b, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },3498 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
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", ._, ._, ._ },
3375 } },3499 } },
3376 }, .{3500 }, .{
3377 .required_features = .{ .cmov, .slow_incdec, null, null },3501 .required_features = .{ .f16c, null, null, null },
3378 .src_constraints = .{3502 .src_constraints = .{
3379 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3503 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3380 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3504 .{ .scalar_float = .{ .of = .xword, .is = .word } },
3505 .any,
3381 },3506 },
3382 .patterns = &.{3507 .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 } },
3384 },3512 },
3385 .extra_temps = .{3513 .extra_temps = .{
3386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3514 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
3387 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3515 .unused,
3388 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3516 .unused,
3389 .unused,3517 .unused,
3390 .unused,3518 .unused,
3391 .unused,3519 .unused,
...@@ -3393,31 +3521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3393,31 +3521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3393 .unused,3521 .unused,
3394 .unused,3522 .unused,
3395 },3523 },
3396 .dst_temps = .{.mem},3524 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3397 .clobbers = .{ .eflags = true },
3398 .each = .{ .once = &.{3525 .each = .{ .once = &.{
3399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3526 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
3400 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3527 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
3401 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3528 .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ },
3402 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3529 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
3403 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },
3404 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3405 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3407 } },3530 } },
3408 }, .{3531 }, .{
3409 .required_features = .{ .cmov, null, null, null },3532 .required_features = .{ .f16c, null, null, null },
3410 .src_constraints = .{3533 .src_constraints = .{
3411 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3534 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3412 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3535 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
3536 .any,
3413 },3537 },
3414 .patterns = &.{3538 .patterns = &.{
3415 .{ .src = .{ .to_mem, .to_mem } },3539 .{ .src = .{ .to_mem, .to_mem, .none } },
3416 },3540 },
3417 .extra_temps = .{3541 .extra_temps = .{
3418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3419 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3543 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3544 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3421 .unused,3545 .unused,
3422 .unused,3546 .unused,
3423 .unused,3547 .unused,
...@@ -3428,29 +3552,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3428,29 +3552,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3428 .dst_temps = .{.mem},3552 .dst_temps = .{.mem},
3429 .clobbers = .{ .eflags = true },3553 .clobbers = .{ .eflags = true },
3430 .each = .{ .once = &.{3554 .each = .{ .once = &.{
3431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3432 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3556 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3433 .{ ._, ._, .movsx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3557 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3434 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3558 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ },
3435 .{ ._, ._l, .cmov, .tmp1d, .tmp2d, ._, ._ },3559 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
3436 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },3560 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3437 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3438 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3439 } },3562 } },
3440 }, .{3563 }, .{
3441 .required_features = .{ .slow_incdec, null, null, null },3564 .required_features = .{ .avx, null, null, null },
3442 .src_constraints = .{3565 .src_constraints = .{
3443 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3566 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3444 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3567 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3568 .any,
3445 },3569 },
3446 .patterns = &.{3570 .patterns = &.{
3447 .{ .src = .{ .to_mem, .to_mem } },3571 .{ .src = .{ .to_mem, .to_mem, .none } },
3448 },3572 },
3573 .call_frame = .{ .alignment = .@"16" },
3449 .extra_temps = .{3574 .extra_temps = .{
3450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3451 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },3576 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3452 .unused,3577 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3453 .unused,3578 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
3454 .unused,3579 .unused,
3455 .unused,3580 .unused,
3456 .unused,3581 .unused,
...@@ -3458,180 +3583,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3458,180 +3583,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3458 .unused,3583 .unused,
3459 },3584 },
3460 .dst_temps = .{.mem},3585 .dst_temps = .{.mem},
3461 .clobbers = .{ .eflags = true },3586 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3462 .each = .{ .once = &.{3587 .each = .{ .once = &.{
3463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3588 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3464 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3589 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
3465 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3590 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
3466 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },3591 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
3467 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3592 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3468 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },3593 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
3469 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },3594 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3470 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3595 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3471 } },3596 } },
3472 }, .{3597 }, .{
3598 .required_features = .{ .sse4_1, null, null, null },
3473 .src_constraints = .{3599 .src_constraints = .{
3474 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3600 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3475 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },3601 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3602 .any,
3476 },3603 },
3477 .patterns = &.{3604 .patterns = &.{
3478 .{ .src = .{ .to_mem, .to_mem } },3605 .{ .src = .{ .to_mem, .to_mem, .none } },
3479 },3606 },
3607 .call_frame = .{ .alignment = .@"16" },
3480 .extra_temps = .{3608 .extra_temps = .{
3481 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3609 .{ .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" } } },
3483 .unused,3613 .unused,
3484 .unused,3614 .unused,
3485 .unused,3615 .unused,
3486 .unused,3616 .unused,
3487 .unused,3617 .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,
3488 .unused,3651 .unused,
3489 .unused,3652 .unused,
3490 },3653 },
3491 .dst_temps = .{.mem},3654 .dst_temps = .{.mem},
3492 .clobbers = .{ .eflags = true },3655 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3493 .each = .{ .once = &.{3656 .each = .{ .once = &.{
3494 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3657 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3495 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3658 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
3496 .{ ._, ._, .cmp, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3659 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
3497 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },3660 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3498 .{ ._, ._, .mov, .tmp1b, .memia(.src1b, .tmp0, .add_size), ._, ._ },3661 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
3499 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },3662 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3500 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },3663 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
3501 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },3664 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
3665 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3666 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3502 } },3667 } },
3503 }, .{3668 }, .{
3504 .required_features = .{ .sse, .mmx, null, null },3669 .required_features = .{ .sse, null, null, null },
3505 .src_constraints = .{3670 .src_constraints = .{
3506 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },3671 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3507 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },3672 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
3673 .any,
3508 },3674 },
3509 .patterns = &.{3675 .patterns = &.{
3510 .{ .src = .{ .to_mut_mmx, .mem } },3676 .{ .src = .{ .to_mem, .to_mem, .none } },
3511 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },
3512 .{ .src = .{ .to_mut_mmx, .to_mmx } },
3513 },3677 },
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 },
3515 .each = .{ .once = &.{3692 .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", ._, ._, ._ },
3517 } },3706 } },
3518 }, .{3707 }, .{
3519 .required_features = .{ .avx, null, null, null },3708 .required_features = .{ .avx, null, null, null },
3520 .src_constraints = .{3709 .src_constraints = .{
3521 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3710 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3522 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3711 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3712 .any,
3523 },3713 },
3524 .patterns = &.{3714 .patterns = &.{
3525 .{ .src = .{ .to_sse, .mem } },3715 .{ .src = .{ .to_sse, .mem, .none } },
3526 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3716 .{ .src = .{ .to_sse, .to_sse, .none } },
3527 .{ .src = .{ .to_sse, .to_sse } },
3528 },3717 },
3529 .dst_temps = .{.{ .rc = .sse }},3718 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3530 .each = .{ .once = &.{3719 .each = .{ .once = &.{
3531 .{ ._, .vp_b, .maxu, .dst0x, .src0x, .src1x, ._ },3720 .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ },
3532 } },3721 } },
3533 }, .{3722 }, .{
3534 .required_features = .{ .sse2, null, null, null },3723 .required_features = .{ .sse, null, null, null },
3535 .src_constraints = .{3724 .src_constraints = .{
3536 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3725 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3537 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3726 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
3727 .any,
3538 },3728 },
3539 .patterns = &.{3729 .patterns = &.{
3540 .{ .src = .{ .to_mut_sse, .mem } },3730 .{ .src = .{ .to_mut_sse, .mem, .none } },
3541 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3731 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3542 .{ .src = .{ .to_mut_sse, .to_sse } },
3543 },3732 },
3544 .dst_temps = .{.{ .ref = .src0 }},3733 .dst_temps = .{.{ .ref = .src0 }},
3545 .each = .{ .once = &.{3734 .each = .{ .once = &.{
3546 .{ ._, .p_b, .maxu, .dst0x, .src1x, ._, ._ },3735 .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ },
3547 } },3736 } },
3548 }, .{3737 }, .{
3549 .required_features = .{ .avx2, null, null, null },3738 .required_features = .{ .avx, null, null, null },
3550 .src_constraints = .{3739 .src_constraints = .{
3551 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3740 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3741 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3742 .any,
3553 },3743 },
3554 .patterns = &.{3744 .patterns = &.{
3555 .{ .src = .{ .to_sse, .mem } },3745 .{ .src = .{ .to_sse, .mem, .none } },
3556 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3746 .{ .src = .{ .to_sse, .to_sse, .none } },
3557 .{ .src = .{ .to_sse, .to_sse } },
3558 },3747 },
3559 .dst_temps = .{.{ .rc = .sse }},3748 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3560 .each = .{ .once = &.{3749 .each = .{ .once = &.{
3561 .{ ._, .vp_b, .maxu, .dst0y, .src0y, .src1y, ._ },3750 .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ },
3562 } },3751 } },
3563 }, .{3752 }, .{
3564 .required_features = .{ .avx2, null, null, null },3753 .required_features = .{ .sse, null, null, null },
3565 .src_constraints = .{3754 .src_constraints = .{
3566 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3755 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3567 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },3756 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
3757 .any,
3568 },3758 },
3569 .patterns = &.{3759 .patterns = &.{
3570 .{ .src = .{ .to_mem, .to_mem } },3760 .{ .src = .{ .to_mut_sse, .mem, .none } },
3571 },3761 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
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,
3582 },3762 },
3583 .dst_temps = .{.mem},3763 .dst_temps = .{.{ .ref = .src0 }},
3584 .clobbers = .{ .eflags = true },
3585 .each = .{ .once = &.{3764 .each = .{ .once = &.{
3586 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3765 .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ },
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", ._, ._, ._ },
3592 } },3766 } },
3593 }, .{3767 }, .{
3594 .required_features = .{ .avx, null, null, null },3768 .required_features = .{ .avx, null, null, null },
3595 .src_constraints = .{3769 .src_constraints = .{
3596 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3770 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3597 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3771 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
3772 .any,
3598 },3773 },
3599 .patterns = &.{3774 .patterns = &.{
3600 .{ .src = .{ .to_mem, .to_mem } },3775 .{ .src = .{ .to_sse, .mem, .none } },
3601 },3776 .{ .src = .{ .to_sse, .to_sse, .none } },
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,
3612 },3777 },
3613 .dst_temps = .{.mem},3778 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3614 .clobbers = .{ .eflags = true },
3615 .each = .{ .once = &.{3779 .each = .{ .once = &.{
3616 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3780 .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ },
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", ._, ._, ._ },
3622 } },3781 } },
3623 }, .{3782 }, .{
3624 .required_features = .{ .sse2, null, null, null },3783 .required_features = .{ .avx, null, null, null },
3625 .src_constraints = .{3784 .src_constraints = .{
3626 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3785 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3627 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },3786 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
3787 .any,
3628 },3788 },
3629 .patterns = &.{3789 .patterns = &.{
3630 .{ .src = .{ .to_mem, .to_mem } },3790 .{ .src = .{ .to_mem, .to_mem, .none } },
3631 },3791 },
3632 .extra_temps = .{3792 .extra_temps = .{
3633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3634 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },3794 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
3635 .unused,3795 .unused,
3636 .unused,3796 .unused,
3637 .unused,3797 .unused,
...@@ -3643,26 +3803,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3643,26 +3803,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3643 .dst_temps = .{.mem},3803 .dst_temps = .{.mem},
3644 .clobbers = .{ .eflags = true },3804 .clobbers = .{ .eflags = true },
3645 .each = .{ .once = &.{3805 .each = .{ .once = &.{
3646 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3806 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3647 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },3807 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3648 .{ ._, .p_b, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },3808 .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3649 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },3809 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3650 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },3810 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3811 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3652 } },3812 } },
3653 }, .{3813 }, .{
3654 .required_features = .{ .cmov, .slow_incdec, null, null },3814 .required_features = .{ .sse, null, null, null },
3655 .src_constraints = .{3815 .src_constraints = .{
3656 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3816 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3657 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3817 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
3818 .any,
3658 },3819 },
3659 .patterns = &.{3820 .patterns = &.{
3660 .{ .src = .{ .to_mem, .to_mem } },3821 .{ .src = .{ .to_mem, .to_mem, .none } },
3661 },3822 },
3662 .extra_temps = .{3823 .extra_temps = .{
3663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3664 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3825 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
3665 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3826 .unused,
3666 .unused,3827 .unused,
3667 .unused,3828 .unused,
3668 .unused,3829 .unused,
...@@ -3673,90 +3834,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3673,90 +3834,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3673 .dst_temps = .{.mem},3834 .dst_temps = .{.mem},
3674 .clobbers = .{ .eflags = true },3835 .clobbers = .{ .eflags = true },
3675 .each = .{ .once = &.{3836 .each = .{ .once = &.{
3676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3677 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },3838 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3678 .{ ._, ._, .movzx, .tmp2d, .memia(.src1b, .tmp0, .add_size), ._, ._ },3839 .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3679 .{ ._, ._, .cmp, .tmp1b, .tmp2b, ._, ._ },3840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3680 .{ ._, ._b, .cmov, .tmp1d, .tmp2d, ._, ._ },3841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3681 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
3682 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3684 } },3843 } },
3685 }, .{3844 }, .{
3686 .required_features = .{ .cmov, null, null, null },3845 .required_features = .{ .avx, null, null, null },
3687 .src_constraints = .{3846 .src_constraints = .{
3688 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3847 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3689 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3848 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3849 .any,
3690 },3850 },
3691 .patterns = &.{3851 .patterns = &.{
3692 .{ .src = .{ .to_mem, .to_mem } },3852 .{ .src = .{ .to_sse, .mem, .none } },
3693 },3853 .{ .src = .{ .to_sse, .to_sse, .none } },
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,
3704 },3854 },
3705 .dst_temps = .{.mem},3855 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3706 .clobbers = .{ .eflags = true },
3707 .each = .{ .once = &.{3856 .each = .{ .once = &.{
3708 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3857 .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ },
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", ._, ._, ._ },
3716 } },3858 } },
3717 }, .{3859 }, .{
3718 .required_features = .{ .slow_incdec, null, null, null },3860 .required_features = .{ .sse2, null, null, null },
3719 .src_constraints = .{3861 .src_constraints = .{
3720 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3862 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3721 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3863 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3864 .any,
3722 },3865 },
3723 .patterns = &.{3866 .patterns = &.{
3724 .{ .src = .{ .to_mem, .to_mem } },3867 .{ .src = .{ .to_mut_sse, .mem, .none } },
3868 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3725 },3869 },
3726 .extra_temps = .{3870 .dst_temps = .{.{ .ref = .src0 }},
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 },
3739 .each = .{ .once = &.{3871 .each = .{ .once = &.{
3740 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3872 .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ },
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", ._, ._, ._ },
3748 } },3873 } },
3749 }, .{3874 }, .{
3875 .required_features = .{ .x87, null, null, null },
3750 .src_constraints = .{3876 .src_constraints = .{
3751 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3877 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3752 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },3878 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
3879 .any,
3753 },3880 },
3754 .patterns = &.{3881 .patterns = &.{
3755 .{ .src = .{ .to_mem, .to_mem } },3882 .{ .src = .{ .mem, .mem, .none } },
3756 },3883 },
3757 .extra_temps = .{3884 .extra_temps = .{
3758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3885 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3759 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },3886 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3760 .unused,3887 .unused,
3761 .unused,3888 .unused,
3762 .unused,3889 .unused,
...@@ -3766,89 +3893,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3766,89 +3893,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3766 .unused,3893 .unused,
3767 },3894 },
3768 .dst_temps = .{.mem},3895 .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 }},
3792 .each = .{ .once = &.{3896 .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, ._, ._, ._ },
3794 } },3901 } },
3795 }, .{3902 }, .{
3796 .required_features = .{ .avx, null, null, null },3903 .required_features = .{ .avx, null, null, null },
3797 .src_constraints = .{3904 .src_constraints = .{
3798 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3905 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3799 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3906 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3907 .any,
3800 },3908 },
3801 .patterns = &.{3909 .patterns = &.{
3802 .{ .src = .{ .to_sse, .mem } },3910 .{ .src = .{ .to_sse, .mem, .none } },
3803 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3911 .{ .src = .{ .to_sse, .to_sse, .none } },
3804 .{ .src = .{ .to_sse, .to_sse } },
3805 },3912 },
3806 .dst_temps = .{.{ .rc = .sse }},3913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3807 .each = .{ .once = &.{3914 .each = .{ .once = &.{
3808 .{ ._, .vp_w, .maxs, .dst0x, .src0x, .src1x, ._ },3915 .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ },
3809 } },3916 } },
3810 }, .{3917 }, .{
3811 .required_features = .{ .sse2, null, null, null },3918 .required_features = .{ .sse2, null, null, null },
3812 .src_constraints = .{3919 .src_constraints = .{
3813 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3920 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3814 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },3921 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
3922 .any,
3815 },3923 },
3816 .patterns = &.{3924 .patterns = &.{
3817 .{ .src = .{ .to_mut_sse, .mem } },3925 .{ .src = .{ .to_mut_sse, .mem, .none } },
3818 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },3926 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
3819 .{ .src = .{ .to_mut_sse, .to_sse } },
3820 },3927 },
3821 .dst_temps = .{.{ .ref = .src0 }},3928 .dst_temps = .{.{ .ref = .src0 }},
3822 .each = .{ .once = &.{3929 .each = .{ .once = &.{
3823 .{ ._, .p_w, .maxs, .dst0x, .src1x, ._, ._ },3930 .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ },
3824 } },3931 } },
3825 }, .{3932 }, .{
3826 .required_features = .{ .avx2, null, null, null },3933 .required_features = .{ .avx, null, null, null },
3827 .src_constraints = .{3934 .src_constraints = .{
3828 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },3935 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3829 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },3936 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
3937 .any,
3830 },3938 },
3831 .patterns = &.{3939 .patterns = &.{
3832 .{ .src = .{ .to_sse, .mem } },3940 .{ .src = .{ .to_sse, .mem, .none } },
3833 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },3941 .{ .src = .{ .to_sse, .to_sse, .none } },
3834 .{ .src = .{ .to_sse, .to_sse } },
3835 },3942 },
3836 .dst_temps = .{.{ .rc = .sse }},3943 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
3837 .each = .{ .once = &.{3944 .each = .{ .once = &.{
3838 .{ ._, .vp_w, .maxs, .dst0y, .src0y, .src1y, ._ },3945 .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ },
3839 } },3946 } },
3840 }, .{3947 }, .{
3841 .required_features = .{ .avx2, null, null, null },3948 .required_features = .{ .avx, null, null, null },
3842 .src_constraints = .{3949 .src_constraints = .{
3843 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },3950 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3844 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },3951 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
3952 .any,
3845 },3953 },
3846 .patterns = &.{3954 .patterns = &.{
3847 .{ .src = .{ .to_mem, .to_mem } },3955 .{ .src = .{ .to_mem, .to_mem, .none } },
3848 },3956 },
3849 .extra_temps = .{3957 .extra_temps = .{
3850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3851 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },3959 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
3852 .unused,3960 .unused,
3853 .unused,3961 .unused,
3854 .unused,3962 .unused,
...@@ -3860,25 +3968,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3860,25 +3968,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3860 .dst_temps = .{.mem},3968 .dst_temps = .{.mem},
3861 .clobbers = .{ .eflags = true },3969 .clobbers = .{ .eflags = true },
3862 .each = .{ .once = &.{3970 .each = .{ .once = &.{
3863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },3971 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3864 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },3972 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
3865 .{ ._, .vp_w, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },3973 .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
3866 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },3974 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
3867 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },3975 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
3868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3869 } },3977 } },
3870 }, .{3978 }, .{
3871 .required_features = .{ .avx, null, null, null },3979 .required_features = .{ .sse2, null, null, null },
3872 .src_constraints = .{3980 .src_constraints = .{
3873 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },3981 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3874 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },3982 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
3983 .any,
3875 },3984 },
3876 .patterns = &.{3985 .patterns = &.{
3877 .{ .src = .{ .to_mem, .to_mem } },3986 .{ .src = .{ .to_mem, .to_mem, .none } },
3878 },3987 },
3879 .extra_temps = .{3988 .extra_temps = .{
3880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3881 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },3990 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
3882 .unused,3991 .unused,
3883 .unused,3992 .unused,
3884 .unused,3993 .unused,
...@@ -3890,26 +3999,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3890,26 +3999,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3890 .dst_temps = .{.mem},3999 .dst_temps = .{.mem},
3891 .clobbers = .{ .eflags = true },4000 .clobbers = .{ .eflags = true },
3892 .each = .{ .once = &.{4001 .each = .{ .once = &.{
3893 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3894 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4003 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
3895 .{ ._, .vp_w, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4004 .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
3896 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4005 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
3897 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4006 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3899 } },4008 } },
3900 }, .{4009 }, .{
3901 .required_features = .{ .sse2, null, null, null },4010 .required_features = .{ .x87, null, null, null },
3902 .src_constraints = .{4011 .src_constraints = .{
3903 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },4012 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
3904 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },4013 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4014 .any,
3905 },4015 },
3906 .patterns = &.{4016 .patterns = &.{
3907 .{ .src = .{ .to_mem, .to_mem } },4017 .{ .src = .{ .to_mem, .to_mem, .none } },
3908 },4018 },
3909 .extra_temps = .{4019 .extra_temps = .{
3910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3911 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },4021 .{ .type = .f64, .kind = .{ .reg = .st6 } },
3912 .unused,4022 .{ .type = .f64, .kind = .{ .reg = .st7 } },
3913 .unused,4023 .unused,
3914 .unused,4024 .unused,
3915 .unused,4025 .unused,
...@@ -3918,27 +4028,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3918,27 +4028,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3918 .unused,4028 .unused,
3919 },4029 },
3920 .dst_temps = .{.mem},4030 .dst_temps = .{.mem},
3921 .clobbers = .{ .eflags = true },
3922 .each = .{ .once = &.{4031 .each = .{ .once = &.{
3923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4032 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3924 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4033 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3925 .{ ._, .p_w, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4034 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
3926 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4035 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3927 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4036 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
4037 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
3928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3929 } },4039 } },
3930 }, .{4040 }, .{
3931 .required_features = .{ .cmov, null, null, null },4041 .required_features = .{ .x87, null, null, null },
3932 .src_constraints = .{4042 .src_constraints = .{
3933 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4043 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3934 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4044 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4045 .any,
3935 },4046 },
3936 .patterns = &.{4047 .patterns = &.{
3937 .{ .src = .{ .to_mem, .to_mem } },4048 .{ .src = .{ .mem, .mem, .none } },
3938 },4049 },
3939 .extra_temps = .{4050 .extra_temps = .{
3940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4051 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3941 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },4052 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3942 .unused,4053 .unused,
3943 .unused,4054 .unused,
3944 .unused,4055 .unused,
...@@ -3947,28 +4058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3947,28 +4058,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3947 .unused,4058 .unused,
3948 .unused,4059 .unused,
3949 },4060 },
3950 .dst_temps = .{.mem},4061 .dst_temps = .{.{ .rc = .x87 }},
3951 .clobbers = .{ .eflags = true },
3952 .each = .{ .once = &.{4062 .each = .{ .once = &.{
3953 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4063 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3954 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4064 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
3955 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4065 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
3956 .{ ._, ._l, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4066 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3957 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
3958 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
3959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3960 } },4067 } },
3961 }, .{4068 }, .{
4069 .required_features = .{ .x87, null, null, null },
3962 .src_constraints = .{4070 .src_constraints = .{
3963 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4071 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
3964 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },4072 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4073 .any,
3965 },4074 },
3966 .patterns = &.{4075 .patterns = &.{
3967 .{ .src = .{ .to_mem, .to_mem } },4076 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
3968 },4077 },
3969 .extra_temps = .{4078 .extra_temps = .{
3970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4079 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3971 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },4080 .unused,
3972 .unused,4081 .unused,
3973 .unused,4082 .unused,
3974 .unused,4083 .unused,
...@@ -3977,92 +4086,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3977,92 +4086,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3977 .unused,4086 .unused,
3978 .unused,4087 .unused,
3979 },4088 },
3980 .dst_temps = .{.mem},4089 .dst_temps = .{.{ .rc = .x87 }},
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 }},
4019 .each = .{ .once = &.{4090 .each = .{ .once = &.{
4020 .{ ._, .p_w, .maxu, .dst0x, .src1x, ._, ._ },4091 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4092 .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ },
4093 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4021 } },4094 } },
4022 }, .{4095 }, .{
4023 .required_features = .{ .sse2, null, null, null },4096 .required_features = .{ .x87, null, null, null },
4024 .src_constraints = .{4097 .src_constraints = .{
4025 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },4098 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4026 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },4099 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4100 .any,
4027 },4101 },
4028 .patterns = &.{4102 .patterns = &.{
4029 .{ .src = .{ .to_mut_sse, .mem } },4103 .{ .src = .{ .mem, .to_x87, .none } },
4030 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4104 .{ .src = .{ .to_x87, .to_x87, .none } },
4031 .{ .src = .{ .to_mut_sse, .to_sse } },
4032 },4105 },
4033 .dst_temps = .{.{ .ref = .src0 }},4106 .extra_temps = .{
4034 .each = .{ .once = &.{4107 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4035 .{ ._, .p_w, .subus, .dst0x, .src1x, ._, ._ },4108 .unused,
4036 .{ ._, .p_w, .add, .dst0x, .src1x, ._, ._ },4109 .unused,
4037 } },4110 .unused,
4038 }, .{4111 .unused,
4039 .required_features = .{ .avx2, null, null, null },4112 .unused,
4040 .src_constraints = .{4113 .unused,
4041 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },4114 .unused,
4042 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },4115 .unused,
4043 },
4044 .patterns = &.{
4045 .{ .src = .{ .to_sse, .mem } },
4046 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4047 .{ .src = .{ .to_sse, .to_sse } },
4048 },4116 },
4049 .dst_temps = .{.{ .rc = .sse }},4117 .dst_temps = .{.{ .rc = .x87 }},
4050 .each = .{ .once = &.{4118 .each = .{ .once = &.{
4051 .{ ._, .vp_w, .maxu, .dst0y, .src0y, .src1y, ._ },4119 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4120 .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ },
4121 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4052 } },4122 } },
4053 }, .{4123 }, .{
4054 .required_features = .{ .avx2, null, null, null },4124 .required_features = .{ .x87, null, null, null },
4055 .src_constraints = .{4125 .src_constraints = .{
4056 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },4126 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4057 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },4127 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4128 .any,
4058 },4129 },
4059 .patterns = &.{4130 .patterns = &.{
4060 .{ .src = .{ .to_mem, .to_mem } },4131 .{ .src = .{ .to_mem, .to_mem, .none } },
4061 },4132 },
4062 .extra_temps = .{4133 .extra_temps = .{
4063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4064 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },4135 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4065 .unused,4136 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4066 .unused,4137 .unused,
4067 .unused,4138 .unused,
4068 .unused,4139 .unused,
...@@ -4071,27 +4142,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4071,27 +4142,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4071 .unused,4142 .unused,
4072 },4143 },
4073 .dst_temps = .{.mem},4144 .dst_temps = .{.mem},
4074 .clobbers = .{ .eflags = true },
4075 .each = .{ .once = &.{4145 .each = .{ .once = &.{
4076 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4146 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4077 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4147 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4078 .{ ._, .vp_w, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4148 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4079 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },4149 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
4080 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },4150 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4151 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4082 } },4153 } },
4083 }, .{4154 }, .{
4084 .required_features = .{ .avx, null, null, null },4155 .required_features = .{ .sse, null, null, null },
4085 .src_constraints = .{4156 .src_constraints = .{
4086 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4157 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4087 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4158 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4159 .any,
4088 },4160 },
4089 .patterns = &.{4161 .patterns = &.{
4090 .{ .src = .{ .to_mem, .to_mem } },4162 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4091 },4163 },
4164 .call_frame = .{ .alignment = .@"16" },
4092 .extra_temps = .{4165 .extra_temps = .{
4093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4094 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4167 .unused,
4095 .unused,4168 .unused,
4096 .unused,4169 .unused,
4097 .unused,4170 .unused,
...@@ -4100,30 +4173,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4100,30 +4173,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4100 .unused,4173 .unused,
4101 .unused,4174 .unused,
4102 },4175 },
4103 .dst_temps = .{.mem},4176 .dst_temps = .{.{ .ref = .src0 }},
4104 .clobbers = .{ .eflags = true },4177 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4105 .each = .{ .once = &.{4178 .each = .{ .once = &.{
4106 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4179 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
4112 } },4180 } },
4113 }, .{4181 }, .{
4114 .required_features = .{ .sse4_1, null, null, null },4182 .required_features = .{ .avx, null, null, null },
4115 .src_constraints = .{4183 .src_constraints = .{
4116 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4184 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4117 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4185 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4186 .any,
4118 },4187 },
4119 .patterns = &.{4188 .patterns = &.{
4120 .{ .src = .{ .to_mem, .to_mem } },4189 .{ .src = .{ .to_mem, .to_mem, .none } },
4121 },4190 },
4191 .call_frame = .{ .alignment = .@"16" },
4122 .extra_temps = .{4192 .extra_temps = .{
4123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4124 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4194 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4125 .unused,4195 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4126 .unused,4196 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4127 .unused,4197 .unused,
4128 .unused,4198 .unused,
4129 .unused,4199 .unused,
...@@ -4131,29 +4201,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4131,29 +4201,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4131 .unused,4201 .unused,
4132 },4202 },
4133 .dst_temps = .{.mem},4203 .dst_temps = .{.mem},
4134 .clobbers = .{ .eflags = true },4204 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4135 .each = .{ .once = &.{4205 .each = .{ .once = &.{
4136 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4137 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4207 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4138 .{ ._, .p_w, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4208 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4139 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4209 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4210 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4140 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4211 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4142 } },4213 } },
4143 }, .{4214 }, .{
4144 .required_features = .{ .sse2, null, null, null },4215 .required_features = .{ .sse2, null, null, null },
4145 .src_constraints = .{4216 .src_constraints = .{
4146 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4217 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4147 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },4218 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4219 .any,
4148 },4220 },
4149 .patterns = &.{4221 .patterns = &.{
4150 .{ .src = .{ .to_mem, .to_mem } },4222 .{ .src = .{ .to_mem, .to_mem, .none } },
4151 },4223 },
4224 .call_frame = .{ .alignment = .@"16" },
4152 .extra_temps = .{4225 .extra_temps = .{
4153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4154 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },4227 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4155 .unused,4228 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4156 .unused,4229 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4157 .unused,4230 .unused,
4158 .unused,4231 .unused,
4159 .unused,4232 .unused,
...@@ -4161,30 +4234,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4161,30 +4234,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4161 .unused,4234 .unused,
4162 },4235 },
4163 .dst_temps = .{.mem},4236 .dst_temps = .{.mem},
4164 .clobbers = .{ .eflags = true },4237 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4165 .each = .{ .once = &.{4238 .each = .{ .once = &.{
4166 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4167 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4240 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4168 .{ ._, .p_w, .subus, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4241 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4169 .{ ._, .p_w, .add, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4242 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4170 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4243 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4171 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4244 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4172 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4173 } },4246 } },
4174 }, .{4247 }, .{
4175 .required_features = .{ .cmov, null, null, null },4248 .required_features = .{ .sse, null, null, null },
4176 .src_constraints = .{4249 .src_constraints = .{
4177 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4250 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4178 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4251 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4252 .any,
4179 },4253 },
4180 .patterns = &.{4254 .patterns = &.{
4181 .{ .src = .{ .to_mem, .to_mem } },4255 .{ .src = .{ .to_mem, .to_mem, .none } },
4182 },4256 },
4257 .call_frame = .{ .alignment = .@"16" },
4183 .extra_temps = .{4258 .extra_temps = .{
4184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4185 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },4260 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4186 .unused,4261 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4187 .unused,4262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
4188 .unused,4263 .unused,
4189 .unused,4264 .unused,
4190 .unused,4265 .unused,
...@@ -4192,27 +4267,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4192,27 +4267,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4192 .unused,4267 .unused,
4193 },4268 },
4194 .dst_temps = .{.mem},4269 .dst_temps = .{.mem},
4195 .clobbers = .{ .eflags = true },4270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4196 .each = .{ .once = &.{4271 .each = .{ .once = &.{
4197 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4272 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4198 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4273 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4199 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4274 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4200 .{ ._, ._b, .cmov, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4275 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4201 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },4276 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4202 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },4277 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4203 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4278 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4204 } },4279 } },
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 },
4206 .src_constraints = .{4298 .src_constraints = .{
4207 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4299 .{ .scalar_float = .{ .of = .word, .is = .word } },
4208 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },4300 .{ .scalar_float = .{ .of = .word, .is = .word } },
4301 .any,
4209 },4302 },
4210 .patterns = &.{4303 .patterns = &.{
4211 .{ .src = .{ .to_mem, .to_mem } },4304 .{ .src = .{ .to_sse, .to_sse, .none } },
4212 },4305 },
4213 .extra_temps = .{4306 .extra_temps = .{
4214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4307 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4215 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },4308 .unused,
4216 .unused,4309 .unused,
4217 .unused,4310 .unused,
4218 .unused,4311 .unused,
...@@ -4221,94 +4314,87 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4221,94 +4314,87 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4221 .unused,4314 .unused,
4222 .unused,4315 .unused,
4223 },4316 },
4224 .dst_temps = .{.mem},4317 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4225 .clobbers = .{ .eflags = true },
4226 .each = .{ .once = &.{4318 .each = .{ .once = &.{
4227 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4319 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4228 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },4320 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4229 .{ ._, ._, .cmp, .tmp1w, .memia(.src1w, .tmp0, .add_size), ._, ._ },4321 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0d, ._ },
4230 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },4322 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
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", ._, ._, ._ },
4235 } },4323 } },
4236 }, .{4324 }, .{
4237 .required_features = .{ .avx, null, null, null },4325 .required_features = .{ .sse, null, null, null },
4238 .src_constraints = .{4326 .src_constraints = .{
4239 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4327 .{ .scalar_float = .{ .of = .word, .is = .word } },
4240 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4328 .{ .scalar_float = .{ .of = .word, .is = .word } },
4329 .any,
4241 },4330 },
4242 .patterns = &.{4331 .patterns = &.{
4243 .{ .src = .{ .to_sse, .mem } },4332 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
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 } },
4256 },4333 },
4257 .patterns = &.{4334 .call_frame = .{ .alignment = .@"16" },
4258 .{ .src = .{ .to_mut_sse, .mem } },4335 .extra_temps = .{
4259 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4260 .{ .src = .{ .to_mut_sse, .to_sse } },4337 .unused,
4338 .unused,
4339 .unused,
4340 .unused,
4341 .unused,
4342 .unused,
4343 .unused,
4344 .unused,
4261 },4345 },
4262 .dst_temps = .{.{ .ref = .src0 }},4346 .dst_temps = .{.{ .ref = .src0 }},
4347 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4263 .each = .{ .once = &.{4348 .each = .{ .once = &.{
4264 .{ ._, .p_d, .maxs, .dst0x, .src1x, ._, ._ },4349 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
4265 } },4350 } },
4266 }, .{4351 }, .{
4267 .required_features = .{ .sse2, null, null, null },4352 .required_features = .{ .f16c, null, null, null },
4268 .src_constraints = .{4353 .src_constraints = .{
4269 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4354 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4270 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },4355 .{ .scalar_float = .{ .of = .qword, .is = .word } },
4356 .any,
4271 },4357 },
4272 .patterns = &.{4358 .patterns = &.{
4273 .{ .src = .{ .to_mut_sse, .mem } },4359 .{ .src = .{ .mem, .mem, .none } },
4274 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4360 .{ .src = .{ .to_sse, .mem, .none } },
4275 .{ .src = .{ .to_mut_sse, .to_sse } },4361 .{ .src = .{ .mem, .to_sse, .none } },
4276 },4362 .{ .src = .{ .to_sse, .to_sse, .none } },
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 } },
4290 },4363 },
4291 .patterns = &.{4364 .extra_temps = .{
4292 .{ .src = .{ .to_sse, .mem } },4365 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4293 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4366 .unused,
4294 .{ .src = .{ .to_sse, .to_sse } },4367 .unused,
4368 .unused,
4369 .unused,
4370 .unused,
4371 .unused,
4372 .unused,
4373 .unused,
4295 },4374 },
4296 .dst_temps = .{.{ .rc = .sse }},4375 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4297 .each = .{ .once = &.{4376 .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(.{}), ._ },
4299 } },4381 } },
4300 }, .{4382 }, .{
4301 .required_features = .{ .avx2, null, null, null },4383 .required_features = .{ .f16c, null, null, null },
4302 .src_constraints = .{4384 .src_constraints = .{
4303 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },4385 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },4386 .{ .scalar_float = .{ .of = .xword, .is = .word } },
4387 .any,
4305 },4388 },
4306 .patterns = &.{4389 .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 } },
4308 },4394 },
4309 .extra_temps = .{4395 .extra_temps = .{
4310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4396 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4311 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },4397 .unused,
4312 .unused,4398 .unused,
4313 .unused,4399 .unused,
4314 .unused,4400 .unused,
...@@ -4317,29 +4403,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4317,29 +4403,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4317 .unused,4403 .unused,
4318 .unused,4404 .unused,
4319 },4405 },
4320 .dst_temps = .{.mem},4406 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4321 .clobbers = .{ .eflags = true },
4322 .each = .{ .once = &.{4407 .each = .{ .once = &.{
4323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4408 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
4324 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4409 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
4325 .{ ._, .vp_d, .maxs, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4410 .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ },
4326 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },4411 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
4327 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4329 } },4412 } },
4330 }, .{4413 }, .{
4331 .required_features = .{ .avx, null, null, null },4414 .required_features = .{ .f16c, null, null, null },
4332 .src_constraints = .{4415 .src_constraints = .{
4333 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4416 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4334 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4417 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
4418 .any,
4335 },4419 },
4336 .patterns = &.{4420 .patterns = &.{
4337 .{ .src = .{ .to_mem, .to_mem } },4421 .{ .src = .{ .to_mem, .to_mem, .none } },
4338 },4422 },
4339 .extra_temps = .{4423 .extra_temps = .{
4340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4341 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4425 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4342 .unused,4426 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4343 .unused,4427 .unused,
4344 .unused,4428 .unused,
4345 .unused,4429 .unused,
...@@ -4350,27 +4434,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4350,27 +4434,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4350 .dst_temps = .{.mem},4434 .dst_temps = .{.mem},
4351 .clobbers = .{ .eflags = true },4435 .clobbers = .{ .eflags = true },
4352 .each = .{ .once = &.{4436 .each = .{ .once = &.{
4353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4354 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4438 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4355 .{ ._, .vp_d, .maxs, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4439 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4356 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4440 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ },
4441 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
4357 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4358 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4359 } },4444 } },
4360 }, .{4445 }, .{
4361 .required_features = .{ .sse4_1, null, null, null },4446 .required_features = .{ .avx, null, null, null },
4362 .src_constraints = .{4447 .src_constraints = .{
4363 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4448 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4364 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4449 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4450 .any,
4365 },4451 },
4366 .patterns = &.{4452 .patterns = &.{
4367 .{ .src = .{ .to_mem, .to_mem } },4453 .{ .src = .{ .to_mem, .to_mem, .none } },
4368 },4454 },
4455 .call_frame = .{ .alignment = .@"16" },
4369 .extra_temps = .{4456 .extra_temps = .{
4370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4371 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4458 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4372 .unused,4459 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4373 .unused,4460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4374 .unused,4461 .unused,
4375 .unused,4462 .unused,
4376 .unused,4463 .unused,
...@@ -4378,29 +4465,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4378,29 +4465,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4378 .unused,4465 .unused,
4379 },4466 },
4380 .dst_temps = .{.mem},4467 .dst_temps = .{.mem},
4381 .clobbers = .{ .eflags = true },4468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4382 .each = .{ .once = &.{4469 .each = .{ .once = &.{
4383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4384 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4471 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
4385 .{ ._, .p_d, .maxs, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4472 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
4386 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4473 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
4387 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4474 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4475 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4476 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4388 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4389 } },4478 } },
4390 }, .{4479 }, .{
4391 .required_features = .{ .sse2, null, null, null },4480 .required_features = .{ .sse4_1, null, null, null },
4392 .src_constraints = .{4481 .src_constraints = .{
4393 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4482 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4394 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },4483 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4484 .any,
4395 },4485 },
4396 .patterns = &.{4486 .patterns = &.{
4397 .{ .src = .{ .to_mem, .to_mem } },4487 .{ .src = .{ .to_mem, .to_mem, .none } },
4398 },4488 },
4489 .call_frame = .{ .alignment = .@"16" },
4399 .extra_temps = .{4490 .extra_temps = .{
4400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4401 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4492 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4402 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },4493 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4403 .unused,4494 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4404 .unused,4495 .unused,
4405 .unused,4496 .unused,
4406 .unused,4497 .unused,
...@@ -4408,172 +4499,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4408,172 +4499,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4408 .unused,4499 .unused,
4409 },4500 },
4410 .dst_temps = .{.mem},4501 .dst_temps = .{.mem},
4411 .clobbers = .{ .eflags = true },4502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4412 .each = .{ .once = &.{4503 .each = .{ .once = &.{
4413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4414 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4505 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4415 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },4506 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4416 .{ ._, .p_d, .cmpgt, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4507 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4417 .{ ._, .p_, .@"and", .tmp2x, .tmp1x, ._, ._ },4508 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4418 .{ ._, .p_, .andn, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4509 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4419 .{ ._, .p_, .@"or", .tmp1x, .tmp2x, ._, ._ },4510 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
4420 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4511 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
4421 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4423 } },4513 } },
4424 }, .{4514 }, .{
4425 .required_features = .{ .cmov, null, null, null },4515 .required_features = .{ .sse2, null, null, null },
4426 .src_constraints = .{4516 .src_constraints = .{
4427 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4517 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4428 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4518 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4519 .any,
4429 },4520 },
4430 .patterns = &.{4521 .patterns = &.{
4431 .{ .src = .{ .to_mem, .to_mem } },4522 .{ .src = .{ .to_mem, .to_mem, .none } },
4432 },4523 },
4524 .call_frame = .{ .alignment = .@"16" },
4433 .extra_temps = .{4525 .extra_temps = .{
4434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4435 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },4527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4436 .unused,4528 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4437 .unused,4529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4438 .unused,4530 .{ .type = .f16, .kind = .{ .reg = .ax } },
4439 .unused,4531 .unused,
4440 .unused,4532 .unused,
4441 .unused,4533 .unused,
4442 .unused,4534 .unused,
4443 },4535 },
4444 .dst_temps = .{.mem},4536 .dst_temps = .{.mem},
4445 .clobbers = .{ .eflags = true },4537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4446 .each = .{ .once = &.{4538 .each = .{ .once = &.{
4447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4448 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4540 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
4449 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4541 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
4450 .{ ._, ._l, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4542 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4451 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },4543 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
4452 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
4453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4454 } },4549 } },
4455 }, .{4550 }, .{
4551 .required_features = .{ .sse, null, null, null },
4456 .src_constraints = .{4552 .src_constraints = .{
4457 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4553 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4458 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },4554 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
4555 .any,
4459 },4556 },
4460 .patterns = &.{4557 .patterns = &.{
4461 .{ .src = .{ .to_mem, .to_mem } },4558 .{ .src = .{ .to_mem, .to_mem, .none } },
4462 },4559 },
4560 .call_frame = .{ .alignment = .@"16" },
4463 .extra_temps = .{4561 .extra_temps = .{
4464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4465 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },4563 .{ .type = .f16, .kind = .{ .reg = .ax } },
4466 .unused,4564 .{ .type = .f32, .kind = .mem },
4467 .unused,4565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4468 .unused,4566 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
4469 .unused,4567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
4470 .unused,4568 .unused,
4471 .unused,4569 .unused,
4472 .unused,4570 .unused,
4473 },4571 },
4474 .dst_temps = .{.mem},4572 .dst_temps = .{.mem},
4475 .clobbers = .{ .eflags = true },4573 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4476 .each = .{ .once = &.{4574 .each = .{ .once = &.{
4477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4575 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4478 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4576 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
4479 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4577 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4480 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },4578 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
4481 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4579 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
4482 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },4580 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
4483 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
4484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4485 } },4588 } },
4486 }, .{4589 }, .{
4487 .required_features = .{ .avx, null, null, null },4590 .required_features = .{ .avx, null, null, null },
4488 .src_constraints = .{4591 .src_constraints = .{
4489 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4592 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4490 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4593 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4594 .any,
4491 },4595 },
4492 .patterns = &.{4596 .patterns = &.{
4493 .{ .src = .{ .to_sse, .mem } },4597 .{ .src = .{ .to_sse, .mem, .none } },
4494 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4598 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4495 .{ .src = .{ .to_sse, .to_sse } },4599 .{ .src = .{ .to_sse, .to_sse, .none } },
4496 },4600 },
4497 .dst_temps = .{.{ .rc = .sse }},4601 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4498 .each = .{ .once = &.{4602 .each = .{ .once = &.{
4499 .{ ._, .vp_d, .maxu, .dst0x, .src0x, .src1x, ._ },4603 .{ ._, .v_ss, .mul, .dst0x, .src0x, .src1d, ._ },
4500 } },4604 } },
4501 }, .{4605 }, .{
4502 .required_features = .{ .sse4_1, null, null, null },4606 .required_features = .{ .sse, null, null, null },
4503 .src_constraints = .{4607 .src_constraints = .{
4504 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4608 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4505 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4609 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
4610 .any,
4506 },4611 },
4507 .patterns = &.{4612 .patterns = &.{
4508 .{ .src = .{ .to_mut_sse, .mem } },4613 .{ .src = .{ .to_mut_sse, .mem, .none } },
4509 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4614 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
4510 .{ .src = .{ .to_mut_sse, .to_sse } },4615 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
4511 },4616 },
4512 .dst_temps = .{.{ .ref = .src0 }},4617 .dst_temps = .{.{ .ref = .src0 }},
4513 .each = .{ .once = &.{4618 .each = .{ .once = &.{
4514 .{ ._, .p_d, .maxu, .dst0x, .src1x, ._, ._ },4619 .{ ._, ._ss, .mul, .dst0x, .src1d, ._, ._ },
4515 } },4620 } },
4516 }, .{4621 }, .{
4517 .required_features = .{ .sse2, null, null, null },4622 .required_features = .{ .avx, null, null, null },
4518 .src_constraints = .{4623 .src_constraints = .{
4519 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4624 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4520 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4625 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4626 .any,
4521 },4627 },
4522 .patterns = &.{4628 .patterns = &.{
4523 .{ .src = .{ .to_mut_sse, .mem } },4629 .{ .src = .{ .to_sse, .mem, .none } },
4524 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },4630 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4525 .{ .src = .{ .to_mut_sse, .to_sse } },4631 .{ .src = .{ .to_sse, .to_sse, .none } },
4526 },4632 },
4527 .extra_temps = .{4633 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },4634 .each = .{ .once = &.{
4529 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },4635 .{ ._, .v_ps, .mul, .dst0x, .src0x, .src1x, ._ },
4530 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4636 } },
4531 .unused,4637 }, .{
4532 .unused,4638 .required_features = .{ .sse, null, null, null },
4533 .unused,4639 .src_constraints = .{
4534 .unused,4640 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4535 .unused,4641 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
4536 .unused,4642 .any,
4537 },4643 },
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 }},
4539 .each = .{ .once = &.{4650 .each = .{ .once = &.{
4540 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4651 .{ ._, ._ps, .mul, .dst0x, .src1x, ._, ._ },
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, ._, ._ },
4549 } },4652 } },
4550 }, .{4653 }, .{
4551 .required_features = .{ .avx2, null, null, null },4654 .required_features = .{ .avx, null, null, null },
4552 .src_constraints = .{4655 .src_constraints = .{
4553 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4656 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4554 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4657 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
4658 .any,
4555 },4659 },
4556 .patterns = &.{4660 .patterns = &.{
4557 .{ .src = .{ .to_sse, .mem } },4661 .{ .src = .{ .to_sse, .mem, .none } },
4558 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },4662 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
4559 .{ .src = .{ .to_sse, .to_sse } },4663 .{ .src = .{ .to_sse, .to_sse, .none } },
4560 },4664 },
4561 .dst_temps = .{.{ .rc = .sse }},4665 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4562 .each = .{ .once = &.{4666 .each = .{ .once = &.{
4563 .{ ._, .vp_d, .maxu, .dst0y, .src0y, .src1y, ._ },4667 .{ ._, .v_ps, .mul, .dst0y, .src0y, .src1y, ._ },
4564 } },4668 } },
4565 }, .{4669 }, .{
4566 .required_features = .{ .avx2, null, null, null },4670 .required_features = .{ .avx, null, null, null },
4567 .src_constraints = .{4671 .src_constraints = .{
4568 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4672 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4569 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },4673 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
4674 .any,
4570 },4675 },
4571 .patterns = &.{4676 .patterns = &.{
4572 .{ .src = .{ .to_mem, .to_mem } },4677 .{ .src = .{ .to_mem, .to_mem, .none } },
4573 },4678 },
4574 .extra_temps = .{4679 .extra_temps = .{
4575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4576 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },4681 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
4577 .unused,4682 .unused,
4578 .unused,4683 .unused,
4579 .unused,4684 .unused,
...@@ -4585,25 +4690,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4585,25 +4690,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4585 .dst_temps = .{.mem},4690 .dst_temps = .{.mem},
4586 .clobbers = .{ .eflags = true },4691 .clobbers = .{ .eflags = true },
4587 .each = .{ .once = &.{4692 .each = .{ .once = &.{
4588 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4589 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },4694 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4590 .{ ._, .vp_d, .maxu, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },4695 .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4591 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },4696 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4592 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },4697 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4593 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4698 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4594 } },4699 } },
4595 }, .{4700 }, .{
4596 .required_features = .{ .avx, null, null, null },4701 .required_features = .{ .sse, null, null, null },
4597 .src_constraints = .{4702 .src_constraints = .{
4598 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4703 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4599 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4704 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
4705 .any,
4600 },4706 },
4601 .patterns = &.{4707 .patterns = &.{
4602 .{ .src = .{ .to_mem, .to_mem } },4708 .{ .src = .{ .to_mem, .to_mem, .none } },
4603 },4709 },
4604 .extra_temps = .{4710 .extra_temps = .{
4605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4606 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4712 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
4607 .unused,4713 .unused,
4608 .unused,4714 .unused,
4609 .unused,4715 .unused,
...@@ -4615,25 +4721,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4615,25 +4721,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4615 .dst_temps = .{.mem},4721 .dst_temps = .{.mem},
4616 .clobbers = .{ .eflags = true },4722 .clobbers = .{ .eflags = true },
4617 .each = .{ .once = &.{4723 .each = .{ .once = &.{
4618 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4724 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4619 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4725 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4620 .{ ._, .vp_d, .maxu, .tmp1x, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._ },4726 .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4621 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4727 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4622 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4728 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4623 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4624 } },4730 } },
4625 }, .{4731 }, .{
4626 .required_features = .{ .sse4_1, null, null, null },4732 .required_features = .{ .avx, null, null, null },
4627 .src_constraints = .{4733 .src_constraints = .{
4628 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4734 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
4629 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },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,
4630 },4769 },
4631 .patterns = &.{4770 .patterns = &.{
4632 .{ .src = .{ .to_mem, .to_mem } },4771 .{ .src = .{ .mem, .mem, .none } },
4633 },4772 },
4634 .extra_temps = .{4773 .extra_temps = .{
4635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4774 .{ .type = .f64, .kind = .{ .reg = .st6 } },
4636 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4775 .{ .type = .f64, .kind = .{ .reg = .st7 } },
4637 .unused,4776 .unused,
4638 .unused,4777 .unused,
4639 .unused,4778 .unused,
...@@ -4643,67 +4782,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4643,67 +4782,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4643 .unused,4782 .unused,
4644 },4783 },
4645 .dst_temps = .{.mem},4784 .dst_temps = .{.mem},
4646 .clobbers = .{ .eflags = true },
4647 .each = .{ .once = &.{4785 .each = .{ .once = &.{
4648 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4786 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
4649 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4787 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
4650 .{ ._, .p_d, .maxu, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4788 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4651 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },4789 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
4652 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4790 } },
4653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._ },
4654 } },4806 } },
4655 }, .{4807 }, .{
4656 .required_features = .{ .sse2, null, null, null },4808 .required_features = .{ .sse2, null, null, null },
4657 .src_constraints = .{4809 .src_constraints = .{
4658 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4810 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4659 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },4811 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
4812 .any,
4660 },4813 },
4661 .patterns = &.{4814 .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 } },
4663 },4818 },
4664 .extra_temps = .{4819 .dst_temps = .{.{ .ref = .src0 }},
4665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4820 .each = .{ .once = &.{
4666 .{ .type = .vector_4_u32, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },4821 .{ ._, ._pd, .mul, .dst0x, .src1x, ._, ._ },
4667 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4822 } },
4668 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4823 }, .{
4669 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4824 .required_features = .{ .avx, null, null, null },
4670 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4825 .src_constraints = .{
4671 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },4826 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4672 .unused,4827 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
4673 .unused,4828 .any,
4674 },4829 },
4675 .dst_temps = .{.mem},4830 .patterns = &.{
4676 .clobbers = .{ .eflags = true },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 } }},
4677 .each = .{ .once = &.{4836 .each = .{ .once = &.{
4678 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4837 .{ ._, .v_pd, .mul, .dst0y, .src0y, .src1y, ._ },
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", ._, ._, ._ },
4694 } },4838 } },
4695 }, .{4839 }, .{
4696 .required_features = .{ .cmov, null, null, null },4840 .required_features = .{ .avx, null, null, null },
4697 .src_constraints = .{4841 .src_constraints = .{
4698 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4842 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4699 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4843 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
4844 .any,
4700 },4845 },
4701 .patterns = &.{4846 .patterns = &.{
4702 .{ .src = .{ .to_mem, .to_mem } },4847 .{ .src = .{ .to_mem, .to_mem, .none } },
4703 },4848 },
4704 .extra_temps = .{4849 .extra_temps = .{
4705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4706 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },4851 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
4707 .unused,4852 .unused,
4708 .unused,4853 .unused,
4709 .unused,4854 .unused,
...@@ -4715,25 +4860,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4715,25 +4860,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4715 .dst_temps = .{.mem},4860 .dst_temps = .{.mem},
4716 .clobbers = .{ .eflags = true },4861 .clobbers = .{ .eflags = true },
4717 .each = .{ .once = &.{4862 .each = .{ .once = &.{
4718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4719 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4864 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
4720 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4865 .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
4721 .{ ._, ._b, .cmov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4866 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
4722 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },4867 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4723 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4724 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4725 } },4869 } },
4726 }, .{4870 }, .{
4871 .required_features = .{ .sse2, null, null, null },
4727 .src_constraints = .{4872 .src_constraints = .{
4728 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4873 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4729 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },4874 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
4875 .any,
4730 },4876 },
4731 .patterns = &.{4877 .patterns = &.{
4732 .{ .src = .{ .to_mem, .to_mem } },4878 .{ .src = .{ .to_mem, .to_mem, .none } },
4733 },4879 },
4734 .extra_temps = .{4880 .extra_temps = .{
4735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4736 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },4882 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
4737 .unused,4883 .unused,
4738 .unused,4884 .unused,
4739 .unused,4885 .unused,
...@@ -4745,43 +4891,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4745,43 +4891,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4745 .dst_temps = .{.mem},4891 .dst_temps = .{.mem},
4746 .clobbers = .{ .eflags = true },4892 .clobbers = .{ .eflags = true },
4747 .each = .{ .once = &.{4893 .each = .{ .once = &.{
4748 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4749 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },4895 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4750 .{ ._, ._, .cmp, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4896 .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4751 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },4897 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4752 .{ ._, ._, .mov, .tmp1d, .memia(.src1d, .tmp0, .add_size), ._, ._ },4898 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4753 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
4754 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
4755 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4756 } },4900 } },
4757 }, .{4901 }, .{
4758 .required_features = .{ .avx, null, null, null },4902 .required_features = .{ .x87, null, null, null },
4759 .src_constraints = .{4903 .src_constraints = .{
4760 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },4904 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4761 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },4905 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
4906 .any,
4762 },4907 },
4763 .patterns = &.{4908 .patterns = &.{
4764 .{ .src = .{ .to_sse, .to_sse } },4909 .{ .src = .{ .to_mem, .to_mem, .none } },
4765 },4910 },
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},
4767 .each = .{ .once = &.{4923 .each = .{ .once = &.{
4768 .{ ._, .vp_q, .cmpgt, .dst0x, .src1x, .src0x, ._ },4924 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4769 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },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", ._, ._, ._ },
4770 } },4931 } },
4771 }, .{4932 }, .{
4772 .required_features = .{ .sse4_2, null, null, null },4933 .required_features = .{ .x87, null, null, null },
4773 .src_constraints = .{4934 .src_constraints = .{
4774 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },4935 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4775 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },4936 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4937 .any,
4776 },4938 },
4777 .patterns = &.{4939 .patterns = &.{
4778 .{ .src = .{ .to_mut_sse, .mem } },4940 .{ .src = .{ .mem, .mem, .none } },
4779 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
4780 .{ .src = .{ .to_mut_sse, .to_sse } },
4781 },4941 },
4782 .extra_temps = .{4942 .extra_temps = .{
4783 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },4943 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4784 .unused,4944 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4785 .unused,4945 .unused,
4786 .unused,4946 .unused,
4787 .unused,4947 .unused,
...@@ -4790,40 +4950,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4790,40 +4950,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4790 .unused,4950 .unused,
4791 .unused,4951 .unused,
4792 },4952 },
4793 .dst_temps = .{.{ .ref = .src0 }},4953 .dst_temps = .{.{ .rc = .x87 }},
4794 .each = .{ .once = &.{4954 .each = .{ .once = &.{
4795 .{ ._, ._dqa, .mov, .tmp0x, .src1x, ._, ._ },4955 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4796 .{ ._, .p_q, .cmpgt, .tmp0x, .src0x, ._, ._ },4956 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4797 .{ ._, .p_b, .blendv, .dst0x, .src1x, .tmp0x, ._ },4957 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4958 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4798 } },4959 } },
4799 }, .{4960 }, .{
4800 .required_features = .{ .avx2, null, null, null },4961 .required_features = .{ .x87, null, null, null },
4801 .src_constraints = .{4962 .src_constraints = .{
4802 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },4963 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4803 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },4964 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4965 .any,
4804 },4966 },
4805 .patterns = &.{4967 .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 } },
4807 },4971 },
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 }},
4809 .each = .{ .once = &.{4984 .each = .{ .once = &.{
4810 .{ ._, .vp_q, .cmpgt, .dst0y, .src1y, .src0y, ._ },4985 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4811 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },4986 .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ },
4987 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4812 } },4988 } },
4813 }, .{4989 }, .{
4814 .required_features = .{ .avx2, null, null, null },4990 .required_features = .{ .x87, null, null, null },
4815 .src_constraints = .{4991 .src_constraints = .{
4816 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },4992 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4817 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },4993 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4994 .any,
4818 },4995 },
4819 .patterns = &.{4996 .patterns = &.{
4820 .{ .src = .{ .to_mem, .to_mem } },4997 .{ .src = .{ .to_mem, .to_mem, .none } },
4821 },4998 },
4822 .extra_temps = .{4999 .extra_temps = .{
4823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4824 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5001 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4825 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5002 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4826 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },5003 .unused,
4827 .unused,5004 .unused,
4828 .unused,5005 .unused,
4829 .unused,5006 .unused,
...@@ -4831,63 +5008,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4831,63 +5008,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4831 .unused,5008 .unused,
4832 },5009 },
4833 .dst_temps = .{.mem},5010 .dst_temps = .{.mem},
4834 .clobbers = .{ .eflags = true },
4835 .each = .{ .once = &.{5011 .each = .{ .once = &.{
4836 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4837 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5013 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4838 .{ ._, .v_dqa, .mov, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5014 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4839 .{ ._, .vp_q, .cmpgt, .tmp3y, .tmp2y, .tmp1y, ._ },5015 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
4840 .{ ._, .vp_b, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },5016 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
4841 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },5017 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4842 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
4843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5018 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4844 } },5019 } },
4845 }, .{5020 }, .{
4846 .required_features = .{ .avx, null, null, null },5021 .required_features = .{ .sse, null, null, null },
4847 .src_constraints = .{5022 .src_constraints = .{
4848 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5023 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
4849 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5024 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5025 .any,
4850 },5026 },
4851 .patterns = &.{5027 .patterns = &.{
4852 .{ .src = .{ .to_mem, .to_mem } },5028 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4853 },5029 },
5030 .call_frame = .{ .alignment = .@"16" },
4854 .extra_temps = .{5031 .extra_temps = .{
4855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5032 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4856 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5033 .unused,
4857 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5034 .unused,
4858 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5035 .unused,
4859 .unused,5036 .unused,
4860 .unused,5037 .unused,
4861 .unused,5038 .unused,
4862 .unused,5039 .unused,
4863 .unused,5040 .unused,
4864 },5041 },
4865 .dst_temps = .{.mem},5042 .dst_temps = .{.{ .ref = .src0 }},
4866 .clobbers = .{ .eflags = true },5043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4867 .each = .{ .once = &.{5044 .each = .{ .once = &.{
4868 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5045 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
4876 } },5046 } },
4877 }, .{5047 }, .{
4878 .required_features = .{ .sse4_2, null, null, null },5048 .required_features = .{ .avx, null, null, null },
4879 .src_constraints = .{5049 .src_constraints = .{
4880 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5050 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4881 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },5051 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5052 .any,
4882 },5053 },
4883 .patterns = &.{5054 .patterns = &.{
4884 .{ .src = .{ .to_mem, .to_mem } },5055 .{ .src = .{ .to_mem, .to_mem, .none } },
4885 },5056 },
5057 .call_frame = .{ .alignment = .@"16" },
4886 .extra_temps = .{5058 .extra_temps = .{
4887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4888 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5060 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4889 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },5061 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4890 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },5062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4891 .unused,5063 .unused,
4892 .unused,5064 .unused,
4893 .unused,5065 .unused,
...@@ -4895,32 +5067,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4895,32 +5067,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4895 .unused,5067 .unused,
4896 },5068 },
4897 .dst_temps = .{.mem},5069 .dst_temps = .{.mem},
4898 .clobbers = .{ .eflags = true },5070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4899 .each = .{ .once = &.{5071 .each = .{ .once = &.{
4900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5072 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4901 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5073 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4902 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5074 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4903 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },5075 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4904 .{ ._, .p_q, .cmpgt, .tmp3x, .tmp1x, ._, ._ },5076 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4905 .{ ._, .p_b, .blendv, .tmp1x, .tmp2x, .tmp3x, ._ },
4906 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
4907 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5077 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4908 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5078 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4909 } },5079 } },
4910 }, .{5080 }, .{
4911 .required_features = .{ .@"64bit", .cmov, null, null },5081 .required_features = .{ .sse2, null, null, null },
4912 .src_constraints = .{5082 .src_constraints = .{
4913 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5083 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4914 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5084 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5085 .any,
4915 },5086 },
4916 .patterns = &.{5087 .patterns = &.{
4917 .{ .src = .{ .to_mem, .to_mem } },5088 .{ .src = .{ .to_mem, .to_mem, .none } },
4918 },5089 },
5090 .call_frame = .{ .alignment = .@"16" },
4919 .extra_temps = .{5091 .extra_temps = .{
4920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4921 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },5093 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4922 .unused,5094 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4923 .unused,5095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4924 .unused,5096 .unused,
4925 .unused,5097 .unused,
4926 .unused,5098 .unused,
...@@ -4928,30 +5100,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4928,30 +5100,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4928 .unused,5100 .unused,
4929 },5101 },
4930 .dst_temps = .{.mem},5102 .dst_temps = .{.mem},
4931 .clobbers = .{ .eflags = true },5103 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4932 .each = .{ .once = &.{5104 .each = .{ .once = &.{
4933 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4934 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5106 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4935 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5107 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4936 .{ ._, ._l, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5108 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4937 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },5109 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4938 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },5110 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4939 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4940 } },5112 } },
4941 }, .{5113 }, .{
4942 .required_features = .{ .@"64bit", null, null, null },5114 .required_features = .{ .sse, null, null, null },
4943 .src_constraints = .{5115 .src_constraints = .{
4944 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5116 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
4945 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },5117 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5118 .any,
4946 },5119 },
4947 .patterns = &.{5120 .patterns = &.{
4948 .{ .src = .{ .to_mem, .to_mem } },5121 .{ .src = .{ .to_mem, .to_mem, .none } },
4949 },5122 },
5123 .call_frame = .{ .alignment = .@"16" },
4950 .extra_temps = .{5124 .extra_temps = .{
4951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4952 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },5126 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4953 .unused,5127 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4954 .unused,5128 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
4955 .unused,5129 .unused,
4956 .unused,5130 .unused,
4957 .unused,5131 .unused,
...@@ -4959,32 +5133,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4959,32 +5133,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4959 .unused,5133 .unused,
4960 },5134 },
4961 .dst_temps = .{.mem},5135 .dst_temps = .{.mem},
4962 .clobbers = .{ .eflags = true },5136 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
4963 .each = .{ .once = &.{5137 .each = .{ .once = &.{
4964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4965 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5139 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
4966 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5140 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
4967 .{ ._, ._nl, .j, .@"1f", ._, ._, ._ },5141 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
4968 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5142 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
4969 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },5143 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4970 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
4971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4972 } },5145 } },
4973 }, .{5146 } }) catch |err| switch (err) {
4974 .required_features = .{ .avx, null, null, null },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 },
4975 .src_constraints = .{5168 .src_constraints = .{
4976 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5169 .{ .scalar_float = .{ .of = .word, .is = .word } },
4977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5170 .{ .scalar_float = .{ .of = .word, .is = .word } },
5171 .any,
4978 },5172 },
4979 .patterns = &.{5173 .patterns = &.{
4980 .{ .src = .{ .to_sse, .mem } },5174 .{ .src = .{ .to_sse, .to_sse, .none } },
4981 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },
4982 .{ .src = .{ .to_sse, .to_sse } },
4983 },5175 },
4984 .extra_temps = .{5176 .extra_temps = .{
4985 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5177 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
4986 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5178 .unused,
4987 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5179 .unused,
4988 .unused,5180 .unused,
4989 .unused,5181 .unused,
4990 .unused,5182 .unused,
...@@ -4992,31 +5184,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4992,31 +5184,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4992 .unused,5184 .unused,
4993 .unused,5185 .unused,
4994 },5186 },
4995 .dst_temps = .{.{ .rc = .sse }},5187 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
4996 .each = .{ .once = &.{5188 .each = .{ .once = &.{
4997 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5189 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
4998 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5190 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
4999 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },5191 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
5000 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },5192 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5001 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
5002 .{ ._, .vp_b, .blendv, .dst0x, .src0x, .src1x, .dst0x },
5003 } },5193 } },
5004 }, .{5194 }, .{
5005 .required_features = .{ .sse4_2, null, null, null },5195 .required_features = .{ .sse, null, null, null },
5006 .src_constraints = .{5196 .src_constraints = .{
5007 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5197 .{ .scalar_float = .{ .of = .word, .is = .word } },
5008 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5198 .{ .scalar_float = .{ .of = .word, .is = .word } },
5199 .any,
5009 },5200 },
5010 .patterns = &.{5201 .patterns = &.{
5011 .{ .src = .{ .to_mut_sse, .mem } },5202 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
5012 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5013 .{ .src = .{ .to_mut_sse, .to_sse } },
5014 },5203 },
5204 .call_frame = .{ .alignment = .@"16" },
5015 .extra_temps = .{5205 .extra_temps = .{
5016 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5206 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5017 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5207 .unused,
5018 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5208 .unused,
5019 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },5209 .unused,
5020 .unused,5210 .unused,
5021 .unused,5211 .unused,
5022 .unused,5212 .unused,
...@@ -5024,30 +5214,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5024,30 +5214,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5024 .unused,5214 .unused,
5025 },5215 },
5026 .dst_temps = .{.{ .ref = .src0 }},5216 .dst_temps = .{.{ .ref = .src0 }},
5217 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5027 .each = .{ .once = &.{5218 .each = .{ .once = &.{
5028 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5219 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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, ._ },
5035 } },5220 } },
5036 }, .{5221 }, .{
5037 .required_features = .{ .avx2, null, null, null },5222 .required_features = .{ .f16c, null, null, null },
5038 .src_constraints = .{5223 .src_constraints = .{
5039 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5224 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5040 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5225 .{ .scalar_float = .{ .of = .qword, .is = .word } },
5226 .any,
5041 },5227 },
5042 .patterns = &.{5228 .patterns = &.{
5043 .{ .src = .{ .to_sse, .mem } },5229 .{ .src = .{ .mem, .mem, .none } },
5044 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },5230 .{ .src = .{ .to_sse, .mem, .none } },
5045 .{ .src = .{ .to_sse, .to_sse } },5231 .{ .src = .{ .mem, .to_sse, .none } },
5232 .{ .src = .{ .to_sse, .to_sse, .none } },
5046 },5233 },
5047 .extra_temps = .{5234 .extra_temps = .{
5048 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },5235 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5049 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5236 .unused,
5050 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5237 .unused,
5051 .unused,5238 .unused,
5052 .unused,5239 .unused,
5053 .unused,5240 .unused,
...@@ -5055,139 +5242,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5055,139 +5242,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5055 .unused,5242 .unused,
5056 .unused,5243 .unused,
5057 },5244 },
5058 .dst_temps = .{.{ .rc = .sse }},5245 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5059 .each = .{ .once = &.{5246 .each = .{ .once = &.{
5060 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5247 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
5061 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },5248 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
5062 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },5249 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
5063 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },5250 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
5064 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
5065 .{ ._, .vp_b, .blendv, .dst0y, .src0y, .src1y, .dst0y },
5066 } },5251 } },
5067 }, .{5252 }, .{
5068 .required_features = .{ .avx2, null, null, null },5253 .required_features = .{ .f16c, null, null, null },
5069 .src_constraints = .{5254 .src_constraints = .{
5070 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5255 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5071 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },5256 .{ .scalar_float = .{ .of = .xword, .is = .word } },
5257 .any,
5072 },5258 },
5073 .patterns = &.{5259 .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 } },
5075 },5264 },
5076 .extra_temps = .{5265 .extra_temps = .{
5077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5266 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
5078 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5267 .unused,
5079 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5268 .unused,
5080 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5269 .unused,
5081 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5270 .unused,
5082 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5271 .unused,
5083 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },5272 .unused,
5084 .unused,5273 .unused,
5085 .unused,5274 .unused,
5086 },5275 },
5087 .dst_temps = .{.mem},5276 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5088 .clobbers = .{ .eflags = true },
5089 .each = .{ .once = &.{5277 .each = .{ .once = &.{
5090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5278 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
5091 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },5279 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
5092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5280 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
5093 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5281 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
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", ._, ._, ._ },
5102 } },5282 } },
5103 }, .{5283 }, .{
5104 .required_features = .{ .avx, null, null, null },5284 .required_features = .{ .f16c, null, null, null },
5105 .src_constraints = .{5285 .src_constraints = .{
5106 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5286 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5107 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5287 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
5288 .any,
5108 },5289 },
5109 .patterns = &.{5290 .patterns = &.{
5110 .{ .src = .{ .to_mem, .to_mem } },5291 .{ .src = .{ .to_mem, .to_mem, .none } },
5111 },5292 },
5112 .extra_temps = .{5293 .extra_temps = .{
5113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5114 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5295 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5115 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5296 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5116 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5297 .unused,
5117 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5298 .unused,
5118 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5299 .unused,
5119 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5300 .unused,
5120 .unused,5301 .unused,
5121 .unused,5302 .unused,
5122 },5303 },
5123 .dst_temps = .{.mem},5304 .dst_temps = .{.mem},
5124 .clobbers = .{ .eflags = true },5305 .clobbers = .{ .eflags = true },
5125 .each = .{ .once = &.{5306 .each = .{ .once = &.{
5126 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5307 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5127 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5308 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5128 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5309 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5129 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5310 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
5130 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5311 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
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, ._, ._ },
5136 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5312 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5137 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5138 } },5314 } },
5139 }, .{5315 }, .{
5140 .required_features = .{ .sse4_2, null, null, null },5316 .required_features = .{ .avx, null, null, null },
5141 .src_constraints = .{5317 .src_constraints = .{
5142 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5318 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5143 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },5319 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5320 .any,
5144 },5321 },
5145 .patterns = &.{5322 .patterns = &.{
5146 .{ .src = .{ .to_mem, .to_mem } },5323 .{ .src = .{ .to_mem, .to_mem, .none } },
5147 },5324 },
5325 .call_frame = .{ .alignment = .@"16" },
5148 .extra_temps = .{5326 .extra_temps = .{
5149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5150 .{ .type = .u64, .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .none } } },5328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5151 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5329 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5152 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5330 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5331 .unused,
5154 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },5332 .unused,
5155 .{ .type = .vector_2_u64, .kind = .{ .reg = .xmm0 } },5333 .unused,
5156 .unused,5334 .unused,
5157 .unused,5335 .unused,
5158 },5336 },
5159 .dst_temps = .{.mem},5337 .dst_temps = .{.mem},
5160 .clobbers = .{ .eflags = true },5338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5161 .each = .{ .once = &.{5339 .each = .{ .once = &.{
5162 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5163 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },5341 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5164 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5342 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
5165 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },5343 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
5166 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },5344 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5167 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5345 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5168 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5346 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
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), ._, ._ },
5175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5347 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5176 } },5348 } },
5177 }, .{5349 }, .{
5178 .required_features = .{ .@"64bit", .cmov, null, null },5350 .required_features = .{ .sse4_1, null, null, null },
5179 .src_constraints = .{5351 .src_constraints = .{
5180 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5352 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5181 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5353 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5354 .any,
5182 },5355 },
5183 .patterns = &.{5356 .patterns = &.{
5184 .{ .src = .{ .to_mem, .to_mem } },5357 .{ .src = .{ .to_mem, .to_mem, .none } },
5185 },5358 },
5359 .call_frame = .{ .alignment = .@"16" },
5186 .extra_temps = .{5360 .extra_temps = .{
5187 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5361 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5188 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },5362 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5189 .unused,5363 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5190 .unused,5364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5191 .unused,5365 .unused,
5192 .unused,5366 .unused,
5193 .unused,5367 .unused,
...@@ -5195,212 +5369,181 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5195,212 +5369,181 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5195 .unused,5369 .unused,
5196 },5370 },
5197 .dst_temps = .{.mem},5371 .dst_temps = .{.mem},
5198 .clobbers = .{ .eflags = true },5372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5199 .each = .{ .once = &.{5373 .each = .{ .once = &.{
5200 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5201 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5375 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5202 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5376 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5203 .{ ._, ._b, .cmov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5377 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5204 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },5378 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5205 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },5379 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5380 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
5381 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5207 } },5383 } },
5208 }, .{5384 }, .{
5209 .required_features = .{ .@"64bit", null, null, null },5385 .required_features = .{ .sse2, null, null, null },
5210 .src_constraints = .{5386 .src_constraints = .{
5211 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5387 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5212 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },5388 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5389 .any,
5213 },5390 },
5214 .patterns = &.{5391 .patterns = &.{
5215 .{ .src = .{ .to_mem, .to_mem } },5392 .{ .src = .{ .to_mem, .to_mem, .none } },
5216 },5393 },
5394 .call_frame = .{ .alignment = .@"16" },
5217 .extra_temps = .{5395 .extra_temps = .{
5218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5219 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },5397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5220 .unused,5398 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5221 .unused,5399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5222 .unused,5400 .{ .type = .f16, .kind = .{ .reg = .ax } },
5223 .unused,5401 .unused,
5224 .unused,5402 .unused,
5225 .unused,5403 .unused,
5226 .unused,5404 .unused,
5227 },5405 },
5228 .dst_temps = .{.mem},5406 .dst_temps = .{.mem},
5229 .clobbers = .{ .eflags = true },5407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5230 .each = .{ .once = &.{5408 .each = .{ .once = &.{
5231 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5232 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5410 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5233 .{ ._, ._, .cmp, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5411 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5234 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },5412 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5235 .{ ._, ._, .mov, .tmp1q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5413 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
5236 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },5414 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5237 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },5415 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5416 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
5417 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5238 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5239 } },5419 } },
5240 }, .{5420 }, .{
5241 .required_features = .{ .@"64bit", .cmov, null, null },5421 .required_features = .{ .sse, null, null, null },
5242 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },5422 .src_constraints = .{
5423 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5424 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
5425 .any,
5426 },
5243 .patterns = &.{5427 .patterns = &.{
5244 .{ .src = .{ .to_mem, .to_mem } },5428 .{ .src = .{ .to_mem, .to_mem, .none } },
5245 },5429 },
5430 .call_frame = .{ .alignment = .@"16" },
5246 .extra_temps = .{5431 .extra_temps = .{
5247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5248 .{ .type = .isize, .kind = .{ .reg = .rsi } },5433 .{ .type = .f16, .kind = .{ .reg = .ax } },
5249 .{ .type = .u64, .kind = .{ .reg = .rdi } },5434 .{ .type = .f32, .kind = .mem },
5250 .{ .type = .u64, .kind = .{ .reg = .rcx } },5435 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5251 .unused,5436 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
5252 .unused,5437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
5253 .unused,5438 .unused,
5254 .unused,5439 .unused,
5255 .unused,5440 .unused,
5256 },5441 },
5257 .dst_temps = .{.mem},5442 .dst_temps = .{.mem},
5258 .clobbers = .{ .eflags = true },5443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5259 .each = .{ .once = &.{5444 .each = .{ .once = &.{
5260 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5445 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5261 .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ },5446 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
5262 .{ ._, ._c, .cl, ._, ._, ._, ._ },5447 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5263 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5448 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
5264 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5449 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
5265 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },5450 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5266 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },5451 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
5267 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },5452 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
5268 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5453 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5269 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5454 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5270 .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },5455 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
5271 .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ },5456 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
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), ._, ._ },
5277 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5457 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5278 } },5458 } },
5279 }, .{5459 }, .{
5280 .required_features = .{ .@"64bit", null, null, null },5460 .required_features = .{ .avx, null, null, null },
5281 .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int },5461 .src_constraints = .{
5282 .patterns = &.{5462 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5283 .{ .src = .{ .to_mem, .to_mem } },5463 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5464 .any,
5284 },5465 },
5285 .extra_temps = .{5466 .patterns = &.{
5286 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5467 .{ .src = .{ .to_sse, .mem, .none } },
5287 .{ .type = .isize, .kind = .{ .reg = .rsi } },5468 .{ .src = .{ .to_sse, .to_sse, .none } },
5288 .{ .type = .u64, .kind = .{ .reg = .rdi } },
5289 .{ .type = .u64, .kind = .{ .reg = .rcx } },
5290 .unused,
5291 .unused,
5292 .unused,
5293 .unused,
5294 .unused,
5295 },5469 },
5296 .dst_temps = .{.mem},5470 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5297 .clobbers = .{ .eflags = true },
5298 .each = .{ .once = &.{5471 .each = .{ .once = &.{
5299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5472 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
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", ._, ._, ._ },
5317 } },5473 } },
5318 }, .{5474 }, .{
5319 .required_features = .{ .@"64bit", .cmov, null, null },5475 .required_features = .{ .sse, null, null, null },
5320 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },5476 .src_constraints = .{
5477 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5478 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
5479 .any,
5480 },
5321 .patterns = &.{5481 .patterns = &.{
5322 .{ .src = .{ .to_mem, .to_mem } },5482 .{ .src = .{ .to_mut_sse, .mem, .none } },
5483 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5323 },5484 },
5324 .extra_temps = .{5485 .dst_temps = .{.{ .ref = .src0 }},
5325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5486 .each = .{ .once = &.{
5326 .{ .type = .isize, .kind = .{ .reg = .rsi } },5487 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
5327 .{ .type = .u64, .kind = .{ .reg = .rdi } },5488 } },
5328 .{ .type = .u64, .kind = .{ .reg = .rcx } },5489 }, .{
5329 .unused,5490 .required_features = .{ .avx, null, null, null },
5330 .unused,5491 .src_constraints = .{
5331 .unused,5492 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5332 .unused,5493 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5333 .unused,5494 .any,
5334 },5495 },
5335 .dst_temps = .{.mem},5496 .patterns = &.{
5336 .clobbers = .{ .eflags = true },5497 .{ .src = .{ .to_sse, .mem, .none } },
5498 .{ .src = .{ .to_sse, .to_sse, .none } },
5499 },
5500 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5337 .each = .{ .once = &.{5501 .each = .{ .once = &.{
5338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5502 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
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", ._, ._, ._ },
5354 } },5503 } },
5355 }, .{5504 }, .{
5356 .required_features = .{ .@"64bit", null, null, null },5505 .required_features = .{ .sse, null, null, null },
5357 .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int },5506 .src_constraints = .{
5507 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5508 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
5509 .any,
5510 },
5358 .patterns = &.{5511 .patterns = &.{
5359 .{ .src = .{ .to_mem, .to_mem } },5512 .{ .src = .{ .to_mut_sse, .mem, .none } },
5513 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5360 },5514 },
5361 .extra_temps = .{5515 .dst_temps = .{.{ .ref = .src0 }},
5362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5516 .each = .{ .once = &.{
5363 .{ .type = .isize, .kind = .{ .reg = .rsi } },5517 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
5364 .{ .type = .u64, .kind = .{ .reg = .rdi } },5518 } },
5365 .{ .type = .u64, .kind = .{ .reg = .rcx } },5519 }, .{
5366 .unused,5520 .required_features = .{ .avx, null, null, null },
5367 .unused,5521 .src_constraints = .{
5368 .unused,5522 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5369 .unused,5523 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
5370 .unused,5524 .any,
5371 },5525 },
5372 .dst_temps = .{.mem},5526 .patterns = &.{
5373 .clobbers = .{ .eflags = true },5527 .{ .src = .{ .to_sse, .mem, .none } },
5528 .{ .src = .{ .to_sse, .to_sse, .none } },
5529 },
5530 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5374 .each = .{ .once = &.{5531 .each = .{ .once = &.{
5375 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5532 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
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", ._, ._, ._ },
5391 } },5533 } },
5392 }, .{5534 }, .{
5393 .required_features = .{ .f16c, null, null, null },5535 .required_features = .{ .avx, null, null, null },
5394 .src_constraints = .{5536 .src_constraints = .{
5395 .{ .scalar_float = .{ .of = .word, .is = .word } },5537 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5396 .{ .scalar_float = .{ .of = .word, .is = .word } },5538 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
5539 .any,
5397 },5540 },
5398 .patterns = &.{5541 .patterns = &.{
5399 .{ .src = .{ .to_sse, .to_sse } },5542 .{ .src = .{ .to_mem, .to_mem, .none } },
5400 },5543 },
5401 .extra_temps = .{5544 .extra_temps = .{
5402 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },5545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5403 .{ .type = .f16, .kind = .{ .rc = .sse } },5546 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
5404 .unused,5547 .unused,
5405 .unused,5548 .unused,
5406 .unused,5549 .unused,
...@@ -5409,28 +5552,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5409,28 +5552,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5409 .unused,5552 .unused,
5410 .unused,5553 .unused,
5411 },5554 },
5412 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5555 .dst_temps = .{.mem},
5556 .clobbers = .{ .eflags = true },
5413 .each = .{ .once = &.{5557 .each = .{ .once = &.{
5414 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },5558 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5415 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },5559 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5416 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },5560 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5417 .{ ._, .v_ss, .max, .dst0x, .tmp0x, .dst0x, ._ },5561 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5418 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },5562 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5419 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },5563 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5420 } },5564 } },
5421 }, .{5565 }, .{
5422 .required_features = .{ .sse, null, null, null },5566 .required_features = .{ .sse, null, null, null },
5423 .src_constraints = .{5567 .src_constraints = .{
5424 .{ .scalar_float = .{ .of = .word, .is = .word } },5568 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5425 .{ .scalar_float = .{ .of = .word, .is = .word } },5569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
5570 .any,
5426 },5571 },
5427 .patterns = &.{5572 .patterns = &.{
5428 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },5573 .{ .src = .{ .to_mem, .to_mem, .none } },
5429 },5574 },
5430 .call_frame = .{ .alignment = .@"16" },
5431 .extra_temps = .{5575 .extra_temps = .{
5432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5433 .unused,5577 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
5434 .unused,5578 .unused,
5435 .unused,5579 .unused,
5436 .unused,5580 .unused,
...@@ -5439,58 +5583,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5439,58 +5583,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5439 .unused,5583 .unused,
5440 .unused,5584 .unused,
5441 },5585 },
5442 .dst_temps = .{.{ .ref = .src0 }},5586 .dst_temps = .{.mem},
5443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5587 .clobbers = .{ .eflags = true },
5444 .each = .{ .once = &.{5588 .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", ._, ._, ._ },
5446 } },5595 } },
5447 }, .{5596 }, .{
5448 .required_features = .{ .f16c, null, null, null },5597 .required_features = .{ .avx, null, null, null },
5449 .src_constraints = .{5598 .src_constraints = .{
5450 .{ .scalar_float = .{ .of = .qword, .is = .word } },5599 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5451 .{ .scalar_float = .{ .of = .qword, .is = .word } },5600 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5601 .any,
5452 },5602 },
5453 .patterns = &.{5603 .patterns = &.{
5454 .{ .src = .{ .mem, .mem } },5604 .{ .src = .{ .to_sse, .mem, .none } },
5455 .{ .src = .{ .to_sse, .mem } },5605 .{ .src = .{ .to_sse, .to_sse, .none } },
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,
5469 },5606 },
5470 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5607 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5471 .each = .{ .once = &.{5608 .each = .{ .once = &.{
5472 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },5609 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
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(.{}), ._ },
5478 } },5610 } },
5479 }, .{5611 }, .{
5480 .required_features = .{ .f16c, null, null, null },5612 .required_features = .{ .sse2, null, null, null },
5481 .src_constraints = .{5613 .src_constraints = .{
5482 .{ .scalar_float = .{ .of = .xword, .is = .word } },5614 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
5483 .{ .scalar_float = .{ .of = .xword, .is = .word } },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,
5484 },5632 },
5485 .patterns = &.{5633 .patterns = &.{
5486 .{ .src = .{ .mem, .mem } },5634 .{ .src = .{ .mem, .mem, .none } },
5487 .{ .src = .{ .to_sse, .mem } },
5488 .{ .src = .{ .mem, .to_sse } },
5489 .{ .src = .{ .to_sse, .to_sse } },
5490 },5635 },
5491 .extra_temps = .{5636 .extra_temps = .{
5492 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },5637 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5493 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },5638 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5494 .unused,5639 .unused,
5495 .unused,5640 .unused,
5496 .unused,5641 .unused,
...@@ -5499,96 +5644,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5499,96 +5644,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5499 .unused,5644 .unused,
5500 .unused,5645 .unused,
5501 },5646 },
5502 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5647 .dst_temps = .{.mem},
5503 .each = .{ .once = &.{5648 .each = .{ .once = &.{
5504 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },5649 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
5505 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },5650 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
5506 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },5651 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5507 .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ },5652 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
5508 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
5509 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },
5510 } },5653 } },
5511 }, .{5654 }, .{
5512 .required_features = .{ .f16c, null, null, null },5655 .required_features = .{ .avx, null, null, null },
5513 .src_constraints = .{5656 .src_constraints = .{
5514 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },5657 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5515 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },5658 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5659 .any,
5516 },5660 },
5517 .patterns = &.{5661 .patterns = &.{
5518 .{ .src = .{ .to_mem, .to_mem } },5662 .{ .src = .{ .to_sse, .mem, .none } },
5663 .{ .src = .{ .to_sse, .to_sse, .none } },
5519 },5664 },
5520 .extra_temps = .{5665 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5666 .each = .{ .once = &.{
5522 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },5667 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
5523 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },5668 } },
5524 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },5669 }, .{
5525 .unused,5670 .required_features = .{ .sse2, null, null, null },
5526 .unused,5671 .src_constraints = .{
5527 .unused,5672 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5528 .unused,5673 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
5529 .unused,5674 .any,
5530 },5675 },
5531 .dst_temps = .{.mem},5676 .patterns = &.{
5532 .clobbers = .{ .eflags = true },5677 .{ .src = .{ .to_mut_sse, .mem, .none } },
5678 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
5679 },
5680 .dst_temps = .{.{ .ref = .src0 }},
5533 .each = .{ .once = &.{5681 .each = .{ .once = &.{
5534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5682 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
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", ._, ._, ._ },
5543 } },5683 } },
5544 }, .{5684 }, .{
5545 .required_features = .{ .avx, null, null, null },5685 .required_features = .{ .avx, null, null, null },
5546 .src_constraints = .{5686 .src_constraints = .{
5547 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5687 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5548 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5688 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
5689 .any,
5549 },5690 },
5550 .patterns = &.{5691 .patterns = &.{
5551 .{ .src = .{ .to_mem, .to_mem } },5692 .{ .src = .{ .to_sse, .mem, .none } },
5552 },5693 .{ .src = .{ .to_sse, .to_sse, .none } },
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,
5564 },5694 },
5565 .dst_temps = .{.mem},5695 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
5566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5567 .each = .{ .once = &.{5696 .each = .{ .once = &.{
5568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5697 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
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", ._, ._, ._ },
5576 } },5698 } },
5577 }, .{5699 }, .{
5578 .required_features = .{ .sse4_1, null, null, null },5700 .required_features = .{ .avx, null, null, null },
5579 .src_constraints = .{5701 .src_constraints = .{
5580 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5702 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5581 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5703 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
5704 .any,
5582 },5705 },
5583 .patterns = &.{5706 .patterns = &.{
5584 .{ .src = .{ .to_mem, .to_mem } },5707 .{ .src = .{ .to_mem, .to_mem, .none } },
5585 },5708 },
5586 .call_frame = .{ .alignment = .@"16" },
5587 .extra_temps = .{5709 .extra_temps = .{
5588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5589 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5711 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
5590 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5712 .unused,
5591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5713 .unused,
5592 .unused,5714 .unused,
5593 .unused,5715 .unused,
5594 .unused,5716 .unused,
...@@ -5596,103 +5718,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5596,103 +5718,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5596 .unused,5718 .unused,
5597 },5719 },
5598 .dst_temps = .{.mem},5720 .dst_temps = .{.mem},
5599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5721 .clobbers = .{ .eflags = true },
5600 .each = .{ .once = &.{5722 .each = .{ .once = &.{
5601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5602 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5724 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
5603 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5725 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
5604 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5726 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
5605 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },5727 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5606 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5607 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5608 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5610 } },5729 } },
5611 }, .{5730 }, .{
5612 .required_features = .{ .sse2, null, null, null },5731 .required_features = .{ .sse2, null, null, null },
5613 .src_constraints = .{5732 .src_constraints = .{
5614 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5733 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5615 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5734 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
5735 .any,
5616 },5736 },
5617 .patterns = &.{5737 .patterns = &.{
5618 .{ .src = .{ .to_mem, .to_mem } },5738 .{ .src = .{ .to_mem, .to_mem, .none } },
5619 },5739 },
5620 .call_frame = .{ .alignment = .@"16" },
5621 .extra_temps = .{5740 .extra_temps = .{
5622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5623 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5742 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
5624 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5743 .unused,
5625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5744 .unused,
5626 .{ .type = .f16, .kind = .{ .reg = .ax } },5745 .unused,
5627 .unused,5746 .unused,
5628 .unused,5747 .unused,
5629 .unused,5748 .unused,
5630 .unused,5749 .unused,
5631 },5750 },
5632 .dst_temps = .{.mem},5751 .dst_temps = .{.mem},
5633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5752 .clobbers = .{ .eflags = true },
5634 .each = .{ .once = &.{5753 .each = .{ .once = &.{
5635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5636 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5755 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5637 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5756 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5638 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5757 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5639 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },5758 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5640 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5641 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5642 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5643 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5759 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5645 } },5760 } },
5646 }, .{5761 }, .{
5647 .required_features = .{ .sse, null, null, null },5762 .required_features = .{ .x87, null, null, null },
5648 .src_constraints = .{5763 .src_constraints = .{
5649 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5764 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5650 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },5765 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
5766 .any,
5651 },5767 },
5652 .patterns = &.{5768 .patterns = &.{
5653 .{ .src = .{ .to_mem, .to_mem } },5769 .{ .src = .{ .to_mem, .to_mem, .none } },
5654 },5770 },
5655 .call_frame = .{ .alignment = .@"16" },
5656 .extra_temps = .{5771 .extra_temps = .{
5657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5658 .{ .type = .f16, .kind = .{ .reg = .ax } },5773 .{ .type = .f64, .kind = .{ .reg = .st6 } },
5659 .{ .type = .f32, .kind = .mem },5774 .{ .type = .f64, .kind = .{ .reg = .st7 } },
5660 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5775 .unused,
5661 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5776 .unused,
5662 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },5777 .unused,
5663 .unused,5778 .unused,
5664 .unused,5779 .unused,
5665 .unused,5780 .unused,
5666 },5781 },
5667 .dst_temps = .{.mem},5782 .dst_temps = .{.mem},
5668 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5669 .each = .{ .once = &.{5783 .each = .{ .once = &.{
5670 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5671 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },5785 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5672 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },5786 .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5673 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },5787 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5674 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_size), ._, ._ },5788 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
5675 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },5789 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
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), ._, ._ },
5682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5683 } },5791 } },
5684 }, .{5792 }, .{
5685 .required_features = .{ .avx, null, null, null },5793 .required_features = .{ .x87, null, null, null },
5686 .src_constraints = .{5794 .src_constraints = .{
5687 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5795 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5688 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5796 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5797 .any,
5689 },5798 },
5690 .patterns = &.{5799 .patterns = &.{
5691 .{ .src = .{ .to_sse, .to_sse } },5800 .{ .src = .{ .mem, .mem, .none } },
5692 },5801 },
5693 .extra_temps = .{5802 .extra_temps = .{
5694 .{ .type = .f32, .kind = .{ .rc = .sse } },5803 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5695 .unused,5804 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5696 .unused,5805 .unused,
5697 .unused,5806 .unused,
5698 .unused,5807 .unused,
...@@ -5701,39 +5810,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5701,39 +5810,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5701 .unused,5810 .unused,
5702 .unused,5811 .unused,
5703 },5812 },
5704 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5813 .dst_temps = .{.{ .rc = .x87 }},
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 }},
5720 .each = .{ .once = &.{5814 .each = .{ .once = &.{
5721 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },5815 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5722 .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ },5816 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
5723 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },5817 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5724 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },5818 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5725 } },5819 } },
5726 }, .{5820 }, .{
5727 .required_features = .{ .sse, null, null, null },5821 .required_features = .{ .x87, null, null, null },
5728 .src_constraints = .{5822 .src_constraints = .{
5729 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5823 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5730 .{ .scalar_float = .{ .of = .dword, .is = .dword } },5824 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5825 .any,
5731 },5826 },
5732 .patterns = &.{5827 .patterns = &.{
5733 .{ .src = .{ .to_mut_sse, .to_sse } },5828 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
5734 },5829 },
5735 .extra_temps = .{5830 .extra_temps = .{
5736 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5831 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5737 .unused,5832 .unused,
5738 .unused,5833 .unused,
5739 .unused,5834 .unused,
...@@ -5743,26 +5838,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5743,26 +5838,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5743 .unused,5838 .unused,
5744 .unused,5839 .unused,
5745 },5840 },
5746 .dst_temps = .{.{ .ref = .src0 }},5841 .dst_temps = .{.{ .rc = .x87 }},
5747 .each = .{ .once = &.{5842 .each = .{ .once = &.{
5748 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },5843 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5749 .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ },5844 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
5750 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },5845 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5751 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
5752 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
5753 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
5754 } },5846 } },
5755 }, .{5847 }, .{
5756 .required_features = .{ .avx, null, null, null },5848 .required_features = .{ .x87, null, null, null },
5757 .src_constraints = .{5849 .src_constraints = .{
5758 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5850 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5759 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5851 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
5852 .any,
5760 },5853 },
5761 .patterns = &.{5854 .patterns = &.{
5762 .{ .src = .{ .to_sse, .to_sse } },5855 .{ .src = .{ .mem, .to_x87, .none } },
5856 .{ .src = .{ .to_x87, .to_x87, .none } },
5763 },5857 },
5764 .extra_temps = .{5858 .extra_temps = .{
5765 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5859 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5766 .unused,5860 .unused,
5767 .unused,5861 .unused,
5768 .unused,5862 .unused,
...@@ -5772,45 +5866,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5772,45 +5866,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5772 .unused,5866 .unused,
5773 .unused,5867 .unused,
5774 },5868 },
5775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5869 .dst_temps = .{.{ .rc = .x87 }},
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 }},
5793 .each = .{ .once = &.{5870 .each = .{ .once = &.{
5794 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },5871 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
5795 .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ },5872 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
5796 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },5873 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
5797 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
5798 } },5874 } },
5799 }, .{5875 }, .{
5800 .required_features = .{ .sse, null, null, null },5876 .required_features = .{ .x87, null, null, null },
5801 .src_constraints = .{5877 .src_constraints = .{
5802 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5878 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5803 .{ .scalar_float = .{ .of = .xword, .is = .dword } },5879 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
5880 .any,
5804 },5881 },
5805 .patterns = &.{5882 .patterns = &.{
5806 .{ .src = .{ .to_mut_sse, .mem } },5883 .{ .src = .{ .to_mem, .to_mem, .none } },
5807 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },
5808 .{ .src = .{ .to_mut_sse, .to_sse } },
5809 },5884 },
5810 .extra_temps = .{5885 .extra_temps = .{
5811 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5812 .unused,5887 .{ .type = .f80, .kind = .{ .reg = .st6 } },
5813 .unused,5888 .{ .type = .f80, .kind = .{ .reg = .st7 } },
5814 .unused,5889 .unused,
5815 .unused,5890 .unused,
5816 .unused,5891 .unused,
...@@ -5818,26 +5893,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5818,26 +5893,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5818 .unused,5893 .unused,
5819 .unused,5894 .unused,
5820 },5895 },
5821 .dst_temps = .{.{ .ref = .src0 }},5896 .dst_temps = .{.mem},
5822 .each = .{ .once = &.{5897 .each = .{ .once = &.{
5823 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },5898 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5824 .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ },5899 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5825 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },5900 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5826 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },5901 .{ ._, .f_p, .div, ._, ._, ._, ._ },
5827 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },5902 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
5828 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },5903 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5904 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5829 } },5905 } },
5830 }, .{5906 }, .{
5831 .required_features = .{ .avx, null, null, null },5907 .required_features = .{ .sse, null, null, null },
5832 .src_constraints = .{5908 .src_constraints = .{
5833 .{ .scalar_float = .{ .of = .yword, .is = .dword } },5909 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5834 .{ .scalar_float = .{ .of = .yword, .is = .dword } },5910 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
5911 .any,
5835 },5912 },
5836 .patterns = &.{5913 .patterns = &.{
5837 .{ .src = .{ .to_sse, .to_sse } },5914 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
5838 },5915 },
5916 .call_frame = .{ .alignment = .@"16" },
5839 .extra_temps = .{5917 .extra_temps = .{
5840 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5841 .unused,5919 .unused,
5842 .unused,5920 .unused,
5843 .unused,5921 .unused,
...@@ -5847,26 +5925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5847,26 +5925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5847 .unused,5925 .unused,
5848 .unused,5926 .unused,
5849 },5927 },
5850 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},5928 .dst_temps = .{.{ .ref = .src0 }},
5929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5851 .each = .{ .once = &.{5930 .each = .{ .once = &.{
5852 .{ ._, .v_ps, .cmp, .tmp0y, .src0y, .src0y, .vp(.unord) },5931 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
5853 .{ ._, .v_ps, .max, .dst0y, .src1y, .src0y, ._ },
5854 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .src1y, .tmp0y },
5855 } },5932 } },
5856 }, .{5933 }, .{
5857 .required_features = .{ .avx, null, null, null },5934 .required_features = .{ .avx, null, null, null },
5858 .src_constraints = .{5935 .src_constraints = .{
5859 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },5936 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5860 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },5937 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5938 .any,
5861 },5939 },
5862 .patterns = &.{5940 .patterns = &.{
5863 .{ .src = .{ .to_mem, .to_mem } },5941 .{ .src = .{ .to_mem, .to_mem, .none } },
5864 },5942 },
5943 .call_frame = .{ .alignment = .@"16" },
5865 .extra_temps = .{5944 .extra_temps = .{
5866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5945 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5867 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5946 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5868 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5947 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5869 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },5948 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5870 .unused,5949 .unused,
5871 .unused,5950 .unused,
5872 .unused,5951 .unused,
...@@ -5874,32 +5953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5874,32 +5953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5874 .unused,5953 .unused,
5875 },5954 },
5876 .dst_temps = .{.mem},5955 .dst_temps = .{.mem},
5877 .clobbers = .{ .eflags = true },5956 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5878 .each = .{ .once = &.{5957 .each = .{ .once = &.{
5879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5958 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5880 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5959 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5881 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5960 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5882 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },5961 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5883 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },5962 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5884 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },5963 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5885 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5886 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5887 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5888 } },5965 } },
5889 }, .{5966 }, .{
5890 .required_features = .{ .sse4_1, null, null, null },5967 .required_features = .{ .sse2, null, null, null },
5891 .src_constraints = .{5968 .src_constraints = .{
5892 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },5969 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5893 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },5970 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5971 .any,
5894 },5972 },
5895 .patterns = &.{5973 .patterns = &.{
5896 .{ .src = .{ .to_mem, .to_mem } },5974 .{ .src = .{ .to_mem, .to_mem, .none } },
5897 },5975 },
5976 .call_frame = .{ .alignment = .@"16" },
5898 .extra_temps = .{5977 .extra_temps = .{
5899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5900 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },5979 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5901 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5980 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5902 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },5981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5903 .unused,5982 .unused,
5904 .unused,5983 .unused,
5905 .unused,5984 .unused,
...@@ -5907,33 +5986,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5907,33 +5986,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5907 .unused,5986 .unused,
5908 },5987 },
5909 .dst_temps = .{.mem},5988 .dst_temps = .{.mem},
5910 .clobbers = .{ .eflags = true },5989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5911 .each = .{ .once = &.{5990 .each = .{ .once = &.{
5912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5913 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5992 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5914 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5993 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
5915 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },5994 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5916 .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ },5995 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
5917 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
5918 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
5919 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5920 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },5996 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5921 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5922 } },5998 } },
5923 }, .{5999 }, .{
5924 .required_features = .{ .sse, null, null, null },6000 .required_features = .{ .sse, null, null, null },
5925 .src_constraints = .{6001 .src_constraints = .{
5926 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },6002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
5927 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },6003 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
6004 .any,
5928 },6005 },
5929 .patterns = &.{6006 .patterns = &.{
5930 .{ .src = .{ .to_mem, .to_mem } },6007 .{ .src = .{ .to_mem, .to_mem, .none } },
5931 },6008 },
6009 .call_frame = .{ .alignment = .@"16" },
5932 .extra_temps = .{6010 .extra_temps = .{
5933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },6011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5934 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },6012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
5935 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },6013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
5936 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },6014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
5937 .unused,6015 .unused,
5938 .unused,6016 .unused,
5939 .unused,6017 .unused,
...@@ -5941,712 +6019,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5941,712 +6019,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5941 .unused,6019 .unused,
5942 },6020 },
5943 .dst_temps = .{.mem},6021 .dst_temps = .{.mem},
5944 .clobbers = .{ .eflags = true },6022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5945 .each = .{ .once = &.{6023 .each = .{ .once = &.{
5946 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },6024 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
5947 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6025 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
5948 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6026 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_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), ._, ._ },
6289 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6027 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6290 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },6028 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
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, ._, ._ },
6650 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },6029 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6652 } },6031 } },
...@@ -6661,455 +6040,7677 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6661,455 +6040,7677 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6661 };6040 };
6662 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);6041 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
6663 },6042 },
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: {
6665 const bin_op = air_datas[@intFromEnum(inst)].bin_op;6044 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);
6666 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });6046 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
6667 var res: [1]Temp = undefined;6047 var res: [1]Temp = undefined;
6668 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{6048 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) {
6669 .required_features = .{ .cmov, null, null, null },6049 else => unreachable,
6670 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },6050 .div_trunc => .zero,
6671 .patterns = &.{6051 .div_floor => .down,
6672 .{ .src = .{ .to_mut_gpr, .to_gpr } },6052 })) {
6673 },6053 else => unreachable,
6674 .dst_temps = .{.{ .ref = .src0 }},6054 inline .zero, .down => |direction| comptime &.{ .{
6675 .clobbers = .{ .eflags = true },6055 .required_features = .{ .f16c, null, null, null },
6676 .each = .{ .once = &.{6056 .src_constraints = .{
6677 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6057 .{ .scalar_float = .{ .of = .word, .is = .word } },
6678 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },6058 .{ .scalar_float = .{ .of = .word, .is = .word } },
6679 } },6059 .any,
6680 }, .{6060 },
6681 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },6061 .patterns = &.{
6682 .patterns = &.{6062 .{ .src = .{ .to_sse, .to_sse, .none } },
6683 .{ .src = .{ .to_mut_gpr, .mem } },6063 },
6684 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6064 .extra_temps = .{
6685 .{ .src = .{ .to_mut_gpr, .to_gpr } },6065 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6686 },6066 .unused,
6687 .dst_temps = .{.{ .ref = .src0 }},6067 .unused,
6688 .clobbers = .{ .eflags = true },6068 .unused,
6689 .each = .{ .once = &.{6069 .unused,
6690 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6070 .unused,
6691 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6071 .unused,
6692 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },6072 .unused,
6693 } },6073 .unused,
6694 }, .{6074 },
6695 .required_features = .{ .cmov, null, null, null },6075 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6696 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },6076 .each = .{ .once = &.{
6697 .patterns = &.{6077 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6698 .{ .src = .{ .to_mut_gpr, .to_gpr } },6078 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6699 },6079 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
6700 .dst_temps = .{.{ .ref = .src0 }},6080 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6701 .clobbers = .{ .eflags = true },6081 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6702 .each = .{ .once = &.{6082 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
6703 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6083 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6704 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },6084 } },
6705 } },6085 }, .{
6706 }, .{6086 .required_features = .{ .sse, null, null, null },
6707 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },6087 .src_constraints = .{
6708 .patterns = &.{6088 .{ .scalar_float = .{ .of = .word, .is = .word } },
6709 .{ .src = .{ .to_mut_gpr, .mem } },6089 .{ .scalar_float = .{ .of = .word, .is = .word } },
6710 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6090 .any,
6711 .{ .src = .{ .to_mut_gpr, .to_gpr } },6091 },
6712 },6092 .patterns = &.{
6713 .dst_temps = .{.{ .ref = .src0 }},6093 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
6714 .clobbers = .{ .eflags = true },6094 },
6715 .each = .{ .once = &.{6095 .call_frame = .{ .alignment = .@"16" },
6716 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },6096 .extra_temps = .{
6717 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6718 .{ ._, ._, .mov, .dst0b, .src1b, ._, ._ },6098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6719 } },6099 else => unreachable,
6720 }, .{6100 .zero => "__trunch",
6721 .required_features = .{ .cmov, null, null, null },6101 .down => "__floorh",
6722 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },6102 } } } },
6723 .patterns = &.{6103 .unused,
6724 .{ .src = .{ .to_mut_gpr, .mem } },6104 .unused,
6725 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6105 .unused,
6726 .{ .src = .{ .to_mut_gpr, .to_gpr } },6106 .unused,
6727 },6107 .unused,
6728 .dst_temps = .{.{ .ref = .src0 }},6108 .unused,
6729 .clobbers = .{ .eflags = true },6109 .unused,
6730 .each = .{ .once = &.{6110 },
6731 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6111 .dst_temps = .{.{ .ref = .src0 }},
6732 .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ },6112 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6733 } },6113 .each = .{ .once = &.{
6734 }, .{6114 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
6735 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },6115 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
6736 .patterns = &.{6116 } },
6737 .{ .src = .{ .to_mut_gpr, .mem } },6117 }, .{
6738 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6118 .required_features = .{ .f16c, null, null, null },
6739 .{ .src = .{ .to_mut_gpr, .to_gpr } },6119 .src_constraints = .{
6740 },6120 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6741 .dst_temps = .{.{ .ref = .src0 }},6121 .{ .scalar_float = .{ .of = .qword, .is = .word } },
6742 .clobbers = .{ .eflags = true },6122 .any,
6743 .each = .{ .once = &.{6123 },
6744 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6124 .patterns = &.{
6745 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6125 .{ .src = .{ .mem, .mem, .none } },
6746 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },6126 .{ .src = .{ .to_sse, .mem, .none } },
6747 } },6127 .{ .src = .{ .mem, .to_sse, .none } },
6748 }, .{6128 .{ .src = .{ .to_sse, .to_sse, .none } },
6749 .required_features = .{ .cmov, null, null, null },6129 },
6750 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },6130 .extra_temps = .{
6751 .patterns = &.{6131 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6752 .{ .src = .{ .to_mut_gpr, .mem } },6132 .unused,
6753 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6133 .unused,
6754 .{ .src = .{ .to_mut_gpr, .to_gpr } },6134 .unused,
6755 },6135 .unused,
6756 .dst_temps = .{.{ .ref = .src0 }},6136 .unused,
6757 .clobbers = .{ .eflags = true },6137 .unused,
6758 .each = .{ .once = &.{6138 .unused,
6759 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6139 .unused,
6760 .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ },6140 },
6761 } },6141 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6762 }, .{6142 .each = .{ .once = &.{
6763 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },6143 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
6764 .patterns = &.{6144 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
6765 .{ .src = .{ .to_mut_gpr, .mem } },6145 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
6766 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6146 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6767 .{ .src = .{ .to_mut_gpr, .to_gpr } },6147 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
6768 },6148 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6769 .dst_temps = .{.{ .ref = .src0 }},6149 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
6770 .clobbers = .{ .eflags = true },6150 } },
6771 .each = .{ .once = &.{6151 }, .{
6772 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },6152 .required_features = .{ .f16c, null, null, null },
6773 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6153 .src_constraints = .{
6774 .{ ._, ._, .mov, .dst0w, .src1w, ._, ._ },6154 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6775 } },6155 .{ .scalar_float = .{ .of = .xword, .is = .word } },
6776 }, .{6156 .any,
6777 .required_features = .{ .cmov, null, null, null },6157 },
6778 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },6158 .patterns = &.{
6779 .patterns = &.{6159 .{ .src = .{ .mem, .mem, .none } },
6780 .{ .src = .{ .to_mut_gpr, .mem } },6160 .{ .src = .{ .to_sse, .mem, .none } },
6781 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6161 .{ .src = .{ .mem, .to_sse, .none } },
6782 .{ .src = .{ .to_mut_gpr, .to_gpr } },6162 .{ .src = .{ .to_sse, .to_sse, .none } },
6783 },6163 },
6784 .dst_temps = .{.{ .ref = .src0 }},6164 .extra_temps = .{
6785 .clobbers = .{ .eflags = true },6165 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
6786 .each = .{ .once = &.{6166 .unused,
6787 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6167 .unused,
6788 .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ },6168 .unused,
6789 } },6169 .unused,
6790 }, .{6170 .unused,
6791 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },6171 .unused,
6792 .patterns = &.{6172 .unused,
6793 .{ .src = .{ .to_mut_gpr, .mem } },6173 .unused,
6794 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6174 },
6795 .{ .src = .{ .to_mut_gpr, .to_gpr } },6175 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
6796 },6176 .each = .{ .once = &.{
6797 .dst_temps = .{.{ .ref = .src0 }},6177 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
6798 .clobbers = .{ .eflags = true },6178 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
6799 .each = .{ .once = &.{6179 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
6800 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6180 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6801 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6181 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
6802 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },6182 .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6803 } },6183 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
6804 }, .{6184 } },
6805 .required_features = .{ .cmov, null, null, null },6185 }, .{
6806 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },6186 .required_features = .{ .f16c, null, null, null },
6807 .patterns = &.{6187 .src_constraints = .{
6808 .{ .src = .{ .to_mut_gpr, .mem } },6188 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6809 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6189 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
6810 .{ .src = .{ .to_mut_gpr, .to_gpr } },6190 .any,
6811 },6191 },
6812 .dst_temps = .{.{ .ref = .src0 }},6192 .patterns = &.{
6813 .clobbers = .{ .eflags = true },6193 .{ .src = .{ .to_mem, .to_mem, .none } },
6814 .each = .{ .once = &.{6194 },
6815 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6195 .extra_temps = .{
6816 .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ },6196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6817 } },6197 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6818 }, .{6198 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
6819 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },6199 .unused,
6820 .patterns = &.{6200 .unused,
6821 .{ .src = .{ .to_mut_gpr, .mem } },6201 .unused,
6822 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6202 .unused,
6823 .{ .src = .{ .to_mut_gpr, .to_gpr } },6203 .unused,
6824 },6204 .unused,
6825 .dst_temps = .{.{ .ref = .src0 }},6205 },
6826 .clobbers = .{ .eflags = true },6206 .dst_temps = .{.mem},
6827 .each = .{ .once = &.{6207 .clobbers = .{ .eflags = true },
6828 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },6208 .each = .{ .once = &.{
6829 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6209 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6830 .{ ._, ._, .mov, .dst0d, .src1d, ._, ._ },6210 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
6831 } },6211 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
6832 }, .{6212 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
6833 .required_features = .{ .@"64bit", .cmov, null, null },6213 .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ },
6834 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },6214 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
6835 .patterns = &.{6215 .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
6836 .{ .src = .{ .to_mut_gpr, .mem } },6216 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
6837 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6217 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6838 .{ .src = .{ .to_mut_gpr, .to_gpr } },6218 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6839 },6219 } },
6840 .dst_temps = .{.{ .ref = .src0 }},6220 }, .{
6841 .clobbers = .{ .eflags = true },6221 .required_features = .{ .avx, null, null, null },
6842 .each = .{ .once = &.{6222 .src_constraints = .{
6843 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6223 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6844 .{ ._, ._ge, .cmov, .dst0q, .src1q, ._, ._ },6224 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6845 } },6225 .any,
6846 }, .{6226 },
6847 .required_features = .{ .@"64bit", null, null, null },6227 .patterns = &.{
6848 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } },6228 .{ .src = .{ .to_mem, .to_mem, .none } },
6849 .patterns = &.{6229 },
6850 .{ .src = .{ .to_mut_gpr, .mem } },6230 .call_frame = .{ .alignment = .@"16" },
6851 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6231 .extra_temps = .{
6852 .{ .src = .{ .to_mut_gpr, .to_gpr } },6232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6853 },6233 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6854 .dst_temps = .{.{ .ref = .src0 }},6234 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6855 .clobbers = .{ .eflags = true },6235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6856 .each = .{ .once = &.{6236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6857 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6237 else => unreachable,
6858 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6238 .zero => "__trunch",
6859 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },6239 .down => "__floorh",
6860 } },6240 } } } },
6861 }, .{6241 .unused,
6862 .required_features = .{ .@"64bit", .cmov, null, null },6242 .unused,
6863 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },6243 .unused,
6864 .patterns = &.{6244 .unused,
6865 .{ .src = .{ .to_mut_gpr, .mem } },6245 },
6866 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6246 .dst_temps = .{.mem},
6867 .{ .src = .{ .to_mut_gpr, .to_gpr } },6247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6868 },6248 .each = .{ .once = &.{
6869 .dst_temps = .{.{ .ref = .src0 }},6249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6870 .clobbers = .{ .eflags = true },6250 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
6871 .each = .{ .once = &.{6251 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
6872 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6252 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
6873 .{ ._, ._ae, .cmov, .dst0q, .src1q, ._, ._ },6253 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6874 } },6254 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6875 }, .{6255 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6876 .required_features = .{ .@"64bit", null, null, null },6256 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6877 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } },6257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6878 .patterns = &.{6258 } },
6879 .{ .src = .{ .to_mut_gpr, .mem } },6259 }, .{
6880 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },6260 .required_features = .{ .sse4_1, null, null, null },
6881 .{ .src = .{ .to_mut_gpr, .to_gpr } },6261 .src_constraints = .{
6882 },6262 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6883 .dst_temps = .{.{ .ref = .src0 }},6263 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6884 .clobbers = .{ .eflags = true },6264 .any,
6885 .each = .{ .once = &.{6265 },
6886 .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ },6266 .patterns = &.{
6887 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6267 .{ .src = .{ .to_mem, .to_mem, .none } },
6888 .{ ._, ._, .mov, .dst0q, .src1q, ._, ._ },6268 },
6889 } },6269 .call_frame = .{ .alignment = .@"16" },
6890 }, .{6270 .extra_temps = .{
6891 .required_features = .{ .@"64bit", .cmov, null, null },6271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6892 .src_constraints = .{ .any_signed_int, .any_signed_int },6272 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6893 .patterns = &.{6273 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6894 .{ .src = .{ .to_mem, .to_mem } },6274 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6895 },6275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6896 .extra_temps = .{6276 else => unreachable,
6897 .{ .type = .isize, .kind = .{ .reg = .rsi } },6277 .zero => "__trunch",
6898 .{ .type = .u64, .kind = .{ .reg = .rdi } },6278 .down => "__floorh",
6899 .{ .type = .u64, .kind = .{ .reg = .rcx } },6279 } } } },
6900 .unused,6280 .unused,
6901 .unused,6281 .unused,
6902 .unused,6282 .unused,
6903 .unused,6283 .unused,
6904 .unused,6284 },
6905 .unused,6285 .dst_temps = .{.mem},
6906 },6286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6907 .dst_temps = .{.mem},6287 .each = .{ .once = &.{
6908 .clobbers = .{ .eflags = true },6288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6909 .each = .{ .once = &.{6289 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6910 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },6290 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6911 .{ ._, ._c, .cl, ._, ._, ._, ._ },6291 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6912 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },6292 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6913 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },6293 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6914 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6294 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6915 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6295 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
6916 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },6296 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6917 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },6297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6918 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6298 } },
6919 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },6299 }, .{
6920 .{ ._, ._ge, .cmov, .tmp0p, .tmp1p, ._, ._ },6300 .required_features = .{ .sse2, null, null, null },
6921 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6301 .src_constraints = .{
6922 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6302 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6923 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6303 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6924 } },6304 .any,
6925 }, .{6305 },
6926 .required_features = .{ .@"64bit", null, null, null },6306 .patterns = &.{
6927 .src_constraints = .{ .any_signed_int, .any_signed_int },6307 .{ .src = .{ .to_mem, .to_mem, .none } },
6928 .patterns = &.{6308 },
6929 .{ .src = .{ .to_mem, .to_mem } },6309 .call_frame = .{ .alignment = .@"16" },
6930 },6310 .extra_temps = .{
6931 .extra_temps = .{6311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6932 .{ .type = .isize, .kind = .{ .reg = .rsi } },6312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6933 .{ .type = .u64, .kind = .{ .reg = .rdi } },6313 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6934 .{ .type = .u64, .kind = .{ .reg = .rcx } },6314 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6935 .unused,6315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6936 .unused,6316 else => unreachable,
6937 .unused,6317 .zero => "__trunch",
6938 .unused,6318 .down => "__floorh",
6939 .unused,6319 } } } },
6940 .unused,6320 .{ .type = .f16, .kind = .{ .reg = .ax } },
6941 },6321 .unused,
6942 .dst_temps = .{.mem},6322 .unused,
6943 .clobbers = .{ .eflags = true },6323 .unused,
6944 .each = .{ .once = &.{6324 },
6945 .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ },6325 .dst_temps = .{.mem},
6946 .{ ._, ._c, .cl, ._, ._, ._, ._ },6326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6947 .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },6327 .each = .{ .once = &.{
6948 .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },6328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6949 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6329 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
6950 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6330 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
6951 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },6331 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6952 .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ },6332 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
6953 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6333 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6954 .{ ._, ._nge, .j, .@"0f", ._, ._, ._ },6334 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
6955 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },6335 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
6956 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6336 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
6957 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6337 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
6958 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6338 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6959 } },6339 } },
6960 }, .{6340 }, .{
6961 .required_features = .{ .@"64bit", .cmov, null, null },6341 .required_features = .{ .sse, null, null, null },
6962 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },6342 .src_constraints = .{
6963 .patterns = &.{6343 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6964 .{ .src = .{ .to_mem, .to_mem } },6344 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
6965 },6345 .any,
6966 .extra_temps = .{6346 },
6967 .{ .type = .isize, .kind = .{ .reg = .rsi } },6347 .patterns = &.{
6968 .{ .type = .u64, .kind = .{ .reg = .rdi } },6348 .{ .src = .{ .to_mem, .to_mem, .none } },
6969 .{ .type = .u64, .kind = .{ .reg = .rcx } },6349 },
6970 .unused,6350 .call_frame = .{ .alignment = .@"16" },
6971 .unused,6351 .extra_temps = .{
6972 .unused,6352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
6973 .unused,6353 .{ .type = .f16, .kind = .{ .reg = .ax } },
6974 .unused,6354 .{ .type = .f32, .kind = .mem },
6975 .unused,6355 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
6976 },6356 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
6977 .dst_temps = .{.mem},6357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
6978 .clobbers = .{ .eflags = true },6358 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
6979 .each = .{ .once = &.{6359 else => unreachable,
6980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },6360 .zero => "__trunch",
6981 .{ ._, ._c, .cl, ._, ._, ._, ._ },6361 .down => "__floorh",
6982 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },6362 } } } },
6983 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },6363 .unused,
6984 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6364 .unused,
6985 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6365 },
6986 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6366 .dst_temps = .{.mem},
6987 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },6367 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6988 .{ ._, ._ae, .cmov, .tmp0p, .tmp1p, ._, ._ },6368 .each = .{ .once = &.{
6989 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6369 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
6990 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6370 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
6991 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6371 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6992 } },6372 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
6993 }, .{6373 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
6994 .required_features = .{ .@"64bit", null, null, null },6374 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
6995 .src_constraints = .{ .any_unsigned_int, .any_unsigned_int },6375 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
6996 .patterns = &.{6376 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
6997 .{ .src = .{ .to_mem, .to_mem } },6377 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
6998 },6378 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
6999 .extra_temps = .{6379 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
7000 .{ .type = .isize, .kind = .{ .reg = .rsi } },6380 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
7001 .{ .type = .u64, .kind = .{ .reg = .rdi } },6381 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
7002 .{ .type = .u64, .kind = .{ .reg = .rcx } },6382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7003 .unused,6383 } },
7004 .unused,6384 }, .{
7005 .unused,6385 .required_features = .{ .avx, null, null, null },
7006 .unused,6386 .src_constraints = .{
7007 .unused,6387 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7008 .unused,6388 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7009 },6389 .any,
7010 .dst_temps = .{.mem},6390 },
7011 .clobbers = .{ .eflags = true },6391 .patterns = &.{
7012 .each = .{ .once = &.{6392 .{ .src = .{ .to_sse, .mem, .none } },
7013 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ },6393 .{ .src = .{ .to_sse, .to_sse, .none } },
7014 .{ ._, ._c, .cl, ._, ._, ._, ._ },6394 },
7015 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ },6395 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7016 .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ },6396 .each = .{ .once = &.{
7017 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },6397 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
7018 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },6398 .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) },
7019 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },6399 } },
7020 .{ ._, ._nae, .j, .@"0f", ._, ._, ._ },6400 }, .{
7021 .{ ._, ._, .lea, .tmp0p, .mem(.src1), ._, ._ },6401 .required_features = .{ .sse4_1, null, null, null },
7022 .{ .@"0:", ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },6402 .src_constraints = .{
7023 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },6403 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7024 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },6404 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7025 } },6405 .any,
7026 }, .{6406 },
7027 .required_features = .{ .avx, null, null, null },6407 .patterns = &.{
7028 .src_constraints = .{6408 .{ .src = .{ .to_mut_sse, .mem, .none } },
7029 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6409 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7030 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6410 },
7031 },6411 .dst_temps = .{.{ .ref = .src0 }},
7032 .patterns = &.{6412 .each = .{ .once = &.{
7033 .{ .src = .{ .to_sse, .mem } },6413 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7034 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },6414 .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7035 .{ .src = .{ .to_sse, .to_sse } },6415 } },
7036 },6416 }, .{
7037 .dst_temps = .{.{ .rc = .sse }},6417 .required_features = .{ .sse, null, null, null },
7038 .each = .{ .once = &.{6418 .src_constraints = .{
7039 .{ ._, .vp_b, .mins, .dst0x, .src0x, .src1x, ._ },6419 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7040 } },6420 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
7041 }, .{6421 .any,
7042 .required_features = .{ .sse4_1, null, null, null },6422 },
7043 .src_constraints = .{6423 .patterns = &.{
7044 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6424 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
7045 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6425 },
7046 },6426 .call_frame = .{ .alignment = .@"16" },
7047 .patterns = &.{6427 .extra_temps = .{
7048 .{ .src = .{ .to_mut_sse, .mem } },6428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
7049 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },6429 else => unreachable,
7050 .{ .src = .{ .to_mut_sse, .to_sse } },6430 .zero => "truncf",
7051 },6431 .down => "floorf",
7052 .dst_temps = .{.{ .ref = .src0 }},6432 } } } },
7053 .each = .{ .once = &.{6433 .unused,
7054 .{ ._, .p_b, .mins, .dst0x, .src1x, ._, ._ },6434 .unused,
7055 } },6435 .unused,
7056 }, .{6436 .unused,
7057 .required_features = .{ .sse2, null, null, null },6437 .unused,
7058 .src_constraints = .{6438 .unused,
7059 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6439 .unused,
7060 .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } },6440 .unused,
7061 },6441 },
7062 .patterns = &.{6442 .dst_temps = .{.{ .ref = .src0 }},
7063 .{ .src = .{ .to_mut_sse, .mem } },6443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7064 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },6444 .each = .{ .once = &.{
7065 .{ .src = .{ .to_mut_sse, .to_sse } },6445 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
7066 },6446 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
7067 .dst_temps = .{.{ .rc = .sse }},6447 } },
7068 .each = .{ .once = &.{6448 }, .{
7069 .{ ._, ._dqa, .mov, .dst0x, .src1x, ._, ._ },6449 .required_features = .{ .avx, null, null, null },
7070 .{ ._, .p_b, .cmpgt, .dst0x, .src0x, ._, ._ },6450 .src_constraints = .{
7071 .{ ._, .p_, .@"and", .src0x, .dst0x, ._, ._ },6451 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7072 .{ ._, .p_, .andn, .dst0x, .src1x, ._, ._ },6452 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7073 .{ ._, .p_, .@"or", .dst0x, .src0x, ._, ._ },6453 .any,
7074 } },6454 },
7075 }, .{6455 .patterns = &.{
7076 .required_features = .{ .avx2, null, null, null },6456 .{ .src = .{ .to_sse, .mem, .none } },
7077 .src_constraints = .{6457 .{ .src = .{ .to_sse, .to_sse, .none } },
7078 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },6458 },
7079 .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } },6459 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
7080 },6460 .each = .{ .once = &.{
7081 .patterns = &.{6461 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
7082 .{ .src = .{ .to_sse, .mem } },6462 .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7083 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },6463 } },
7084 .{ .src = .{ .to_sse, .to_sse } },6464 }, .{
7085 },6465 .required_features = .{ .sse4_1, null, null, null },
7086 .dst_temps = .{.{ .rc = .sse }},6466 .src_constraints = .{
7087 .each = .{ .once = &.{6467 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7088 .{ ._, .vp_b, .mins, .dst0y, .src0y, .src1y, ._ },6468 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
7089 } },6469 .any,
7090 }, .{6470 },
7091 .required_features = .{ .avx2, null, null, null },6471 .patterns = &.{
7092 .src_constraints = .{6472 .{ .src = .{ .to_mut_sse, .mem, .none } },
7093 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },6473 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7094 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } },6474 },
7095 },6475 .dst_temps = .{.{ .ref = .src0 }},
7096 .patterns = &.{6476 .each = .{ .once = &.{
7097 .{ .src = .{ .to_mem, .to_mem } },6477 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
7098 },6478 .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ },
7099 .extra_temps = .{6479 } },
7100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },6480 }, .{
7101 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },6481 .required_features = .{ .sse, null, null, null },
7102 .unused,6482 .src_constraints = .{
7103 .unused,6483 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7104 .unused,6484 .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } },
7105 .unused,6485 .any,
7106 .unused,6486 },
7107 .unused,6487 .patterns = &.{
7108 .unused,6488 .{ .src = .{ .to_mem, .to_mem, .none } },
7109 },6489 },
7110 .dst_temps = .{.mem},6490 .call_frame = .{ .alignment = .@"16" },
7111 .clobbers = .{ .eflags = true },6491 .extra_temps = .{
7112 .each = .{ .once = &.{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 = &.{
7113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },13714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
7114 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },13715 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
7115 .{ ._, .vp_b, .mins, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_size), ._ },13716 .{ ._, .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 {...@@ -7122,9 +13723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7122 .src_constraints = .{13723 .src_constraints = .{
7123 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13724 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7124 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13725 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13726 .any,
7125 },13727 },
7126 .patterns = &.{13728 .patterns = &.{
7127 .{ .src = .{ .to_mem, .to_mem } },13729 .{ .src = .{ .to_mem, .to_mem, .none } },
7128 },13730 },
7129 .extra_temps = .{13731 .extra_temps = .{
7130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7152,9 +13754,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7152,9 +13754,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7152 .src_constraints = .{13754 .src_constraints = .{
7153 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13755 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7154 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13756 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13757 .any,
7155 },13758 },
7156 .patterns = &.{13759 .patterns = &.{
7157 .{ .src = .{ .to_mem, .to_mem } },13760 .{ .src = .{ .to_mem, .to_mem, .none } },
7158 },13761 },
7159 .extra_temps = .{13762 .extra_temps = .{
7160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7182,9 +13785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7182,9 +13785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7182 .src_constraints = .{13785 .src_constraints = .{
7183 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13786 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
7184 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },13787 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } },
13788 .any,
7185 },13789 },
7186 .patterns = &.{13790 .patterns = &.{
7187 .{ .src = .{ .to_mem, .to_mem } },13791 .{ .src = .{ .to_mem, .to_mem, .none } },
7188 },13792 },
7189 .extra_temps = .{13793 .extra_temps = .{
7190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7216,9 +13820,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7216,9 +13820,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7216 .src_constraints = .{13820 .src_constraints = .{
7217 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13821 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7218 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13822 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13823 .any,
7219 },13824 },
7220 .patterns = &.{13825 .patterns = &.{
7221 .{ .src = .{ .to_mem, .to_mem } },13826 .{ .src = .{ .to_mem, .to_mem, .none } },
7222 },13827 },
7223 .extra_temps = .{13828 .extra_temps = .{
7224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7248,9 +13853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7248,9 +13853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7248 .src_constraints = .{13853 .src_constraints = .{
7249 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13854 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7250 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13855 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13856 .any,
7251 },13857 },
7252 .patterns = &.{13858 .patterns = &.{
7253 .{ .src = .{ .to_mem, .to_mem } },13859 .{ .src = .{ .to_mem, .to_mem, .none } },
7254 },13860 },
7255 .extra_temps = .{13861 .extra_temps = .{
7256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13862 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7280,9 +13886,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7280,9 +13886,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7280 .src_constraints = .{13886 .src_constraints = .{
7281 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13887 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7282 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13888 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13889 .any,
7283 },13890 },
7284 .patterns = &.{13891 .patterns = &.{
7285 .{ .src = .{ .to_mem, .to_mem } },13892 .{ .src = .{ .to_mem, .to_mem, .none } },
7286 },13893 },
7287 .extra_temps = .{13894 .extra_temps = .{
7288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7311,9 +13918,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7311,9 +13918,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7311 .src_constraints = .{13918 .src_constraints = .{
7312 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13919 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
7313 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },13920 .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } },
13921 .any,
7314 },13922 },
7315 .patterns = &.{13923 .patterns = &.{
7316 .{ .src = .{ .to_mem, .to_mem } },13924 .{ .src = .{ .to_mem, .to_mem, .none } },
7317 },13925 },
7318 .extra_temps = .{13926 .extra_temps = .{
7319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7343,11 +13951,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7343,11 +13951,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7343 .src_constraints = .{13951 .src_constraints = .{
7344 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },13952 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
7345 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },13953 .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } },
13954 .any,
7346 },13955 },
7347 .patterns = &.{13956 .patterns = &.{
7348 .{ .src = .{ .to_mut_mmx, .mem } },13957 .{ .src = .{ .to_mut_mmx, .mem, .none } },
7349 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },13958 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
7350 .{ .src = .{ .to_mut_mmx, .to_mmx } },13959 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
7351 },13960 },
7352 .dst_temps = .{.{ .ref = .src0 }},13961 .dst_temps = .{.{ .ref = .src0 }},
7353 .each = .{ .once = &.{13962 .each = .{ .once = &.{
...@@ -7358,11 +13967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7358,11 +13967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7358 .src_constraints = .{13967 .src_constraints = .{
7359 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },13968 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7360 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },13969 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
13970 .any,
7361 },13971 },
7362 .patterns = &.{13972 .patterns = &.{
7363 .{ .src = .{ .to_sse, .mem } },13973 .{ .src = .{ .to_sse, .mem, .none } },
7364 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },13974 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7365 .{ .src = .{ .to_sse, .to_sse } },13975 .{ .src = .{ .to_sse, .to_sse, .none } },
7366 },13976 },
7367 .dst_temps = .{.{ .rc = .sse }},13977 .dst_temps = .{.{ .rc = .sse }},
7368 .each = .{ .once = &.{13978 .each = .{ .once = &.{
...@@ -7373,11 +13983,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7373,11 +13983,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7373 .src_constraints = .{13983 .src_constraints = .{
7374 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },13984 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7375 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },13985 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
13986 .any,
7376 },13987 },
7377 .patterns = &.{13988 .patterns = &.{
7378 .{ .src = .{ .to_mut_sse, .mem } },13989 .{ .src = .{ .to_mut_sse, .mem, .none } },
7379 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },13990 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7380 .{ .src = .{ .to_mut_sse, .to_sse } },13991 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7381 },13992 },
7382 .dst_temps = .{.{ .ref = .src0 }},13993 .dst_temps = .{.{ .ref = .src0 }},
7383 .each = .{ .once = &.{13994 .each = .{ .once = &.{
...@@ -7388,11 +13999,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7388,11 +13999,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7388 .src_constraints = .{13999 .src_constraints = .{
7389 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },14000 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
7390 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },14001 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
14002 .any,
7391 },14003 },
7392 .patterns = &.{14004 .patterns = &.{
7393 .{ .src = .{ .to_sse, .mem } },14005 .{ .src = .{ .to_sse, .mem, .none } },
7394 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14006 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7395 .{ .src = .{ .to_sse, .to_sse } },14007 .{ .src = .{ .to_sse, .to_sse, .none } },
7396 },14008 },
7397 .dst_temps = .{.{ .rc = .sse }},14009 .dst_temps = .{.{ .rc = .sse }},
7398 .each = .{ .once = &.{14010 .each = .{ .once = &.{
...@@ -7403,9 +14015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7403,9 +14015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7403 .src_constraints = .{14015 .src_constraints = .{
7404 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },14016 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
7405 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },14017 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } },
14018 .any,
7406 },14019 },
7407 .patterns = &.{14020 .patterns = &.{
7408 .{ .src = .{ .to_mem, .to_mem } },14021 .{ .src = .{ .to_mem, .to_mem, .none } },
7409 },14022 },
7410 .extra_temps = .{14023 .extra_temps = .{
7411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7433,9 +14046,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7433,9 +14046,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7433 .src_constraints = .{14046 .src_constraints = .{
7434 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },14047 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7435 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },14048 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
14049 .any,
7436 },14050 },
7437 .patterns = &.{14051 .patterns = &.{
7438 .{ .src = .{ .to_mem, .to_mem } },14052 .{ .src = .{ .to_mem, .to_mem, .none } },
7439 },14053 },
7440 .extra_temps = .{14054 .extra_temps = .{
7441 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7463,9 +14077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7463,9 +14077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7463 .src_constraints = .{14077 .src_constraints = .{
7464 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },14078 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
7465 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },14079 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } },
14080 .any,
7466 },14081 },
7467 .patterns = &.{14082 .patterns = &.{
7468 .{ .src = .{ .to_mem, .to_mem } },14083 .{ .src = .{ .to_mem, .to_mem, .none } },
7469 },14084 },
7470 .extra_temps = .{14085 .extra_temps = .{
7471 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7493,9 +14108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7493,9 +14108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7493 .src_constraints = .{14108 .src_constraints = .{
7494 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14109 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7495 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14110 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14111 .any,
7496 },14112 },
7497 .patterns = &.{14113 .patterns = &.{
7498 .{ .src = .{ .to_mem, .to_mem } },14114 .{ .src = .{ .to_mem, .to_mem, .none } },
7499 },14115 },
7500 .extra_temps = .{14116 .extra_temps = .{
7501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7525,9 +14141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7525,9 +14141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7525 .src_constraints = .{14141 .src_constraints = .{
7526 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14142 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7527 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14143 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14144 .any,
7528 },14145 },
7529 .patterns = &.{14146 .patterns = &.{
7530 .{ .src = .{ .to_mem, .to_mem } },14147 .{ .src = .{ .to_mem, .to_mem, .none } },
7531 },14148 },
7532 .extra_temps = .{14149 .extra_temps = .{
7533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7557,9 +14174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7557,9 +14174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7557 .src_constraints = .{14174 .src_constraints = .{
7558 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14175 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7559 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14176 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14177 .any,
7560 },14178 },
7561 .patterns = &.{14179 .patterns = &.{
7562 .{ .src = .{ .to_mem, .to_mem } },14180 .{ .src = .{ .to_mem, .to_mem, .none } },
7563 },14181 },
7564 .extra_temps = .{14182 .extra_temps = .{
7565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7588,9 +14206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7588,9 +14206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7588 .src_constraints = .{14206 .src_constraints = .{
7589 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14207 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
7590 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },14208 .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } },
14209 .any,
7591 },14210 },
7592 .patterns = &.{14211 .patterns = &.{
7593 .{ .src = .{ .to_mem, .to_mem } },14212 .{ .src = .{ .to_mem, .to_mem, .none } },
7594 },14213 },
7595 .extra_temps = .{14214 .extra_temps = .{
7596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7620,11 +14239,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7620,11 +14239,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7620 .src_constraints = .{14239 .src_constraints = .{
7621 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },14240 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
7622 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },14241 .{ .scalar_signed_int = .{ .of = .qword, .is = .word } },
14242 .any,
7623 },14243 },
7624 .patterns = &.{14244 .patterns = &.{
7625 .{ .src = .{ .to_mut_mmx, .mem } },14245 .{ .src = .{ .to_mut_mmx, .mem, .none } },
7626 .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } },14246 .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } },
7627 .{ .src = .{ .to_mut_mmx, .to_mmx } },14247 .{ .src = .{ .to_mut_mmx, .to_mmx, .none } },
7628 },14248 },
7629 .dst_temps = .{.{ .ref = .src0 }},14249 .dst_temps = .{.{ .ref = .src0 }},
7630 .each = .{ .once = &.{14250 .each = .{ .once = &.{
...@@ -7635,11 +14255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7635,11 +14255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7635 .src_constraints = .{14255 .src_constraints = .{
7636 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },14256 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
7637 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },14257 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
14258 .any,
7638 },14259 },
7639 .patterns = &.{14260 .patterns = &.{
7640 .{ .src = .{ .to_sse, .mem } },14261 .{ .src = .{ .to_sse, .mem, .none } },
7641 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14262 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7642 .{ .src = .{ .to_sse, .to_sse } },14263 .{ .src = .{ .to_sse, .to_sse, .none } },
7643 },14264 },
7644 .dst_temps = .{.{ .rc = .sse }},14265 .dst_temps = .{.{ .rc = .sse }},
7645 .each = .{ .once = &.{14266 .each = .{ .once = &.{
...@@ -7650,11 +14271,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7650,11 +14271,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7650 .src_constraints = .{14271 .src_constraints = .{
7651 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },14272 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
7652 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },14273 .{ .scalar_signed_int = .{ .of = .xword, .is = .word } },
14274 .any,
7653 },14275 },
7654 .patterns = &.{14276 .patterns = &.{
7655 .{ .src = .{ .to_mut_sse, .mem } },14277 .{ .src = .{ .to_mut_sse, .mem, .none } },
7656 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14278 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7657 .{ .src = .{ .to_mut_sse, .to_sse } },14279 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7658 },14280 },
7659 .dst_temps = .{.{ .ref = .src0 }},14281 .dst_temps = .{.{ .ref = .src0 }},
7660 .each = .{ .once = &.{14282 .each = .{ .once = &.{
...@@ -7665,11 +14287,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7665,11 +14287,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7665 .src_constraints = .{14287 .src_constraints = .{
7666 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },14288 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
7667 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },14289 .{ .scalar_signed_int = .{ .of = .yword, .is = .word } },
14290 .any,
7668 },14291 },
7669 .patterns = &.{14292 .patterns = &.{
7670 .{ .src = .{ .to_sse, .mem } },14293 .{ .src = .{ .to_sse, .mem, .none } },
7671 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14294 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7672 .{ .src = .{ .to_sse, .to_sse } },14295 .{ .src = .{ .to_sse, .to_sse, .none } },
7673 },14296 },
7674 .dst_temps = .{.{ .rc = .sse }},14297 .dst_temps = .{.{ .rc = .sse }},
7675 .each = .{ .once = &.{14298 .each = .{ .once = &.{
...@@ -7680,9 +14303,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7680,9 +14303,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7680 .src_constraints = .{14303 .src_constraints = .{
7681 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },14304 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
7682 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },14305 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } },
14306 .any,
7683 },14307 },
7684 .patterns = &.{14308 .patterns = &.{
7685 .{ .src = .{ .to_mem, .to_mem } },14309 .{ .src = .{ .to_mem, .to_mem, .none } },
7686 },14310 },
7687 .extra_temps = .{14311 .extra_temps = .{
7688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7710,9 +14334,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7710,9 +14334,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7710 .src_constraints = .{14334 .src_constraints = .{
7711 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },14335 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
7712 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },14336 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
14337 .any,
7713 },14338 },
7714 .patterns = &.{14339 .patterns = &.{
7715 .{ .src = .{ .to_mem, .to_mem } },14340 .{ .src = .{ .to_mem, .to_mem, .none } },
7716 },14341 },
7717 .extra_temps = .{14342 .extra_temps = .{
7718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7740,9 +14365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7740,9 +14365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7740 .src_constraints = .{14365 .src_constraints = .{
7741 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },14366 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
7742 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },14367 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } },
14368 .any,
7743 },14369 },
7744 .patterns = &.{14370 .patterns = &.{
7745 .{ .src = .{ .to_mem, .to_mem } },14371 .{ .src = .{ .to_mem, .to_mem, .none } },
7746 },14372 },
7747 .extra_temps = .{14373 .extra_temps = .{
7748 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7770,9 +14396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7770,9 +14396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7770 .src_constraints = .{14396 .src_constraints = .{
7771 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },14397 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
7772 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },14398 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
14399 .any,
7773 },14400 },
7774 .patterns = &.{14401 .patterns = &.{
7775 .{ .src = .{ .to_mem, .to_mem } },14402 .{ .src = .{ .to_mem, .to_mem, .none } },
7776 },14403 },
7777 .extra_temps = .{14404 .extra_temps = .{
7778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7800,9 +14427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7800,9 +14427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7800 .src_constraints = .{14427 .src_constraints = .{
7801 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },14428 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
7802 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },14429 .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } },
14430 .any,
7803 },14431 },
7804 .patterns = &.{14432 .patterns = &.{
7805 .{ .src = .{ .to_mem, .to_mem } },14433 .{ .src = .{ .to_mem, .to_mem, .none } },
7806 },14434 },
7807 .extra_temps = .{14435 .extra_temps = .{
7808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7832,11 +14460,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7832,11 +14460,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7832 .src_constraints = .{14460 .src_constraints = .{
7833 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14461 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7834 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14462 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14463 .any,
7835 },14464 },
7836 .patterns = &.{14465 .patterns = &.{
7837 .{ .src = .{ .to_sse, .mem } },14466 .{ .src = .{ .to_sse, .mem, .none } },
7838 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14467 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7839 .{ .src = .{ .to_sse, .to_sse } },14468 .{ .src = .{ .to_sse, .to_sse, .none } },
7840 },14469 },
7841 .dst_temps = .{.{ .rc = .sse }},14470 .dst_temps = .{.{ .rc = .sse }},
7842 .each = .{ .once = &.{14471 .each = .{ .once = &.{
...@@ -7847,11 +14476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7847,11 +14476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7847 .src_constraints = .{14476 .src_constraints = .{
7848 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14477 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7849 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14478 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14479 .any,
7850 },14480 },
7851 .patterns = &.{14481 .patterns = &.{
7852 .{ .src = .{ .to_mut_sse, .mem } },14482 .{ .src = .{ .to_mut_sse, .mem, .none } },
7853 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14483 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7854 .{ .src = .{ .to_mut_sse, .to_sse } },14484 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7855 },14485 },
7856 .dst_temps = .{.{ .ref = .src0 }},14486 .dst_temps = .{.{ .ref = .src0 }},
7857 .each = .{ .once = &.{14487 .each = .{ .once = &.{
...@@ -7862,11 +14492,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7862,11 +14492,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7862 .src_constraints = .{14492 .src_constraints = .{
7863 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14493 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7864 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },14494 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14495 .any,
7865 },14496 },
7866 .patterns = &.{14497 .patterns = &.{
7867 .{ .src = .{ .to_mut_sse, .mem } },14498 .{ .src = .{ .to_mut_sse, .mem, .none } },
7868 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14499 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
7869 .{ .src = .{ .to_mut_sse, .to_sse } },14500 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
7870 },14501 },
7871 .dst_temps = .{.{ .rc = .sse }},14502 .dst_temps = .{.{ .rc = .sse }},
7872 .each = .{ .once = &.{14503 .each = .{ .once = &.{
...@@ -7879,11 +14510,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7879,11 +14510,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7879 .src_constraints = .{14510 .src_constraints = .{
7880 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },14511 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
7881 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },14512 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } },
14513 .any,
7882 },14514 },
7883 .patterns = &.{14515 .patterns = &.{
7884 .{ .src = .{ .to_sse, .mem } },14516 .{ .src = .{ .to_sse, .mem, .none } },
7885 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14517 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
7886 .{ .src = .{ .to_sse, .to_sse } },14518 .{ .src = .{ .to_sse, .to_sse, .none } },
7887 },14519 },
7888 .dst_temps = .{.{ .rc = .sse }},14520 .dst_temps = .{.{ .rc = .sse }},
7889 .each = .{ .once = &.{14521 .each = .{ .once = &.{
...@@ -7894,9 +14526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7894,9 +14526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7894 .src_constraints = .{14526 .src_constraints = .{
7895 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },14527 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
7896 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },14528 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } },
14529 .any,
7897 },14530 },
7898 .patterns = &.{14531 .patterns = &.{
7899 .{ .src = .{ .to_mem, .to_mem } },14532 .{ .src = .{ .to_mem, .to_mem, .none } },
7900 },14533 },
7901 .extra_temps = .{14534 .extra_temps = .{
7902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7924,9 +14557,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7924,9 +14557,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7924 .src_constraints = .{14557 .src_constraints = .{
7925 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14558 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7926 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14559 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14560 .any,
7927 },14561 },
7928 .patterns = &.{14562 .patterns = &.{
7929 .{ .src = .{ .to_mem, .to_mem } },14563 .{ .src = .{ .to_mem, .to_mem, .none } },
7930 },14564 },
7931 .extra_temps = .{14565 .extra_temps = .{
7932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7954,9 +14588,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7954,9 +14588,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7954 .src_constraints = .{14588 .src_constraints = .{
7955 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14589 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7956 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14590 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14591 .any,
7957 },14592 },
7958 .patterns = &.{14593 .patterns = &.{
7959 .{ .src = .{ .to_mem, .to_mem } },14594 .{ .src = .{ .to_mem, .to_mem, .none } },
7960 },14595 },
7961 .extra_temps = .{14596 .extra_temps = .{
7962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -7984,9 +14619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -7984,9 +14619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7984 .src_constraints = .{14619 .src_constraints = .{
7985 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14620 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
7986 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },14621 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } },
14622 .any,
7987 },14623 },
7988 .patterns = &.{14624 .patterns = &.{
7989 .{ .src = .{ .to_mem, .to_mem } },14625 .{ .src = .{ .to_mem, .to_mem, .none } },
7990 },14626 },
7991 .extra_temps = .{14627 .extra_temps = .{
7992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8016,9 +14652,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8016,9 +14652,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8016 .src_constraints = .{14652 .src_constraints = .{
8017 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },14653 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
8018 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },14654 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
14655 .any,
8019 },14656 },
8020 .patterns = &.{14657 .patterns = &.{
8021 .{ .src = .{ .to_mem, .to_mem } },14658 .{ .src = .{ .to_mem, .to_mem, .none } },
8022 },14659 },
8023 .extra_temps = .{14660 .extra_temps = .{
8024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8046,9 +14683,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8046,9 +14683,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8046 .src_constraints = .{14683 .src_constraints = .{
8047 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },14684 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
8048 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },14685 .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } },
14686 .any,
8049 },14687 },
8050 .patterns = &.{14688 .patterns = &.{
8051 .{ .src = .{ .to_mem, .to_mem } },14689 .{ .src = .{ .to_mem, .to_mem, .none } },
8052 },14690 },
8053 .extra_temps = .{14691 .extra_temps = .{
8054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8078,11 +14716,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8078,11 +14716,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8078 .src_constraints = .{14716 .src_constraints = .{
8079 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14717 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8080 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14718 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14719 .any,
8081 },14720 },
8082 .patterns = &.{14721 .patterns = &.{
8083 .{ .src = .{ .to_sse, .mem } },14722 .{ .src = .{ .to_sse, .mem, .none } },
8084 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14723 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8085 .{ .src = .{ .to_sse, .to_sse } },14724 .{ .src = .{ .to_sse, .to_sse, .none } },
8086 },14725 },
8087 .dst_temps = .{.{ .rc = .sse }},14726 .dst_temps = .{.{ .rc = .sse }},
8088 .each = .{ .once = &.{14727 .each = .{ .once = &.{
...@@ -8093,11 +14732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8093,11 +14732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8093 .src_constraints = .{14732 .src_constraints = .{
8094 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14733 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8095 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14734 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14735 .any,
8096 },14736 },
8097 .patterns = &.{14737 .patterns = &.{
8098 .{ .src = .{ .to_mut_sse, .mem } },14738 .{ .src = .{ .to_mut_sse, .mem, .none } },
8099 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14739 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8100 .{ .src = .{ .to_mut_sse, .to_sse } },14740 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8101 },14741 },
8102 .dst_temps = .{.{ .ref = .src0 }},14742 .dst_temps = .{.{ .ref = .src0 }},
8103 .each = .{ .once = &.{14743 .each = .{ .once = &.{
...@@ -8108,11 +14748,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8108,11 +14748,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8108 .src_constraints = .{14748 .src_constraints = .{
8109 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14749 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
8110 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },14750 .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } },
14751 .any,
8111 },14752 },
8112 .patterns = &.{14753 .patterns = &.{
8113 .{ .src = .{ .to_mut_sse, .mem } },14754 .{ .src = .{ .to_mut_sse, .mem, .none } },
8114 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14755 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8115 .{ .src = .{ .to_mut_sse, .to_sse } },14756 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8116 },14757 },
8117 .dst_temps = .{.{ .rc = .sse }},14758 .dst_temps = .{.{ .rc = .sse }},
8118 .each = .{ .once = &.{14759 .each = .{ .once = &.{
...@@ -8127,11 +14768,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8127,11 +14768,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8127 .src_constraints = .{14768 .src_constraints = .{
8128 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },14769 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
8129 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },14770 .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } },
14771 .any,
8130 },14772 },
8131 .patterns = &.{14773 .patterns = &.{
8132 .{ .src = .{ .to_sse, .mem } },14774 .{ .src = .{ .to_sse, .mem, .none } },
8133 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14775 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8134 .{ .src = .{ .to_sse, .to_sse } },14776 .{ .src = .{ .to_sse, .to_sse, .none } },
8135 },14777 },
8136 .dst_temps = .{.{ .rc = .sse }},14778 .dst_temps = .{.{ .rc = .sse }},
8137 .each = .{ .once = &.{14779 .each = .{ .once = &.{
...@@ -8142,9 +14784,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8142,9 +14784,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8142 .src_constraints = .{14784 .src_constraints = .{
8143 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },14785 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
8144 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },14786 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } },
14787 .any,
8145 },14788 },
8146 .patterns = &.{14789 .patterns = &.{
8147 .{ .src = .{ .to_mem, .to_mem } },14790 .{ .src = .{ .to_mem, .to_mem, .none } },
8148 },14791 },
8149 .extra_temps = .{14792 .extra_temps = .{
8150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8172,9 +14815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8172,9 +14815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8172 .src_constraints = .{14815 .src_constraints = .{
8173 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14816 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8174 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14817 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14818 .any,
8175 },14819 },
8176 .patterns = &.{14820 .patterns = &.{
8177 .{ .src = .{ .to_mem, .to_mem } },14821 .{ .src = .{ .to_mem, .to_mem, .none } },
8178 },14822 },
8179 .extra_temps = .{14823 .extra_temps = .{
8180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8202,9 +14846,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8202,9 +14846,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8202 .src_constraints = .{14846 .src_constraints = .{
8203 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14847 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8204 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14848 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14849 .any,
8205 },14850 },
8206 .patterns = &.{14851 .patterns = &.{
8207 .{ .src = .{ .to_mem, .to_mem } },14852 .{ .src = .{ .to_mem, .to_mem, .none } },
8208 },14853 },
8209 .extra_temps = .{14854 .extra_temps = .{
8210 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8232,9 +14877,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8232,9 +14877,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8232 .src_constraints = .{14877 .src_constraints = .{
8233 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14878 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
8234 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },14879 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } },
14880 .any,
8235 },14881 },
8236 .patterns = &.{14882 .patterns = &.{
8237 .{ .src = .{ .to_mem, .to_mem } },14883 .{ .src = .{ .to_mem, .to_mem, .none } },
8238 },14884 },
8239 .extra_temps = .{14885 .extra_temps = .{
8240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8266,9 +14912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8266,9 +14912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8266 .src_constraints = .{14912 .src_constraints = .{
8267 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },14913 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
8268 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },14914 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
14915 .any,
8269 },14916 },
8270 .patterns = &.{14917 .patterns = &.{
8271 .{ .src = .{ .to_mem, .to_mem } },14918 .{ .src = .{ .to_mem, .to_mem, .none } },
8272 },14919 },
8273 .extra_temps = .{14920 .extra_temps = .{
8274 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8296,9 +14943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8296,9 +14943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8296 .src_constraints = .{14943 .src_constraints = .{
8297 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },14944 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
8298 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },14945 .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } },
14946 .any,
8299 },14947 },
8300 .patterns = &.{14948 .patterns = &.{
8301 .{ .src = .{ .to_mem, .to_mem } },14949 .{ .src = .{ .to_mem, .to_mem, .none } },
8302 },14950 },
8303 .extra_temps = .{14951 .extra_temps = .{
8304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8328,11 +14976,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8328,11 +14976,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8328 .src_constraints = .{14976 .src_constraints = .{
8329 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },14977 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8330 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },14978 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
14979 .any,
8331 },14980 },
8332 .patterns = &.{14981 .patterns = &.{
8333 .{ .src = .{ .to_sse, .mem } },14982 .{ .src = .{ .to_sse, .mem, .none } },
8334 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },14983 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8335 .{ .src = .{ .to_sse, .to_sse } },14984 .{ .src = .{ .to_sse, .to_sse, .none } },
8336 },14985 },
8337 .dst_temps = .{.{ .rc = .sse }},14986 .dst_temps = .{.{ .rc = .sse }},
8338 .each = .{ .once = &.{14987 .each = .{ .once = &.{
...@@ -8343,11 +14992,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8343,11 +14992,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8343 .src_constraints = .{14992 .src_constraints = .{
8344 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },14993 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8345 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },14994 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
14995 .any,
8346 },14996 },
8347 .patterns = &.{14997 .patterns = &.{
8348 .{ .src = .{ .to_mut_sse, .mem } },14998 .{ .src = .{ .to_mut_sse, .mem, .none } },
8349 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },14999 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8350 .{ .src = .{ .to_mut_sse, .to_sse } },15000 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8351 },15001 },
8352 .dst_temps = .{.{ .ref = .src0 }},15002 .dst_temps = .{.{ .ref = .src0 }},
8353 .each = .{ .once = &.{15003 .each = .{ .once = &.{
...@@ -8358,11 +15008,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8358,11 +15008,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8358 .src_constraints = .{15008 .src_constraints = .{
8359 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15009 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8360 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15010 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15011 .any,
8361 },15012 },
8362 .patterns = &.{15013 .patterns = &.{
8363 .{ .src = .{ .to_mut_sse, .mem } },15014 .{ .src = .{ .to_mut_sse, .mem, .none } },
8364 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },15015 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8365 .{ .src = .{ .to_mut_sse, .to_sse } },15016 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8366 },15017 },
8367 .extra_temps = .{15018 .extra_temps = .{
8368 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },15019 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8392,11 +15043,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8392,11 +15043,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8392 .src_constraints = .{15043 .src_constraints = .{
8393 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },15044 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
8394 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },15045 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
15046 .any,
8395 },15047 },
8396 .patterns = &.{15048 .patterns = &.{
8397 .{ .src = .{ .to_sse, .mem } },15049 .{ .src = .{ .to_sse, .mem, .none } },
8398 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15050 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8399 .{ .src = .{ .to_sse, .to_sse } },15051 .{ .src = .{ .to_sse, .to_sse, .none } },
8400 },15052 },
8401 .dst_temps = .{.{ .rc = .sse }},15053 .dst_temps = .{.{ .rc = .sse }},
8402 .each = .{ .once = &.{15054 .each = .{ .once = &.{
...@@ -8407,9 +15059,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8407,9 +15059,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8407 .src_constraints = .{15059 .src_constraints = .{
8408 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },15060 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
8409 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },15061 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } },
15062 .any,
8410 },15063 },
8411 .patterns = &.{15064 .patterns = &.{
8412 .{ .src = .{ .to_mem, .to_mem } },15065 .{ .src = .{ .to_mem, .to_mem, .none } },
8413 },15066 },
8414 .extra_temps = .{15067 .extra_temps = .{
8415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8437,9 +15090,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8437,9 +15090,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8437 .src_constraints = .{15090 .src_constraints = .{
8438 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15091 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8439 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15092 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15093 .any,
8440 },15094 },
8441 .patterns = &.{15095 .patterns = &.{
8442 .{ .src = .{ .to_mem, .to_mem } },15096 .{ .src = .{ .to_mem, .to_mem, .none } },
8443 },15097 },
8444 .extra_temps = .{15098 .extra_temps = .{
8445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15099 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8467,9 +15121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8467,9 +15121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8467 .src_constraints = .{15121 .src_constraints = .{
8468 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15122 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8469 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15123 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15124 .any,
8470 },15125 },
8471 .patterns = &.{15126 .patterns = &.{
8472 .{ .src = .{ .to_mem, .to_mem } },15127 .{ .src = .{ .to_mem, .to_mem, .none } },
8473 },15128 },
8474 .extra_temps = .{15129 .extra_temps = .{
8475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8497,9 +15152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8497,9 +15152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8497 .src_constraints = .{15152 .src_constraints = .{
8498 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15153 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
8499 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },15154 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } },
15155 .any,
8500 },15156 },
8501 .patterns = &.{15157 .patterns = &.{
8502 .{ .src = .{ .to_mem, .to_mem } },15158 .{ .src = .{ .to_mem, .to_mem, .none } },
8503 },15159 },
8504 .extra_temps = .{15160 .extra_temps = .{
8505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8537,9 +15193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8537,9 +15193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8537 .src_constraints = .{15193 .src_constraints = .{
8538 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },15194 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
8539 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },15195 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
15196 .any,
8540 },15197 },
8541 .patterns = &.{15198 .patterns = &.{
8542 .{ .src = .{ .to_mem, .to_mem } },15199 .{ .src = .{ .to_mem, .to_mem, .none } },
8543 },15200 },
8544 .extra_temps = .{15201 .extra_temps = .{
8545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8567,9 +15224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8567,9 +15224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8567 .src_constraints = .{15224 .src_constraints = .{
8568 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },15225 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
8569 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },15226 .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } },
15227 .any,
8570 },15228 },
8571 .patterns = &.{15229 .patterns = &.{
8572 .{ .src = .{ .to_mem, .to_mem } },15230 .{ .src = .{ .to_mem, .to_mem, .none } },
8573 },15231 },
8574 .extra_temps = .{15232 .extra_temps = .{
8575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8599,11 +15257,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8599,11 +15257,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8599 .src_constraints = .{15257 .src_constraints = .{
8600 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },15258 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
8601 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },15259 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
15260 .any,
8602 },15261 },
8603 .patterns = &.{15262 .patterns = &.{
8604 .{ .src = .{ .to_sse, .mem } },15263 .{ .src = .{ .to_sse, .mem, .none } },
8605 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15264 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8606 .{ .src = .{ .to_sse, .to_sse } },15265 .{ .src = .{ .to_sse, .to_sse, .none } },
8607 },15266 },
8608 .dst_temps = .{.{ .rc = .sse }},15267 .dst_temps = .{.{ .rc = .sse }},
8609 .each = .{ .once = &.{15268 .each = .{ .once = &.{
...@@ -8615,11 +15274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8615,11 +15274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8615 .src_constraints = .{15274 .src_constraints = .{
8616 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },15275 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
8617 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },15276 .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } },
15277 .any,
8618 },15278 },
8619 .patterns = &.{15279 .patterns = &.{
8620 .{ .src = .{ .to_mut_sse, .mem } },15280 .{ .src = .{ .to_mut_sse, .mem, .none } },
8621 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },15281 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8622 .{ .src = .{ .to_mut_sse, .to_sse } },15282 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8623 },15283 },
8624 .extra_temps = .{15284 .extra_temps = .{
8625 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },15285 .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } },
...@@ -8643,11 +15303,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8643,11 +15303,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8643 .src_constraints = .{15303 .src_constraints = .{
8644 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },15304 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
8645 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },15305 .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } },
15306 .any,
8646 },15307 },
8647 .patterns = &.{15308 .patterns = &.{
8648 .{ .src = .{ .to_sse, .mem } },15309 .{ .src = .{ .to_sse, .mem, .none } },
8649 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15310 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8650 .{ .src = .{ .to_sse, .to_sse } },15311 .{ .src = .{ .to_sse, .to_sse, .none } },
8651 },15312 },
8652 .dst_temps = .{.{ .rc = .sse }},15313 .dst_temps = .{.{ .rc = .sse }},
8653 .each = .{ .once = &.{15314 .each = .{ .once = &.{
...@@ -8659,9 +15320,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8659,9 +15320,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8659 .src_constraints = .{15320 .src_constraints = .{
8660 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },15321 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
8661 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },15322 .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } },
15323 .any,
8662 },15324 },
8663 .patterns = &.{15325 .patterns = &.{
8664 .{ .src = .{ .to_mem, .to_mem } },15326 .{ .src = .{ .to_mem, .to_mem, .none } },
8665 },15327 },
8666 .extra_temps = .{15328 .extra_temps = .{
8667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8691,9 +15353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8691,9 +15353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8691 .src_constraints = .{15353 .src_constraints = .{
8692 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },15354 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
8693 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },15355 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
15356 .any,
8694 },15357 },
8695 .patterns = &.{15358 .patterns = &.{
8696 .{ .src = .{ .to_mem, .to_mem } },15359 .{ .src = .{ .to_mem, .to_mem, .none } },
8697 },15360 },
8698 .extra_temps = .{15361 .extra_temps = .{
8699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8723,9 +15386,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8723,9 +15386,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8723 .src_constraints = .{15386 .src_constraints = .{
8724 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },15387 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
8725 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },15388 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } },
15389 .any,
8726 },15390 },
8727 .patterns = &.{15391 .patterns = &.{
8728 .{ .src = .{ .to_mem, .to_mem } },15392 .{ .src = .{ .to_mem, .to_mem, .none } },
8729 },15393 },
8730 .extra_temps = .{15394 .extra_temps = .{
8731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8756,9 +15420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8756,9 +15420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8756 .src_constraints = .{15420 .src_constraints = .{
8757 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },15421 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
8758 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },15422 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
15423 .any,
8759 },15424 },
8760 .patterns = &.{15425 .patterns = &.{
8761 .{ .src = .{ .to_mem, .to_mem } },15426 .{ .src = .{ .to_mem, .to_mem, .none } },
8762 },15427 },
8763 .extra_temps = .{15428 .extra_temps = .{
8764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15429 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8787,9 +15452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8787,9 +15452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8787 .src_constraints = .{15452 .src_constraints = .{
8788 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },15453 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
8789 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },15454 .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } },
15455 .any,
8790 },15456 },
8791 .patterns = &.{15457 .patterns = &.{
8792 .{ .src = .{ .to_mem, .to_mem } },15458 .{ .src = .{ .to_mem, .to_mem, .none } },
8793 },15459 },
8794 .extra_temps = .{15460 .extra_temps = .{
8795 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8819,11 +15485,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8819,11 +15485,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8819 .src_constraints = .{15485 .src_constraints = .{
8820 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15486 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8821 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15487 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15488 .any,
8822 },15489 },
8823 .patterns = &.{15490 .patterns = &.{
8824 .{ .src = .{ .to_sse, .mem } },15491 .{ .src = .{ .to_sse, .mem, .none } },
8825 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15492 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8826 .{ .src = .{ .to_sse, .to_sse } },15493 .{ .src = .{ .to_sse, .to_sse, .none } },
8827 },15494 },
8828 .extra_temps = .{15495 .extra_temps = .{
8829 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },15496 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8850,11 +15517,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8850,11 +15517,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8850 .src_constraints = .{15517 .src_constraints = .{
8851 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15518 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8852 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15519 .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15520 .any,
8853 },15521 },
8854 .patterns = &.{15522 .patterns = &.{
8855 .{ .src = .{ .to_mut_sse, .mem } },15523 .{ .src = .{ .to_mut_sse, .mem, .none } },
8856 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },15524 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
8857 .{ .src = .{ .to_mut_sse, .to_sse } },15525 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
8858 },15526 },
8859 .extra_temps = .{15527 .extra_temps = .{
8860 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },15528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8882,11 +15550,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8882,11 +15550,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8882 .src_constraints = .{15550 .src_constraints = .{
8883 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },15551 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
8884 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },15552 .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
15553 .any,
8885 },15554 },
8886 .patterns = &.{15555 .patterns = &.{
8887 .{ .src = .{ .to_sse, .mem } },15556 .{ .src = .{ .to_sse, .mem, .none } },
8888 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },15557 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
8889 .{ .src = .{ .to_sse, .to_sse } },15558 .{ .src = .{ .to_sse, .to_sse, .none } },
8890 },15559 },
8891 .extra_temps = .{15560 .extra_temps = .{
8892 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },15561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -8913,9 +15582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8913,9 +15582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8913 .src_constraints = .{15582 .src_constraints = .{
8914 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },15583 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
8915 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },15584 .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } },
15585 .any,
8916 },15586 },
8917 .patterns = &.{15587 .patterns = &.{
8918 .{ .src = .{ .to_mem, .to_mem } },15588 .{ .src = .{ .to_mem, .to_mem, .none } },
8919 },15589 },
8920 .extra_temps = .{15590 .extra_temps = .{
8921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8949,9 +15619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8949,9 +15619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8949 .src_constraints = .{15619 .src_constraints = .{
8950 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15620 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8951 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15621 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15622 .any,
8952 },15623 },
8953 .patterns = &.{15624 .patterns = &.{
8954 .{ .src = .{ .to_mem, .to_mem } },15625 .{ .src = .{ .to_mem, .to_mem, .none } },
8955 },15626 },
8956 .extra_temps = .{15627 .extra_temps = .{
8957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -8985,9 +15656,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8985,9 +15656,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8985 .src_constraints = .{15656 .src_constraints = .{
8986 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15657 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
8987 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },15658 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } },
15659 .any,
8988 },15660 },
8989 .patterns = &.{15661 .patterns = &.{
8990 .{ .src = .{ .to_mem, .to_mem } },15662 .{ .src = .{ .to_mem, .to_mem, .none } },
8991 },15663 },
8992 .extra_temps = .{15664 .extra_temps = .{
8993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9023,9 +15695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9023,9 +15695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9023 .src_constraints = .{15695 .src_constraints = .{
9024 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },15696 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
9025 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },15697 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
15698 .any,
9026 },15699 },
9027 .patterns = &.{15700 .patterns = &.{
9028 .{ .src = .{ .to_mem, .to_mem } },15701 .{ .src = .{ .to_mem, .to_mem, .none } },
9029 },15702 },
9030 .extra_temps = .{15703 .extra_temps = .{
9031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9054,9 +15727,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9054,9 +15727,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9054 .src_constraints = .{15727 .src_constraints = .{
9055 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },15728 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
9056 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },15729 .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } },
15730 .any,
9057 },15731 },
9058 .patterns = &.{15732 .patterns = &.{
9059 .{ .src = .{ .to_mem, .to_mem } },15733 .{ .src = .{ .to_mem, .to_mem, .none } },
9060 },15734 },
9061 .extra_temps = .{15735 .extra_temps = .{
9062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9083,9 +15757,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9083,9 +15757,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9083 } },15757 } },
9084 }, .{15758 }, .{
9085 .required_features = .{ .@"64bit", .cmov, null, null },15759 .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 },
9087 .patterns = &.{15761 .patterns = &.{
9088 .{ .src = .{ .to_mem, .to_mem } },15762 .{ .src = .{ .to_mem, .to_mem, .none } },
9089 },15763 },
9090 .extra_temps = .{15764 .extra_temps = .{
9091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9122,9 +15796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9122,9 +15796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9122 } },15796 } },
9123 }, .{15797 }, .{
9124 .required_features = .{ .@"64bit", null, null, null },15798 .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 },
9126 .patterns = &.{15800 .patterns = &.{
9127 .{ .src = .{ .to_mem, .to_mem } },15801 .{ .src = .{ .to_mem, .to_mem, .none } },
9128 },15802 },
9129 .extra_temps = .{15803 .extra_temps = .{
9130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9161,9 +15835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9161,9 +15835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9161 } },15835 } },
9162 }, .{15836 }, .{
9163 .required_features = .{ .@"64bit", .cmov, null, null },15837 .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 },
9165 .patterns = &.{15839 .patterns = &.{
9166 .{ .src = .{ .to_mem, .to_mem } },15840 .{ .src = .{ .to_mem, .to_mem, .none } },
9167 },15841 },
9168 .extra_temps = .{15842 .extra_temps = .{
9169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9198,9 +15872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9198,9 +15872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9198 } },15872 } },
9199 }, .{15873 }, .{
9200 .required_features = .{ .@"64bit", null, null, null },15874 .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 },
9202 .patterns = &.{15876 .patterns = &.{
9203 .{ .src = .{ .to_mem, .to_mem } },15877 .{ .src = .{ .to_mem, .to_mem, .none } },
9204 },15878 },
9205 .extra_temps = .{15879 .extra_temps = .{
9206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },15880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9238,9 +15912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9238,9 +15912,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9238 .src_constraints = .{15912 .src_constraints = .{
9239 .{ .scalar_float = .{ .of = .word, .is = .word } },15913 .{ .scalar_float = .{ .of = .word, .is = .word } },
9240 .{ .scalar_float = .{ .of = .word, .is = .word } },15914 .{ .scalar_float = .{ .of = .word, .is = .word } },
15915 .any,
9241 },15916 },
9242 .patterns = &.{15917 .patterns = &.{
9243 .{ .src = .{ .to_sse, .to_sse } },15918 .{ .src = .{ .to_sse, .to_sse, .none } },
9244 },15919 },
9245 .extra_temps = .{15920 .extra_temps = .{
9246 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },15921 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
...@@ -9257,8 +15932,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9257,8 +15932,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9257 .each = .{ .once = &.{15932 .each = .{ .once = &.{
9258 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },15933 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
9259 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },15934 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
9260 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) },15935 .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) },
9261 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ },15936 .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ },
9262 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },15937 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x },
9263 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },15938 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
9264 } },15939 } },
...@@ -9267,9 +15942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9267,9 +15942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9267 .src_constraints = .{15942 .src_constraints = .{
9268 .{ .scalar_float = .{ .of = .word, .is = .word } },15943 .{ .scalar_float = .{ .of = .word, .is = .word } },
9269 .{ .scalar_float = .{ .of = .word, .is = .word } },15944 .{ .scalar_float = .{ .of = .word, .is = .word } },
15945 .any,
9270 },15946 },
9271 .patterns = &.{15947 .patterns = &.{
9272 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },15948 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9273 },15949 },
9274 .call_frame = .{ .alignment = .@"16" },15950 .call_frame = .{ .alignment = .@"16" },
9275 .extra_temps = .{15951 .extra_temps = .{
...@@ -9293,16 +15969,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9293,16 +15969,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9293 .src_constraints = .{15969 .src_constraints = .{
9294 .{ .scalar_float = .{ .of = .qword, .is = .word } },15970 .{ .scalar_float = .{ .of = .qword, .is = .word } },
9295 .{ .scalar_float = .{ .of = .qword, .is = .word } },15971 .{ .scalar_float = .{ .of = .qword, .is = .word } },
15972 .any,
9296 },15973 },
9297 .patterns = &.{15974 .patterns = &.{
9298 .{ .src = .{ .mem, .mem } },15975 .{ .src = .{ .mem, .mem, .none } },
9299 .{ .src = .{ .to_sse, .mem } },15976 .{ .src = .{ .to_sse, .mem, .none } },
9300 .{ .src = .{ .mem, .to_sse } },15977 .{ .src = .{ .mem, .to_sse, .none } },
9301 .{ .src = .{ .to_sse, .to_sse } },15978 .{ .src = .{ .to_sse, .to_sse, .none } },
9302 },15979 },
9303 .extra_temps = .{15980 .extra_temps = .{
9304 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },15981 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9305 .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } },15982 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
9306 .unused,15983 .unused,
9307 .unused,15984 .unused,
9308 .unused,15985 .unused,
...@@ -9325,16 +16002,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9325,16 +16002,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9325 .src_constraints = .{16002 .src_constraints = .{
9326 .{ .scalar_float = .{ .of = .xword, .is = .word } },16003 .{ .scalar_float = .{ .of = .xword, .is = .word } },
9327 .{ .scalar_float = .{ .of = .xword, .is = .word } },16004 .{ .scalar_float = .{ .of = .xword, .is = .word } },
16005 .any,
9328 },16006 },
9329 .patterns = &.{16007 .patterns = &.{
9330 .{ .src = .{ .mem, .mem } },16008 .{ .src = .{ .mem, .mem, .none } },
9331 .{ .src = .{ .to_sse, .mem } },16009 .{ .src = .{ .to_sse, .mem, .none } },
9332 .{ .src = .{ .mem, .to_sse } },16010 .{ .src = .{ .mem, .to_sse, .none } },
9333 .{ .src = .{ .to_sse, .to_sse } },16011 .{ .src = .{ .to_sse, .to_sse, .none } },
9334 },16012 },
9335 .extra_temps = .{16013 .extra_temps = .{
9336 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },16014 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
9337 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },16015 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9338 .unused,16016 .unused,
9339 .unused,16017 .unused,
9340 .unused,16018 .unused,
...@@ -9350,22 +16028,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9350,22 +16028,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9350 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },16028 .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) },
9351 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },16029 .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ },
9352 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },16030 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y },
9353 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ },16031 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
9354 } },16032 } },
9355 }, .{16033 }, .{
9356 .required_features = .{ .f16c, null, null, null },16034 .required_features = .{ .f16c, null, null, null },
9357 .src_constraints = .{16035 .src_constraints = .{
9358 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },16036 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
9359 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },16037 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
16038 .any,
9360 },16039 },
9361 .patterns = &.{16040 .patterns = &.{
9362 .{ .src = .{ .to_mem, .to_mem } },16041 .{ .src = .{ .to_mem, .to_mem, .none } },
9363 },16042 },
9364 .extra_temps = .{16043 .extra_temps = .{
9365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9366 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },16045 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9367 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },16046 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9368 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },16047 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
9369 .unused,16048 .unused,
9370 .unused,16049 .unused,
9371 .unused,16050 .unused,
...@@ -9390,9 +16069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9390,9 +16069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9390 .src_constraints = .{16069 .src_constraints = .{
9391 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16070 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9392 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16071 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16072 .any,
9393 },16073 },
9394 .patterns = &.{16074 .patterns = &.{
9395 .{ .src = .{ .to_mem, .to_mem } },16075 .{ .src = .{ .to_mem, .to_mem, .none } },
9396 },16076 },
9397 .call_frame = .{ .alignment = .@"16" },16077 .call_frame = .{ .alignment = .@"16" },
9398 .extra_temps = .{16078 .extra_temps = .{
...@@ -9423,9 +16103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9423,9 +16103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9423 .src_constraints = .{16103 .src_constraints = .{
9424 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16104 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9425 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16105 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16106 .any,
9426 },16107 },
9427 .patterns = &.{16108 .patterns = &.{
9428 .{ .src = .{ .to_mem, .to_mem } },16109 .{ .src = .{ .to_mem, .to_mem, .none } },
9429 },16110 },
9430 .call_frame = .{ .alignment = .@"16" },16111 .call_frame = .{ .alignment = .@"16" },
9431 .extra_temps = .{16112 .extra_temps = .{
...@@ -9457,9 +16138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9457,9 +16138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9457 .src_constraints = .{16138 .src_constraints = .{
9458 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16139 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9459 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16140 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16141 .any,
9460 },16142 },
9461 .patterns = &.{16143 .patterns = &.{
9462 .{ .src = .{ .to_mem, .to_mem } },16144 .{ .src = .{ .to_mem, .to_mem, .none } },
9463 },16145 },
9464 .call_frame = .{ .alignment = .@"16" },16146 .call_frame = .{ .alignment = .@"16" },
9465 .extra_temps = .{16147 .extra_temps = .{
...@@ -9492,9 +16174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9492,9 +16174,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9492 .src_constraints = .{16174 .src_constraints = .{
9493 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16175 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
9494 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },16176 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
16177 .any,
9495 },16178 },
9496 .patterns = &.{16179 .patterns = &.{
9497 .{ .src = .{ .to_mem, .to_mem } },16180 .{ .src = .{ .to_mem, .to_mem, .none } },
9498 },16181 },
9499 .call_frame = .{ .alignment = .@"16" },16182 .call_frame = .{ .alignment = .@"16" },
9500 .extra_temps = .{16183 .extra_temps = .{
...@@ -9530,9 +16213,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9530,9 +16213,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9530 .src_constraints = .{16213 .src_constraints = .{
9531 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16214 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9532 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16215 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16216 .any,
9533 },16217 },
9534 .patterns = &.{16218 .patterns = &.{
9535 .{ .src = .{ .to_sse, .to_sse } },16219 .{ .src = .{ .to_sse, .to_sse, .none } },
9536 },16220 },
9537 .extra_temps = .{16221 .extra_temps = .{
9538 .{ .type = .f32, .kind = .{ .rc = .sse } },16222 .{ .type = .f32, .kind = .{ .rc = .sse } },
...@@ -9547,8 +16231,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9547,8 +16231,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9547 },16231 },
9548 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},16232 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
9549 .each = .{ .once = &.{16233 .each = .{ .once = &.{
9550 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },16234 .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) },
9551 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ },16235 .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ },
9552 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },16236 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
9553 } },16237 } },
9554 }, .{16238 }, .{
...@@ -9556,15 +16240,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9556,15 +16240,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9556 .src_constraints = .{16240 .src_constraints = .{
9557 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16241 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9558 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16242 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16243 .any,
9559 },16244 },
9560 .patterns = &.{16245 .patterns = &.{
9561 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },16246 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9562 },16247 },
9563 .dst_temps = .{.{ .rc = .sse }},16248 .dst_temps = .{.{ .rc = .sse }},
9564 .each = .{ .once = &.{16249 .each = .{ .once = &.{
9565 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },16250 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9566 .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ },16251 .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ },
9567 .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ },16252 .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ },
9568 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },16253 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
9569 } },16254 } },
9570 }, .{16255 }, .{
...@@ -9572,9 +16257,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9572,9 +16257,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9572 .src_constraints = .{16257 .src_constraints = .{
9573 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16258 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
9574 .{ .scalar_float = .{ .of = .dword, .is = .dword } },16259 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
16260 .any,
9575 },16261 },
9576 .patterns = &.{16262 .patterns = &.{
9577 .{ .src = .{ .to_mut_sse, .to_sse } },16263 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9578 },16264 },
9579 .extra_temps = .{16265 .extra_temps = .{
9580 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },16266 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9590,8 +16276,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9590,8 +16276,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9590 .dst_temps = .{.{ .ref = .src0 }},16276 .dst_temps = .{.{ .ref = .src0 }},
9591 .each = .{ .once = &.{16277 .each = .{ .once = &.{
9592 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },16278 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9593 .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ },16279 .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ },
9594 .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ },16280 .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ },
9595 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },16281 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
9596 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },16282 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
9597 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },16283 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9601,9 +16287,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9601,9 +16287,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9601 .src_constraints = .{16287 .src_constraints = .{
9602 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16288 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9603 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16289 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16290 .any,
9604 },16291 },
9605 .patterns = &.{16292 .patterns = &.{
9606 .{ .src = .{ .to_sse, .to_sse } },16293 .{ .src = .{ .to_sse, .to_sse, .none } },
9607 },16294 },
9608 .extra_temps = .{16295 .extra_temps = .{
9609 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },16296 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9627,17 +16314,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9627,17 +16314,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9627 .src_constraints = .{16314 .src_constraints = .{
9628 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16315 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9629 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16316 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16317 .any,
9630 },16318 },
9631 .patterns = &.{16319 .patterns = &.{
9632 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },16320 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
9633 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },16321 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
9634 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },16322 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9635 },16323 },
9636 .dst_temps = .{.{ .rc = .sse }},16324 .dst_temps = .{.{ .rc = .sse }},
9637 .each = .{ .once = &.{16325 .each = .{ .once = &.{
9638 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },16326 .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ },
9639 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },16327 .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ },
9640 .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ },16328 .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ },
9641 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },16329 .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ },
9642 } },16330 } },
9643 }, .{16331 }, .{
...@@ -9645,11 +16333,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9645,11 +16333,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9645 .src_constraints = .{16333 .src_constraints = .{
9646 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16334 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
9647 .{ .scalar_float = .{ .of = .xword, .is = .dword } },16335 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
16336 .any,
9648 },16337 },
9649 .patterns = &.{16338 .patterns = &.{
9650 .{ .src = .{ .to_mut_sse, .mem } },16339 .{ .src = .{ .to_mut_sse, .mem, .none } },
9651 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16340 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9652 .{ .src = .{ .to_mut_sse, .to_sse } },16341 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9653 },16342 },
9654 .extra_temps = .{16343 .extra_temps = .{
9655 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },16344 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
...@@ -9666,7 +16355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9666,7 +16355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9666 .each = .{ .once = &.{16355 .each = .{ .once = &.{
9667 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },16356 .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ },
9668 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },16357 .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ },
9669 .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ },16358 .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
9670 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },16359 .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ },
9671 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },16360 .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ },
9672 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },16361 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9676,9 +16365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9676,9 +16365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9676 .src_constraints = .{16365 .src_constraints = .{
9677 .{ .scalar_float = .{ .of = .yword, .is = .dword } },16366 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
9678 .{ .scalar_float = .{ .of = .yword, .is = .dword } },16367 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
16368 .any,
9679 },16369 },
9680 .patterns = &.{16370 .patterns = &.{
9681 .{ .src = .{ .to_sse, .to_sse } },16371 .{ .src = .{ .to_sse, .to_sse, .none } },
9682 },16372 },
9683 .extra_temps = .{16373 .extra_temps = .{
9684 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },16374 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
...@@ -9702,9 +16392,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9702,9 +16392,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9702 .src_constraints = .{16392 .src_constraints = .{
9703 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },16393 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
9704 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },16394 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
16395 .any,
9705 },16396 },
9706 .patterns = &.{16397 .patterns = &.{
9707 .{ .src = .{ .to_mem, .to_mem } },16398 .{ .src = .{ .to_mem, .to_mem, .none } },
9708 },16399 },
9709 .extra_temps = .{16400 .extra_temps = .{
9710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9735,9 +16426,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9735,9 +16426,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9735 .src_constraints = .{16426 .src_constraints = .{
9736 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },16427 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
9737 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },16428 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
16429 .any,
9738 },16430 },
9739 .patterns = &.{16431 .patterns = &.{
9740 .{ .src = .{ .to_mem, .to_mem } },16432 .{ .src = .{ .to_mem, .to_mem, .none } },
9741 },16433 },
9742 .extra_temps = .{16434 .extra_temps = .{
9743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9758,7 +16450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9758,7 +16450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9758 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },16450 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9759 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },16451 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
9760 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },16452 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9761 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },16453 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
9762 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },16454 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
9763 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },16455 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
9764 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },16456 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
...@@ -9769,9 +16461,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9769,9 +16461,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9769 .src_constraints = .{16461 .src_constraints = .{
9770 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },16462 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
9771 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },16463 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
16464 .any,
9772 },16465 },
9773 .patterns = &.{16466 .patterns = &.{
9774 .{ .src = .{ .to_mem, .to_mem } },16467 .{ .src = .{ .to_mem, .to_mem, .none } },
9775 },16468 },
9776 .extra_temps = .{16469 .extra_temps = .{
9777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16470 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -9792,7 +16485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9792,7 +16485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9792 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },16485 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9793 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },16486 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
9794 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },16487 .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ },
9795 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },16488 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
9796 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },16489 .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ },
9797 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },16490 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
9798 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },16491 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
...@@ -9805,9 +16498,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9805,9 +16498,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9805 .src_constraints = .{16498 .src_constraints = .{
9806 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16499 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9807 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16500 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16501 .any,
9808 },16502 },
9809 .patterns = &.{16503 .patterns = &.{
9810 .{ .src = .{ .to_sse, .to_sse } },16504 .{ .src = .{ .to_sse, .to_sse, .none } },
9811 },16505 },
9812 .extra_temps = .{16506 .extra_temps = .{
9813 .{ .type = .f64, .kind = .{ .rc = .sse } },16507 .{ .type = .f64, .kind = .{ .rc = .sse } },
...@@ -9822,8 +16516,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9822,8 +16516,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9822 },16516 },
9823 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},16517 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
9824 .each = .{ .once = &.{16518 .each = .{ .once = &.{
9825 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) },16519 .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) },
9826 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ },16520 .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ },
9827 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },16521 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x },
9828 } },16522 } },
9829 }, .{16523 }, .{
...@@ -9831,15 +16525,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9831,15 +16525,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9831 .src_constraints = .{16525 .src_constraints = .{
9832 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16526 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9833 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16527 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16528 .any,
9834 },16529 },
9835 .patterns = &.{16530 .patterns = &.{
9836 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },16531 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9837 },16532 },
9838 .dst_temps = .{.{ .rc = .sse }},16533 .dst_temps = .{.{ .rc = .sse }},
9839 .each = .{ .once = &.{16534 .each = .{ .once = &.{
9840 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },16535 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9841 .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ },16536 .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ },
9842 .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ },16537 .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ },
9843 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },16538 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
9844 } },16539 } },
9845 }, .{16540 }, .{
...@@ -9847,9 +16542,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9847,9 +16542,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9847 .src_constraints = .{16542 .src_constraints = .{
9848 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16543 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9849 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16544 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16545 .any,
9850 },16546 },
9851 .patterns = &.{16547 .patterns = &.{
9852 .{ .src = .{ .to_mut_sse, .to_sse } },16548 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9853 },16549 },
9854 .extra_temps = .{16550 .extra_temps = .{
9855 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },16551 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9865,8 +16561,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9865,8 +16561,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9865 .dst_temps = .{.{ .ref = .src0 }},16561 .dst_temps = .{.{ .ref = .src0 }},
9866 .each = .{ .once = &.{16562 .each = .{ .once = &.{
9867 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },16563 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9868 .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ },16564 .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ },
9869 .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },16565 .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ },
9870 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },16566 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
9871 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },16567 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
9872 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },16568 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9876,9 +16572,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9876,9 +16572,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9876 .src_constraints = .{16572 .src_constraints = .{
9877 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16573 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
9878 .{ .scalar_float = .{ .of = .qword, .is = .qword } },16574 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
16575 .any,
9879 },16576 },
9880 .patterns = &.{16577 .patterns = &.{
9881 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },16578 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
9882 },16579 },
9883 .call_frame = .{ .alignment = .@"16" },16580 .call_frame = .{ .alignment = .@"16" },
9884 .extra_temps = .{16581 .extra_temps = .{
...@@ -9902,9 +16599,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9902,9 +16599,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9902 .src_constraints = .{16599 .src_constraints = .{
9903 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16600 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9904 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16601 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16602 .any,
9905 },16603 },
9906 .patterns = &.{16604 .patterns = &.{
9907 .{ .src = .{ .to_sse, .to_sse } },16605 .{ .src = .{ .to_sse, .to_sse, .none } },
9908 },16606 },
9909 .extra_temps = .{16607 .extra_temps = .{
9910 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },16608 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9928,17 +16626,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9928,17 +16626,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9928 .src_constraints = .{16626 .src_constraints = .{
9929 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16627 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9930 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16628 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16629 .any,
9931 },16630 },
9932 .patterns = &.{16631 .patterns = &.{
9933 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } },16632 .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } },
9934 .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } },16633 .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } },
9935 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } },16634 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } },
9936 },16635 },
9937 .dst_temps = .{.{ .rc = .sse }},16636 .dst_temps = .{.{ .rc = .sse }},
9938 .each = .{ .once = &.{16637 .each = .{ .once = &.{
9939 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },16638 .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ },
9940 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },16639 .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ },
9941 .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ },16640 .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ },
9942 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },16641 .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ },
9943 } },16642 } },
9944 }, .{16643 }, .{
...@@ -9946,11 +16645,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9946,11 +16645,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9946 .src_constraints = .{16645 .src_constraints = .{
9947 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16646 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
9948 .{ .scalar_float = .{ .of = .xword, .is = .qword } },16647 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
16648 .any,
9949 },16649 },
9950 .patterns = &.{16650 .patterns = &.{
9951 .{ .src = .{ .to_mut_sse, .mem } },16651 .{ .src = .{ .to_mut_sse, .mem, .none } },
9952 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },16652 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
9953 .{ .src = .{ .to_mut_sse, .to_sse } },16653 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
9954 },16654 },
9955 .extra_temps = .{16655 .extra_temps = .{
9956 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },16656 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
...@@ -9967,7 +16667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9967,7 +16667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9967 .each = .{ .once = &.{16667 .each = .{ .once = &.{
9968 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },16668 .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ },
9969 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },16669 .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ },
9970 .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ },16670 .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ },
9971 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },16671 .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ },
9972 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },16672 .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ },
9973 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },16673 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
...@@ -9977,9 +16677,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9977,9 +16677,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9977 .src_constraints = .{16677 .src_constraints = .{
9978 .{ .scalar_float = .{ .of = .yword, .is = .qword } },16678 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
9979 .{ .scalar_float = .{ .of = .yword, .is = .qword } },16679 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
16680 .any,
9980 },16681 },
9981 .patterns = &.{16682 .patterns = &.{
9982 .{ .src = .{ .to_sse, .to_sse } },16683 .{ .src = .{ .to_sse, .to_sse, .none } },
9983 },16684 },
9984 .extra_temps = .{16685 .extra_temps = .{
9985 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },16686 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
...@@ -10003,9 +16704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10003,9 +16704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10003 .src_constraints = .{16704 .src_constraints = .{
10004 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },16705 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
10005 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },16706 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
16707 .any,
10006 },16708 },
10007 .patterns = &.{16709 .patterns = &.{
10008 .{ .src = .{ .to_mem, .to_mem } },16710 .{ .src = .{ .to_mem, .to_mem, .none } },
10009 },16711 },
10010 .extra_temps = .{16712 .extra_temps = .{
10011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10036,9 +16738,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10036,9 +16738,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10036 .src_constraints = .{16738 .src_constraints = .{
10037 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },16739 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
10038 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },16740 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
16741 .any,
10039 },16742 },
10040 .patterns = &.{16743 .patterns = &.{
10041 .{ .src = .{ .to_mem, .to_mem } },16744 .{ .src = .{ .to_mem, .to_mem, .none } },
10042 },16745 },
10043 .extra_temps = .{16746 .extra_temps = .{
10044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10059,7 +16762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10059,7 +16762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10059 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },16762 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10060 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },16763 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
10061 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },16764 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10062 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },16765 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
10063 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },16766 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
10064 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },16767 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
10065 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },16768 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
...@@ -10070,9 +16773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10070,9 +16773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10070 .src_constraints = .{16773 .src_constraints = .{
10071 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },16774 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
10072 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },16775 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
16776 .any,
10073 },16777 },
10074 .patterns = &.{16778 .patterns = &.{
10075 .{ .src = .{ .to_mem, .to_mem } },16779 .{ .src = .{ .to_mem, .to_mem, .none } },
10076 },16780 },
10077 .extra_temps = .{16781 .extra_temps = .{
10078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10093,7 +16797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10093,7 +16797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10093 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },16797 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10094 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },16798 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
10095 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },16799 .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ },
10096 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ },16800 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
10097 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },16801 .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ },
10098 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },16802 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
10099 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },16803 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
...@@ -10106,9 +16810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10106,9 +16810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10106 .src_constraints = .{16810 .src_constraints = .{
10107 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },16811 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
10108 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },16812 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
16813 .any,
10109 },16814 },
10110 .patterns = &.{16815 .patterns = &.{
10111 .{ .src = .{ .to_mem, .to_mem } },16816 .{ .src = .{ .to_mem, .to_mem, .none } },
10112 },16817 },
10113 .call_frame = .{ .alignment = .@"16" },16818 .call_frame = .{ .alignment = .@"16" },
10114 .extra_temps = .{16819 .extra_temps = .{
...@@ -10140,11 +16845,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10140,11 +16845,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10140 .src_constraints = .{16845 .src_constraints = .{
10141 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16846 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10142 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16847 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16848 .any,
10143 },16849 },
10144 .patterns = &.{16850 .patterns = &.{
10145 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },16851 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10146 .{ .src = .{ .mem, .to_x87 } },16852 .{ .src = .{ .mem, .to_x87, .none } },
10147 .{ .src = .{ .to_x87, .to_x87 } },16853 .{ .src = .{ .to_x87, .to_x87, .none } },
10148 },16854 },
10149 .extra_temps = .{16855 .extra_temps = .{
10150 .{ .type = .f80, .kind = .{ .reg = .st7 } },16856 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10172,11 +16878,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10172,11 +16878,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10172 .src_constraints = .{16878 .src_constraints = .{
10173 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16879 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10174 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16880 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16881 .any,
10175 },16882 },
10176 .patterns = &.{16883 .patterns = &.{
10177 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },16884 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10178 .{ .src = .{ .mem, .to_x87 } },16885 .{ .src = .{ .mem, .to_x87, .none } },
10179 .{ .src = .{ .to_x87, .to_x87 } },16886 .{ .src = .{ .to_x87, .to_x87, .none } },
10180 },16887 },
10181 .extra_temps = .{16888 .extra_temps = .{
10182 .{ .type = .f80, .kind = .{ .reg = .st7 } },16889 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10210,11 +16917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10210,11 +16917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10210 .src_constraints = .{16917 .src_constraints = .{
10211 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16918 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
10212 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },16919 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
16920 .any,
10213 },16921 },
10214 .patterns = &.{16922 .patterns = &.{
10215 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },16923 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
10216 .{ .src = .{ .mem, .to_x87 } },16924 .{ .src = .{ .mem, .to_x87, .none } },
10217 .{ .src = .{ .to_x87, .to_x87 } },16925 .{ .src = .{ .to_x87, .to_x87, .none } },
10218 },16926 },
10219 .extra_temps = .{16927 .extra_temps = .{
10220 .{ .type = .f80, .kind = .{ .reg = .st7 } },16928 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -10248,9 +16956,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10248,9 +16956,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10248 .src_constraints = .{16956 .src_constraints = .{
10249 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },16957 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10250 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },16958 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
16959 .any,
10251 },16960 },
10252 .patterns = &.{16961 .patterns = &.{
10253 .{ .src = .{ .to_mem, .to_mem } },16962 .{ .src = .{ .to_mem, .to_mem, .none } },
10254 },16963 },
10255 .extra_temps = .{16964 .extra_temps = .{
10256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },16965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10283,9 +16992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10283,9 +16992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10283 .src_constraints = .{16992 .src_constraints = .{
10284 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },16993 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10285 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },16994 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
16995 .any,
10286 },16996 },
10287 .patterns = &.{16997 .patterns = &.{
10288 .{ .src = .{ .to_mem, .to_mem } },16998 .{ .src = .{ .to_mem, .to_mem, .none } },
10289 },16999 },
10290 .extra_temps = .{17000 .extra_temps = .{
10291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10324,9 +17034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10324,9 +17034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10324 .src_constraints = .{17034 .src_constraints = .{
10325 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },17035 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
10326 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },17036 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
17037 .any,
10327 },17038 },
10328 .patterns = &.{17039 .patterns = &.{
10329 .{ .src = .{ .to_mem, .to_mem } },17040 .{ .src = .{ .to_mem, .to_mem, .none } },
10330 },17041 },
10331 .extra_temps = .{17042 .extra_temps = .{
10332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10365,9 +17076,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10365,9 +17076,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10365 .src_constraints = .{17076 .src_constraints = .{
10366 .{ .scalar_float = .{ .of = .xword, .is = .xword } },17077 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
10367 .{ .scalar_float = .{ .of = .xword, .is = .xword } },17078 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
17079 .any,
10368 },17080 },
10369 .patterns = &.{17081 .patterns = &.{
10370 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },17082 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
10371 },17083 },
10372 .call_frame = .{ .alignment = .@"16" },17084 .call_frame = .{ .alignment = .@"16" },
10373 .extra_temps = .{17085 .extra_temps = .{
...@@ -10391,9 +17103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10391,9 +17103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10391 .src_constraints = .{17103 .src_constraints = .{
10392 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17104 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10393 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17105 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17106 .any,
10394 },17107 },
10395 .patterns = &.{17108 .patterns = &.{
10396 .{ .src = .{ .to_mem, .to_mem } },17109 .{ .src = .{ .to_mem, .to_mem, .none } },
10397 },17110 },
10398 .call_frame = .{ .alignment = .@"16" },17111 .call_frame = .{ .alignment = .@"16" },
10399 .extra_temps = .{17112 .extra_temps = .{
...@@ -10423,9 +17136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10423,9 +17136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10423 .src_constraints = .{17136 .src_constraints = .{
10424 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17137 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10425 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17138 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17139 .any,
10426 },17140 },
10427 .patterns = &.{17141 .patterns = &.{
10428 .{ .src = .{ .to_mem, .to_mem } },17142 .{ .src = .{ .to_mem, .to_mem, .none } },
10429 },17143 },
10430 .call_frame = .{ .alignment = .@"16" },17144 .call_frame = .{ .alignment = .@"16" },
10431 .extra_temps = .{17145 .extra_temps = .{
...@@ -10455,9 +17169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10455,9 +17169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10455 .src_constraints = .{17169 .src_constraints = .{
10456 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17170 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
10457 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },17171 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
17172 .any,
10458 },17173 },
10459 .patterns = &.{17174 .patterns = &.{
10460 .{ .src = .{ .to_mem, .to_mem } },17175 .{ .src = .{ .to_mem, .to_mem, .none } },
10461 },17176 },
10462 .call_frame = .{ .alignment = .@"16" },17177 .call_frame = .{ .alignment = .@"16" },
10463 .extra_temps = .{17178 .extra_temps = .{
...@@ -10529,17 +17244,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10529,17 +17244,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10529 })) {17244 })) {
10530 else => unreachable,17245 else => unreachable,
10531 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{17246 inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{
10532 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },17247 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
10533 .patterns = &.{17248 .patterns = &.{
10534 .{ .src = .{ .mut_mem, .imm8 } },17249 .{ .src = .{ .mut_mem, .imm8, .none } },
10535 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },17250 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
10536 .{ .src = .{ .to_mut_gpr, .imm8 } },17251 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
10537 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },17252 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10538 .{ .src = .{ .mut_mem, .to_gpr } },17253 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10539 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },17254 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10540 .{ .src = .{ .to_mut_gpr, .mem } },17255 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10541 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },17256 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10542 .{ .src = .{ .to_mut_gpr, .to_gpr } },17257 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10543 },17258 },
10544 .dst_temps = .{.{ .ref = .src0 }},17259 .dst_temps = .{.{ .ref = .src0 }},
10545 .clobbers = .{ .eflags = true },17260 .clobbers = .{ .eflags = true },
...@@ -10547,17 +17262,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10547,17 +17262,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10547 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },17262 .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ },
10548 } },17263 } },
10549 }, .{17264 }, .{
10550 .src_constraints = .{ .{ .size = .word }, .{ .size = .word } },17265 .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any },
10551 .patterns = &.{17266 .patterns = &.{
10552 .{ .src = .{ .mut_mem, .imm16 } },17267 .{ .src = .{ .mut_mem, .imm16, .none } },
10553 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },17268 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
10554 .{ .src = .{ .to_mut_gpr, .imm16 } },17269 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
10555 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },17270 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10556 .{ .src = .{ .mut_mem, .to_gpr } },17271 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10557 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },17272 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10558 .{ .src = .{ .to_mut_gpr, .mem } },17273 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10559 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },17274 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10560 .{ .src = .{ .to_mut_gpr, .to_gpr } },17275 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10561 },17276 },
10562 .dst_temps = .{.{ .ref = .src0 }},17277 .dst_temps = .{.{ .ref = .src0 }},
10563 .clobbers = .{ .eflags = true },17278 .clobbers = .{ .eflags = true },
...@@ -10565,17 +17280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10565,17 +17280,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10565 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },17280 .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ },
10566 } },17281 } },
10567 }, .{17282 }, .{
10568 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } },17283 .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any },
10569 .patterns = &.{17284 .patterns = &.{
10570 .{ .src = .{ .mut_mem, .imm32 } },17285 .{ .src = .{ .mut_mem, .imm32, .none } },
10571 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },17286 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
10572 .{ .src = .{ .to_mut_gpr, .imm32 } },17287 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
10573 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },17288 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10574 .{ .src = .{ .mut_mem, .to_gpr } },17289 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10575 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },17290 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10576 .{ .src = .{ .to_mut_gpr, .mem } },17291 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10577 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },17292 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10578 .{ .src = .{ .to_mut_gpr, .to_gpr } },17293 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10579 },17294 },
10580 .dst_temps = .{.{ .ref = .src0 }},17295 .dst_temps = .{.{ .ref = .src0 }},
10581 .clobbers = .{ .eflags = true },17296 .clobbers = .{ .eflags = true },
...@@ -10584,17 +17299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10584,17 +17299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10584 } },17299 } },
10585 }, .{17300 }, .{
10586 .required_features = .{ .@"64bit", null, null, null },17301 .required_features = .{ .@"64bit", null, null, null },
10587 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },17302 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
10588 .patterns = &.{17303 .patterns = &.{
10589 .{ .src = .{ .mut_mem, .simm32 } },17304 .{ .src = .{ .mut_mem, .simm32, .none } },
10590 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },17305 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
10591 .{ .src = .{ .to_mut_gpr, .simm32 } },17306 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
10592 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },17307 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10593 .{ .src = .{ .mut_mem, .to_gpr } },17308 .{ .src = .{ .mut_mem, .to_gpr, .none } },
10594 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },17309 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
10595 .{ .src = .{ .to_mut_gpr, .mem } },17310 .{ .src = .{ .to_mut_gpr, .mem, .none } },
10596 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },17311 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
10597 .{ .src = .{ .to_mut_gpr, .to_gpr } },17312 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
10598 },17313 },
10599 .dst_temps = .{.{ .ref = .src0 }},17314 .dst_temps = .{.{ .ref = .src0 }},
10600 .clobbers = .{ .eflags = true },17315 .clobbers = .{ .eflags = true },
...@@ -10603,11 +17318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10603,11 +17318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10603 } },17318 } },
10604 }, .{17319 }, .{
10605 .required_features = .{ .mmx, null, null, null },17320 .required_features = .{ .mmx, null, null, null },
10606 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } },17321 .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any },
10607 .patterns = &.{17322 .patterns = &.{
10608 .{ .src = .{ .to_mut_mm, .mem } },17323 .{ .src = .{ .to_mut_mm, .mem, .none } },
10609 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },17324 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
10610 .{ .src = .{ .to_mut_mm, .to_mm } },17325 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
10611 },17326 },
10612 .dst_temps = .{.{ .ref = .src0 }},17327 .dst_temps = .{.{ .ref = .src0 }},
10613 .each = .{ .once = &.{17328 .each = .{ .once = &.{
...@@ -10615,11 +17330,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10615,11 +17330,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10615 } },17330 } },
10616 }, .{17331 }, .{
10617 .required_features = .{ .avx, null, null, null },17332 .required_features = .{ .avx, null, null, null },
10618 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },17333 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10619 .patterns = &.{17334 .patterns = &.{
10620 .{ .src = .{ .to_xmm, .mem } },17335 .{ .src = .{ .to_xmm, .mem, .none } },
10621 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },17336 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
10622 .{ .src = .{ .to_xmm, .to_xmm } },17337 .{ .src = .{ .to_xmm, .to_xmm, .none } },
10623 },17338 },
10624 .dst_temps = .{.{ .rc = .sse }},17339 .dst_temps = .{.{ .rc = .sse }},
10625 .each = .{ .once = &.{17340 .each = .{ .once = &.{
...@@ -10627,11 +17342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10627,11 +17342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10627 } },17342 } },
10628 }, .{17343 }, .{
10629 .required_features = .{ .sse2, null, null, null },17344 .required_features = .{ .sse2, null, null, null },
10630 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },17345 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10631 .patterns = &.{17346 .patterns = &.{
10632 .{ .src = .{ .to_mut_xmm, .mem } },17347 .{ .src = .{ .to_mut_xmm, .mem, .none } },
10633 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },17348 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
10634 .{ .src = .{ .to_mut_xmm, .to_xmm } },17349 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
10635 },17350 },
10636 .dst_temps = .{.{ .ref = .src0 }},17351 .dst_temps = .{.{ .ref = .src0 }},
10637 .each = .{ .once = &.{17352 .each = .{ .once = &.{
...@@ -10639,11 +17354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10639,11 +17354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10639 } },17354 } },
10640 }, .{17355 }, .{
10641 .required_features = .{ .sse, null, null, null },17356 .required_features = .{ .sse, null, null, null },
10642 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } },17357 .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any },
10643 .patterns = &.{17358 .patterns = &.{
10644 .{ .src = .{ .to_mut_xmm, .mem } },17359 .{ .src = .{ .to_mut_xmm, .mem, .none } },
10645 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },17360 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
10646 .{ .src = .{ .to_mut_xmm, .to_xmm } },17361 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
10647 },17362 },
10648 .dst_temps = .{.{ .ref = .src0 }},17363 .dst_temps = .{.{ .ref = .src0 }},
10649 .each = .{ .once = &.{17364 .each = .{ .once = &.{
...@@ -10651,11 +17366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10651,11 +17366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10651 } },17366 } },
10652 }, .{17367 }, .{
10653 .required_features = .{ .avx2, null, null, null },17368 .required_features = .{ .avx2, null, null, null },
10654 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },17369 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
10655 .patterns = &.{17370 .patterns = &.{
10656 .{ .src = .{ .to_ymm, .mem } },17371 .{ .src = .{ .to_ymm, .mem, .none } },
10657 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },17372 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
10658 .{ .src = .{ .to_ymm, .to_ymm } },17373 .{ .src = .{ .to_ymm, .to_ymm, .none } },
10659 },17374 },
10660 .dst_temps = .{.{ .rc = .sse }},17375 .dst_temps = .{.{ .rc = .sse }},
10661 .each = .{ .once = &.{17376 .each = .{ .once = &.{
...@@ -10663,11 +17378,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10663,11 +17378,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10663 } },17378 } },
10664 }, .{17379 }, .{
10665 .required_features = .{ .avx, null, null, null },17380 .required_features = .{ .avx, null, null, null },
10666 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } },17381 .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any },
10667 .patterns = &.{17382 .patterns = &.{
10668 .{ .src = .{ .to_ymm, .mem } },17383 .{ .src = .{ .to_ymm, .mem, .none } },
10669 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },17384 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
10670 .{ .src = .{ .to_ymm, .to_ymm } },17385 .{ .src = .{ .to_ymm, .to_ymm, .none } },
10671 },17386 },
10672 .dst_temps = .{.{ .rc = .sse }},17387 .dst_temps = .{.{ .rc = .sse }},
10673 .each = .{ .once = &.{17388 .each = .{ .once = &.{
...@@ -10675,9 +17390,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10675,9 +17390,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10675 } },17390 } },
10676 }, .{17391 }, .{
10677 .required_features = .{ .avx2, null, null, null },17392 .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 },
10679 .patterns = &.{17394 .patterns = &.{
10680 .{ .src = .{ .to_mem, .to_mem } },17395 .{ .src = .{ .to_mem, .to_mem, .none } },
10681 },17396 },
10682 .extra_temps = .{17397 .extra_temps = .{
10683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10702,9 +17417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10702,9 +17417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10702 } },17417 } },
10703 }, .{17418 }, .{
10704 .required_features = .{ .avx, null, null, null },17419 .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 },
10706 .patterns = &.{17421 .patterns = &.{
10707 .{ .src = .{ .to_mem, .to_mem } },17422 .{ .src = .{ .to_mem, .to_mem, .none } },
10708 },17423 },
10709 .extra_temps = .{17424 .extra_temps = .{
10710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10729,9 +17444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10729,9 +17444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10729 } },17444 } },
10730 }, .{17445 }, .{
10731 .required_features = .{ .avx, null, null, null },17446 .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 },
10733 .patterns = &.{17448 .patterns = &.{
10734 .{ .src = .{ .to_mem, .to_mem } },17449 .{ .src = .{ .to_mem, .to_mem, .none } },
10735 },17450 },
10736 .extra_temps = .{17451 .extra_temps = .{
10737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10756,9 +17471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10756,9 +17471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10756 } },17471 } },
10757 }, .{17472 }, .{
10758 .required_features = .{ .sse2, null, null, null },17473 .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 },
10760 .patterns = &.{17475 .patterns = &.{
10761 .{ .src = .{ .to_mem, .to_mem } },17476 .{ .src = .{ .to_mem, .to_mem, .none } },
10762 },17477 },
10763 .extra_temps = .{17478 .extra_temps = .{
10764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10783,9 +17498,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10783,9 +17498,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10783 } },17498 } },
10784 }, .{17499 }, .{
10785 .required_features = .{ .sse, null, null, null },17500 .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 },
10787 .patterns = &.{17502 .patterns = &.{
10788 .{ .src = .{ .to_mem, .to_mem } },17503 .{ .src = .{ .to_mem, .to_mem, .none } },
10789 },17504 },
10790 .extra_temps = .{17505 .extra_temps = .{
10791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10810,9 +17525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10810,9 +17525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10810 } },17525 } },
10811 }, .{17526 }, .{
10812 .required_features = .{ .mmx, null, null, null },17527 .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 },
10814 .patterns = &.{17529 .patterns = &.{
10815 .{ .src = .{ .to_mem, .to_mem } },17530 .{ .src = .{ .to_mem, .to_mem, .none } },
10816 },17531 },
10817 .extra_temps = .{17532 .extra_temps = .{
10818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10836,9 +17551,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10836,9 +17551,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10836 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },17551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10837 } },17552 } },
10838 }, .{17553 }, .{
10839 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } },17554 .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any },
10840 .patterns = &.{17555 .patterns = &.{
10841 .{ .src = .{ .to_mem, .to_mem } },17556 .{ .src = .{ .to_mem, .to_mem, .none } },
10842 },17557 },
10843 .extra_temps = .{17558 .extra_temps = .{
10844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -10878,20 +17593,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10878,20 +17593,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10878 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});17593 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
10879 var res: [1]Temp = undefined;17594 var res: [1]Temp = undefined;
10880 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{17595 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 },
10882 .patterns = &.{17597 .patterns = &.{
10883 .{ .src = .{ .mut_mem, .none } },17598 .{ .src = .{ .mut_mem, .none, .none } },
10884 .{ .src = .{ .to_mut_gpr, .none } },17599 .{ .src = .{ .to_mut_gpr, .none, .none } },
10885 },17600 },
10886 .dst_temps = .{.{ .ref = .src0 }},17601 .dst_temps = .{.{ .ref = .src0 }},
10887 .each = .{ .once = &.{17602 .each = .{ .once = &.{
10888 .{ ._, ._, .not, .dst0b, ._, ._, ._ },17603 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
10889 } },17604 } },
10890 }, .{17605 }, .{
10891 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },17606 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
10892 .patterns = &.{17607 .patterns = &.{
10893 .{ .src = .{ .mut_mem, .none } },17608 .{ .src = .{ .mut_mem, .none, .none } },
10894 .{ .src = .{ .to_mut_gpr, .none } },17609 .{ .src = .{ .to_mut_gpr, .none, .none } },
10895 },17610 },
10896 .dst_temps = .{.{ .ref = .src0 }},17611 .dst_temps = .{.{ .ref = .src0 }},
10897 .clobbers = .{ .eflags = true },17612 .clobbers = .{ .eflags = true },
...@@ -10899,20 +17614,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10899,20 +17614,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10899 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },17614 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ },
10900 } },17615 } },
10901 }, .{17616 }, .{
10902 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any },17617 .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any },
10903 .patterns = &.{17618 .patterns = &.{
10904 .{ .src = .{ .mut_mem, .none } },17619 .{ .src = .{ .mut_mem, .none, .none } },
10905 .{ .src = .{ .to_mut_gpr, .none } },17620 .{ .src = .{ .to_mut_gpr, .none, .none } },
10906 },17621 },
10907 .dst_temps = .{.{ .ref = .src0 }},17622 .dst_temps = .{.{ .ref = .src0 }},
10908 .each = .{ .once = &.{17623 .each = .{ .once = &.{
10909 .{ ._, ._, .not, .dst0w, ._, ._, ._ },17624 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
10910 } },17625 } },
10911 }, .{17626 }, .{
10912 .src_constraints = .{ .{ .unsigned_int = .word }, .any },17627 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
10913 .patterns = &.{17628 .patterns = &.{
10914 .{ .src = .{ .mut_mem, .none } },17629 .{ .src = .{ .mut_mem, .none, .none } },
10915 .{ .src = .{ .to_mut_gpr, .none } },17630 .{ .src = .{ .to_mut_gpr, .none, .none } },
10916 },17631 },
10917 .dst_temps = .{.{ .ref = .src0 }},17632 .dst_temps = .{.{ .ref = .src0 }},
10918 .clobbers = .{ .eflags = true },17633 .clobbers = .{ .eflags = true },
...@@ -10920,20 +17635,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10920,20 +17635,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10920 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },17635 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ },
10921 } },17636 } },
10922 }, .{17637 }, .{
10923 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any },17638 .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any },
10924 .patterns = &.{17639 .patterns = &.{
10925 .{ .src = .{ .mut_mem, .none } },17640 .{ .src = .{ .mut_mem, .none, .none } },
10926 .{ .src = .{ .to_mut_gpr, .none } },17641 .{ .src = .{ .to_mut_gpr, .none, .none } },
10927 },17642 },
10928 .dst_temps = .{.{ .ref = .src0 }},17643 .dst_temps = .{.{ .ref = .src0 }},
10929 .each = .{ .once = &.{17644 .each = .{ .once = &.{
10930 .{ ._, ._, .not, .dst0d, ._, ._, ._ },17645 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
10931 } },17646 } },
10932 }, .{17647 }, .{
10933 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },17648 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
10934 .patterns = &.{17649 .patterns = &.{
10935 .{ .src = .{ .mut_mem, .none } },17650 .{ .src = .{ .mut_mem, .none, .none } },
10936 .{ .src = .{ .to_mut_gpr, .none } },17651 .{ .src = .{ .to_mut_gpr, .none, .none } },
10937 },17652 },
10938 .dst_temps = .{.{ .ref = .src0 }},17653 .dst_temps = .{.{ .ref = .src0 }},
10939 .clobbers = .{ .eflags = true },17654 .clobbers = .{ .eflags = true },
...@@ -10942,10 +17657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10942,10 +17657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10942 } },17657 } },
10943 }, .{17658 }, .{
10944 .required_features = .{ .@"64bit", null, null, null },17659 .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 },
10946 .patterns = &.{17661 .patterns = &.{
10947 .{ .src = .{ .mut_mem, .none } },17662 .{ .src = .{ .mut_mem, .none, .none } },
10948 .{ .src = .{ .to_mut_gpr, .none } },17663 .{ .src = .{ .to_mut_gpr, .none, .none } },
10949 },17664 },
10950 .dst_temps = .{.{ .ref = .src0 }},17665 .dst_temps = .{.{ .ref = .src0 }},
10951 .each = .{ .once = &.{17666 .each = .{ .once = &.{
...@@ -10953,10 +17668,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10953,10 +17668,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10953 } },17668 } },
10954 }, .{17669 }, .{
10955 .required_features = .{ .@"64bit", null, null, null },17670 .required_features = .{ .@"64bit", null, null, null },
10956 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },17671 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
10957 .patterns = &.{17672 .patterns = &.{
10958 .{ .src = .{ .mem, .none } },17673 .{ .src = .{ .mem, .none, .none } },
10959 .{ .src = .{ .to_gpr, .none } },17674 .{ .src = .{ .to_gpr, .none, .none } },
10960 },17675 },
10961 .dst_temps = .{.{ .rc = .general_purpose }},17676 .dst_temps = .{.{ .rc = .general_purpose }},
10962 .each = .{ .once = &.{17677 .each = .{ .once = &.{
...@@ -10965,10 +17680,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10965,10 +17680,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10965 } },17680 } },
10966 }, .{17681 }, .{
10967 .required_features = .{ .mmx, null, null, null },17682 .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 },
10969 .patterns = &.{17684 .patterns = &.{
10970 .{ .src = .{ .mem, .none } },17685 .{ .src = .{ .mem, .none, .none } },
10971 .{ .src = .{ .to_mm, .none } },17686 .{ .src = .{ .to_mm, .none, .none } },
10972 },17687 },
10973 .dst_temps = .{.{ .rc = .mmx }},17688 .dst_temps = .{.{ .rc = .mmx }},
10974 .each = .{ .once = &.{17689 .each = .{ .once = &.{
...@@ -10977,9 +17692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10977,9 +17692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10977 } },17692 } },
10978 }, .{17693 }, .{
10979 .required_features = .{ .mmx, null, null, null },17694 .required_features = .{ .mmx, null, null, null },
10980 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },17695 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
10981 .patterns = &.{17696 .patterns = &.{
10982 .{ .src = .{ .to_mut_mm, .none } },17697 .{ .src = .{ .to_mut_mm, .none, .none } },
10983 },17698 },
10984 .extra_temps = .{17699 .extra_temps = .{
10985 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17700 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -10999,10 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10999,10 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10999 } },17714 } },
11000 }, .{17715 }, .{
11001 .required_features = .{ .avx, null, null, null },17716 .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 },
11003 .patterns = &.{17718 .patterns = &.{
11004 .{ .src = .{ .mem, .none } },17719 .{ .src = .{ .mem, .none, .none } },
11005 .{ .src = .{ .to_xmm, .none } },17720 .{ .src = .{ .to_xmm, .none, .none } },
11006 },17721 },
11007 .dst_temps = .{.{ .rc = .sse }},17722 .dst_temps = .{.{ .rc = .sse }},
11008 .each = .{ .once = &.{17723 .each = .{ .once = &.{
...@@ -11011,9 +17726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11011,9 +17726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11011 } },17726 } },
11012 }, .{17727 }, .{
11013 .required_features = .{ .avx, null, null, null },17728 .required_features = .{ .avx, null, null, null },
11014 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },17729 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
11015 .patterns = &.{17730 .patterns = &.{
11016 .{ .src = .{ .to_xmm, .none } },17731 .{ .src = .{ .to_xmm, .none, .none } },
11017 },17732 },
11018 .extra_temps = .{17733 .extra_temps = .{
11019 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17734 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11033,10 +17748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11033,10 +17748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11033 } },17748 } },
11034 }, .{17749 }, .{
11035 .required_features = .{ .sse2, null, null, null },17750 .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 },
11037 .patterns = &.{17752 .patterns = &.{
11038 .{ .src = .{ .mem, .none } },17753 .{ .src = .{ .mem, .none, .none } },
11039 .{ .src = .{ .to_xmm, .none } },17754 .{ .src = .{ .to_xmm, .none, .none } },
11040 },17755 },
11041 .dst_temps = .{.{ .rc = .sse }},17756 .dst_temps = .{.{ .rc = .sse }},
11042 .each = .{ .once = &.{17757 .each = .{ .once = &.{
...@@ -11045,9 +17760,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11045,9 +17760,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11045 } },17760 } },
11046 }, .{17761 }, .{
11047 .required_features = .{ .sse2, null, null, null },17762 .required_features = .{ .sse2, null, null, null },
11048 .src_constraints = .{ .{ .unsigned_int = .xword }, .any },17763 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
11049 .patterns = &.{17764 .patterns = &.{
11050 .{ .src = .{ .to_mut_xmm, .none } },17765 .{ .src = .{ .to_mut_xmm, .none, .none } },
11051 },17766 },
11052 .extra_temps = .{17767 .extra_temps = .{
11053 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11067,9 +17782,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11067,9 +17782,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11067 } },17782 } },
11068 }, .{17783 }, .{
11069 .required_features = .{ .sse, null, null, null },17784 .required_features = .{ .sse, null, null, null },
11070 .src_constraints = .{ .{ .int = .xword }, .any },17785 .src_constraints = .{ .{ .int = .xword }, .any, .any },
11071 .patterns = &.{17786 .patterns = &.{
11072 .{ .src = .{ .to_mut_xmm, .none } },17787 .{ .src = .{ .to_mut_xmm, .none, .none } },
11073 },17788 },
11074 .extra_temps = .{17789 .extra_temps = .{
11075 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17790 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11089,10 +17804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11089,10 +17804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11089 } },17804 } },
11090 }, .{17805 }, .{
11091 .required_features = .{ .avx2, null, null, null },17806 .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 },
11093 .patterns = &.{17808 .patterns = &.{
11094 .{ .src = .{ .mem, .none } },17809 .{ .src = .{ .mem, .none, .none } },
11095 .{ .src = .{ .to_ymm, .none } },17810 .{ .src = .{ .to_ymm, .none, .none } },
11096 },17811 },
11097 .dst_temps = .{.{ .rc = .sse }},17812 .dst_temps = .{.{ .rc = .sse }},
11098 .each = .{ .once = &.{17813 .each = .{ .once = &.{
...@@ -11101,9 +17816,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11101,9 +17816,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11101 } },17816 } },
11102 }, .{17817 }, .{
11103 .required_features = .{ .avx2, null, null, null },17818 .required_features = .{ .avx2, null, null, null },
11104 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },17819 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
11105 .patterns = &.{17820 .patterns = &.{
11106 .{ .src = .{ .to_ymm, .none } },17821 .{ .src = .{ .to_ymm, .none, .none } },
11107 },17822 },
11108 .extra_temps = .{17823 .extra_temps = .{
11109 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17824 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11123,10 +17838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11123,10 +17838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11123 } },17838 } },
11124 }, .{17839 }, .{
11125 .required_features = .{ .avx, null, null, null },17840 .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 },
11127 .patterns = &.{17842 .patterns = &.{
11128 .{ .src = .{ .mem, .none } },17843 .{ .src = .{ .mem, .none, .none } },
11129 .{ .src = .{ .to_ymm, .none } },17844 .{ .src = .{ .to_ymm, .none, .none } },
11130 },17845 },
11131 .dst_temps = .{.{ .rc = .sse }},17846 .dst_temps = .{.{ .rc = .sse }},
11132 .each = .{ .once = &.{17847 .each = .{ .once = &.{
...@@ -11135,9 +17850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11135,9 +17850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11135 } },17850 } },
11136 }, .{17851 }, .{
11137 .required_features = .{ .avx, null, null, null },17852 .required_features = .{ .avx, null, null, null },
11138 .src_constraints = .{ .{ .unsigned_int = .yword }, .any },17853 .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any },
11139 .patterns = &.{17854 .patterns = &.{
11140 .{ .src = .{ .to_ymm, .none } },17855 .{ .src = .{ .to_ymm, .none, .none } },
11141 },17856 },
11142 .extra_temps = .{17857 .extra_temps = .{
11143 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },17858 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11157,9 +17872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11157,9 +17872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11157 } },17872 } },
11158 }, .{17873 }, .{
11159 .required_features = .{ .avx2, null, null, null },17874 .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 },
11161 .patterns = &.{17876 .patterns = &.{
11162 .{ .src = .{ .to_mem, .none } },17877 .{ .src = .{ .to_mem, .none, .none } },
11163 },17878 },
11164 .extra_temps = .{17879 .extra_temps = .{
11165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11186,9 +17901,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11186,9 +17901,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11186 } },17901 } },
11187 }, .{17902 }, .{
11188 .required_features = .{ .avx2, null, null, null },17903 .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 },
11190 .patterns = &.{17905 .patterns = &.{
11191 .{ .src = .{ .to_mem, .none } },17906 .{ .src = .{ .to_mem, .none, .none } },
11192 },17907 },
11193 .extra_temps = .{17908 .extra_temps = .{
11194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17909 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11213,9 +17928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11213,9 +17928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11213 } },17928 } },
11214 }, .{17929 }, .{
11215 .required_features = .{ .avx, null, null, null },17930 .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 },
11217 .patterns = &.{17932 .patterns = &.{
11218 .{ .src = .{ .to_mem, .none } },17933 .{ .src = .{ .to_mem, .none, .none } },
11219 },17934 },
11220 .extra_temps = .{17935 .extra_temps = .{
11221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11242,9 +17957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11242,9 +17957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11242 } },17957 } },
11243 }, .{17958 }, .{
11244 .required_features = .{ .avx, null, null, null },17959 .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 },
11246 .patterns = &.{17961 .patterns = &.{
11247 .{ .src = .{ .to_mem, .none } },17962 .{ .src = .{ .to_mem, .none, .none } },
11248 },17963 },
11249 .extra_temps = .{17964 .extra_temps = .{
11250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11269,9 +17984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11269,9 +17984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11269 } },17984 } },
11270 }, .{17985 }, .{
11271 .required_features = .{ .avx, null, null, null },17986 .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 },
11273 .patterns = &.{17988 .patterns = &.{
11274 .{ .src = .{ .to_mem, .none } },17989 .{ .src = .{ .to_mem, .none, .none } },
11275 },17990 },
11276 .extra_temps = .{17991 .extra_temps = .{
11277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },17992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11296,9 +18011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11296,9 +18011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11296 } },18011 } },
11297 }, .{18012 }, .{
11298 .required_features = .{ .sse2, null, null, null },18013 .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 },
11300 .patterns = &.{18015 .patterns = &.{
11301 .{ .src = .{ .to_mem, .none } },18016 .{ .src = .{ .to_mem, .none, .none } },
11302 },18017 },
11303 .extra_temps = .{18018 .extra_temps = .{
11304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11324,9 +18039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11324,9 +18039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11324 } },18039 } },
11325 }, .{18040 }, .{
11326 .required_features = .{ .@"64bit", null, null, null },18041 .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 },
11328 .patterns = &.{18043 .patterns = &.{
11329 .{ .src = .{ .mut_mem, .none } },18044 .{ .src = .{ .mut_mem, .none, .none } },
11330 },18045 },
11331 .extra_temps = .{18046 .extra_temps = .{
11332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11350,9 +18065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11350,9 +18065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11350 } },18065 } },
11351 }, .{18066 }, .{
11352 .required_features = .{ .@"64bit", null, null, null },18067 .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 },
11354 .patterns = &.{18069 .patterns = &.{
11355 .{ .src = .{ .to_mem, .none } },18070 .{ .src = .{ .to_mem, .none, .none } },
11356 },18071 },
11357 .extra_temps = .{18072 .extra_temps = .{
11358 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11377,9 +18092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11377,9 +18092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11377 } },18092 } },
11378 }, .{18093 }, .{
11379 .required_features = .{ .@"64bit", null, null, null },18094 .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 },
11381 .patterns = &.{18096 .patterns = &.{
11382 .{ .src = .{ .mut_mem, .none } },18097 .{ .src = .{ .mut_mem, .none, .none } },
11383 },18098 },
11384 .extra_temps = .{18099 .extra_temps = .{
11385 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11404,9 +18119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11404,9 +18119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11404 } },18119 } },
11405 }, .{18120 }, .{
11406 .required_features = .{ .@"64bit", null, null, null },18121 .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 },
11408 .patterns = &.{18123 .patterns = &.{
11409 .{ .src = .{ .to_mem, .none } },18124 .{ .src = .{ .to_mem, .none, .none } },
11410 },18125 },
11411 .extra_temps = .{18126 .extra_temps = .{
11412 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11436,9 +18151,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11436,9 +18151,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11436 } },18151 } },
11437 }, .{18152 }, .{
11438 .required_features = .{ .@"64bit", null, null, null },18153 .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 },
11440 .patterns = &.{18155 .patterns = &.{
11441 .{ .src = .{ .mut_mem, .none } },18156 .{ .src = .{ .mut_mem, .none, .none } },
11442 },18157 },
11443 .extra_temps = .{18158 .extra_temps = .{
11444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11463,9 +18178,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11463,9 +18178,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11463 } },18178 } },
11464 }, .{18179 }, .{
11465 .required_features = .{ .@"64bit", null, null, null },18180 .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 },
11467 .patterns = &.{18182 .patterns = &.{
11468 .{ .src = .{ .to_mem, .none } },18183 .{ .src = .{ .to_mem, .none, .none } },
11469 },18184 },
11470 .extra_temps = .{18185 .extra_temps = .{
11471 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11491,9 +18206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11491,9 +18206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11491 } },18206 } },
11492 }, .{18207 }, .{
11493 .required_features = .{ .@"64bit", null, null, null },18208 .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 },
11495 .patterns = &.{18210 .patterns = &.{
11496 .{ .src = .{ .mut_mem, .none } },18211 .{ .src = .{ .mut_mem, .none, .none } },
11497 },18212 },
11498 .extra_temps = .{18213 .extra_temps = .{
11499 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11517,9 +18232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11517,9 +18232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11517 } },18232 } },
11518 }, .{18233 }, .{
11519 .required_features = .{ .@"64bit", null, null, null },18234 .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 },
11521 .patterns = &.{18236 .patterns = &.{
11522 .{ .src = .{ .to_mem, .none } },18237 .{ .src = .{ .to_mem, .none, .none } },
11523 },18238 },
11524 .extra_temps = .{18239 .extra_temps = .{
11525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11548,9 +18263,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11548,9 +18263,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11548 } },18263 } },
11549 }, .{18264 }, .{
11550 .required_features = .{ .@"64bit", null, null, null },18265 .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 },
11552 .patterns = &.{18267 .patterns = &.{
11553 .{ .src = .{ .mut_mem, .none } },18268 .{ .src = .{ .mut_mem, .none, .none } },
11554 },18269 },
11555 .extra_temps = .{18270 .extra_temps = .{
11556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11575,9 +18290,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11575,9 +18290,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11575 } },18290 } },
11576 }, .{18291 }, .{
11577 .required_features = .{ .@"64bit", null, null, null },18292 .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 },
11579 .patterns = &.{18294 .patterns = &.{
11580 .{ .src = .{ .to_mem, .none } },18295 .{ .src = .{ .to_mem, .none, .none } },
11581 },18296 },
11582 .extra_temps = .{18297 .extra_temps = .{
11583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11607,9 +18322,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11607,9 +18322,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11607 } },18322 } },
11608 }, .{18323 }, .{
11609 .required_features = .{ .@"64bit", null, null, null },18324 .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 },
11611 .patterns = &.{18326 .patterns = &.{
11612 .{ .src = .{ .mut_mem, .none } },18327 .{ .src = .{ .mut_mem, .none, .none } },
11613 },18328 },
11614 .extra_temps = .{18329 .extra_temps = .{
11615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18330 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11633,9 +18348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11633,9 +18348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11633 } },18348 } },
11634 }, .{18349 }, .{
11635 .required_features = .{ .@"64bit", null, null, null },18350 .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 },
11637 .patterns = &.{18352 .patterns = &.{
11638 .{ .src = .{ .to_mem, .none } },18353 .{ .src = .{ .to_mem, .none, .none } },
11639 },18354 },
11640 .extra_temps = .{18355 .extra_temps = .{
11641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11664,9 +18379,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11664,9 +18379,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11664 } },18379 } },
11665 }, .{18380 }, .{
11666 .required_features = .{ .@"64bit", null, null, null },18381 .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 },
11668 .patterns = &.{18383 .patterns = &.{
11669 .{ .src = .{ .mut_mem, .none } },18384 .{ .src = .{ .mut_mem, .none, .none } },
11670 },18385 },
11671 .extra_temps = .{18386 .extra_temps = .{
11672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18387 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11692,9 +18407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11692,9 +18407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11692 } },18407 } },
11693 }, .{18408 }, .{
11694 .required_features = .{ .@"64bit", null, null, null },18409 .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 },
11696 .patterns = &.{18411 .patterns = &.{
11697 .{ .src = .{ .to_mem, .none } },18412 .{ .src = .{ .to_mem, .none, .none } },
11698 },18413 },
11699 .extra_temps = .{18414 .extra_temps = .{
11700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11723,9 +18438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11723,9 +18438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11723 } },18438 } },
11724 }, .{18439 }, .{
11725 .required_features = .{ .@"64bit", null, null, null },18440 .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 },
11727 .patterns = &.{18442 .patterns = &.{
11728 .{ .src = .{ .mut_mem, .none } },18443 .{ .src = .{ .mut_mem, .none, .none } },
11729 },18444 },
11730 .extra_temps = .{18445 .extra_temps = .{
11731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11750,9 +18465,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11750,9 +18465,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11750 } },18465 } },
11751 }, .{18466 }, .{
11752 .required_features = .{ .@"64bit", null, null, null },18467 .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 },
11754 .patterns = &.{18469 .patterns = &.{
11755 .{ .src = .{ .to_mem, .none } },18470 .{ .src = .{ .to_mem, .none, .none } },
11756 },18471 },
11757 .extra_temps = .{18472 .extra_temps = .{
11758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18473 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11780,10 +18495,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11780,10 +18495,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11780 } },18495 } },
11781 }, .{18496 }, .{
11782 .required_features = .{ .mmx, null, null, null },18497 .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 },
11784 .patterns = &.{18499 .patterns = &.{
11785 .{ .src = .{ .mem, .none } },18500 .{ .src = .{ .mem, .none, .none } },
11786 .{ .src = .{ .to_mm, .none } },18501 .{ .src = .{ .to_mm, .none, .none } },
11787 },18502 },
11788 .dst_temps = .{.{ .rc = .mmx }},18503 .dst_temps = .{.{ .rc = .mmx }},
11789 .each = .{ .once = &.{18504 .each = .{ .once = &.{
...@@ -11792,9 +18507,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11792,9 +18507,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11792 } },18507 } },
11793 }, .{18508 }, .{
11794 .required_features = .{ .mmx, null, null, null },18509 .required_features = .{ .mmx, null, null, null },
11795 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any },18510 .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any },
11796 .patterns = &.{18511 .patterns = &.{
11797 .{ .src = .{ .to_mut_mm, .none } },18512 .{ .src = .{ .to_mut_mm, .none, .none } },
11798 },18513 },
11799 .extra_temps = .{18514 .extra_temps = .{
11800 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18515 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11814,10 +18529,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11814,10 +18529,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11814 } },18529 } },
11815 }, .{18530 }, .{
11816 .required_features = .{ .avx, null, null, null },18531 .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 },
11818 .patterns = &.{18533 .patterns = &.{
11819 .{ .src = .{ .mem, .none } },18534 .{ .src = .{ .mem, .none, .none } },
11820 .{ .src = .{ .to_xmm, .none } },18535 .{ .src = .{ .to_xmm, .none, .none } },
11821 },18536 },
11822 .dst_temps = .{.{ .rc = .sse }},18537 .dst_temps = .{.{ .rc = .sse }},
11823 .each = .{ .once = &.{18538 .each = .{ .once = &.{
...@@ -11826,9 +18541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11826,9 +18541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11826 } },18541 } },
11827 }, .{18542 }, .{
11828 .required_features = .{ .avx, null, null, null },18543 .required_features = .{ .avx, null, null, null },
11829 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },18544 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
11830 .patterns = &.{18545 .patterns = &.{
11831 .{ .src = .{ .to_xmm, .none } },18546 .{ .src = .{ .to_xmm, .none, .none } },
11832 },18547 },
11833 .extra_temps = .{18548 .extra_temps = .{
11834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18549 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11848,10 +18563,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11848,10 +18563,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11848 } },18563 } },
11849 }, .{18564 }, .{
11850 .required_features = .{ .sse2, null, null, null },18565 .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 },
11852 .patterns = &.{18567 .patterns = &.{
11853 .{ .src = .{ .mem, .none } },18568 .{ .src = .{ .mem, .none, .none } },
11854 .{ .src = .{ .to_xmm, .none } },18569 .{ .src = .{ .to_xmm, .none, .none } },
11855 },18570 },
11856 .dst_temps = .{.{ .rc = .sse }},18571 .dst_temps = .{.{ .rc = .sse }},
11857 .each = .{ .once = &.{18572 .each = .{ .once = &.{
...@@ -11860,9 +18575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11860,9 +18575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11860 } },18575 } },
11861 }, .{18576 }, .{
11862 .required_features = .{ .sse2, null, null, null },18577 .required_features = .{ .sse2, null, null, null },
11863 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any },18578 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
11864 .patterns = &.{18579 .patterns = &.{
11865 .{ .src = .{ .to_mut_xmm, .none } },18580 .{ .src = .{ .to_mut_xmm, .none, .none } },
11866 },18581 },
11867 .extra_temps = .{18582 .extra_temps = .{
11868 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18583 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11882,9 +18597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11882,9 +18597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11882 } },18597 } },
11883 }, .{18598 }, .{
11884 .required_features = .{ .sse, null, null, null },18599 .required_features = .{ .sse, null, null, null },
11885 .src_constraints = .{ .{ .vec = .xword }, .any },18600 .src_constraints = .{ .{ .vec = .xword }, .any, .any },
11886 .patterns = &.{18601 .patterns = &.{
11887 .{ .src = .{ .to_mut_xmm, .none } },18602 .{ .src = .{ .to_mut_xmm, .none, .none } },
11888 },18603 },
11889 .extra_temps = .{18604 .extra_temps = .{
11890 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18605 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11904,10 +18619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11904,10 +18619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11904 } },18619 } },
11905 }, .{18620 }, .{
11906 .required_features = .{ .avx2, null, null, null },18621 .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 },
11908 .patterns = &.{18623 .patterns = &.{
11909 .{ .src = .{ .mem, .none } },18624 .{ .src = .{ .mem, .none, .none } },
11910 .{ .src = .{ .to_ymm, .none } },18625 .{ .src = .{ .to_ymm, .none, .none } },
11911 },18626 },
11912 .dst_temps = .{.{ .rc = .sse }},18627 .dst_temps = .{.{ .rc = .sse }},
11913 .each = .{ .once = &.{18628 .each = .{ .once = &.{
...@@ -11916,9 +18631,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11916,9 +18631,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11916 } },18631 } },
11917 }, .{18632 }, .{
11918 .required_features = .{ .avx2, null, null, null },18633 .required_features = .{ .avx2, null, null, null },
11919 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },18634 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
11920 .patterns = &.{18635 .patterns = &.{
11921 .{ .src = .{ .to_ymm, .none } },18636 .{ .src = .{ .to_ymm, .none, .none } },
11922 },18637 },
11923 .extra_temps = .{18638 .extra_temps = .{
11924 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18639 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11938,10 +18653,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11938,10 +18653,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11938 } },18653 } },
11939 }, .{18654 }, .{
11940 .required_features = .{ .avx, null, null, null },18655 .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 },
11942 .patterns = &.{18657 .patterns = &.{
11943 .{ .src = .{ .mem, .none } },18658 .{ .src = .{ .mem, .none, .none } },
11944 .{ .src = .{ .to_ymm, .none } },18659 .{ .src = .{ .to_ymm, .none, .none } },
11945 },18660 },
11946 .dst_temps = .{.{ .rc = .sse }},18661 .dst_temps = .{.{ .rc = .sse }},
11947 .each = .{ .once = &.{18662 .each = .{ .once = &.{
...@@ -11950,9 +18665,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11950,9 +18665,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11950 } },18665 } },
11951 }, .{18666 }, .{
11952 .required_features = .{ .avx, null, null, null },18667 .required_features = .{ .avx, null, null, null },
11953 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any },18668 .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any },
11954 .patterns = &.{18669 .patterns = &.{
11955 .{ .src = .{ .to_ymm, .none } },18670 .{ .src = .{ .to_ymm, .none, .none } },
11956 },18671 },
11957 .extra_temps = .{18672 .extra_temps = .{
11958 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },18673 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -11973,7 +18688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11973,7 +18688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11973 }, .{18688 }, .{
11974 .required_features = .{ .@"64bit", null, null, null },18689 .required_features = .{ .@"64bit", null, null, null },
11975 .patterns = &.{18690 .patterns = &.{
11976 .{ .src = .{ .to_mem, .none } },18691 .{ .src = .{ .to_mem, .none, .none } },
11977 },18692 },
11978 .extra_temps = .{18693 .extra_temps = .{
11979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -11999,7 +18714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11999,7 +18714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11999 } },18714 } },
12000 }, .{18715 }, .{
12001 .patterns = &.{18716 .patterns = &.{
12002 .{ .src = .{ .to_mem, .none } },18717 .{ .src = .{ .to_mem, .none, .none } },
12003 },18718 },
12004 .extra_temps = .{18719 .extra_temps = .{
12005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },18720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -12089,10 +18804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12089,10 +18804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12089 var res: [1]Temp = undefined;18804 var res: [1]Temp = undefined;
12090 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{18805 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
12091 .required_features = .{ .slow_incdec, null, null, null },18806 .required_features = .{ .slow_incdec, null, null, null },
12092 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },18807 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
12093 .patterns = &.{18808 .patterns = &.{
12094 .{ .src = .{ .mut_mem, .none } },18809 .{ .src = .{ .mut_mem, .none, .none } },
12095 .{ .src = .{ .to_mut_gpr, .none } },18810 .{ .src = .{ .to_mut_gpr, .none, .none } },
12096 },18811 },
12097 .dst_temps = .{.{ .ref = .src0 }},18812 .dst_temps = .{.{ .ref = .src0 }},
12098 .clobbers = .{ .eflags = true },18813 .clobbers = .{ .eflags = true },
...@@ -12100,10 +18815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12100,10 +18815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12100 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },18815 .{ ._, ._, .add, .dst0b, .si(1), ._, ._ },
12101 } },18816 } },
12102 }, .{18817 }, .{
12103 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any },18818 .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any },
12104 .patterns = &.{18819 .patterns = &.{
12105 .{ .src = .{ .mut_mem, .none } },18820 .{ .src = .{ .mut_mem, .none, .none } },
12106 .{ .src = .{ .to_mut_gpr, .none } },18821 .{ .src = .{ .to_mut_gpr, .none, .none } },
12107 },18822 },
12108 .dst_temps = .{.{ .ref = .src0 }},18823 .dst_temps = .{.{ .ref = .src0 }},
12109 .clobbers = .{ .eflags = true },18824 .clobbers = .{ .eflags = true },
...@@ -12111,10 +18826,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12111,10 +18826,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12111 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },18826 .{ ._, ._c, .in, .dst0b, ._, ._, ._ },
12112 } },18827 } },
12113 }, .{18828 }, .{
12114 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any },18829 .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any },
12115 .patterns = &.{18830 .patterns = &.{
12116 .{ .src = .{ .mut_mem, .none } },18831 .{ .src = .{ .mut_mem, .none, .none } },
12117 .{ .src = .{ .to_mut_gpr, .none } },18832 .{ .src = .{ .to_mut_gpr, .none, .none } },
12118 },18833 },
12119 .dst_temps = .{.{ .ref = .src0 }},18834 .dst_temps = .{.{ .ref = .src0 }},
12120 .clobbers = .{ .eflags = true },18835 .clobbers = .{ .eflags = true },
...@@ -12123,10 +18838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12123,10 +18838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12123 } },18838 } },
12124 }, .{18839 }, .{
12125 .required_features = .{ .lzcnt, null, null, null },18840 .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 },
12127 .patterns = &.{18842 .patterns = &.{
12128 .{ .src = .{ .mem, .none } },18843 .{ .src = .{ .mem, .none, .none } },
12129 .{ .src = .{ .to_gpr, .none } },18844 .{ .src = .{ .to_gpr, .none, .none } },
12130 },18845 },
12131 .dst_temps = .{.{ .rc = .general_purpose }},18846 .dst_temps = .{.{ .rc = .general_purpose }},
12132 .clobbers = .{ .eflags = true },18847 .clobbers = .{ .eflags = true },
...@@ -12137,10 +18852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12137,10 +18852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12137 } },18852 } },
12138 }, .{18853 }, .{
12139 .required_features = .{ .lzcnt, null, null, null },18854 .required_features = .{ .lzcnt, null, null, null },
12140 .src_constraints = .{ .{ .signed_int = .byte }, .any },18855 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12141 .patterns = &.{18856 .patterns = &.{
12142 .{ .src = .{ .mem, .none } },18857 .{ .src = .{ .mem, .none, .none } },
12143 .{ .src = .{ .to_gpr, .none } },18858 .{ .src = .{ .to_gpr, .none, .none } },
12144 },18859 },
12145 .dst_temps = .{.{ .rc = .general_purpose }},18860 .dst_temps = .{.{ .rc = .general_purpose }},
12146 .clobbers = .{ .eflags = true },18861 .clobbers = .{ .eflags = true },
...@@ -12152,9 +18867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12152,9 +18867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12152 } },18867 } },
12153 }, .{18868 }, .{
12154 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },18869 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12155 .src_constraints = .{ .{ .exact_int = 16 }, .any },18870 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
12156 .patterns = &.{18871 .patterns = &.{
12157 .{ .src = .{ .to_mut_gpr, .none } },18872 .{ .src = .{ .to_mut_gpr, .none, .none } },
12158 },18873 },
12159 .dst_temps = .{.{ .ref = .src0 }},18874 .dst_temps = .{.{ .ref = .src0 }},
12160 .clobbers = .{ .eflags = true },18875 .clobbers = .{ .eflags = true },
...@@ -12163,10 +18878,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12163,10 +18878,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12163 } },18878 } },
12164 }, .{18879 }, .{
12165 .required_features = .{ .lzcnt, null, null, null },18880 .required_features = .{ .lzcnt, null, null, null },
12166 .src_constraints = .{ .{ .exact_int = 16 }, .any },18881 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
12167 .patterns = &.{18882 .patterns = &.{
12168 .{ .src = .{ .mem, .none } },18883 .{ .src = .{ .mem, .none, .none } },
12169 .{ .src = .{ .to_gpr, .none } },18884 .{ .src = .{ .to_gpr, .none, .none } },
12170 },18885 },
12171 .dst_temps = .{.{ .rc = .general_purpose }},18886 .dst_temps = .{.{ .rc = .general_purpose }},
12172 .clobbers = .{ .eflags = true },18887 .clobbers = .{ .eflags = true },
...@@ -12175,9 +18890,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12175,9 +18890,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12175 } },18890 } },
12176 }, .{18891 }, .{
12177 .required_features = .{ .lzcnt, null, null, null },18892 .required_features = .{ .lzcnt, null, null, null },
12178 .src_constraints = .{ .{ .signed_int = .word }, .any },18893 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12179 .patterns = &.{18894 .patterns = &.{
12180 .{ .src = .{ .to_mut_gpr, .none } },18895 .{ .src = .{ .to_mut_gpr, .none, .none } },
12181 },18896 },
12182 .dst_temps = .{.{ .ref = .src0 }},18897 .dst_temps = .{.{ .ref = .src0 }},
12183 .clobbers = .{ .eflags = true },18898 .clobbers = .{ .eflags = true },
...@@ -12188,9 +18903,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12188,9 +18903,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12188 } },18903 } },
12189 }, .{18904 }, .{
12190 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },18905 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12191 .src_constraints = .{ .{ .unsigned_int = .word }, .any },18906 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12192 .patterns = &.{18907 .patterns = &.{
12193 .{ .src = .{ .to_mut_gpr, .none } },18908 .{ .src = .{ .to_mut_gpr, .none, .none } },
12194 },18909 },
12195 .dst_temps = .{.{ .ref = .src0 }},18910 .dst_temps = .{.{ .ref = .src0 }},
12196 .clobbers = .{ .eflags = true },18911 .clobbers = .{ .eflags = true },
...@@ -12200,10 +18915,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12200,10 +18915,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12200 } },18915 } },
12201 }, .{18916 }, .{
12202 .required_features = .{ .lzcnt, null, null, null },18917 .required_features = .{ .lzcnt, null, null, null },
12203 .src_constraints = .{ .{ .unsigned_int = .word }, .any },18918 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12204 .patterns = &.{18919 .patterns = &.{
12205 .{ .src = .{ .mem, .none } },18920 .{ .src = .{ .mem, .none, .none } },
12206 .{ .src = .{ .to_gpr, .none } },18921 .{ .src = .{ .to_gpr, .none, .none } },
12207 },18922 },
12208 .dst_temps = .{.{ .rc = .general_purpose }},18923 .dst_temps = .{.{ .rc = .general_purpose }},
12209 .clobbers = .{ .eflags = true },18924 .clobbers = .{ .eflags = true },
...@@ -12213,9 +18928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12213,9 +18928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12213 } },18928 } },
12214 }, .{18929 }, .{
12215 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },18930 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12216 .src_constraints = .{ .{ .exact_int = 32 }, .any },18931 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
12217 .patterns = &.{18932 .patterns = &.{
12218 .{ .src = .{ .to_mut_gpr, .none } },18933 .{ .src = .{ .to_mut_gpr, .none, .none } },
12219 },18934 },
12220 .dst_temps = .{.{ .ref = .src0 }},18935 .dst_temps = .{.{ .ref = .src0 }},
12221 .clobbers = .{ .eflags = true },18936 .clobbers = .{ .eflags = true },
...@@ -12224,10 +18939,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12224,10 +18939,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12224 } },18939 } },
12225 }, .{18940 }, .{
12226 .required_features = .{ .lzcnt, null, null, null },18941 .required_features = .{ .lzcnt, null, null, null },
12227 .src_constraints = .{ .{ .exact_int = 32 }, .any },18942 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
12228 .patterns = &.{18943 .patterns = &.{
12229 .{ .src = .{ .mem, .none } },18944 .{ .src = .{ .mem, .none, .none } },
12230 .{ .src = .{ .to_gpr, .none } },18945 .{ .src = .{ .to_gpr, .none, .none } },
12231 },18946 },
12232 .dst_temps = .{.{ .rc = .general_purpose }},18947 .dst_temps = .{.{ .rc = .general_purpose }},
12233 .clobbers = .{ .eflags = true },18948 .clobbers = .{ .eflags = true },
...@@ -12236,9 +18951,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12236,9 +18951,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12236 } },18951 } },
12237 }, .{18952 }, .{
12238 .required_features = .{ .lzcnt, null, null, null },18953 .required_features = .{ .lzcnt, null, null, null },
12239 .src_constraints = .{ .{ .signed_int = .dword }, .any },18954 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12240 .patterns = &.{18955 .patterns = &.{
12241 .{ .src = .{ .to_mut_gpr, .none } },18956 .{ .src = .{ .to_mut_gpr, .none, .none } },
12242 },18957 },
12243 .dst_temps = .{.{ .ref = .src0 }},18958 .dst_temps = .{.{ .ref = .src0 }},
12244 .clobbers = .{ .eflags = true },18959 .clobbers = .{ .eflags = true },
...@@ -12249,9 +18964,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12249,9 +18964,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12249 } },18964 } },
12250 }, .{18965 }, .{
12251 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },18966 .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null },
12252 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },18967 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12253 .patterns = &.{18968 .patterns = &.{
12254 .{ .src = .{ .to_mut_gpr, .none } },18969 .{ .src = .{ .to_mut_gpr, .none, .none } },
12255 },18970 },
12256 .dst_temps = .{.{ .ref = .src0 }},18971 .dst_temps = .{.{ .ref = .src0 }},
12257 .clobbers = .{ .eflags = true },18972 .clobbers = .{ .eflags = true },
...@@ -12261,10 +18976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12261,10 +18976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12261 } },18976 } },
12262 }, .{18977 }, .{
12263 .required_features = .{ .lzcnt, null, null, null },18978 .required_features = .{ .lzcnt, null, null, null },
12264 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },18979 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12265 .patterns = &.{18980 .patterns = &.{
12266 .{ .src = .{ .mem, .none } },18981 .{ .src = .{ .mem, .none, .none } },
12267 .{ .src = .{ .to_gpr, .none } },18982 .{ .src = .{ .to_gpr, .none, .none } },
12268 },18983 },
12269 .dst_temps = .{.{ .rc = .general_purpose }},18984 .dst_temps = .{.{ .rc = .general_purpose }},
12270 .clobbers = .{ .eflags = true },18985 .clobbers = .{ .eflags = true },
...@@ -12274,9 +18989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12274,9 +18989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12274 } },18989 } },
12275 }, .{18990 }, .{
12276 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },18991 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12277 .src_constraints = .{ .{ .exact_int = 64 }, .any },18992 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
12278 .patterns = &.{18993 .patterns = &.{
12279 .{ .src = .{ .to_mut_gpr, .none } },18994 .{ .src = .{ .to_mut_gpr, .none, .none } },
12280 },18995 },
12281 .dst_temps = .{.{ .ref = .src0 }},18996 .dst_temps = .{.{ .ref = .src0 }},
12282 .clobbers = .{ .eflags = true },18997 .clobbers = .{ .eflags = true },
...@@ -12285,10 +19000,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12285,10 +19000,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12285 } },19000 } },
12286 }, .{19001 }, .{
12287 .required_features = .{ .@"64bit", .lzcnt, null, null },19002 .required_features = .{ .@"64bit", .lzcnt, null, null },
12288 .src_constraints = .{ .{ .exact_int = 64 }, .any },19003 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
12289 .patterns = &.{19004 .patterns = &.{
12290 .{ .src = .{ .mem, .none } },19005 .{ .src = .{ .mem, .none, .none } },
12291 .{ .src = .{ .to_gpr, .none } },19006 .{ .src = .{ .to_gpr, .none, .none } },
12292 },19007 },
12293 .dst_temps = .{.{ .rc = .general_purpose }},19008 .dst_temps = .{.{ .rc = .general_purpose }},
12294 .clobbers = .{ .eflags = true },19009 .clobbers = .{ .eflags = true },
...@@ -12297,10 +19012,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12297,10 +19012,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12297 } },19012 } },
12298 }, .{19013 }, .{
12299 .required_features = .{ .@"64bit", .lzcnt, null, null },19014 .required_features = .{ .@"64bit", .lzcnt, null, null },
12300 .src_constraints = .{ .{ .signed_int = .qword }, .any },19015 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
12301 .patterns = &.{19016 .patterns = &.{
12302 .{ .src = .{ .mem, .none } },19017 .{ .src = .{ .mem, .none, .none } },
12303 .{ .src = .{ .to_gpr, .none } },19018 .{ .src = .{ .to_gpr, .none, .none } },
12304 },19019 },
12305 .dst_temps = .{.{ .rc = .general_purpose }},19020 .dst_temps = .{.{ .rc = .general_purpose }},
12306 .clobbers = .{ .eflags = true },19021 .clobbers = .{ .eflags = true },
...@@ -12312,9 +19027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12312,9 +19027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12312 } },19027 } },
12313 }, .{19028 }, .{
12314 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },19029 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
12315 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },19030 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
12316 .patterns = &.{19031 .patterns = &.{
12317 .{ .src = .{ .to_mut_gpr, .none } },19032 .{ .src = .{ .to_mut_gpr, .none, .none } },
12318 },19033 },
12319 .dst_temps = .{.{ .ref = .src0 }},19034 .dst_temps = .{.{ .ref = .src0 }},
12320 .clobbers = .{ .eflags = true },19035 .clobbers = .{ .eflags = true },
...@@ -12324,10 +19039,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12324,10 +19039,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12324 } },19039 } },
12325 }, .{19040 }, .{
12326 .required_features = .{ .@"64bit", .lzcnt, null, null },19041 .required_features = .{ .@"64bit", .lzcnt, null, null },
12327 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },19042 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
12328 .patterns = &.{19043 .patterns = &.{
12329 .{ .src = .{ .mem, .none } },19044 .{ .src = .{ .mem, .none, .none } },
12330 .{ .src = .{ .to_gpr, .none } },19045 .{ .src = .{ .to_gpr, .none, .none } },
12331 },19046 },
12332 .dst_temps = .{.{ .rc = .general_purpose }},19047 .dst_temps = .{.{ .rc = .general_purpose }},
12333 .clobbers = .{ .eflags = true },19048 .clobbers = .{ .eflags = true },
...@@ -12337,10 +19052,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12337,10 +19052,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12337 } },19052 } },
12338 }, .{19053 }, .{
12339 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19054 .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 },
12341 .patterns = &.{19056 .patterns = &.{
12342 .{ .src = .{ .mem, .none } },19057 .{ .src = .{ .mem, .none, .none } },
12343 .{ .src = .{ .to_gpr, .none } },19058 .{ .src = .{ .to_gpr, .none, .none } },
12344 },19059 },
12345 .extra_temps = .{19060 .extra_temps = .{
12346 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19061 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12364,10 +19079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12364,10 +19079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12364 } },19079 } },
12365 }, .{19080 }, .{
12366 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19081 .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 },
12368 .patterns = &.{19083 .patterns = &.{
12369 .{ .src = .{ .mem, .none } },19084 .{ .src = .{ .mem, .none, .none } },
12370 .{ .src = .{ .to_gpr, .none } },19085 .{ .src = .{ .to_gpr, .none, .none } },
12371 },19086 },
12372 .extra_temps = .{19087 .extra_temps = .{
12373 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19088 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12392,10 +19107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12392,10 +19107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12392 } },19107 } },
12393 }, .{19108 }, .{
12394 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19109 .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 },
12396 .patterns = &.{19111 .patterns = &.{
12397 .{ .src = .{ .mem, .none } },19112 .{ .src = .{ .mem, .none, .none } },
12398 .{ .src = .{ .to_gpr, .none } },19113 .{ .src = .{ .to_gpr, .none, .none } },
12399 },19114 },
12400 .extra_temps = .{19115 .extra_temps = .{
12401 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19116 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12421,10 +19136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12421,10 +19136,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12421 } },19136 } },
12422 }, .{19137 }, .{
12423 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19138 .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 },
12425 .patterns = &.{19140 .patterns = &.{
12426 .{ .src = .{ .mem, .none } },19141 .{ .src = .{ .mem, .none, .none } },
12427 .{ .src = .{ .to_gpr, .none } },19142 .{ .src = .{ .to_gpr, .none, .none } },
12428 },19143 },
12429 .extra_temps = .{19144 .extra_temps = .{
12430 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19145 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12449,10 +19164,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12449,10 +19164,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12449 } },19164 } },
12450 }, .{19165 }, .{
12451 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19166 .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 },
12453 .patterns = &.{19168 .patterns = &.{
12454 .{ .src = .{ .mem, .none } },19169 .{ .src = .{ .mem, .none, .none } },
12455 .{ .src = .{ .to_gpr, .none } },19170 .{ .src = .{ .to_gpr, .none, .none } },
12456 },19171 },
12457 .dst_temps = .{.{ .rc = .general_purpose }},19172 .dst_temps = .{.{ .rc = .general_purpose }},
12458 .clobbers = .{ .eflags = true },19173 .clobbers = .{ .eflags = true },
...@@ -12465,10 +19180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12465,10 +19180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12465 } },19180 } },
12466 }, .{19181 }, .{
12467 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19182 .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 },
12469 .patterns = &.{19184 .patterns = &.{
12470 .{ .src = .{ .mem, .none } },19185 .{ .src = .{ .mem, .none, .none } },
12471 .{ .src = .{ .to_gpr, .none } },19186 .{ .src = .{ .to_gpr, .none, .none } },
12472 },19187 },
12473 .dst_temps = .{.{ .rc = .general_purpose }},19188 .dst_temps = .{.{ .rc = .general_purpose }},
12474 .clobbers = .{ .eflags = true },19189 .clobbers = .{ .eflags = true },
...@@ -12482,10 +19197,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12482,10 +19197,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12482 } },19197 } },
12483 }, .{19198 }, .{
12484 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19199 .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 },
12486 .patterns = &.{19201 .patterns = &.{
12487 .{ .src = .{ .mem, .none } },19202 .{ .src = .{ .mem, .none, .none } },
12488 .{ .src = .{ .to_gpr, .none } },19203 .{ .src = .{ .to_gpr, .none, .none } },
12489 },19204 },
12490 .extra_temps = .{19205 .extra_temps = .{
12491 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12511,10 +19226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12511,10 +19226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12511 } },19226 } },
12512 }, .{19227 }, .{
12513 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19228 .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 },
12515 .patterns = &.{19230 .patterns = &.{
12516 .{ .src = .{ .mem, .none } },19231 .{ .src = .{ .mem, .none, .none } },
12517 .{ .src = .{ .to_gpr, .none } },19232 .{ .src = .{ .to_gpr, .none, .none } },
12518 },19233 },
12519 .extra_temps = .{19234 .extra_temps = .{
12520 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19235 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12538,10 +19253,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12538,10 +19253,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12538 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },19253 .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ },
12539 } },19254 } },
12540 }, .{19255 }, .{
12541 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any },19256 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any },
12542 .patterns = &.{19257 .patterns = &.{
12543 .{ .src = .{ .mem, .none } },19258 .{ .src = .{ .mem, .none, .none } },
12544 .{ .src = .{ .to_gpr, .none } },19259 .{ .src = .{ .to_gpr, .none, .none } },
12545 },19260 },
12546 .extra_temps = .{19261 .extra_temps = .{
12547 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19262 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12563,10 +19278,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12563,10 +19278,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12563 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },19278 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12564 } },19279 } },
12565 }, .{19280 }, .{
12566 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any },19281 .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any },
12567 .patterns = &.{19282 .patterns = &.{
12568 .{ .src = .{ .mem, .none } },19283 .{ .src = .{ .mem, .none, .none } },
12569 .{ .src = .{ .to_gpr, .none } },19284 .{ .src = .{ .to_gpr, .none, .none } },
12570 },19285 },
12571 .extra_temps = .{19286 .extra_temps = .{
12572 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19287 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12589,10 +19304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12589,10 +19304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12589 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },19304 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12590 } },19305 } },
12591 }, .{19306 }, .{
12592 .src_constraints = .{ .{ .signed_int = .byte }, .any },19307 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
12593 .patterns = &.{19308 .patterns = &.{
12594 .{ .src = .{ .mem, .none } },19309 .{ .src = .{ .mem, .none, .none } },
12595 .{ .src = .{ .to_gpr, .none } },19310 .{ .src = .{ .to_gpr, .none, .none } },
12596 },19311 },
12597 .extra_temps = .{19312 .extra_temps = .{
12598 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19313 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12616,10 +19331,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12616,10 +19331,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12616 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },19331 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12617 } },19332 } },
12618 }, .{19333 }, .{
12619 .src_constraints = .{ .{ .unsigned_int = .byte }, .any },19334 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
12620 .patterns = &.{19335 .patterns = &.{
12621 .{ .src = .{ .mem, .none } },19336 .{ .src = .{ .mem, .none, .none } },
12622 .{ .src = .{ .to_gpr, .none } },19337 .{ .src = .{ .to_gpr, .none, .none } },
12623 },19338 },
12624 .extra_temps = .{19339 .extra_temps = .{
12625 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19340 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12643,9 +19358,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12643,9 +19358,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12643 } },19358 } },
12644 }, .{19359 }, .{
12645 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19360 .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 },
12647 .patterns = &.{19362 .patterns = &.{
12648 .{ .src = .{ .to_mut_gpr, .none } },19363 .{ .src = .{ .to_mut_gpr, .none, .none } },
12649 },19364 },
12650 .dst_temps = .{.{ .rc = .general_purpose }},19365 .dst_temps = .{.{ .rc = .general_purpose }},
12651 .clobbers = .{ .eflags = true },19366 .clobbers = .{ .eflags = true },
...@@ -12657,9 +19372,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12657,9 +19372,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12657 } },19372 } },
12658 }, .{19373 }, .{
12659 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19374 .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 },
12661 .patterns = &.{19376 .patterns = &.{
12662 .{ .src = .{ .to_mut_gpr, .none } },19377 .{ .src = .{ .to_mut_gpr, .none, .none } },
12663 },19378 },
12664 .dst_temps = .{.{ .rc = .general_purpose }},19379 .dst_temps = .{.{ .rc = .general_purpose }},
12665 .clobbers = .{ .eflags = true },19380 .clobbers = .{ .eflags = true },
...@@ -12673,9 +19388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12673,9 +19388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12673 } },19388 } },
12674 }, .{19389 }, .{
12675 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19390 .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 },
12677 .patterns = &.{19392 .patterns = &.{
12678 .{ .src = .{ .to_mut_gpr, .none } },19393 .{ .src = .{ .to_mut_gpr, .none, .none } },
12679 },19394 },
12680 .dst_temps = .{.{ .rc = .general_purpose }},19395 .dst_temps = .{.{ .rc = .general_purpose }},
12681 .clobbers = .{ .eflags = true },19396 .clobbers = .{ .eflags = true },
...@@ -12688,9 +19403,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12688,9 +19403,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12688 } },19403 } },
12689 }, .{19404 }, .{
12690 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19405 .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 },
12692 .patterns = &.{19407 .patterns = &.{
12693 .{ .src = .{ .to_mut_gpr, .none } },19408 .{ .src = .{ .to_mut_gpr, .none, .none } },
12694 },19409 },
12695 .dst_temps = .{.{ .ref = .src0 }},19410 .dst_temps = .{.{ .ref = .src0 }},
12696 .clobbers = .{ .eflags = true },19411 .clobbers = .{ .eflags = true },
...@@ -12702,9 +19417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12702,9 +19417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12702 } },19417 } },
12703 }, .{19418 }, .{
12704 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19419 .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 },
12706 .patterns = &.{19421 .patterns = &.{
12707 .{ .src = .{ .to_mut_gpr, .none } },19422 .{ .src = .{ .to_mut_gpr, .none, .none } },
12708 },19423 },
12709 .dst_temps = .{.{ .rc = .general_purpose }},19424 .dst_temps = .{.{ .rc = .general_purpose }},
12710 .clobbers = .{ .eflags = true },19425 .clobbers = .{ .eflags = true },
...@@ -12718,9 +19433,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12718,9 +19433,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12718 } },19433 } },
12719 }, .{19434 }, .{
12720 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19435 .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 },
12722 .patterns = &.{19437 .patterns = &.{
12723 .{ .src = .{ .to_mut_gpr, .none } },19438 .{ .src = .{ .to_mut_gpr, .none, .none } },
12724 },19439 },
12725 .dst_temps = .{.{ .rc = .general_purpose }},19440 .dst_temps = .{.{ .rc = .general_purpose }},
12726 .clobbers = .{ .eflags = true },19441 .clobbers = .{ .eflags = true },
...@@ -12732,10 +19447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12732,10 +19447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12732 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },19447 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
12733 } },19448 } },
12734 }, .{19449 }, .{
12735 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any },19450 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any },
12736 .patterns = &.{19451 .patterns = &.{
12737 .{ .src = .{ .mem, .none } },19452 .{ .src = .{ .mem, .none, .none } },
12738 .{ .src = .{ .to_gpr, .none } },19453 .{ .src = .{ .to_gpr, .none, .none } },
12739 },19454 },
12740 .dst_temps = .{.{ .rc = .general_purpose }},19455 .dst_temps = .{.{ .rc = .general_purpose }},
12741 .clobbers = .{ .eflags = true },19456 .clobbers = .{ .eflags = true },
...@@ -12745,9 +19460,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12745,9 +19460,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12745 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },19460 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12746 } },19461 } },
12747 }, .{19462 }, .{
12748 .src_constraints = .{ .{ .signed_int = .word }, .any },19463 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
12749 .patterns = &.{19464 .patterns = &.{
12750 .{ .src = .{ .to_mut_gpr, .none } },19465 .{ .src = .{ .to_mut_gpr, .none, .none } },
12751 },19466 },
12752 .extra_temps = .{19467 .extra_temps = .{
12753 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },19468 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
...@@ -12770,10 +19485,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12770,10 +19485,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12770 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },19485 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12771 } },19486 } },
12772 }, .{19487 }, .{
12773 .src_constraints = .{ .{ .unsigned_int = .word }, .any },19488 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
12774 .patterns = &.{19489 .patterns = &.{
12775 .{ .src = .{ .mem, .none } },19490 .{ .src = .{ .mem, .none, .none } },
12776 .{ .src = .{ .to_gpr, .none } },19491 .{ .src = .{ .to_gpr, .none, .none } },
12777 },19492 },
12778 .extra_temps = .{19493 .extra_temps = .{
12779 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },19494 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
...@@ -12796,9 +19511,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12796,9 +19511,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12796 } },19511 } },
12797 }, .{19512 }, .{
12798 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19513 .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 },
12800 .patterns = &.{19515 .patterns = &.{
12801 .{ .src = .{ .to_mut_gpr, .none } },19516 .{ .src = .{ .to_mut_gpr, .none, .none } },
12802 },19517 },
12803 .dst_temps = .{.{ .rc = .general_purpose }},19518 .dst_temps = .{.{ .rc = .general_purpose }},
12804 .clobbers = .{ .eflags = true },19519 .clobbers = .{ .eflags = true },
...@@ -12810,9 +19525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12810,9 +19525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12810 } },19525 } },
12811 }, .{19526 }, .{
12812 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19527 .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 },
12814 .patterns = &.{19529 .patterns = &.{
12815 .{ .src = .{ .to_mut_gpr, .none } },19530 .{ .src = .{ .to_mut_gpr, .none, .none } },
12816 },19531 },
12817 .dst_temps = .{.{ .rc = .general_purpose }},19532 .dst_temps = .{.{ .rc = .general_purpose }},
12818 .clobbers = .{ .eflags = true },19533 .clobbers = .{ .eflags = true },
...@@ -12826,9 +19541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12826,9 +19541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12826 } },19541 } },
12827 }, .{19542 }, .{
12828 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },19543 .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 },
12830 .patterns = &.{19545 .patterns = &.{
12831 .{ .src = .{ .to_mut_gpr, .none } },19546 .{ .src = .{ .to_mut_gpr, .none, .none } },
12832 },19547 },
12833 .dst_temps = .{.{ .rc = .general_purpose }},19548 .dst_temps = .{.{ .rc = .general_purpose }},
12834 .clobbers = .{ .eflags = true },19549 .clobbers = .{ .eflags = true },
...@@ -12841,9 +19556,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12841,9 +19556,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12841 } },19556 } },
12842 }, .{19557 }, .{
12843 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19558 .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 },
12845 .patterns = &.{19560 .patterns = &.{
12846 .{ .src = .{ .to_mut_gpr, .none } },19561 .{ .src = .{ .to_mut_gpr, .none, .none } },
12847 },19562 },
12848 .dst_temps = .{.{ .ref = .src0 }},19563 .dst_temps = .{.{ .ref = .src0 }},
12849 .clobbers = .{ .eflags = true },19564 .clobbers = .{ .eflags = true },
...@@ -12855,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12855,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12855 } },19570 } },
12856 }, .{19571 }, .{
12857 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19572 .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 },
12859 .patterns = &.{19574 .patterns = &.{
12860 .{ .src = .{ .to_mut_gpr, .none } },19575 .{ .src = .{ .to_mut_gpr, .none, .none } },
12861 },19576 },
12862 .dst_temps = .{.{ .rc = .general_purpose }},19577 .dst_temps = .{.{ .rc = .general_purpose }},
12863 .clobbers = .{ .eflags = true },19578 .clobbers = .{ .eflags = true },
...@@ -12871,9 +19586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12871,9 +19586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12871 } },19586 } },
12872 }, .{19587 }, .{
12873 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },19588 .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 },
12875 .patterns = &.{19590 .patterns = &.{
12876 .{ .src = .{ .to_mut_gpr, .none } },19591 .{ .src = .{ .to_mut_gpr, .none, .none } },
12877 },19592 },
12878 .dst_temps = .{.{ .rc = .general_purpose }},19593 .dst_temps = .{.{ .rc = .general_purpose }},
12879 .clobbers = .{ .eflags = true },19594 .clobbers = .{ .eflags = true },
...@@ -12885,10 +19600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12885,10 +19600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12885 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },19600 .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ },
12886 } },19601 } },
12887 }, .{19602 }, .{
12888 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any },19603 .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any },
12889 .patterns = &.{19604 .patterns = &.{
12890 .{ .src = .{ .mem, .none } },19605 .{ .src = .{ .mem, .none, .none } },
12891 .{ .src = .{ .to_gpr, .none } },19606 .{ .src = .{ .to_gpr, .none, .none } },
12892 },19607 },
12893 .dst_temps = .{.{ .rc = .general_purpose }},19608 .dst_temps = .{.{ .rc = .general_purpose }},
12894 .clobbers = .{ .eflags = true },19609 .clobbers = .{ .eflags = true },
...@@ -12898,9 +19613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12898,9 +19613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12898 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },19613 .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
12899 } },19614 } },
12900 }, .{19615 }, .{
12901 .src_constraints = .{ .{ .signed_int = .dword }, .any },19616 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
12902 .patterns = &.{19617 .patterns = &.{
12903 .{ .src = .{ .to_mut_gpr, .none } },19618 .{ .src = .{ .to_mut_gpr, .none, .none } },
12904 },19619 },
12905 .extra_temps = .{19620 .extra_temps = .{
12906 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19621 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12923,10 +19638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12923,10 +19638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12923 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },19638 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
12924 } },19639 } },
12925 }, .{19640 }, .{
12926 .src_constraints = .{ .{ .unsigned_int = .dword }, .any },19641 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
12927 .patterns = &.{19642 .patterns = &.{
12928 .{ .src = .{ .mem, .none } },19643 .{ .src = .{ .mem, .none, .none } },
12929 .{ .src = .{ .to_gpr, .none } },19644 .{ .src = .{ .to_gpr, .none, .none } },
12930 },19645 },
12931 .extra_temps = .{19646 .extra_temps = .{
12932 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -12949,9 +19664,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12949,9 +19664,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12949 } },19664 } },
12950 }, .{19665 }, .{
12951 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },19666 .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 },
12953 .patterns = &.{19668 .patterns = &.{
12954 .{ .src = .{ .to_mut_gpr, .none } },19669 .{ .src = .{ .to_mut_gpr, .none, .none } },
12955 },19670 },
12956 .dst_temps = .{.{ .rc = .general_purpose }},19671 .dst_temps = .{.{ .rc = .general_purpose }},
12957 .clobbers = .{ .eflags = true },19672 .clobbers = .{ .eflags = true },
...@@ -12963,10 +19678,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12963,10 +19678,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12963 } },19678 } },
12964 }, .{19679 }, .{
12965 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },19680 .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 },
12967 .patterns = &.{19682 .patterns = &.{
12968 .{ .src = .{ .mem, .none } },19683 .{ .src = .{ .mem, .none, .none } },
12969 .{ .src = .{ .to_gpr, .none } },19684 .{ .src = .{ .to_gpr, .none, .none } },
12970 },19685 },
12971 .extra_temps = .{19686 .extra_temps = .{
12972 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },19687 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -12992,9 +19707,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12992,9 +19707,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12992 } },19707 } },
12993 }, .{19708 }, .{
12994 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },19709 .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 },
12996 .patterns = &.{19711 .patterns = &.{
12997 .{ .src = .{ .to_mut_gpr, .none } },19712 .{ .src = .{ .to_mut_gpr, .none, .none } },
12998 },19713 },
12999 .dst_temps = .{.{ .rc = .general_purpose }},19714 .dst_temps = .{.{ .rc = .general_purpose }},
13000 .clobbers = .{ .eflags = true },19715 .clobbers = .{ .eflags = true },
...@@ -13007,9 +19722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13007,9 +19722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13007 } },19722 } },
13008 }, .{19723 }, .{
13009 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },19724 .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 },
13011 .patterns = &.{19726 .patterns = &.{
13012 .{ .src = .{ .to_mut_gpr, .none } },19727 .{ .src = .{ .to_mut_gpr, .none, .none } },
13013 },19728 },
13014 .dst_temps = .{.{ .ref = .src0 }},19729 .dst_temps = .{.{ .ref = .src0 }},
13015 .clobbers = .{ .eflags = true },19730 .clobbers = .{ .eflags = true },
...@@ -13021,10 +19736,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13021,10 +19736,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13021 } },19736 } },
13022 }, .{19737 }, .{
13023 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },19738 .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 },
13025 .patterns = &.{19740 .patterns = &.{
13026 .{ .src = .{ .mem, .none } },19741 .{ .src = .{ .mem, .none, .none } },
13027 .{ .src = .{ .to_gpr, .none } },19742 .{ .src = .{ .to_gpr, .none, .none } },
13028 },19743 },
13029 .extra_temps = .{19744 .extra_temps = .{
13030 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },19745 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13050,9 +19765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13050,9 +19765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13050 } },19765 } },
13051 }, .{19766 }, .{
13052 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },19767 .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 },
13054 .patterns = &.{19769 .patterns = &.{
13055 .{ .src = .{ .to_mut_gpr, .none } },19770 .{ .src = .{ .to_mut_gpr, .none, .none } },
13056 },19771 },
13057 .dst_temps = .{.{ .rc = .general_purpose }},19772 .dst_temps = .{.{ .rc = .general_purpose }},
13058 .clobbers = .{ .eflags = true },19773 .clobbers = .{ .eflags = true },
...@@ -13065,10 +19780,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13065,10 +19780,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13065 } },19780 } },
13066 }, .{19781 }, .{
13067 .required_features = .{ .@"64bit", null, null, null },19782 .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 },
13069 .patterns = &.{19784 .patterns = &.{
13070 .{ .src = .{ .mem, .none } },19785 .{ .src = .{ .mem, .none, .none } },
13071 .{ .src = .{ .to_gpr, .none } },19786 .{ .src = .{ .to_gpr, .none, .none } },
13072 },19787 },
13073 .dst_temps = .{.{ .rc = .general_purpose }},19788 .dst_temps = .{.{ .rc = .general_purpose }},
13074 .clobbers = .{ .eflags = true },19789 .clobbers = .{ .eflags = true },
...@@ -13079,10 +19794,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13079,10 +19794,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13079 } },19794 } },
13080 }, .{19795 }, .{
13081 .required_features = .{ .@"64bit", null, null, null },19796 .required_features = .{ .@"64bit", null, null, null },
13082 .src_constraints = .{ .{ .signed_int = .qword }, .any },19797 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
13083 .patterns = &.{19798 .patterns = &.{
13084 .{ .src = .{ .mem, .none } },19799 .{ .src = .{ .mem, .none, .none } },
13085 .{ .src = .{ .to_gpr, .none } },19800 .{ .src = .{ .to_gpr, .none, .none } },
13086 },19801 },
13087 .extra_temps = .{19802 .extra_temps = .{
13088 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },19803 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13107,10 +19822,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13107,10 +19822,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13107 } },19822 } },
13108 }, .{19823 }, .{
13109 .required_features = .{ .@"64bit", null, null, null },19824 .required_features = .{ .@"64bit", null, null, null },
13110 .src_constraints = .{ .{ .unsigned_int = .qword }, .any },19825 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
13111 .patterns = &.{19826 .patterns = &.{
13112 .{ .src = .{ .mem, .none } },19827 .{ .src = .{ .mem, .none, .none } },
13113 .{ .src = .{ .to_gpr, .none } },19828 .{ .src = .{ .to_gpr, .none, .none } },
13114 },19829 },
13115 .extra_temps = .{19830 .extra_temps = .{
13116 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },19831 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
...@@ -13133,9 +19848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13133,9 +19848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13133 } },19848 } },
13134 }, .{19849 }, .{
13135 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },19850 .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 },
13137 .patterns = &.{19852 .patterns = &.{
13138 .{ .src = .{ .to_mem, .none } },19853 .{ .src = .{ .to_mem, .none, .none } },
13139 },19854 },
13140 .extra_temps = .{19855 .extra_temps = .{
13141 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13163,9 +19878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13163,9 +19878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13163 } },19878 } },
13164 }, .{19879 }, .{
13165 .required_features = .{ .@"64bit", .lzcnt, null, null },19880 .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 },
13167 .patterns = &.{19882 .patterns = &.{
13168 .{ .src = .{ .to_mem, .none } },19883 .{ .src = .{ .to_mem, .none, .none } },
13169 },19884 },
13170 .extra_temps = .{19885 .extra_temps = .{
13171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19886 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13192,9 +19907,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13192,9 +19907,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13192 } },19907 } },
13193 }, .{19908 }, .{
13194 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },19909 .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 },
13196 .patterns = &.{19911 .patterns = &.{
13197 .{ .src = .{ .to_mem, .none } },19912 .{ .src = .{ .to_mem, .none, .none } },
13198 },19913 },
13199 .extra_temps = .{19914 .extra_temps = .{
13200 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19915 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13223,9 +19938,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13223,9 +19938,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13223 } },19938 } },
13224 }, .{19939 }, .{
13225 .required_features = .{ .@"64bit", null, null, null },19940 .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 },
13227 .patterns = &.{19942 .patterns = &.{
13228 .{ .src = .{ .to_mem, .none } },19943 .{ .src = .{ .to_mem, .none, .none } },
13229 },19944 },
13230 .extra_temps = .{19945 .extra_temps = .{
13231 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13253,9 +19968,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13253,9 +19968,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13253 } },19968 } },
13254 }, .{19969 }, .{
13255 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },19970 .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 },
13257 .patterns = &.{19972 .patterns = &.{
13258 .{ .src = .{ .to_mem, .none } },19973 .{ .src = .{ .to_mem, .none, .none } },
13259 },19974 },
13260 .extra_temps = .{19975 .extra_temps = .{
13261 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },19976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13283,9 +19998,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13283,9 +19998,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13283 } },19998 } },
13284 }, .{19999 }, .{
13285 .required_features = .{ .@"64bit", .lzcnt, null, null },20000 .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 },
13287 .patterns = &.{20002 .patterns = &.{
13288 .{ .src = .{ .to_mem, .none } },20003 .{ .src = .{ .to_mem, .none, .none } },
13289 },20004 },
13290 .extra_temps = .{20005 .extra_temps = .{
13291 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20006 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13312,9 +20027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13312,9 +20027,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13312 } },20027 } },
13313 }, .{20028 }, .{
13314 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },20029 .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 },
13316 .patterns = &.{20031 .patterns = &.{
13317 .{ .src = .{ .to_mem, .none } },20032 .{ .src = .{ .to_mem, .none, .none } },
13318 },20033 },
13319 .extra_temps = .{20034 .extra_temps = .{
13320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13343,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13343,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13343 } },20058 } },
13344 }, .{20059 }, .{
13345 .required_features = .{ .@"64bit", null, null, null },20060 .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 },
13347 .patterns = &.{20062 .patterns = &.{
13348 .{ .src = .{ .to_mem, .none } },20063 .{ .src = .{ .to_mem, .none, .none } },
13349 },20064 },
13350 .extra_temps = .{20065 .extra_temps = .{
13351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13373,9 +20088,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13373,9 +20088,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13373 } },20088 } },
13374 }, .{20089 }, .{
13375 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },20090 .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 },
13377 .patterns = &.{20092 .patterns = &.{
13378 .{ .src = .{ .to_mem, .none } },20093 .{ .src = .{ .to_mem, .none, .none } },
13379 },20094 },
13380 .extra_temps = .{20095 .extra_temps = .{
13381 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20096 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13406,9 +20121,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13406,9 +20121,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13406 } },20121 } },
13407 }, .{20122 }, .{
13408 .required_features = .{ .@"64bit", .lzcnt, null, null },20123 .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 },
13410 .patterns = &.{20125 .patterns = &.{
13411 .{ .src = .{ .to_mem, .none } },20126 .{ .src = .{ .to_mem, .none, .none } },
13412 },20127 },
13413 .extra_temps = .{20128 .extra_temps = .{
13414 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13438,9 +20153,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13438,9 +20153,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13438 } },20153 } },
13439 }, .{20154 }, .{
13440 .required_features = .{ .@"64bit", null, null, null },20155 .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 },
13442 .patterns = &.{20157 .patterns = &.{
13443 .{ .src = .{ .to_mem, .none } },20158 .{ .src = .{ .to_mem, .none, .none } },
13444 },20159 },
13445 .extra_temps = .{20160 .extra_temps = .{
13446 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13470,9 +20185,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13470,9 +20185,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13470 } },20185 } },
13471 }, .{20186 }, .{
13472 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },20187 .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 },
13474 .patterns = &.{20189 .patterns = &.{
13475 .{ .src = .{ .to_mem, .none } },20190 .{ .src = .{ .to_mem, .none, .none } },
13476 },20191 },
13477 .extra_temps = .{20192 .extra_temps = .{
13478 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13503,9 +20218,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13503,9 +20218,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13503 } },20218 } },
13504 }, .{20219 }, .{
13505 .required_features = .{ .@"64bit", .lzcnt, null, null },20220 .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 },
13507 .patterns = &.{20222 .patterns = &.{
13508 .{ .src = .{ .to_mem, .none } },20223 .{ .src = .{ .to_mem, .none, .none } },
13509 },20224 },
13510 .extra_temps = .{20225 .extra_temps = .{
13511 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20226 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13535,9 +20250,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13535,9 +20250,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13535 } },20250 } },
13536 }, .{20251 }, .{
13537 .required_features = .{ .@"64bit", null, null, null },20252 .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 },
13539 .patterns = &.{20254 .patterns = &.{
13540 .{ .src = .{ .to_mem, .none } },20255 .{ .src = .{ .to_mem, .none, .none } },
13541 },20256 },
13542 .extra_temps = .{20257 .extra_temps = .{
13543 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },20258 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -13567,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13567,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13567 } },20282 } },
13568 }, .{20283 }, .{
13569 .required_features = .{ .lzcnt, .slow_incdec, null, null },20284 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13570 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },20285 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13571 .patterns = &.{20286 .patterns = &.{
13572 .{ .src = .{ .to_mem, .none } },20287 .{ .src = .{ .to_mem, .none, .none } },
13573 },20288 },
13574 .extra_temps = .{20289 .extra_temps = .{
13575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13596,9 +20311,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13596,9 +20311,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13596 } },20311 } },
13597 }, .{20312 }, .{
13598 .required_features = .{ .lzcnt, null, null, null },20313 .required_features = .{ .lzcnt, null, null, null },
13599 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },20314 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13600 .patterns = &.{20315 .patterns = &.{
13601 .{ .src = .{ .to_mem, .none } },20316 .{ .src = .{ .to_mem, .none, .none } },
13602 },20317 },
13603 .extra_temps = .{20318 .extra_temps = .{
13604 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13625,9 +20340,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13625,9 +20340,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13625 } },20340 } },
13626 }, .{20341 }, .{
13627 .required_features = .{ .lzcnt, .slow_incdec, null, null },20342 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13628 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },20343 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
13629 .patterns = &.{20344 .patterns = &.{
13630 .{ .src = .{ .to_mem, .none } },20345 .{ .src = .{ .to_mem, .none, .none } },
13631 },20346 },
13632 .extra_temps = .{20347 .extra_temps = .{
13633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13654,9 +20369,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13654,9 +20369,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13654 } },20369 } },
13655 }, .{20370 }, .{
13656 .required_features = .{ .lzcnt, null, null, null },20371 .required_features = .{ .lzcnt, null, null, null },
13657 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },20372 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
13658 .patterns = &.{20373 .patterns = &.{
13659 .{ .src = .{ .to_mem, .none } },20374 .{ .src = .{ .to_mem, .none, .none } },
13660 },20375 },
13661 .extra_temps = .{20376 .extra_temps = .{
13662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13683,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13683,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13683 } },20398 } },
13684 }, .{20399 }, .{
13685 .required_features = .{ .lzcnt, .slow_incdec, null, null },20400 .required_features = .{ .lzcnt, .slow_incdec, null, null },
13686 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },20401 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
13687 .patterns = &.{20402 .patterns = &.{
13688 .{ .src = .{ .to_mem, .none } },20403 .{ .src = .{ .to_mem, .none, .none } },
13689 },20404 },
13690 .extra_temps = .{20405 .extra_temps = .{
13691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13712,9 +20427,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13712,9 +20427,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13712 } },20427 } },
13713 }, .{20428 }, .{
13714 .required_features = .{ .lzcnt, null, null, null },20429 .required_features = .{ .lzcnt, null, null, null },
13715 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },20430 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
13716 .patterns = &.{20431 .patterns = &.{
13717 .{ .src = .{ .to_mem, .none } },20432 .{ .src = .{ .to_mem, .none, .none } },
13718 },20433 },
13719 .extra_temps = .{20434 .extra_temps = .{
13720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13741,9 +20456,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13741,9 +20456,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13741 } },20456 } },
13742 }, .{20457 }, .{
13743 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },20458 .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null },
13744 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },20459 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
13745 .patterns = &.{20460 .patterns = &.{
13746 .{ .src = .{ .to_mem, .none } },20461 .{ .src = .{ .to_mem, .none, .none } },
13747 },20462 },
13748 .extra_temps = .{20463 .extra_temps = .{
13749 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13770,9 +20485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13770,9 +20485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13770 } },20485 } },
13771 }, .{20486 }, .{
13772 .required_features = .{ .@"64bit", .lzcnt, null, null },20487 .required_features = .{ .@"64bit", .lzcnt, null, null },
13773 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },20488 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
13774 .patterns = &.{20489 .patterns = &.{
13775 .{ .src = .{ .to_mem, .none } },20490 .{ .src = .{ .to_mem, .none, .none } },
13776 },20491 },
13777 .extra_temps = .{20492 .extra_temps = .{
13778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13799,9 +20514,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13799,9 +20514,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13799 } },20514 } },
13800 }, .{20515 }, .{
13801 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },20516 .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 },
13803 .patterns = &.{20518 .patterns = &.{
13804 .{ .src = .{ .to_mem, .none } },20519 .{ .src = .{ .to_mem, .none, .none } },
13805 },20520 },
13806 .extra_temps = .{20521 .extra_temps = .{
13807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13831,9 +20546,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13831,9 +20546,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13831 } },20546 } },
13832 }, .{20547 }, .{
13833 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },20548 .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 },
13835 .patterns = &.{20550 .patterns = &.{
13836 .{ .src = .{ .to_mem, .none } },20551 .{ .src = .{ .to_mem, .none, .none } },
13837 },20552 },
13838 .extra_temps = .{20553 .extra_temps = .{
13839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13863,9 +20578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13863,9 +20578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13863 } },20578 } },
13864 }, .{20579 }, .{
13865 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },20580 .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 },
13867 .patterns = &.{20582 .patterns = &.{
13868 .{ .src = .{ .to_mem, .none } },20583 .{ .src = .{ .to_mem, .none, .none } },
13869 },20584 },
13870 .extra_temps = .{20585 .extra_temps = .{
13871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13895,9 +20610,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13895,9 +20610,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13895 } },20610 } },
13896 }, .{20611 }, .{
13897 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },20612 .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 },
13899 .patterns = &.{20614 .patterns = &.{
13900 .{ .src = .{ .to_mem, .none } },20615 .{ .src = .{ .to_mem, .none, .none } },
13901 },20616 },
13902 .extra_temps = .{20617 .extra_temps = .{
13903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13927,9 +20642,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13927,9 +20642,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13927 } },20642 } },
13928 }, .{20643 }, .{
13929 .required_features = .{ .slow_incdec, null, null, null },20644 .required_features = .{ .slow_incdec, null, null, null },
13930 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },20645 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13931 .patterns = &.{20646 .patterns = &.{
13932 .{ .src = .{ .to_mem, .none } },20647 .{ .src = .{ .to_mem, .none, .none } },
13933 },20648 },
13934 .extra_temps = .{20649 .extra_temps = .{
13935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13957,9 +20672,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13957,9 +20672,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13957 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },20672 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13958 } },20673 } },
13959 }, .{20674 }, .{
13960 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any },20675 .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any },
13961 .patterns = &.{20676 .patterns = &.{
13962 .{ .src = .{ .to_mem, .none } },20677 .{ .src = .{ .to_mem, .none, .none } },
13963 },20678 },
13964 .extra_temps = .{20679 .extra_temps = .{
13965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -13988,9 +20703,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13988,9 +20703,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13988 } },20703 } },
13989 }, .{20704 }, .{
13990 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },20705 .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 },
13992 .patterns = &.{20707 .patterns = &.{
13993 .{ .src = .{ .to_mem, .none } },20708 .{ .src = .{ .to_mem, .none, .none } },
13994 },20709 },
13995 .extra_temps = .{20710 .extra_temps = .{
13996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14020,9 +20735,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14020,9 +20735,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14020 } },20735 } },
14021 }, .{20736 }, .{
14022 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },20737 .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 },
14024 .patterns = &.{20739 .patterns = &.{
14025 .{ .src = .{ .to_mem, .none } },20740 .{ .src = .{ .to_mem, .none, .none } },
14026 },20741 },
14027 .extra_temps = .{20742 .extra_temps = .{
14028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14052,9 +20767,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14052,9 +20767,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14052 } },20767 } },
14053 }, .{20768 }, .{
14054 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },20769 .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 },
14056 .patterns = &.{20771 .patterns = &.{
14057 .{ .src = .{ .to_mem, .none } },20772 .{ .src = .{ .to_mem, .none, .none } },
14058 },20773 },
14059 .extra_temps = .{20774 .extra_temps = .{
14060 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14084,9 +20799,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14084,9 +20799,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14084 } },20799 } },
14085 }, .{20800 }, .{
14086 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },20801 .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 },
14088 .patterns = &.{20803 .patterns = &.{
14089 .{ .src = .{ .to_mem, .none } },20804 .{ .src = .{ .to_mem, .none, .none } },
14090 },20805 },
14091 .extra_temps = .{20806 .extra_temps = .{
14092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14116,9 +20831,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14116,9 +20831,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14116 } },20831 } },
14117 }, .{20832 }, .{
14118 .required_features = .{ .slow_incdec, null, null, null },20833 .required_features = .{ .slow_incdec, null, null, null },
14119 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },20834 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14120 .patterns = &.{20835 .patterns = &.{
14121 .{ .src = .{ .to_mem, .none } },20836 .{ .src = .{ .to_mem, .none, .none } },
14122 },20837 },
14123 .extra_temps = .{20838 .extra_temps = .{
14124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14146,9 +20861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14146,9 +20861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14146 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },20861 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14147 } },20862 } },
14148 }, .{20863 }, .{
14149 .src_constraints = .{ .{ .scalar_int_is = .word }, .any },20864 .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any },
14150 .patterns = &.{20865 .patterns = &.{
14151 .{ .src = .{ .to_mem, .none } },20866 .{ .src = .{ .to_mem, .none, .none } },
14152 },20867 },
14153 .extra_temps = .{20868 .extra_temps = .{
14154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14177,9 +20892,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14177,9 +20892,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14177 } },20892 } },
14178 }, .{20893 }, .{
14179 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null },20894 .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 },
14181 .patterns = &.{20896 .patterns = &.{
14182 .{ .src = .{ .to_mem, .none } },20897 .{ .src = .{ .to_mem, .none, .none } },
14183 },20898 },
14184 .extra_temps = .{20899 .extra_temps = .{
14185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14209,9 +20924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14209,9 +20924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14209 } },20924 } },
14210 }, .{20925 }, .{
14211 .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null },20926 .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 },
14213 .patterns = &.{20928 .patterns = &.{
14214 .{ .src = .{ .to_mem, .none } },20929 .{ .src = .{ .to_mem, .none, .none } },
14215 },20930 },
14216 .extra_temps = .{20931 .extra_temps = .{
14217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14241,9 +20956,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14241,9 +20956,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14241 } },20956 } },
14242 }, .{20957 }, .{
14243 .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null },20958 .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 },
14245 .patterns = &.{20960 .patterns = &.{
14246 .{ .src = .{ .to_mem, .none } },20961 .{ .src = .{ .to_mem, .none, .none } },
14247 },20962 },
14248 .extra_temps = .{20963 .extra_temps = .{
14249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14273,9 +20988,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14273,9 +20988,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14273 } },20988 } },
14274 }, .{20989 }, .{
14275 .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null },20990 .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 },
14277 .patterns = &.{20992 .patterns = &.{
14278 .{ .src = .{ .to_mem, .none } },20993 .{ .src = .{ .to_mem, .none, .none } },
14279 },20994 },
14280 .extra_temps = .{20995 .extra_temps = .{
14281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },20996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14305,9 +21020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14305,9 +21020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14305 } },21020 } },
14306 }, .{21021 }, .{
14307 .required_features = .{ .slow_incdec, null, null, null },21022 .required_features = .{ .slow_incdec, null, null, null },
14308 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },21023 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14309 .patterns = &.{21024 .patterns = &.{
14310 .{ .src = .{ .to_mem, .none } },21025 .{ .src = .{ .to_mem, .none, .none } },
14311 },21026 },
14312 .extra_temps = .{21027 .extra_temps = .{
14313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14335,9 +21050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14335,9 +21050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },21050 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14336 } },21051 } },
14337 }, .{21052 }, .{
14338 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any },21053 .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any },
14339 .patterns = &.{21054 .patterns = &.{
14340 .{ .src = .{ .to_mem, .none } },21055 .{ .src = .{ .to_mem, .none, .none } },
14341 },21056 },
14342 .extra_temps = .{21057 .extra_temps = .{
14343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14366,9 +21081,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14366,9 +21081,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14366 } },21081 } },
14367 }, .{21082 }, .{
14368 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec },21083 .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 },
14370 .patterns = &.{21085 .patterns = &.{
14371 .{ .src = .{ .to_mem, .none } },21086 .{ .src = .{ .to_mem, .none, .none } },
14372 },21087 },
14373 .extra_temps = .{21088 .extra_temps = .{
14374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14398,9 +21113,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14398,9 +21113,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14398 } },21113 } },
14399 }, .{21114 }, .{
14400 .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null },21115 .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 },
14402 .patterns = &.{21117 .patterns = &.{
14403 .{ .src = .{ .to_mem, .none } },21118 .{ .src = .{ .to_mem, .none, .none } },
14404 },21119 },
14405 .extra_temps = .{21120 .extra_temps = .{
14406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14430,9 +21145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14430,9 +21145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14430 } },21145 } },
14431 }, .{21146 }, .{
14432 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null },21147 .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 },
14434 .patterns = &.{21149 .patterns = &.{
14435 .{ .src = .{ .to_mem, .none } },21150 .{ .src = .{ .to_mem, .none, .none } },
14436 },21151 },
14437 .extra_temps = .{21152 .extra_temps = .{
14438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14462,9 +21177,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14462,9 +21177,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14462 } },21177 } },
14463 }, .{21178 }, .{
14464 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },21179 .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 },
14466 .patterns = &.{21181 .patterns = &.{
14467 .{ .src = .{ .to_mem, .none } },21182 .{ .src = .{ .to_mem, .none, .none } },
14468 },21183 },
14469 .extra_temps = .{21184 .extra_temps = .{
14470 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14494,9 +21209,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14494,9 +21209,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14494 } },21209 } },
14495 }, .{21210 }, .{
14496 .required_features = .{ .@"64bit", .slow_incdec, null, null },21211 .required_features = .{ .@"64bit", .slow_incdec, null, null },
14497 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },21212 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14498 .patterns = &.{21213 .patterns = &.{
14499 .{ .src = .{ .to_mem, .none } },21214 .{ .src = .{ .to_mem, .none, .none } },
14500 },21215 },
14501 .extra_temps = .{21216 .extra_temps = .{
14502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14525,9 +21240,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14525,9 +21240,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14525 } },21240 } },
14526 }, .{21241 }, .{
14527 .required_features = .{ .@"64bit", null, null, null },21242 .required_features = .{ .@"64bit", null, null, null },
14528 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any },21243 .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any },
14529 .patterns = &.{21244 .patterns = &.{
14530 .{ .src = .{ .to_mem, .none } },21245 .{ .src = .{ .to_mem, .none, .none } },
14531 },21246 },
14532 .extra_temps = .{21247 .extra_temps = .{
14533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14556,10 +21271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14556,10 +21271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14556 } },21271 } },
14557 }, .{21272 }, .{
14558 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21273 .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 },
14560 .dst_constraints = .{.{ .scalar_int_is = .byte }},21275 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14561 .patterns = &.{21276 .patterns = &.{
14562 .{ .src = .{ .to_mem, .none } },21277 .{ .src = .{ .to_mem, .none, .none } },
14563 },21278 },
14564 .extra_temps = .{21279 .extra_temps = .{
14565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14596,10 +21311,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14596,10 +21311,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14596 } },21311 } },
14597 }, .{21312 }, .{
14598 .required_features = .{ .@"64bit", .lzcnt, null, null },21313 .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 },
14600 .dst_constraints = .{.{ .scalar_int_is = .byte }},21315 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14601 .patterns = &.{21316 .patterns = &.{
14602 .{ .src = .{ .to_mem, .none } },21317 .{ .src = .{ .to_mem, .none, .none } },
14603 },21318 },
14604 .extra_temps = .{21319 .extra_temps = .{
14605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14635,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14635,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14635 } },21350 } },
14636 }, .{21351 }, .{
14637 .required_features = .{ .@"64bit", null, null, null },21352 .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 },
14639 .dst_constraints = .{.{ .scalar_int_is = .byte }},21354 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14640 .patterns = &.{21355 .patterns = &.{
14641 .{ .src = .{ .to_mem, .none } },21356 .{ .src = .{ .to_mem, .none, .none } },
14642 },21357 },
14643 .extra_temps = .{21358 .extra_temps = .{
14644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14674,10 +21389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14674,10 +21389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14674 } },21389 } },
14675 }, .{21390 }, .{
14676 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21391 .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 },
14678 .dst_constraints = .{.{ .scalar_int_is = .byte }},21393 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14679 .patterns = &.{21394 .patterns = &.{
14680 .{ .src = .{ .to_mem, .none } },21395 .{ .src = .{ .to_mem, .none, .none } },
14681 },21396 },
14682 .extra_temps = .{21397 .extra_temps = .{
14683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14714,10 +21429,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14714,10 +21429,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14714 } },21429 } },
14715 }, .{21430 }, .{
14716 .required_features = .{ .@"64bit", .lzcnt, null, null },21431 .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 },
14718 .dst_constraints = .{.{ .scalar_int_is = .byte }},21433 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14719 .patterns = &.{21434 .patterns = &.{
14720 .{ .src = .{ .to_mem, .none } },21435 .{ .src = .{ .to_mem, .none, .none } },
14721 },21436 },
14722 .extra_temps = .{21437 .extra_temps = .{
14723 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14753,10 +21468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14753,10 +21468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14753 } },21468 } },
14754 }, .{21469 }, .{
14755 .required_features = .{ .@"64bit", null, null, null },21470 .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 },
14757 .dst_constraints = .{.{ .scalar_int_is = .byte }},21472 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14758 .patterns = &.{21473 .patterns = &.{
14759 .{ .src = .{ .to_mem, .none } },21474 .{ .src = .{ .to_mem, .none, .none } },
14760 },21475 },
14761 .extra_temps = .{21476 .extra_temps = .{
14762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14792,10 +21507,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14792,10 +21507,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14792 } },21507 } },
14793 }, .{21508 }, .{
14794 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21509 .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 },
14796 .dst_constraints = .{.{ .scalar_int_is = .word }},21511 .dst_constraints = .{.{ .scalar_int_is = .word }},
14797 .patterns = &.{21512 .patterns = &.{
14798 .{ .src = .{ .to_mem, .none } },21513 .{ .src = .{ .to_mem, .none, .none } },
14799 },21514 },
14800 .extra_temps = .{21515 .extra_temps = .{
14801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14832,10 +21547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14832,10 +21547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14832 } },21547 } },
14833 }, .{21548 }, .{
14834 .required_features = .{ .@"64bit", .lzcnt, null, null },21549 .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 },
14836 .dst_constraints = .{.{ .scalar_int_is = .word }},21551 .dst_constraints = .{.{ .scalar_int_is = .word }},
14837 .patterns = &.{21552 .patterns = &.{
14838 .{ .src = .{ .to_mem, .none } },21553 .{ .src = .{ .to_mem, .none, .none } },
14839 },21554 },
14840 .extra_temps = .{21555 .extra_temps = .{
14841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14871,10 +21586,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14871,10 +21586,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14871 } },21586 } },
14872 }, .{21587 }, .{
14873 .required_features = .{ .@"64bit", null, null, null },21588 .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 },
14875 .dst_constraints = .{.{ .scalar_int_is = .word }},21590 .dst_constraints = .{.{ .scalar_int_is = .word }},
14876 .patterns = &.{21591 .patterns = &.{
14877 .{ .src = .{ .to_mem, .none } },21592 .{ .src = .{ .to_mem, .none, .none } },
14878 },21593 },
14879 .extra_temps = .{21594 .extra_temps = .{
14880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14910,10 +21625,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14910,10 +21625,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14910 } },21625 } },
14911 }, .{21626 }, .{
14912 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },21627 .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 },
14914 .dst_constraints = .{.{ .scalar_int_is = .word }},21629 .dst_constraints = .{.{ .scalar_int_is = .word }},
14915 .patterns = &.{21630 .patterns = &.{
14916 .{ .src = .{ .to_mem, .none } },21631 .{ .src = .{ .to_mem, .none, .none } },
14917 },21632 },
14918 .extra_temps = .{21633 .extra_temps = .{
14919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14950,10 +21665,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14950,10 +21665,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14950 } },21665 } },
14951 }, .{21666 }, .{
14952 .required_features = .{ .@"64bit", .lzcnt, null, null },21667 .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 },
14954 .dst_constraints = .{.{ .scalar_int_is = .word }},21669 .dst_constraints = .{.{ .scalar_int_is = .word }},
14955 .patterns = &.{21670 .patterns = &.{
14956 .{ .src = .{ .to_mem, .none } },21671 .{ .src = .{ .to_mem, .none, .none } },
14957 },21672 },
14958 .extra_temps = .{21673 .extra_temps = .{
14959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -14989,10 +21704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14989,10 +21704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14989 } },21704 } },
14990 }, .{21705 }, .{
14991 .required_features = .{ .@"64bit", null, null, null },21706 .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 },
14993 .dst_constraints = .{.{ .scalar_int_is = .word }},21708 .dst_constraints = .{.{ .scalar_int_is = .word }},
14994 .patterns = &.{21709 .patterns = &.{
14995 .{ .src = .{ .to_mem, .none } },21710 .{ .src = .{ .to_mem, .none, .none } },
14996 },21711 },
14997 .extra_temps = .{21712 .extra_temps = .{
14998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },21713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15005,50 +21720,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15005,50 +21720,2361 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15005 .unused,21720 .unused,
15006 .unused,21721 .unused,
15007 },21722 },
15008 .dst_temps = .{.mem},21723 .dst_temps = .{.mem},
15009 .clobbers = .{ .eflags = true },21724 .clobbers = .{ .eflags = true },
15010 .each = .{ .once = &.{21725 .each = .{ .once = &.{
15011 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },21726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
15012 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },21727 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
15013 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },21728 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
15014 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },21729 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15015 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },21730 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
15016 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },21731 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
15017 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },21732 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15018 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },21733 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
15019 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },21734 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
15020 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },21735 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
15021 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },21736 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
15022 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },21737 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
15023 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },21738 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
15024 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },21739 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
15025 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },21740 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
15026 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },21741 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
15027 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },21742 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15028 } },21743 } },
15029 } }) catch |err| switch (err) {21744 } }) catch |err| switch (err) {
15030 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{21745 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
15031 @tagName(air_tag),21746 @tagName(air_tag),
15032 cg.typeOf(ty_op.operand).fmt(pt),21747 cg.typeOf(ty_op.operand).fmt(pt),
15033 ops[0].tracking(cg),21748 ops[0].tracking(cg),
15034 }),21749 }),
15035 else => |e| return e,21750 else => |e| return e,
15036 };21751 };
15037 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);21752 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
15038 },21753 },
1503921754
15040 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {21755 .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;21756 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
15042 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;21757 const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
15043 switch (extra.compareOperator()) {21758 switch (extra.compareOperator()) {
15044 .eq, .neq => {},21759 .eq, .neq => {},
15045 else => break :fallback try cg.airCmpVector(inst),21760 .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null)
15046 }21761 break :fallback try cg.airCmpVector(inst),
15047 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });21762 }
15048 var res: [1]Temp = undefined;21763 var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs });
15049 switch (extra.compareOperator()) {21764 var res: [1]Temp = undefined;
15050 .lt => unreachable,21765 (err: switch (extra.compareOperator()) {
15051 .lte => unreachable,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 },
15052 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {24078 .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) {
15053 else => unreachable,24079 else => unreachable,
15054 .eq => .e,24080 .eq => .e,
...@@ -15057,11 +24083,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15057,11 +24083,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15057 else => unreachable,24083 else => unreachable,
15058 inline .e, .ne => |cc| comptime &.{ .{24084 inline .e, .ne => |cc| comptime &.{ .{
15059 .required_features = .{ .avx2, null, null, null },24085 .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 },
15061 .patterns = &.{24087 .patterns = &.{
15062 .{ .src = .{ .to_ymm, .mem } },24088 .{ .src = .{ .to_ymm, .mem, .none } },
15063 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },24089 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15064 .{ .src = .{ .to_ymm, .to_ymm } },24090 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15065 },24091 },
15066 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24092 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15067 .kind = .all,24093 .kind = .all,
...@@ -15077,11 +24103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15077,11 +24103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15077 } },24103 } },
15078 }, .{24104 }, .{
15079 .required_features = .{ .avx2, null, null, null },24105 .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 },
15081 .patterns = &.{24107 .patterns = &.{
15082 .{ .src = .{ .to_ymm, .mem } },24108 .{ .src = .{ .to_ymm, .mem, .none } },
15083 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },24109 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15084 .{ .src = .{ .to_ymm, .to_ymm } },24110 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15085 },24111 },
15086 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24112 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15087 .kind = .all,24113 .kind = .all,
...@@ -15097,11 +24123,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15097,11 +24123,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15097 } },24123 } },
15098 }, .{24124 }, .{
15099 .required_features = .{ .avx2, null, null, null },24125 .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 },
15101 .patterns = &.{24127 .patterns = &.{
15102 .{ .src = .{ .to_ymm, .mem } },24128 .{ .src = .{ .to_ymm, .mem, .none } },
15103 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },24129 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15104 .{ .src = .{ .to_ymm, .to_ymm } },24130 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15105 },24131 },
15106 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24132 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15107 .kind = .all,24133 .kind = .all,
...@@ -15117,11 +24143,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15117,11 +24143,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15117 } },24143 } },
15118 }, .{24144 }, .{
15119 .required_features = .{ .avx2, null, null, null },24145 .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 },
15121 .patterns = &.{24147 .patterns = &.{
15122 .{ .src = .{ .to_ymm, .mem } },24148 .{ .src = .{ .to_ymm, .mem, .none } },
15123 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },24149 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
15124 .{ .src = .{ .to_ymm, .to_ymm } },24150 .{ .src = .{ .to_ymm, .to_ymm, .none } },
15125 },24151 },
15126 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24152 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15127 .kind = .all,24153 .kind = .all,
...@@ -15137,11 +24163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15137,11 +24163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15137 } },24163 } },
15138 }, .{24164 }, .{
15139 .required_features = .{ .avx, null, null, null },24165 .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 },
15141 .patterns = &.{24167 .patterns = &.{
15142 .{ .src = .{ .to_xmm, .mem } },24168 .{ .src = .{ .to_xmm, .mem, .none } },
15143 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },24169 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15144 .{ .src = .{ .to_xmm, .to_xmm } },24170 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15145 },24171 },
15146 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24172 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15147 .kind = .all,24173 .kind = .all,
...@@ -15157,11 +24183,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15157,11 +24183,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15157 } },24183 } },
15158 }, .{24184 }, .{
15159 .required_features = .{ .avx, null, null, null },24185 .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 },
15161 .patterns = &.{24187 .patterns = &.{
15162 .{ .src = .{ .to_xmm, .mem } },24188 .{ .src = .{ .to_xmm, .mem, .none } },
15163 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },24189 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15164 .{ .src = .{ .to_xmm, .to_xmm } },24190 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15165 },24191 },
15166 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24192 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15167 .kind = .all,24193 .kind = .all,
...@@ -15177,11 +24203,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15177,11 +24203,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15177 } },24203 } },
15178 }, .{24204 }, .{
15179 .required_features = .{ .avx, null, null, null },24205 .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 },
15181 .patterns = &.{24207 .patterns = &.{
15182 .{ .src = .{ .to_xmm, .mem } },24208 .{ .src = .{ .to_xmm, .mem, .none } },
15183 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },24209 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15184 .{ .src = .{ .to_xmm, .to_xmm } },24210 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15185 },24211 },
15186 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24212 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15187 .kind = .all,24213 .kind = .all,
...@@ -15197,11 +24223,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15197,11 +24223,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15197 } },24223 } },
15198 }, .{24224 }, .{
15199 .required_features = .{ .avx, null, null, null },24225 .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 },
15201 .patterns = &.{24227 .patterns = &.{
15202 .{ .src = .{ .to_xmm, .mem } },24228 .{ .src = .{ .to_xmm, .mem, .none } },
15203 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },24229 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
15204 .{ .src = .{ .to_xmm, .to_xmm } },24230 .{ .src = .{ .to_xmm, .to_xmm, .none } },
15205 },24231 },
15206 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{24232 .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{
15207 .kind = .all,24233 .kind = .all,
...@@ -15217,11 +24243,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15217,11 +24243,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15217 } },24243 } },
15218 }, .{24244 }, .{
15219 .required_features = .{ .sse2, null, null, null },24245 .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 },
15221 .patterns = &.{24247 .patterns = &.{
15222 .{ .src = .{ .to_mut_xmm, .mem } },24248 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15223 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },24249 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15224 .{ .src = .{ .to_mut_xmm, .to_xmm } },24250 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15225 },24251 },
15226 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24252 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15227 .kind = .all,24253 .kind = .all,
...@@ -15237,11 +24263,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15237,11 +24263,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15237 } },24263 } },
15238 }, .{24264 }, .{
15239 .required_features = .{ .sse2, null, null, null },24265 .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 },
15241 .patterns = &.{24267 .patterns = &.{
15242 .{ .src = .{ .to_mut_xmm, .mem } },24268 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15243 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },24269 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15244 .{ .src = .{ .to_mut_xmm, .to_xmm } },24270 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15245 },24271 },
15246 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24272 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15247 .kind = .all,24273 .kind = .all,
...@@ -15257,11 +24283,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15257,11 +24283,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15257 } },24283 } },
15258 }, .{24284 }, .{
15259 .required_features = .{ .sse2, null, null, null },24285 .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 },
15261 .patterns = &.{24287 .patterns = &.{
15262 .{ .src = .{ .to_mut_xmm, .mem } },24288 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15263 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },24289 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15264 .{ .src = .{ .to_mut_xmm, .to_xmm } },24290 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15265 },24291 },
15266 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24292 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15267 .kind = .all,24293 .kind = .all,
...@@ -15277,11 +24303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15277,11 +24303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15277 } },24303 } },
15278 }, .{24304 }, .{
15279 .required_features = .{ .sse4_1, null, null, null },24305 .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 },
15281 .patterns = &.{24307 .patterns = &.{
15282 .{ .src = .{ .to_mut_xmm, .mem } },24308 .{ .src = .{ .to_mut_xmm, .mem, .none } },
15283 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },24309 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
15284 .{ .src = .{ .to_mut_xmm, .to_xmm } },24310 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
15285 },24311 },
15286 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24312 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15287 .kind = .all,24313 .kind = .all,
...@@ -15297,11 +24323,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15297,11 +24323,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15297 } },24323 } },
15298 }, .{24324 }, .{
15299 .required_features = .{ .mmx, null, null, null },24325 .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 },
15301 .patterns = &.{24327 .patterns = &.{
15302 .{ .src = .{ .to_mut_mm, .mem } },24328 .{ .src = .{ .to_mut_mm, .mem, .none } },
15303 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },24329 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15304 .{ .src = .{ .to_mut_mm, .to_mm } },24330 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15305 },24331 },
15306 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24332 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15307 .kind = .all,24333 .kind = .all,
...@@ -15317,11 +24343,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15317,11 +24343,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15317 } },24343 } },
15318 }, .{24344 }, .{
15319 .required_features = .{ .mmx, null, null, null },24345 .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 },
15321 .patterns = &.{24347 .patterns = &.{
15322 .{ .src = .{ .to_mut_mm, .mem } },24348 .{ .src = .{ .to_mut_mm, .mem, .none } },
15323 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },24349 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15324 .{ .src = .{ .to_mut_mm, .to_mm } },24350 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15325 },24351 },
15326 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24352 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15327 .kind = .all,24353 .kind = .all,
...@@ -15337,11 +24363,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15337,11 +24363,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15337 } },24363 } },
15338 }, .{24364 }, .{
15339 .required_features = .{ .mmx, null, null, null },24365 .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 },
15341 .patterns = &.{24367 .patterns = &.{
15342 .{ .src = .{ .to_mut_mm, .mem } },24368 .{ .src = .{ .to_mut_mm, .mem, .none } },
15343 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },24369 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
15344 .{ .src = .{ .to_mut_mm, .to_mm } },24370 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
15345 },24371 },
15346 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{24372 .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{
15347 .kind = .all,24373 .kind = .all,
...@@ -15356,17 +24382,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15356,17 +24382,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15356 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },24382 .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ },
15357 } },24383 } },
15358 }, .{24384 }, .{
15359 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } },24385 .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any },
15360 .patterns = &.{24386 .patterns = &.{
15361 .{ .src = .{ .mut_mem, .imm8 } },24387 .{ .src = .{ .mut_mem, .imm8, .none } },
15362 .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } },24388 .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } },
15363 .{ .src = .{ .to_mut_gpr, .imm8 } },24389 .{ .src = .{ .to_mut_gpr, .imm8, .none } },
15364 .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } },24390 .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15365 .{ .src = .{ .mut_mem, .to_gpr } },24391 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15366 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },24392 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15367 .{ .src = .{ .to_mut_gpr, .mem } },24393 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15368 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },24394 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15369 .{ .src = .{ .to_mut_gpr, .to_gpr } },24395 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15370 },24396 },
15371 .dst_temps = .{.{ .ref = .src0 }},24397 .dst_temps = .{.{ .ref = .src0 }},
15372 .clobbers = .{ .eflags = true },24398 .clobbers = .{ .eflags = true },
...@@ -15381,17 +24407,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15381,17 +24407,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15381 },24407 },
15382 } },24408 } },
15383 }, .{24409 }, .{
15384 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } },24410 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
15385 .patterns = &.{24411 .patterns = &.{
15386 .{ .src = .{ .mut_mem, .imm16 } },24412 .{ .src = .{ .mut_mem, .imm16, .none } },
15387 .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } },24413 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
15388 .{ .src = .{ .to_mut_gpr, .imm16 } },24414 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
15389 .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } },24415 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15390 .{ .src = .{ .mut_mem, .to_gpr } },24416 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15391 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },24417 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15392 .{ .src = .{ .to_mut_gpr, .mem } },24418 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15393 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },24419 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15394 .{ .src = .{ .to_mut_gpr, .to_gpr } },24420 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15395 },24421 },
15396 .dst_temps = .{.{ .ref = .src0 }},24422 .dst_temps = .{.{ .ref = .src0 }},
15397 .clobbers = .{ .eflags = true },24423 .clobbers = .{ .eflags = true },
...@@ -15406,17 +24432,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15406,17 +24432,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15406 },24432 },
15407 } },24433 } },
15408 }, .{24434 }, .{
15409 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } },24435 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
15410 .patterns = &.{24436 .patterns = &.{
15411 .{ .src = .{ .mut_mem, .imm32 } },24437 .{ .src = .{ .mut_mem, .imm32, .none } },
15412 .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } },24438 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
15413 .{ .src = .{ .to_mut_gpr, .imm32 } },24439 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
15414 .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } },24440 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15415 .{ .src = .{ .mut_mem, .to_gpr } },24441 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15416 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },24442 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15417 .{ .src = .{ .to_mut_gpr, .mem } },24443 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15418 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },24444 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15419 .{ .src = .{ .to_mut_gpr, .to_gpr } },24445 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15420 },24446 },
15421 .dst_temps = .{.{ .ref = .src0 }},24447 .dst_temps = .{.{ .ref = .src0 }},
15422 .clobbers = .{ .eflags = true },24448 .clobbers = .{ .eflags = true },
...@@ -15432,17 +24458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15432,17 +24458,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15432 } },24458 } },
15433 }, .{24459 }, .{
15434 .required_features = .{ .@"64bit", null, null, null },24460 .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 },
15436 .patterns = &.{24462 .patterns = &.{
15437 .{ .src = .{ .mut_mem, .simm32 } },24463 .{ .src = .{ .mut_mem, .simm32, .none } },
15438 .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } },24464 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
15439 .{ .src = .{ .to_mut_gpr, .simm32 } },24465 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
15440 .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } },24466 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15441 .{ .src = .{ .mut_mem, .to_gpr } },24467 .{ .src = .{ .mut_mem, .to_gpr, .none } },
15442 .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } },24468 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
15443 .{ .src = .{ .to_mut_gpr, .mem } },24469 .{ .src = .{ .to_mut_gpr, .mem, .none } },
15444 .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } },24470 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
15445 .{ .src = .{ .to_mut_gpr, .to_gpr } },24471 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
15446 },24472 },
15447 .dst_temps = .{.{ .ref = .src0 }},24473 .dst_temps = .{.{ .ref = .src0 }},
15448 .clobbers = .{ .eflags = true },24474 .clobbers = .{ .eflags = true },
...@@ -15457,9 +24483,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15457,9 +24483,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15457 },24483 },
15458 } },24484 } },
15459 }, .{24485 }, .{
15460 .src_constraints = .{ .any_bool_vec, .any_bool_vec },24486 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
15461 .patterns = &.{24487 .patterns = &.{
15462 .{ .src = .{ .to_mem, .to_mem } },24488 .{ .src = .{ .to_mem, .to_mem, .none } },
15463 },24489 },
15464 .extra_temps = .{24490 .extra_temps = .{
15465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15496,9 +24522,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15496,9 +24522,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15496 } },24522 } },
15497 }, .{24523 }, .{
15498 .required_features = .{ .avx2, null, null, null },24524 .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 },
15500 .patterns = &.{24526 .patterns = &.{
15501 .{ .src = .{ .to_mem, .to_mem } },24527 .{ .src = .{ .to_mem, .to_mem, .none } },
15502 },24528 },
15503 .extra_temps = .{24529 .extra_temps = .{
15504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15541,9 +24567,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15541,9 +24567,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15541 } },24567 } },
15542 }, .{24568 }, .{
15543 .required_features = .{ .avx2, null, null, null },24569 .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 },
15545 .patterns = &.{24571 .patterns = &.{
15546 .{ .src = .{ .to_mem, .to_mem } },24572 .{ .src = .{ .to_mem, .to_mem, .none } },
15547 },24573 },
15548 .extra_temps = .{24574 .extra_temps = .{
15549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15588,9 +24614,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15588,9 +24614,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15588 } },24614 } },
15589 }, .{24615 }, .{
15590 .required_features = .{ .avx2, null, null, null },24616 .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 },
15592 .patterns = &.{24618 .patterns = &.{
15593 .{ .src = .{ .to_mem, .to_mem } },24619 .{ .src = .{ .to_mem, .to_mem, .none } },
15594 },24620 },
15595 .extra_temps = .{24621 .extra_temps = .{
15596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15633,9 +24659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15633,9 +24659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15633 } },24659 } },
15634 }, .{24660 }, .{
15635 .required_features = .{ .avx2, null, null, null },24661 .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 },
15637 .patterns = &.{24663 .patterns = &.{
15638 .{ .src = .{ .to_mem, .to_mem } },24664 .{ .src = .{ .to_mem, .to_mem, .none } },
15639 },24665 },
15640 .extra_temps = .{24666 .extra_temps = .{
15641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15702,9 +24728,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15702,9 +24728,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15702 } },24728 } },
15703 }, .{24729 }, .{
15704 .required_features = .{ .avx, null, null, null },24730 .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 },
15706 .patterns = &.{24732 .patterns = &.{
15707 .{ .src = .{ .to_mem, .to_mem } },24733 .{ .src = .{ .to_mem, .to_mem, .none } },
15708 },24734 },
15709 .extra_temps = .{24735 .extra_temps = .{
15710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15747,9 +24773,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15747,9 +24773,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15747 } },24773 } },
15748 }, .{24774 }, .{
15749 .required_features = .{ .avx, null, null, null },24775 .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 },
15751 .patterns = &.{24777 .patterns = &.{
15752 .{ .src = .{ .to_mem, .to_mem } },24778 .{ .src = .{ .to_mem, .to_mem, .none } },
15753 },24779 },
15754 .extra_temps = .{24780 .extra_temps = .{
15755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15794,9 +24820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15794,9 +24820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15794 } },24820 } },
15795 }, .{24821 }, .{
15796 .required_features = .{ .avx, null, null, null },24822 .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 },
15798 .patterns = &.{24824 .patterns = &.{
15799 .{ .src = .{ .to_mem, .to_mem } },24825 .{ .src = .{ .to_mem, .to_mem, .none } },
15800 },24826 },
15801 .extra_temps = .{24827 .extra_temps = .{
15802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15863,9 +24889,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15863,9 +24889,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15863 } },24889 } },
15864 }, .{24890 }, .{
15865 .required_features = .{ .avx, null, null, null },24891 .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 },
15867 .patterns = &.{24893 .patterns = &.{
15868 .{ .src = .{ .to_mem, .to_mem } },24894 .{ .src = .{ .to_mem, .to_mem, .none } },
15869 },24895 },
15870 .extra_temps = .{24896 .extra_temps = .{
15871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15932,9 +24958,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15932,9 +24958,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15932 } },24958 } },
15933 }, .{24959 }, .{
15934 .required_features = .{ .sse2, null, null, null },24960 .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 },
15936 .patterns = &.{24962 .patterns = &.{
15937 .{ .src = .{ .to_mem, .to_mem } },24963 .{ .src = .{ .to_mem, .to_mem, .none } },
15938 },24964 },
15939 .extra_temps = .{24965 .extra_temps = .{
15940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -15977,9 +25003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15977,9 +25003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15977 } },25003 } },
15978 }, .{25004 }, .{
15979 .required_features = .{ .sse2, null, null, null },25005 .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 },
15981 .patterns = &.{25007 .patterns = &.{
15982 .{ .src = .{ .to_mem, .to_mem } },25008 .{ .src = .{ .to_mem, .to_mem, .none } },
15983 },25009 },
15984 .extra_temps = .{25010 .extra_temps = .{
15985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16024,9 +25050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16024,9 +25050,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16024 } },25050 } },
16025 }, .{25051 }, .{
16026 .required_features = .{ .sse2, null, null, null },25052 .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 },
16028 .patterns = &.{25054 .patterns = &.{
16029 .{ .src = .{ .to_mem, .to_mem } },25055 .{ .src = .{ .to_mem, .to_mem, .none } },
16030 },25056 },
16031 .extra_temps = .{25057 .extra_temps = .{
16032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16093,9 +25119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16093,9 +25119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16093 } },25119 } },
16094 }, .{25120 }, .{
16095 .required_features = .{ .sse4_1, null, null, null },25121 .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 },
16097 .patterns = &.{25123 .patterns = &.{
16098 .{ .src = .{ .to_mem, .to_mem } },25124 .{ .src = .{ .to_mem, .to_mem, .none } },
16099 },25125 },
16100 .extra_temps = .{25126 .extra_temps = .{
16101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16162,9 +25188,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16162,9 +25188,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16162 } },25188 } },
16163 }, .{25189 }, .{
16164 .required_features = .{ .sse, .mmx, null, null },25190 .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 },
16166 .patterns = &.{25192 .patterns = &.{
16167 .{ .src = .{ .to_mem, .to_mem } },25193 .{ .src = .{ .to_mem, .to_mem, .none } },
16168 },25194 },
16169 .extra_temps = .{25195 .extra_temps = .{
16170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16207,9 +25233,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16207,9 +25233,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16207 } },25233 } },
16208 }, .{25234 }, .{
16209 .required_features = .{ .sse, .mmx, null, null },25235 .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 },
16211 .patterns = &.{25237 .patterns = &.{
16212 .{ .src = .{ .to_mem, .to_mem } },25238 .{ .src = .{ .to_mem, .to_mem, .none } },
16213 },25239 },
16214 .extra_temps = .{25240 .extra_temps = .{
16215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16280,9 +25306,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16280,9 +25306,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16280 } },25306 } },
16281 }, .{25307 }, .{
16282 .required_features = .{ .sse, .mmx, null, null },25308 .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 },
16284 .patterns = &.{25310 .patterns = &.{
16285 .{ .src = .{ .to_mem, .to_mem } },25311 .{ .src = .{ .to_mem, .to_mem, .none } },
16286 },25312 },
16287 .extra_temps = .{25313 .extra_temps = .{
16288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16354,10 +25380,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16354,10 +25380,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16354 },25380 },
16355 } },25381 } },
16356 }, .{25382 }, .{
16357 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },25383 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16358 .dst_constraints = .{.{ .bool_vec = .byte }},25384 .dst_constraints = .{.{ .bool_vec = .byte }},
16359 .patterns = &.{25385 .patterns = &.{
16360 .{ .src = .{ .to_mem, .to_mem } },25386 .{ .src = .{ .to_mem, .to_mem, .none } },
16361 },25387 },
16362 .extra_temps = .{25388 .extra_temps = .{
16363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16386,10 +25412,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16386,10 +25412,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25412 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16387 } },25413 } },
16388 }, .{25414 }, .{
16389 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },25415 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16390 .dst_constraints = .{.{ .bool_vec = .byte }},25416 .dst_constraints = .{.{ .bool_vec = .byte }},
16391 .patterns = &.{25417 .patterns = &.{
16392 .{ .src = .{ .to_mem, .to_mem } },25418 .{ .src = .{ .to_mem, .to_mem, .none } },
16393 },25419 },
16394 .extra_temps = .{25420 .extra_temps = .{
16395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25421 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16418,10 +25444,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16418,10 +25444,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16419 } },25445 } },
16420 }, .{25446 }, .{
16421 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },25447 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16422 .dst_constraints = .{.{ .bool_vec = .byte }},25448 .dst_constraints = .{.{ .bool_vec = .byte }},
16423 .patterns = &.{25449 .patterns = &.{
16424 .{ .src = .{ .to_mem, .to_mem } },25450 .{ .src = .{ .to_mem, .to_mem, .none } },
16425 },25451 },
16426 .extra_temps = .{25452 .extra_temps = .{
16427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16451,10 +25477,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16451,10 +25477,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16451 } },25477 } },
16452 }, .{25478 }, .{
16453 .required_features = .{ .@"64bit", null, null, null },25479 .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 },
16455 .dst_constraints = .{.{ .bool_vec = .byte }},25481 .dst_constraints = .{.{ .bool_vec = .byte }},
16456 .patterns = &.{25482 .patterns = &.{
16457 .{ .src = .{ .to_mem, .to_mem } },25483 .{ .src = .{ .to_mem, .to_mem, .none } },
16458 },25484 },
16459 .extra_temps = .{25485 .extra_temps = .{
16460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16483,10 +25509,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16483,10 +25509,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16484 } },25510 } },
16485 }, .{25511 }, .{
16486 .src_constraints = .{ .any_scalar_int, .any_scalar_int },25512 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
16487 .dst_constraints = .{.{ .bool_vec = .byte }},25513 .dst_constraints = .{.{ .bool_vec = .byte }},
16488 .patterns = &.{25514 .patterns = &.{
16489 .{ .src = .{ .to_mem, .to_mem } },25515 .{ .src = .{ .to_mem, .to_mem, .none } },
16490 },25516 },
16491 .extra_temps = .{25517 .extra_temps = .{
16492 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },25518 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16522,10 +25548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16522,10 +25548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16522 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },25548 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
16523 } },25549 } },
16524 }, .{25550 }, .{
16525 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },25551 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16526 .dst_constraints = .{.{ .bool_vec = .dword }},25552 .dst_constraints = .{.{ .bool_vec = .dword }},
16527 .patterns = &.{25553 .patterns = &.{
16528 .{ .src = .{ .to_mem, .to_mem } },25554 .{ .src = .{ .to_mem, .to_mem, .none } },
16529 },25555 },
16530 .extra_temps = .{25556 .extra_temps = .{
16531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16555,10 +25581,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16555,10 +25581,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16556 } },25582 } },
16557 }, .{25583 }, .{
16558 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },25584 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
16559 .dst_constraints = .{.{ .bool_vec = .dword }},25585 .dst_constraints = .{.{ .bool_vec = .dword }},
16560 .patterns = &.{25586 .patterns = &.{
16561 .{ .src = .{ .to_mem, .to_mem } },25587 .{ .src = .{ .to_mem, .to_mem, .none } },
16562 },25588 },
16563 .extra_temps = .{25589 .extra_temps = .{
16564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16588,10 +25614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16588,10 +25614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25614 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16589 } },25615 } },
16590 }, .{25616 }, .{
16591 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },25617 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
16592 .dst_constraints = .{.{ .bool_vec = .dword }},25618 .dst_constraints = .{.{ .bool_vec = .dword }},
16593 .patterns = &.{25619 .patterns = &.{
16594 .{ .src = .{ .to_mem, .to_mem } },25620 .{ .src = .{ .to_mem, .to_mem, .none } },
16595 },25621 },
16596 .extra_temps = .{25622 .extra_temps = .{
16597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16622,10 +25648,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16622,10 +25648,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16622 } },25648 } },
16623 }, .{25649 }, .{
16624 .required_features = .{ .@"64bit", null, null, null },25650 .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 },
16626 .dst_constraints = .{.{ .bool_vec = .dword }},25652 .dst_constraints = .{.{ .bool_vec = .dword }},
16627 .patterns = &.{25653 .patterns = &.{
16628 .{ .src = .{ .to_mem, .to_mem } },25654 .{ .src = .{ .to_mem, .to_mem, .none } },
16629 },25655 },
16630 .extra_temps = .{25656 .extra_temps = .{
16631 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16655,10 +25681,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16655,10 +25681,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },25681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16656 } },25682 } },
16657 }, .{25683 }, .{
16658 .src_constraints = .{ .any_scalar_int, .any_scalar_int },25684 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
16659 .dst_constraints = .{.{ .bool_vec = .dword }},25685 .dst_constraints = .{.{ .bool_vec = .dword }},
16660 .patterns = &.{25686 .patterns = &.{
16661 .{ .src = .{ .to_mem, .to_mem } },25687 .{ .src = .{ .to_mem, .to_mem, .none } },
16662 },25688 },
16663 .extra_temps = .{25689 .extra_temps = .{
16664 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },25690 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16696,10 +25722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16696,10 +25722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16696 } },25722 } },
16697 }, .{25723 }, .{
16698 .required_features = .{ .@"64bit", null, null, null },25724 .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 },
16700 .dst_constraints = .{.{ .bool_vec = .qword }},25726 .dst_constraints = .{.{ .bool_vec = .qword }},
16701 .patterns = &.{25727 .patterns = &.{
16702 .{ .src = .{ .to_mem, .to_mem } },25728 .{ .src = .{ .to_mem, .to_mem, .none } },
16703 },25729 },
16704 .extra_temps = .{25730 .extra_temps = .{
16705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16730,10 +25756,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16730,10 +25756,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16730 } },25756 } },
16731 }, .{25757 }, .{
16732 .required_features = .{ .@"64bit", null, null, null },25758 .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 },
16734 .dst_constraints = .{.{ .bool_vec = .qword }},25760 .dst_constraints = .{.{ .bool_vec = .qword }},
16735 .patterns = &.{25761 .patterns = &.{
16736 .{ .src = .{ .to_mem, .to_mem } },25762 .{ .src = .{ .to_mem, .to_mem, .none } },
16737 },25763 },
16738 .extra_temps = .{25764 .extra_temps = .{
16739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16763,10 +25789,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16763,10 +25789,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16763 } },25789 } },
16764 }, .{25790 }, .{
16765 .required_features = .{ .@"64bit", null, null, null },25791 .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 },
16767 .dst_constraints = .{.{ .bool_vec = .qword }},25793 .dst_constraints = .{.{ .bool_vec = .qword }},
16768 .patterns = &.{25794 .patterns = &.{
16769 .{ .src = .{ .to_mem, .to_mem } },25795 .{ .src = .{ .to_mem, .to_mem, .none } },
16770 },25796 },
16771 .extra_temps = .{25797 .extra_temps = .{
16772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16797,10 +25823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16797,10 +25823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16797 } },25823 } },
16798 }, .{25824 }, .{
16799 .required_features = .{ .@"64bit", null, null, null },25825 .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 },
16801 .dst_constraints = .{.{ .bool_vec = .qword }},25827 .dst_constraints = .{.{ .bool_vec = .qword }},
16802 .patterns = &.{25828 .patterns = &.{
16803 .{ .src = .{ .to_mem, .to_mem } },25829 .{ .src = .{ .to_mem, .to_mem, .none } },
16804 },25830 },
16805 .extra_temps = .{25831 .extra_temps = .{
16806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25832 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16831,10 +25857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16831,10 +25857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16831 } },25857 } },
16832 }, .{25858 }, .{
16833 .required_features = .{ .@"64bit", null, null, null },25859 .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 },
16835 .dst_constraints = .{.{ .bool_vec = .qword }},25861 .dst_constraints = .{.{ .bool_vec = .qword }},
16836 .patterns = &.{25862 .patterns = &.{
16837 .{ .src = .{ .to_mem, .to_mem } },25863 .{ .src = .{ .to_mem, .to_mem, .none } },
16838 },25864 },
16839 .extra_temps = .{25865 .extra_temps = .{
16840 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },25866 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -16871,9 +25897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16871,9 +25897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16871 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },25897 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
16872 } },25898 } },
16873 }, .{25899 }, .{
16874 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },25900 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
16875 .patterns = &.{25901 .patterns = &.{
16876 .{ .src = .{ .to_mem, .to_mem } },25902 .{ .src = .{ .to_mem, .to_mem, .none } },
16877 },25903 },
16878 .extra_temps = .{25904 .extra_temps = .{
16879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },25905 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -16917,9 +25943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16917,9 +25943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16917 .src_constraints = .{25943 .src_constraints = .{
16918 .{ .scalar_float = .{ .of = .word, .is = .word } },25944 .{ .scalar_float = .{ .of = .word, .is = .word } },
16919 .{ .scalar_float = .{ .of = .word, .is = .word } },25945 .{ .scalar_float = .{ .of = .word, .is = .word } },
25946 .any,
16920 },25947 },
16921 .patterns = &.{25948 .patterns = &.{
16922 .{ .src = .{ .to_sse, .to_sse } },25949 .{ .src = .{ .to_sse, .to_sse, .none } },
16923 },25950 },
16924 .extra_temps = .{25951 .extra_temps = .{
16925 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },25952 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
...@@ -16940,7 +25967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16940,7 +25967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16940 .each = .{ .once = &.{25967 .each = .{ .once = &.{
16941 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },25968 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
16942 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },25969 .{ ._, .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) {
16944 else => unreachable,25971 else => unreachable,
16945 .e => .eq,25972 .e => .eq,
16946 .ne => .neq,25973 .ne => .neq,
...@@ -16951,12 +25978,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16951,12 +25978,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16951 .src_constraints = .{25978 .src_constraints = .{
16952 .{ .scalar_float = .{ .of = .qword, .is = .word } },25979 .{ .scalar_float = .{ .of = .qword, .is = .word } },
16953 .{ .scalar_float = .{ .of = .qword, .is = .word } },25980 .{ .scalar_float = .{ .of = .qword, .is = .word } },
25981 .any,
16954 },25982 },
16955 .patterns = &.{25983 .patterns = &.{
16956 .{ .src = .{ .mem, .mem } },25984 .{ .src = .{ .mem, .mem, .none } },
16957 .{ .src = .{ .sse, .mem } },25985 .{ .src = .{ .sse, .mem, .none } },
16958 .{ .src = .{ .mem, .sse } },25986 .{ .src = .{ .mem, .sse, .none } },
16959 .{ .src = .{ .to_sse, .to_sse } },25987 .{ .src = .{ .to_sse, .to_sse, .none } },
16960 },25988 },
16961 .extra_temps = .{25989 .extra_temps = .{
16962 .{ .kind = .{ .rc = .sse } },25990 .{ .kind = .{ .rc = .sse } },
...@@ -16988,12 +26016,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16988,12 +26016,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16988 .src_constraints = .{26016 .src_constraints = .{
16989 .{ .scalar_float = .{ .of = .xword, .is = .word } },26017 .{ .scalar_float = .{ .of = .xword, .is = .word } },
16990 .{ .scalar_float = .{ .of = .xword, .is = .word } },26018 .{ .scalar_float = .{ .of = .xword, .is = .word } },
26019 .any,
16991 },26020 },
16992 .patterns = &.{26021 .patterns = &.{
16993 .{ .src = .{ .mem, .mem } },26022 .{ .src = .{ .mem, .mem, .none } },
16994 .{ .src = .{ .to_sse, .mem } },26023 .{ .src = .{ .to_sse, .mem, .none } },
16995 .{ .src = .{ .mem, .to_sse } },26024 .{ .src = .{ .mem, .to_sse, .none } },
16996 .{ .src = .{ .to_sse, .to_sse } },26025 .{ .src = .{ .to_sse, .to_sse, .none } },
16997 },26026 },
16998 .extra_temps = .{26027 .extra_temps = .{
16999 .{ .kind = .{ .rc = .sse } },26028 .{ .kind = .{ .rc = .sse } },
...@@ -17025,11 +26054,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17025,11 +26054,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17025 .src_constraints = .{26054 .src_constraints = .{
17026 .{ .scalar_float = .{ .of = .dword, .is = .dword } },26055 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
17027 .{ .scalar_float = .{ .of = .dword, .is = .dword } },26056 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
26057 .any,
17028 },26058 },
17029 .patterns = &.{26059 .patterns = &.{
17030 .{ .src = .{ .to_sse, .mem } },26060 .{ .src = .{ .to_sse, .mem, .none } },
17031 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26061 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17032 .{ .src = .{ .to_sse, .to_sse } },26062 .{ .src = .{ .to_sse, .to_sse, .none } },
17033 },26063 },
17034 .dst_temps = .{.{ .mut_rc_mask = .{26064 .dst_temps = .{.{ .mut_rc_mask = .{
17035 .ref = .src0,26065 .ref = .src0,
...@@ -17037,7 +26067,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17037,7 +26067,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17037 .info = .{ .kind = .all, .scalar = .dword },26067 .info = .{ .kind = .all, .scalar = .dword },
17038 } }},26068 } }},
17039 .each = .{ .once = &.{26069 .each = .{ .once = &.{
17040 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {26070 .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) {
17041 else => unreachable,26071 else => unreachable,
17042 .e => .eq,26072 .e => .eq,
17043 .ne => .neq,26073 .ne => .neq,
...@@ -17048,18 +26078,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17048,18 +26078,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17048 .src_constraints = .{26078 .src_constraints = .{
17049 .{ .scalar_float = .{ .of = .dword, .is = .dword } },26079 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
17050 .{ .scalar_float = .{ .of = .dword, .is = .dword } },26080 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
26081 .any,
17051 },26082 },
17052 .patterns = &.{26083 .patterns = &.{
17053 .{ .src = .{ .to_mut_sse, .mem } },26084 .{ .src = .{ .to_mut_sse, .mem, .none } },
17054 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },26085 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17055 .{ .src = .{ .to_mut_sse, .to_sse } },26086 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17056 },26087 },
17057 .dst_temps = .{.{ .ref_mask = .{26088 .dst_temps = .{.{ .ref_mask = .{
17058 .ref = .src0,26089 .ref = .src0,
17059 .info = .{ .kind = .all, .scalar = .dword },26090 .info = .{ .kind = .all, .scalar = .dword },
17060 } }},26091 } }},
17061 .each = .{ .once = &.{26092 .each = .{ .once = &.{
17062 .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) {26093 .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) {
17063 else => unreachable,26094 else => unreachable,
17064 .e => .eq,26095 .e => .eq,
17065 .ne => .neq,26096 .ne => .neq,
...@@ -17070,11 +26101,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17070,11 +26101,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17070 .src_constraints = .{26101 .src_constraints = .{
17071 .{ .scalar_float = .{ .of = .xword, .is = .dword } },26102 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
17072 .{ .scalar_float = .{ .of = .xword, .is = .dword } },26103 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
26104 .any,
17073 },26105 },
17074 .patterns = &.{26106 .patterns = &.{
17075 .{ .src = .{ .to_sse, .mem } },26107 .{ .src = .{ .to_sse, .mem, .none } },
17076 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26108 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17077 .{ .src = .{ .to_sse, .to_sse } },26109 .{ .src = .{ .to_sse, .to_sse, .none } },
17078 },26110 },
17079 .dst_temps = .{.{ .mut_rc_mask = .{26111 .dst_temps = .{.{ .mut_rc_mask = .{
17080 .ref = .src0,26112 .ref = .src0,
...@@ -17093,18 +26125,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17093,18 +26125,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17093 .src_constraints = .{26125 .src_constraints = .{
17094 .{ .scalar_float = .{ .of = .xword, .is = .dword } },26126 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
17095 .{ .scalar_float = .{ .of = .xword, .is = .dword } },26127 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
26128 .any,
17096 },26129 },
17097 .patterns = &.{26130 .patterns = &.{
17098 .{ .src = .{ .to_mut_sse, .mem } },26131 .{ .src = .{ .to_mut_sse, .mem, .none } },
17099 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },26132 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17100 .{ .src = .{ .to_mut_sse, .to_sse } },26133 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17101 },26134 },
17102 .dst_temps = .{.{ .ref_mask = .{26135 .dst_temps = .{.{ .ref_mask = .{
17103 .ref = .src0,26136 .ref = .src0,
17104 .info = .{ .kind = .all, .scalar = .dword },26137 .info = .{ .kind = .all, .scalar = .dword },
17105 } }},26138 } }},
17106 .each = .{ .once = &.{26139 .each = .{ .once = &.{
17107 .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) {26140 .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) {
17108 else => unreachable,26141 else => unreachable,
17109 .e => .eq,26142 .e => .eq,
17110 .ne => .neq,26143 .ne => .neq,
...@@ -17115,11 +26148,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17115,11 +26148,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17115 .src_constraints = .{26148 .src_constraints = .{
17116 .{ .scalar_float = .{ .of = .yword, .is = .dword } },26149 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
17117 .{ .scalar_float = .{ .of = .yword, .is = .dword } },26150 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
26151 .any,
17118 },26152 },
17119 .patterns = &.{26153 .patterns = &.{
17120 .{ .src = .{ .to_sse, .mem } },26154 .{ .src = .{ .to_sse, .mem, .none } },
17121 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26155 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17122 .{ .src = .{ .to_sse, .to_sse } },26156 .{ .src = .{ .to_sse, .to_sse, .none } },
17123 },26157 },
17124 .dst_temps = .{.{ .mut_rc_mask = .{26158 .dst_temps = .{.{ .mut_rc_mask = .{
17125 .ref = .src0,26159 .ref = .src0,
...@@ -17138,11 +26172,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17138,11 +26172,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17138 .src_constraints = .{26172 .src_constraints = .{
17139 .{ .scalar_float = .{ .of = .qword, .is = .qword } },26173 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
17140 .{ .scalar_float = .{ .of = .qword, .is = .qword } },26174 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
26175 .any,
17141 },26176 },
17142 .patterns = &.{26177 .patterns = &.{
17143 .{ .src = .{ .to_sse, .mem } },26178 .{ .src = .{ .to_sse, .mem, .none } },
17144 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26179 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17145 .{ .src = .{ .to_sse, .to_sse } },26180 .{ .src = .{ .to_sse, .to_sse, .none } },
17146 },26181 },
17147 .dst_temps = .{.{ .mut_rc_mask = .{26182 .dst_temps = .{.{ .mut_rc_mask = .{
17148 .ref = .src0,26183 .ref = .src0,
...@@ -17150,7 +26185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17150,7 +26185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17150 .info = .{ .kind = .all, .scalar = .qword },26185 .info = .{ .kind = .all, .scalar = .qword },
17151 } }},26186 } }},
17152 .each = .{ .once = &.{26187 .each = .{ .once = &.{
17153 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) {26188 .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) {
17154 else => unreachable,26189 else => unreachable,
17155 .e => .eq,26190 .e => .eq,
17156 .ne => .neq,26191 .ne => .neq,
...@@ -17161,18 +26196,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17161,18 +26196,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17161 .src_constraints = .{26196 .src_constraints = .{
17162 .{ .scalar_float = .{ .of = .qword, .is = .qword } },26197 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
17163 .{ .scalar_float = .{ .of = .qword, .is = .qword } },26198 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
26199 .any,
17164 },26200 },
17165 .patterns = &.{26201 .patterns = &.{
17166 .{ .src = .{ .to_mut_sse, .mem } },26202 .{ .src = .{ .to_mut_sse, .mem, .none } },
17167 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },26203 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17168 .{ .src = .{ .to_mut_sse, .to_sse } },26204 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17169 },26205 },
17170 .dst_temps = .{.{ .ref_mask = .{26206 .dst_temps = .{.{ .ref_mask = .{
17171 .ref = .src0,26207 .ref = .src0,
17172 .info = .{ .kind = .all, .scalar = .qword },26208 .info = .{ .kind = .all, .scalar = .qword },
17173 } }},26209 } }},
17174 .each = .{ .once = &.{26210 .each = .{ .once = &.{
17175 .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) {26211 .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) {
17176 else => unreachable,26212 else => unreachable,
17177 .e => .eq,26213 .e => .eq,
17178 .ne => .neq,26214 .ne => .neq,
...@@ -17183,11 +26219,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17183,11 +26219,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17183 .src_constraints = .{26219 .src_constraints = .{
17184 .{ .scalar_float = .{ .of = .xword, .is = .qword } },26220 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
17185 .{ .scalar_float = .{ .of = .xword, .is = .qword } },26221 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
26222 .any,
17186 },26223 },
17187 .patterns = &.{26224 .patterns = &.{
17188 .{ .src = .{ .to_sse, .mem } },26225 .{ .src = .{ .to_sse, .mem, .none } },
17189 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26226 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17190 .{ .src = .{ .to_sse, .to_sse } },26227 .{ .src = .{ .to_sse, .to_sse, .none } },
17191 },26228 },
17192 .dst_temps = .{.{ .mut_rc_mask = .{26229 .dst_temps = .{.{ .mut_rc_mask = .{
17193 .ref = .src0,26230 .ref = .src0,
...@@ -17206,18 +26243,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17206,18 +26243,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17206 .src_constraints = .{26243 .src_constraints = .{
17207 .{ .scalar_float = .{ .of = .xword, .is = .qword } },26244 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
17208 .{ .scalar_float = .{ .of = .xword, .is = .qword } },26245 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
26246 .any,
17209 },26247 },
17210 .patterns = &.{26248 .patterns = &.{
17211 .{ .src = .{ .to_mut_sse, .mem } },26249 .{ .src = .{ .to_mut_sse, .mem, .none } },
17212 .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } },26250 .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } },
17213 .{ .src = .{ .to_mut_sse, .to_sse } },26251 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
17214 },26252 },
17215 .dst_temps = .{.{ .ref_mask = .{26253 .dst_temps = .{.{ .ref_mask = .{
17216 .ref = .src0,26254 .ref = .src0,
17217 .info = .{ .kind = .all, .scalar = .qword },26255 .info = .{ .kind = .all, .scalar = .qword },
17218 } }},26256 } }},
17219 .each = .{ .once = &.{26257 .each = .{ .once = &.{
17220 .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) {26258 .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) {
17221 else => unreachable,26259 else => unreachable,
17222 .e => .eq,26260 .e => .eq,
17223 .ne => .neq,26261 .ne => .neq,
...@@ -17228,11 +26266,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17228,11 +26266,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17228 .src_constraints = .{26266 .src_constraints = .{
17229 .{ .scalar_float = .{ .of = .yword, .is = .qword } },26267 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
17230 .{ .scalar_float = .{ .of = .yword, .is = .qword } },26268 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
26269 .any,
17231 },26270 },
17232 .patterns = &.{26271 .patterns = &.{
17233 .{ .src = .{ .to_sse, .mem } },26272 .{ .src = .{ .to_sse, .mem, .none } },
17234 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },26273 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
17235 .{ .src = .{ .to_sse, .to_sse } },26274 .{ .src = .{ .to_sse, .to_sse, .none } },
17236 },26275 },
17237 .dst_temps = .{.{ .mut_rc_mask = .{26276 .dst_temps = .{.{ .mut_rc_mask = .{
17238 .ref = .src0,26277 .ref = .src0,
...@@ -17251,15 +26290,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17251,15 +26290,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17251 .src_constraints = .{26290 .src_constraints = .{
17252 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },26291 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
17253 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },26292 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
26293 .any,
17254 },26294 },
17255 .patterns = &.{26295 .patterns = &.{
17256 .{ .src = .{ .to_mem, .to_mem } },26296 .{ .src = .{ .to_mem, .to_mem, .none } },
17257 },26297 },
17258 .extra_temps = .{26298 .extra_temps = .{
17259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
17260 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },26300 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17261 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },26301 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17262 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },26302 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17263 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },26303 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
17264 .unused,26304 .unused,
17265 .unused,26305 .unused,
...@@ -17289,15 +26329,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17289,15 +26329,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17289 .src_constraints = .{26329 .src_constraints = .{
17290 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },26330 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
17291 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },26331 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
26332 .any,
17292 },26333 },
17293 .patterns = &.{26334 .patterns = &.{
17294 .{ .src = .{ .to_mem, .to_mem } },26335 .{ .src = .{ .to_mem, .to_mem, .none } },
17295 },26336 },
17296 .extra_temps = .{26337 .extra_temps = .{
17297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
17298 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },26339 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
17299 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },26340 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17300 .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } },26341 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
17301 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },26342 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
17302 .unused,26343 .unused,
17303 .unused,26344 .unused,
...@@ -17327,21 +26368,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17327,21 +26368,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17327 .src_constraints = .{26368 .src_constraints = .{
17328 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26369 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17329 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26370 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26371 .any,
17330 },26372 },
17331 .dst_constraints = .{.{ .bool_vec = .dword }},26373 .dst_constraints = .{.{ .bool_vec = .dword }},
17332 .patterns = &.{26374 .patterns = &.{
17333 .{ .src = .{ .to_mem, .to_mem } },26375 .{ .src = .{ .to_mem, .to_mem, .none } },
17334 },26376 },
17335 .call_frame = .{ .alignment = .@"16" },26377 .call_frame = .{ .alignment = .@"16" },
17336 .extra_temps = .{26378 .extra_temps = .{
17337 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26379 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17338 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26380 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17339 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26381 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17341 else => unreachable,
17342 .e => "__eqhf2",
17343 .ne => "__nehf2",
17344 } } } },
17345 .{ .type = .i32, .kind = .{ .reg = .eax } },26383 .{ .type = .i32, .kind = .{ .reg = .eax } },
17346 .{ .type = .u8, .kind = .{ .reg = .cl } },26384 .{ .type = .u8, .kind = .{ .reg = .cl } },
17347 .{ .type = .u32, .kind = .{ .reg = .edx } },26385 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17372,21 +26410,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17372,21 +26410,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17372 .src_constraints = .{26410 .src_constraints = .{
17373 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26411 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17374 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26412 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26413 .any,
17375 },26414 },
17376 .dst_constraints = .{.{ .bool_vec = .dword }},26415 .dst_constraints = .{.{ .bool_vec = .dword }},
17377 .patterns = &.{26416 .patterns = &.{
17378 .{ .src = .{ .to_mem, .to_mem } },26417 .{ .src = .{ .to_mem, .to_mem, .none } },
17379 },26418 },
17380 .call_frame = .{ .alignment = .@"16" },26419 .call_frame = .{ .alignment = .@"16" },
17381 .extra_temps = .{26420 .extra_temps = .{
17382 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26421 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17383 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26422 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17384 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26423 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17386 else => unreachable,
17387 .e => "__eqhf2",
17388 .ne => "__nehf2",
17389 } } } },
17390 .{ .type = .i32, .kind = .{ .reg = .eax } },26425 .{ .type = .i32, .kind = .{ .reg = .eax } },
17391 .{ .type = .u8, .kind = .{ .reg = .cl } },26426 .{ .type = .u8, .kind = .{ .reg = .cl } },
17392 .{ .type = .u32, .kind = .{ .reg = .edx } },26427 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17417,21 +26452,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17417,21 +26452,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17417 .src_constraints = .{26452 .src_constraints = .{
17418 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26453 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17419 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26454 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26455 .any,
17420 },26456 },
17421 .dst_constraints = .{.{ .bool_vec = .dword }},26457 .dst_constraints = .{.{ .bool_vec = .dword }},
17422 .patterns = &.{26458 .patterns = &.{
17423 .{ .src = .{ .to_mem, .to_mem } },26459 .{ .src = .{ .to_mem, .to_mem, .none } },
17424 },26460 },
17425 .call_frame = .{ .alignment = .@"16" },26461 .call_frame = .{ .alignment = .@"16" },
17426 .extra_temps = .{26462 .extra_temps = .{
17427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26463 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17428 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26464 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17429 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26465 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26466 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17431 else => unreachable,
17432 .e => "__eqhf2",
17433 .ne => "__nehf2",
17434 } } } },
17435 .{ .type = .i32, .kind = .{ .reg = .eax } },26467 .{ .type = .i32, .kind = .{ .reg = .eax } },
17436 .{ .type = .u8, .kind = .{ .reg = .cl } },26468 .{ .type = .u8, .kind = .{ .reg = .cl } },
17437 .{ .type = .u32, .kind = .{ .reg = .edx } },26469 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17463,21 +26495,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17463,21 +26495,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17463 .src_constraints = .{26495 .src_constraints = .{
17464 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26496 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17465 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26497 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26498 .any,
17466 },26499 },
17467 .dst_constraints = .{.{ .bool_vec = .dword }},26500 .dst_constraints = .{.{ .bool_vec = .dword }},
17468 .patterns = &.{26501 .patterns = &.{
17469 .{ .src = .{ .to_mem, .to_mem } },26502 .{ .src = .{ .to_mem, .to_mem, .none } },
17470 },26503 },
17471 .call_frame = .{ .alignment = .@"16" },26504 .call_frame = .{ .alignment = .@"16" },
17472 .extra_temps = .{26505 .extra_temps = .{
17473 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26506 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17474 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26507 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17475 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26508 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17476 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17477 else => unreachable,
17478 .e => "__eqhf2",
17479 .ne => "__nehf2",
17480 } } } },
17481 .{ .type = .i32, .kind = .{ .reg = .eax } },26510 .{ .type = .i32, .kind = .{ .reg = .eax } },
17482 .{ .type = .u8, .kind = .{ .reg = .cl } },26511 .{ .type = .u8, .kind = .{ .reg = .cl } },
17483 .{ .type = .u32, .kind = .{ .reg = .edx } },26512 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17509,21 +26538,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17509,21 +26538,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17509 .src_constraints = .{26538 .src_constraints = .{
17510 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26539 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17511 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26540 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26541 .any,
17512 },26542 },
17513 .dst_constraints = .{.{ .bool_vec = .dword }},26543 .dst_constraints = .{.{ .bool_vec = .dword }},
17514 .patterns = &.{26544 .patterns = &.{
17515 .{ .src = .{ .to_mem, .to_mem } },26545 .{ .src = .{ .to_mem, .to_mem, .none } },
17516 },26546 },
17517 .call_frame = .{ .alignment = .@"16" },26547 .call_frame = .{ .alignment = .@"16" },
17518 .extra_temps = .{26548 .extra_temps = .{
17519 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26549 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17520 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26550 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17521 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26551 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17523 else => unreachable,
17524 .e => "__eqhf2",
17525 .ne => "__nehf2",
17526 } } } },
17527 .{ .type = .i32, .kind = .{ .reg = .eax } },26553 .{ .type = .i32, .kind = .{ .reg = .eax } },
17528 .{ .type = .u8, .kind = .{ .reg = .cl } },26554 .{ .type = .u8, .kind = .{ .reg = .cl } },
17529 .{ .type = .u32, .kind = .{ .reg = .edx } },26555 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17557,21 +26583,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17557,21 +26583,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17557 .src_constraints = .{26583 .src_constraints = .{
17558 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26584 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26585 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26586 .any,
17560 },26587 },
17561 .dst_constraints = .{.{ .bool_vec = .dword }},26588 .dst_constraints = .{.{ .bool_vec = .dword }},
17562 .patterns = &.{26589 .patterns = &.{
17563 .{ .src = .{ .to_mem, .to_mem } },26590 .{ .src = .{ .to_mem, .to_mem, .none } },
17564 },26591 },
17565 .call_frame = .{ .alignment = .@"16" },26592 .call_frame = .{ .alignment = .@"16" },
17566 .extra_temps = .{26593 .extra_temps = .{
17567 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },26594 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
17568 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26595 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17569 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26596 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17571 else => unreachable,
17572 .e => "__eqhf2",
17573 .ne => "__nehf2",
17574 } } } },
17575 .{ .type = .i32, .kind = .{ .reg = .eax } },26598 .{ .type = .i32, .kind = .{ .reg = .eax } },
17576 .{ .type = .u8, .kind = .{ .reg = .cl } },26599 .{ .type = .u8, .kind = .{ .reg = .cl } },
17577 .{ .type = .u32, .kind = .{ .reg = .edx } },26600 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -17605,9 +26628,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17605,9 +26628,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17605 .src_constraints = .{26628 .src_constraints = .{
17606 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26629 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17607 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26630 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26631 .any,
17608 },26632 },
17609 .patterns = &.{26633 .patterns = &.{
17610 .{ .src = .{ .to_mem, .to_mem } },26634 .{ .src = .{ .to_mem, .to_mem, .none } },
17611 },26635 },
17612 .call_frame = .{ .alignment = .@"16" },26636 .call_frame = .{ .alignment = .@"16" },
17613 .extra_temps = .{26637 .extra_temps = .{
...@@ -17615,11 +26639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17615,11 +26639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17615 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26639 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17616 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17617 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26641 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17619 else => unreachable,
17620 .e => "__eqhf2",
17621 .ne => "__nehf2",
17622 } } } },
17623 .{ .type = .i32, .kind = .{ .reg = .eax } },26643 .{ .type = .i32, .kind = .{ .reg = .eax } },
17624 .{ .type = .u8, .kind = .{ .reg = .cl } },26644 .{ .type = .u8, .kind = .{ .reg = .cl } },
17625 .{ .type = .u64, .kind = .{ .reg = .rdx } },26645 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17659,9 +26679,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17659,9 +26679,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17659 .src_constraints = .{26679 .src_constraints = .{
17660 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26680 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17661 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26681 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26682 .any,
17662 },26683 },
17663 .patterns = &.{26684 .patterns = &.{
17664 .{ .src = .{ .to_mem, .to_mem } },26685 .{ .src = .{ .to_mem, .to_mem, .none } },
17665 },26686 },
17666 .call_frame = .{ .alignment = .@"16" },26687 .call_frame = .{ .alignment = .@"16" },
17667 .extra_temps = .{26688 .extra_temps = .{
...@@ -17669,11 +26690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17669,11 +26690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17669 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26690 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17670 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26691 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17671 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26692 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17672 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26693 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17673 else => unreachable,
17674 .e => "__eqhf2",
17675 .ne => "__nehf2",
17676 } } } },
17677 .{ .type = .i32, .kind = .{ .reg = .eax } },26694 .{ .type = .i32, .kind = .{ .reg = .eax } },
17678 .{ .type = .u8, .kind = .{ .reg = .cl } },26695 .{ .type = .u8, .kind = .{ .reg = .cl } },
17679 .{ .type = .u64, .kind = .{ .reg = .rdx } },26696 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17713,9 +26730,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17713,9 +26730,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17713 .src_constraints = .{26730 .src_constraints = .{
17714 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26731 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17715 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26732 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26733 .any,
17716 },26734 },
17717 .patterns = &.{26735 .patterns = &.{
17718 .{ .src = .{ .to_mem, .to_mem } },26736 .{ .src = .{ .to_mem, .to_mem, .none } },
17719 },26737 },
17720 .call_frame = .{ .alignment = .@"16" },26738 .call_frame = .{ .alignment = .@"16" },
17721 .extra_temps = .{26739 .extra_temps = .{
...@@ -17723,11 +26741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17723,11 +26741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17723 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26741 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17724 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17725 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17726 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17727 else => unreachable,
17728 .e => "__eqhf2",
17729 .ne => "__nehf2",
17730 } } } },
17731 .{ .type = .i32, .kind = .{ .reg = .eax } },26745 .{ .type = .i32, .kind = .{ .reg = .eax } },
17732 .{ .type = .u8, .kind = .{ .reg = .cl } },26746 .{ .type = .u8, .kind = .{ .reg = .cl } },
17733 .{ .type = .u64, .kind = .{ .reg = .rdx } },26747 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17768,9 +26782,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17768,9 +26782,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17768 .src_constraints = .{26782 .src_constraints = .{
17769 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26783 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17770 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26784 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26785 .any,
17771 },26786 },
17772 .patterns = &.{26787 .patterns = &.{
17773 .{ .src = .{ .to_mem, .to_mem } },26788 .{ .src = .{ .to_mem, .to_mem, .none } },
17774 },26789 },
17775 .call_frame = .{ .alignment = .@"16" },26790 .call_frame = .{ .alignment = .@"16" },
17776 .extra_temps = .{26791 .extra_temps = .{
...@@ -17778,11 +26793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17778,11 +26793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17778 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26793 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17779 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26794 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17780 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26795 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26796 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17782 else => unreachable,
17783 .e => "__eqhf2",
17784 .ne => "__nehf2",
17785 } } } },
17786 .{ .type = .i32, .kind = .{ .reg = .eax } },26797 .{ .type = .i32, .kind = .{ .reg = .eax } },
17787 .{ .type = .u8, .kind = .{ .reg = .cl } },26798 .{ .type = .u8, .kind = .{ .reg = .cl } },
17788 .{ .type = .u64, .kind = .{ .reg = .rdx } },26799 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17823,9 +26834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17823,9 +26834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17823 .src_constraints = .{26834 .src_constraints = .{
17824 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26835 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17825 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26836 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26837 .any,
17826 },26838 },
17827 .patterns = &.{26839 .patterns = &.{
17828 .{ .src = .{ .to_mem, .to_mem } },26840 .{ .src = .{ .to_mem, .to_mem, .none } },
17829 },26841 },
17830 .call_frame = .{ .alignment = .@"16" },26842 .call_frame = .{ .alignment = .@"16" },
17831 .extra_temps = .{26843 .extra_temps = .{
...@@ -17833,11 +26845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17833,11 +26845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17833 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26845 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17834 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26846 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17835 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26847 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26848 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17837 else => unreachable,
17838 .e => "__eqhf2",
17839 .ne => "__nehf2",
17840 } } } },
17841 .{ .type = .i32, .kind = .{ .reg = .eax } },26849 .{ .type = .i32, .kind = .{ .reg = .eax } },
17842 .{ .type = .u8, .kind = .{ .reg = .cl } },26850 .{ .type = .u8, .kind = .{ .reg = .cl } },
17843 .{ .type = .u64, .kind = .{ .reg = .rdx } },26851 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17880,9 +26888,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17880,9 +26888,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17880 .src_constraints = .{26888 .src_constraints = .{
17881 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26889 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17882 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },26890 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
26891 .any,
17883 },26892 },
17884 .patterns = &.{26893 .patterns = &.{
17885 .{ .src = .{ .to_mem, .to_mem } },26894 .{ .src = .{ .to_mem, .to_mem, .none } },
17886 },26895 },
17887 .call_frame = .{ .alignment = .@"16" },26896 .call_frame = .{ .alignment = .@"16" },
17888 .extra_temps = .{26897 .extra_temps = .{
...@@ -17890,11 +26899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17890,11 +26899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17890 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },26899 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
17891 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26900 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
17892 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26901 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
17893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {26902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
17894 else => unreachable,
17895 .e => "__eqhf2",
17896 .ne => "__nehf2",
17897 } } } },
17898 .{ .type = .i32, .kind = .{ .reg = .eax } },26903 .{ .type = .i32, .kind = .{ .reg = .eax } },
17899 .{ .type = .u8, .kind = .{ .reg = .cl } },26904 .{ .type = .u8, .kind = .{ .reg = .cl } },
17900 .{ .type = .u64, .kind = .{ .reg = .rdx } },26905 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -17937,9 +26942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17937,9 +26942,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17937 .src_constraints = .{26942 .src_constraints = .{
17938 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },26943 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
17939 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },26944 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
26945 .any,
17940 },26946 },
17941 .patterns = &.{26947 .patterns = &.{
17942 .{ .src = .{ .to_mem, .to_mem } },26948 .{ .src = .{ .to_mem, .to_mem, .none } },
17943 },26949 },
17944 .extra_temps = .{26950 .extra_temps = .{
17945 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -17974,9 +26980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17974,9 +26980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17974 .src_constraints = .{26980 .src_constraints = .{
17975 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },26981 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
17976 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },26982 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
26983 .any,
17977 },26984 },
17978 .patterns = &.{26985 .patterns = &.{
17979 .{ .src = .{ .to_mem, .to_mem } },26986 .{ .src = .{ .to_mem, .to_mem, .none } },
17980 },26987 },
17981 .extra_temps = .{26988 .extra_temps = .{
17982 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18011,9 +27018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18011,9 +27018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18011 .src_constraints = .{27018 .src_constraints = .{
18012 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },27019 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18013 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },27020 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27021 .any,
18014 },27022 },
18015 .patterns = &.{27023 .patterns = &.{
18016 .{ .src = .{ .to_mem, .to_mem } },27024 .{ .src = .{ .to_mem, .to_mem, .none } },
18017 },27025 },
18018 .extra_temps = .{27026 .extra_temps = .{
18019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18033,12 +27041,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18033,12 +27041,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18033 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },27041 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18034 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },27042 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18035 .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },27043 .{ ._, ._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) {
18037 else => unreachable,27045 else => unreachable,
18038 .e => .eq,27046 .e => .eq,
18039 .ne => .neq,27047 .ne => .neq,
18040 }), ._ },27048 }), ._ },
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) {
18042 else => unreachable,27050 else => unreachable,
18043 .e => .eq,27051 .e => .eq,
18044 .ne => .neq,27052 .ne => .neq,
...@@ -18056,9 +27064,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18056,9 +27064,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18056 .src_constraints = .{27064 .src_constraints = .{
18057 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },27065 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
18058 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },27066 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27067 .any,
18059 },27068 },
18060 .patterns = &.{27069 .patterns = &.{
18061 .{ .src = .{ .to_mem, .to_mem } },27070 .{ .src = .{ .to_mem, .to_mem, .none } },
18062 },27071 },
18063 .extra_temps = .{27072 .extra_temps = .{
18064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18077,14 +27086,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18077,14 +27086,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },27086 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
18078 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },27087 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18079 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },27088 .{ .@"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) {
18081 else => unreachable,27090 else => unreachable,
18082 .e => .eq,27091 .e => .eq,
18083 .ne => .neq,27092 .ne => .neq,
18084 }), ._ },27093 }), ._ },
18085 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },27094 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
18086 .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ },27095 .{ ._, ._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) {
18088 else => unreachable,27097 else => unreachable,
18089 .e => .eq,27098 .e => .eq,
18090 .ne => .neq,27099 .ne => .neq,
...@@ -18102,9 +27111,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18102,9 +27111,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18102 .src_constraints = .{27111 .src_constraints = .{
18103 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },27112 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
18104 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },27113 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
27114 .any,
18105 },27115 },
18106 .patterns = &.{27116 .patterns = &.{
18107 .{ .src = .{ .to_mem, .to_mem } },27117 .{ .src = .{ .to_mem, .to_mem, .none } },
18108 },27118 },
18109 .extra_temps = .{27119 .extra_temps = .{
18110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18124,7 +27134,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18124,7 +27134,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18124 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },27134 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
18125 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },27135 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
18126 .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ },27136 .{ .@"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) {
18128 else => unreachable,27138 else => unreachable,
18129 .e => .eq,27139 .e => .eq,
18130 .ne => .neq,27140 .ne => .neq,
...@@ -18135,7 +27145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18135,7 +27145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18135 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },27145 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18136 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },27146 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18137 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },27147 .{ .@"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) {
18139 else => unreachable,27149 else => unreachable,
18140 .e => .eq,27150 .e => .eq,
18141 .ne => .neq,27151 .ne => .neq,
...@@ -18150,9 +27160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18150,9 +27160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18150 .src_constraints = .{27160 .src_constraints = .{
18151 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },27161 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
18152 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },27162 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
27163 .any,
18153 },27164 },
18154 .patterns = &.{27165 .patterns = &.{
18155 .{ .src = .{ .to_mem, .to_mem } },27166 .{ .src = .{ .to_mem, .to_mem, .none } },
18156 },27167 },
18157 .extra_temps = .{27168 .extra_temps = .{
18158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18196,9 +27207,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18196,9 +27207,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18196 .src_constraints = .{27207 .src_constraints = .{
18197 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },27208 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
18198 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },27209 .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } },
27210 .any,
18199 },27211 },
18200 .patterns = &.{27212 .patterns = &.{
18201 .{ .src = .{ .to_mem, .to_mem } },27213 .{ .src = .{ .to_mem, .to_mem, .none } },
18202 },27214 },
18203 .extra_temps = .{27215 .extra_temps = .{
18204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18242,9 +27254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18242,9 +27254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18242 .src_constraints = .{27254 .src_constraints = .{
18243 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },27255 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
18244 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },27256 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
27257 .any,
18245 },27258 },
18246 .patterns = &.{27259 .patterns = &.{
18247 .{ .src = .{ .to_mem, .to_mem } },27260 .{ .src = .{ .to_mem, .to_mem, .none } },
18248 },27261 },
18249 .extra_temps = .{27262 .extra_temps = .{
18250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18291,9 +27304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18291,9 +27304,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18291 .src_constraints = .{27304 .src_constraints = .{
18292 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },27305 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
18293 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },27306 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
27307 .any,
18294 },27308 },
18295 .patterns = &.{27309 .patterns = &.{
18296 .{ .src = .{ .to_mem, .to_mem } },27310 .{ .src = .{ .to_mem, .to_mem, .none } },
18297 },27311 },
18298 .extra_temps = .{27312 .extra_temps = .{
18299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18313,7 +27327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18313,7 +27327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18313 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },27327 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
18314 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },27328 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
18315 .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },27329 .{ .@"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) {
18317 else => unreachable,27331 else => unreachable,
18318 .e => .eq,27332 .e => .eq,
18319 .ne => .neq,27333 .ne => .neq,
...@@ -18340,9 +27354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18340,9 +27354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18340 .src_constraints = .{27354 .src_constraints = .{
18341 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27355 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18342 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27356 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27357 .any,
18343 },27358 },
18344 .patterns = &.{27359 .patterns = &.{
18345 .{ .src = .{ .to_mem, .to_mem } },27360 .{ .src = .{ .to_mem, .to_mem, .none } },
18346 },27361 },
18347 .extra_temps = .{27362 .extra_temps = .{
18348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18350,8 +27365,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18350,8 +27365,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18350 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18351 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },27366 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18352 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },27367 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18353 .{ .type = .f80, .kind = .{ .reg = .st6 } },27368 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18354 .{ .type = .f80, .kind = .{ .reg = .st7 } },27369 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18355 .unused,27370 .unused,
18356 .unused,27371 .unused,
18357 },27372 },
...@@ -18399,9 +27414,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18399,9 +27414,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18399 .src_constraints = .{27414 .src_constraints = .{
18400 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27415 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18401 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27416 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27417 .any,
18402 },27418 },
18403 .patterns = &.{27419 .patterns = &.{
18404 .{ .src = .{ .to_mem, .to_mem } },27420 .{ .src = .{ .to_mem, .to_mem, .none } },
18405 },27421 },
18406 .extra_temps = .{27422 .extra_temps = .{
18407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18409,8 +27425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18409,8 +27425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27425 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18410 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },27426 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18411 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },27427 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18412 .{ .type = .f80, .kind = .{ .reg = .st6 } },27428 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18413 .{ .type = .f80, .kind = .{ .reg = .st7 } },27429 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18414 .unused,27430 .unused,
18415 .unused,27431 .unused,
18416 },27432 },
...@@ -18458,17 +27474,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18458,17 +27474,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18458 .src_constraints = .{27474 .src_constraints = .{
18459 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27475 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
18460 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },27476 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27477 .any,
18461 },27478 },
18462 .patterns = &.{27479 .patterns = &.{
18463 .{ .src = .{ .to_mem, .to_mem } },27480 .{ .src = .{ .to_mem, .to_mem, .none } },
18464 },27481 },
18465 .extra_temps = .{27482 .extra_temps = .{
18466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
18467 .{ .type = .u32, .kind = .{ .reg = .rcx } },27484 .{ .type = .u32, .kind = .{ .reg = .rcx } },
18468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27485 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18469 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },27486 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
18470 .{ .type = .f80, .kind = .{ .reg = .st6 } },27487 .{ .type = .f64, .kind = .{ .reg = .st6 } },
18471 .{ .type = .f80, .kind = .{ .reg = .st7 } },27488 .{ .type = .f64, .kind = .{ .reg = .st7 } },
18472 .{ .type = .u8, .kind = .{ .reg = .ah } },27489 .{ .type = .u8, .kind = .{ .reg = .ah } },
18473 .unused,27490 .unused,
18474 .unused,27491 .unused,
...@@ -18508,9 +27525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18508,9 +27525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18508 .src_constraints = .{27525 .src_constraints = .{
18509 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27526 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18510 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27527 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27528 .any,
18511 },27529 },
18512 .patterns = &.{27530 .patterns = &.{
18513 .{ .src = .{ .to_mem, .to_mem } },27531 .{ .src = .{ .to_mem, .to_mem, .none } },
18514 },27532 },
18515 .extra_temps = .{27533 .extra_temps = .{
18516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18567,9 +27585,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18567,9 +27585,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18567 .src_constraints = .{27585 .src_constraints = .{
18568 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27586 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27587 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27588 .any,
18570 },27589 },
18571 .patterns = &.{27590 .patterns = &.{
18572 .{ .src = .{ .to_mem, .to_mem } },27591 .{ .src = .{ .to_mem, .to_mem, .none } },
18573 },27592 },
18574 .extra_temps = .{27593 .extra_temps = .{
18575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18626,9 +27645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18626,9 +27645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18626 .src_constraints = .{27645 .src_constraints = .{
18627 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27646 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
18628 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },27647 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27648 .any,
18629 },27649 },
18630 .patterns = &.{27650 .patterns = &.{
18631 .{ .src = .{ .to_mem, .to_mem } },27651 .{ .src = .{ .to_mem, .to_mem, .none } },
18632 },27652 },
18633 .extra_temps = .{27653 .extra_temps = .{
18634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27654 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -18676,10 +27696,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18676,10 +27696,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18676 .src_constraints = .{27696 .src_constraints = .{
18677 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27697 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18678 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27698 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27699 .any,
18679 },27700 },
18680 .dst_constraints = .{.{ .bool_vec = .dword }},27701 .dst_constraints = .{.{ .bool_vec = .dword }},
18681 .patterns = &.{27702 .patterns = &.{
18682 .{ .src = .{ .to_mem, .to_mem } },27703 .{ .src = .{ .to_mem, .to_mem, .none } },
18683 },27704 },
18684 .call_frame = .{ .alignment = .@"16" },27705 .call_frame = .{ .alignment = .@"16" },
18685 .extra_temps = .{27706 .extra_temps = .{
...@@ -18687,11 +27708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18687,11 +27708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18688 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27709 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18689 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27710 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27711 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18691 else => unreachable,
18692 .e => "__eqtf2",
18693 .ne => "__netf2",
18694 } } } },
18695 .{ .type = .i32, .kind = .{ .reg = .eax } },27712 .{ .type = .i32, .kind = .{ .reg = .eax } },
18696 .{ .type = .u8, .kind = .{ .reg = .cl } },27713 .{ .type = .u8, .kind = .{ .reg = .cl } },
18697 .{ .type = .u32, .kind = .{ .reg = .edx } },27714 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18721,10 +27738,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18721,10 +27738,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18721 .src_constraints = .{27738 .src_constraints = .{
18722 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27739 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18723 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27740 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27741 .any,
18724 },27742 },
18725 .dst_constraints = .{.{ .bool_vec = .dword }},27743 .dst_constraints = .{.{ .bool_vec = .dword }},
18726 .patterns = &.{27744 .patterns = &.{
18727 .{ .src = .{ .to_mem, .to_mem } },27745 .{ .src = .{ .to_mem, .to_mem, .none } },
18728 },27746 },
18729 .call_frame = .{ .alignment = .@"16" },27747 .call_frame = .{ .alignment = .@"16" },
18730 .extra_temps = .{27748 .extra_temps = .{
...@@ -18732,11 +27750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18732,11 +27750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18732 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18733 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27751 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18734 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27752 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18736 else => unreachable,
18737 .e => "__eqtf2",
18738 .ne => "__netf2",
18739 } } } },
18740 .{ .type = .i32, .kind = .{ .reg = .eax } },27754 .{ .type = .i32, .kind = .{ .reg = .eax } },
18741 .{ .type = .u8, .kind = .{ .reg = .cl } },27755 .{ .type = .u8, .kind = .{ .reg = .cl } },
18742 .{ .type = .u32, .kind = .{ .reg = .edx } },27756 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18766,10 +27780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18766,10 +27780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18766 .src_constraints = .{27780 .src_constraints = .{
18767 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27781 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18768 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27782 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27783 .any,
18769 },27784 },
18770 .dst_constraints = .{.{ .bool_vec = .dword }},27785 .dst_constraints = .{.{ .bool_vec = .dword }},
18771 .patterns = &.{27786 .patterns = &.{
18772 .{ .src = .{ .to_mem, .to_mem } },27787 .{ .src = .{ .to_mem, .to_mem, .none } },
18773 },27788 },
18774 .call_frame = .{ .alignment = .@"16" },27789 .call_frame = .{ .alignment = .@"16" },
18775 .extra_temps = .{27790 .extra_temps = .{
...@@ -18777,11 +27792,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18777,11 +27792,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27792 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18778 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27793 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18779 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27794 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18780 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18781 else => unreachable,
18782 .e => "__eqtf2",
18783 .ne => "__netf2",
18784 } } } },
18785 .{ .type = .i32, .kind = .{ .reg = .eax } },27796 .{ .type = .i32, .kind = .{ .reg = .eax } },
18786 .{ .type = .u8, .kind = .{ .reg = .cl } },27797 .{ .type = .u8, .kind = .{ .reg = .cl } },
18787 .{ .type = .u32, .kind = .{ .reg = .edx } },27798 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18811,10 +27822,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18811,10 +27822,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18811 .src_constraints = .{27822 .src_constraints = .{
18812 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27823 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27824 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27825 .any,
18814 },27826 },
18815 .dst_constraints = .{.{ .bool_vec = .dword }},27827 .dst_constraints = .{.{ .bool_vec = .dword }},
18816 .patterns = &.{27828 .patterns = &.{
18817 .{ .src = .{ .to_mem, .to_mem } },27829 .{ .src = .{ .to_mem, .to_mem, .none } },
18818 },27830 },
18819 .call_frame = .{ .alignment = .@"16" },27831 .call_frame = .{ .alignment = .@"16" },
18820 .extra_temps = .{27832 .extra_temps = .{
...@@ -18822,11 +27834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18822,11 +27834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18822 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27834 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18823 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18824 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27836 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18826 else => unreachable,
18827 .e => "__eqtf2",
18828 .ne => "__netf2",
18829 } } } },
18830 .{ .type = .i32, .kind = .{ .reg = .eax } },27838 .{ .type = .i32, .kind = .{ .reg = .eax } },
18831 .{ .type = .u8, .kind = .{ .reg = .cl } },27839 .{ .type = .u8, .kind = .{ .reg = .cl } },
18832 .{ .type = .u32, .kind = .{ .reg = .edx } },27840 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18856,10 +27864,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18856,10 +27864,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18856 .src_constraints = .{27864 .src_constraints = .{
18857 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27865 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18858 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27866 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27867 .any,
18859 },27868 },
18860 .dst_constraints = .{.{ .bool_vec = .dword }},27869 .dst_constraints = .{.{ .bool_vec = .dword }},
18861 .patterns = &.{27870 .patterns = &.{
18862 .{ .src = .{ .to_mem, .to_mem } },27871 .{ .src = .{ .to_mem, .to_mem, .none } },
18863 },27872 },
18864 .call_frame = .{ .alignment = .@"16" },27873 .call_frame = .{ .alignment = .@"16" },
18865 .extra_temps = .{27874 .extra_temps = .{
...@@ -18867,11 +27876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18867,11 +27876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18867 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27876 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18868 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27877 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18869 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27878 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18870 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27879 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18871 else => unreachable,
18872 .e => "__eqtf2",
18873 .ne => "__netf2",
18874 } } } },
18875 .{ .type = .i32, .kind = .{ .reg = .eax } },27880 .{ .type = .i32, .kind = .{ .reg = .eax } },
18876 .{ .type = .u8, .kind = .{ .reg = .cl } },27881 .{ .type = .u8, .kind = .{ .reg = .cl } },
18877 .{ .type = .u32, .kind = .{ .reg = .edx } },27882 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18901,10 +27906,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18901,10 +27906,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18901 .src_constraints = .{27906 .src_constraints = .{
18902 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27907 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18903 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27908 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27909 .any,
18904 },27910 },
18905 .dst_constraints = .{.{ .bool_vec = .dword }},27911 .dst_constraints = .{.{ .bool_vec = .dword }},
18906 .patterns = &.{27912 .patterns = &.{
18907 .{ .src = .{ .to_mem, .to_mem } },27913 .{ .src = .{ .to_mem, .to_mem, .none } },
18908 },27914 },
18909 .call_frame = .{ .alignment = .@"16" },27915 .call_frame = .{ .alignment = .@"16" },
18910 .extra_temps = .{27916 .extra_temps = .{
...@@ -18912,11 +27918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18912,11 +27918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18912 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },27918 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
18913 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18914 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27920 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18915 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18916 else => unreachable,
18917 .e => "__eqtf2",
18918 .ne => "__netf2",
18919 } } } },
18920 .{ .type = .i32, .kind = .{ .reg = .eax } },27922 .{ .type = .i32, .kind = .{ .reg = .eax } },
18921 .{ .type = .u8, .kind = .{ .reg = .cl } },27923 .{ .type = .u8, .kind = .{ .reg = .cl } },
18922 .{ .type = .u32, .kind = .{ .reg = .edx } },27924 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -18946,9 +27948,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18946,9 +27948,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18946 .src_constraints = .{27948 .src_constraints = .{
18947 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27949 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18948 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },27950 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27951 .any,
18949 },27952 },
18950 .patterns = &.{27953 .patterns = &.{
18951 .{ .src = .{ .to_mem, .to_mem } },27954 .{ .src = .{ .to_mem, .to_mem, .none } },
18952 },27955 },
18953 .call_frame = .{ .alignment = .@"16" },27956 .call_frame = .{ .alignment = .@"16" },
18954 .extra_temps = .{27957 .extra_temps = .{
...@@ -18957,11 +27960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18957,11 +27960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18957 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },27960 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
18958 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27961 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
18959 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27962 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
18960 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {27963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
18961 else => unreachable,
18962 .e => "__eqtf2",
18963 .ne => "__netf2",
18964 } } } },
18965 .{ .type = .i32, .kind = .{ .reg = .eax } },27964 .{ .type = .i32, .kind = .{ .reg = .eax } },
18966 .{ .type = .u8, .kind = .{ .reg = .cl } },27965 .{ .type = .u8, .kind = .{ .reg = .cl } },
18967 .{ .type = .u64, .kind = .{ .reg = .rdx } },27966 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19000,9 +27999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19000,9 +27999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19000 .src_constraints = .{27999 .src_constraints = .{
19001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28000 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28001 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28002 .any,
19003 },28003 },
19004 .patterns = &.{28004 .patterns = &.{
19005 .{ .src = .{ .to_mem, .to_mem } },28005 .{ .src = .{ .to_mem, .to_mem, .none } },
19006 },28006 },
19007 .call_frame = .{ .alignment = .@"16" },28007 .call_frame = .{ .alignment = .@"16" },
19008 .extra_temps = .{28008 .extra_temps = .{
...@@ -19011,11 +28011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19011,11 +28011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },28012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },28013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19015 else => unreachable,
19016 .e => "__eqtf2",
19017 .ne => "__netf2",
19018 } } } },
19019 .{ .type = .i32, .kind = .{ .reg = .eax } },28015 .{ .type = .i32, .kind = .{ .reg = .eax } },
19020 .{ .type = .u8, .kind = .{ .reg = .cl } },28016 .{ .type = .u8, .kind = .{ .reg = .cl } },
19021 .{ .type = .u64, .kind = .{ .reg = .rdx } },28017 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19054,9 +28050,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19054,9 +28050,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19054 .src_constraints = .{28050 .src_constraints = .{
19055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28051 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28052 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28053 .any,
19057 },28054 },
19058 .patterns = &.{28055 .patterns = &.{
19059 .{ .src = .{ .to_mem, .to_mem } },28056 .{ .src = .{ .to_mem, .to_mem, .none } },
19060 },28057 },
19061 .call_frame = .{ .alignment = .@"16" },28058 .call_frame = .{ .alignment = .@"16" },
19062 .extra_temps = .{28059 .extra_temps = .{
...@@ -19065,11 +28062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19065,11 +28062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19065 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28062 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19066 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },28063 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19067 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },28064 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19069 else => unreachable,
19070 .e => "__eqtf2",
19071 .ne => "__netf2",
19072 } } } },
19073 .{ .type = .i32, .kind = .{ .reg = .eax } },28066 .{ .type = .i32, .kind = .{ .reg = .eax } },
19074 .{ .type = .u8, .kind = .{ .reg = .cl } },28067 .{ .type = .u8, .kind = .{ .reg = .cl } },
19075 .{ .type = .u64, .kind = .{ .reg = .rdx } },28068 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19108,9 +28101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19108,9 +28101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19108 .src_constraints = .{28101 .src_constraints = .{
19109 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28102 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19110 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28103 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28104 .any,
19111 },28105 },
19112 .patterns = &.{28106 .patterns = &.{
19113 .{ .src = .{ .to_mem, .to_mem } },28107 .{ .src = .{ .to_mem, .to_mem, .none } },
19114 },28108 },
19115 .call_frame = .{ .alignment = .@"16" },28109 .call_frame = .{ .alignment = .@"16" },
19116 .extra_temps = .{28110 .extra_temps = .{
...@@ -19119,11 +28113,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19119,11 +28113,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28113 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },28114 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19121 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },28115 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19123 else => unreachable,
19124 .e => "__eqtf2",
19125 .ne => "__netf2",
19126 } } } },
19127 .{ .type = .i32, .kind = .{ .reg = .eax } },28117 .{ .type = .i32, .kind = .{ .reg = .eax } },
19128 .{ .type = .u8, .kind = .{ .reg = .cl } },28118 .{ .type = .u8, .kind = .{ .reg = .cl } },
19129 .{ .type = .u64, .kind = .{ .reg = .rdx } },28119 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19162,9 +28152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19162,9 +28152,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19162 .src_constraints = .{28152 .src_constraints = .{
19163 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28153 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19164 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28154 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28155 .any,
19165 },28156 },
19166 .patterns = &.{28157 .patterns = &.{
19167 .{ .src = .{ .to_mem, .to_mem } },28158 .{ .src = .{ .to_mem, .to_mem, .none } },
19168 },28159 },
19169 .call_frame = .{ .alignment = .@"16" },28160 .call_frame = .{ .alignment = .@"16" },
19170 .extra_temps = .{28161 .extra_temps = .{
...@@ -19173,11 +28164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19173,11 +28164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19173 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28164 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19174 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },28165 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19175 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },28166 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19177 else => unreachable,
19178 .e => "__eqtf2",
19179 .ne => "__netf2",
19180 } } } },
19181 .{ .type = .i32, .kind = .{ .reg = .eax } },28168 .{ .type = .i32, .kind = .{ .reg = .eax } },
19182 .{ .type = .u8, .kind = .{ .reg = .cl } },28169 .{ .type = .u8, .kind = .{ .reg = .cl } },
19183 .{ .type = .u64, .kind = .{ .reg = .rdx } },28170 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19216,9 +28203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19216,9 +28203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19216 .src_constraints = .{28203 .src_constraints = .{
19217 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28204 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
19218 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },28205 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
28206 .any,
19219 },28207 },
19220 .patterns = &.{28208 .patterns = &.{
19221 .{ .src = .{ .to_mem, .to_mem } },28209 .{ .src = .{ .to_mem, .to_mem, .none } },
19222 },28210 },
19223 .call_frame = .{ .alignment = .@"16" },28211 .call_frame = .{ .alignment = .@"16" },
19224 .extra_temps = .{28212 .extra_temps = .{
...@@ -19227,11 +28215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19227,11 +28215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19227 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },28215 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
19228 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },28216 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
19229 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },28217 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
19230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) {28218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
19231 else => unreachable,
19232 .e => "__eqtf2",
19233 .ne => "__netf2",
19234 } } } },
19235 .{ .type = .i32, .kind = .{ .reg = .eax } },28219 .{ .type = .i32, .kind = .{ .reg = .eax } },
19236 .{ .type = .u8, .kind = .{ .reg = .cl } },28220 .{ .type = .u8, .kind = .{ .reg = .cl } },
19237 .{ .type = .u64, .kind = .{ .reg = .rdx } },28221 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -19266,31 +28250,1583 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19266,31 +28250,1583 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19266 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },28250 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ },
19267 } },28251 } },
19268 } },28252 } },
19269 }) catch |err| switch (err) {28253 }),
19270 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{28254 }) catch |err| switch (err) {
19271 @tagName(air_tag),28255 error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{
19272 @tagName(extra.compareOperator()),28256 @tagName(air_tag),
19273 cg.typeOf(extra.lhs).fmt(pt),28257 @tagName(extra.compareOperator()),
19274 ops[0].tracking(cg),28258 cg.typeOf(extra.lhs).fmt(pt),
19275 ops[1].tracking(cg),28259 ops[0].tracking(cg),
19276 }),28260 ops[1].tracking(cg),
19277 else => |e| return e,28261 }),
19278 },28262 else => |e| return e,
19279 .gte => unreachable,28263 };
19280 .gt => unreachable,28264 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
19281 }28265 },
19282 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);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);
19283 },29820 },
19284
19285 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {29821 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {
19286 const ty_op = air_datas[@intFromEnum(inst)].ty_op;29822 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
19287 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});29823 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
19288 var res: [1]Temp = undefined;29824 var res: [1]Temp = undefined;
19289 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{29825 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
19290 .required_features = .{ .cmov, null, null, null },29826 .required_features = .{ .cmov, null, null, null },
19291 .src_constraints = .{ .{ .int = .byte }, .any },29827 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19292 .patterns = &.{29828 .patterns = &.{
19293 .{ .src = .{ .to_gpr, .none } },29829 .{ .src = .{ .to_gpr, .none, .none } },
19294 },29830 },
19295 .dst_temps = .{.{ .rc = .general_purpose }},29831 .dst_temps = .{.{ .rc = .general_purpose }},
19296 .clobbers = .{ .eflags = true },29832 .clobbers = .{ .eflags = true },
...@@ -19300,9 +29836,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19300,9 +29836,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19300 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },29836 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19301 } },29837 } },
19302 }, .{29838 }, .{
19303 .src_constraints = .{ .{ .int = .byte }, .any },29839 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19304 .patterns = &.{29840 .patterns = &.{
19305 .{ .src = .{ .mut_mem, .none } },29841 .{ .src = .{ .mut_mem, .none, .none } },
19306 },29842 },
19307 .dst_temps = .{.{ .ref = .src0 }},29843 .dst_temps = .{.{ .ref = .src0 }},
19308 .clobbers = .{ .eflags = true },29844 .clobbers = .{ .eflags = true },
...@@ -19312,9 +29848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19312,9 +29848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19312 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },29848 .{ ._, ._, .neg, .dst0b, ._, ._, ._ },
19313 } },29849 } },
19314 }, .{29850 }, .{
19315 .src_constraints = .{ .{ .int = .byte }, .any },29851 .src_constraints = .{ .{ .int = .byte }, .any, .any },
19316 .patterns = &.{29852 .patterns = &.{
19317 .{ .src = .{ .to_mut_gpr, .none } },29853 .{ .src = .{ .to_mut_gpr, .none, .none } },
19318 },29854 },
19319 .dst_temps = .{.{ .ref = .src0 }},29855 .dst_temps = .{.{ .ref = .src0 }},
19320 .clobbers = .{ .eflags = true },29856 .clobbers = .{ .eflags = true },
...@@ -19325,9 +29861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19325,9 +29861,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19325 } },29861 } },
19326 }, .{29862 }, .{
19327 .required_features = .{ .cmov, null, null, null },29863 .required_features = .{ .cmov, null, null, null },
19328 .src_constraints = .{ .{ .int = .word }, .any },29864 .src_constraints = .{ .{ .int = .word }, .any, .any },
19329 .patterns = &.{29865 .patterns = &.{
19330 .{ .src = .{ .mem, .none } },29866 .{ .src = .{ .mem, .none, .none } },
19331 },29867 },
19332 .dst_temps = .{.{ .rc = .general_purpose }},29868 .dst_temps = .{.{ .rc = .general_purpose }},
19333 .clobbers = .{ .eflags = true },29869 .clobbers = .{ .eflags = true },
...@@ -19338,9 +29874,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19338,9 +29874,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19338 } },29874 } },
19339 }, .{29875 }, .{
19340 .required_features = .{ .cmov, null, null, null },29876 .required_features = .{ .cmov, null, null, null },
19341 .src_constraints = .{ .{ .int = .word }, .any },29877 .src_constraints = .{ .{ .int = .word }, .any, .any },
19342 .patterns = &.{29878 .patterns = &.{
19343 .{ .src = .{ .to_gpr, .none } },29879 .{ .src = .{ .to_gpr, .none, .none } },
19344 },29880 },
19345 .dst_temps = .{.{ .rc = .general_purpose }},29881 .dst_temps = .{.{ .rc = .general_purpose }},
19346 .clobbers = .{ .eflags = true },29882 .clobbers = .{ .eflags = true },
...@@ -19350,9 +29886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19350,9 +29886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19350 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },29886 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19351 } },29887 } },
19352 }, .{29888 }, .{
19353 .src_constraints = .{ .{ .int = .word }, .any },29889 .src_constraints = .{ .{ .int = .word }, .any, .any },
19354 .patterns = &.{29890 .patterns = &.{
19355 .{ .src = .{ .mut_mem, .none } },29891 .{ .src = .{ .mut_mem, .none, .none } },
19356 },29892 },
19357 .dst_temps = .{.{ .ref = .src0 }},29893 .dst_temps = .{.{ .ref = .src0 }},
19358 .clobbers = .{ .eflags = true },29894 .clobbers = .{ .eflags = true },
...@@ -19362,9 +29898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19362,9 +29898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19362 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },29898 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
19363 } },29899 } },
19364 }, .{29900 }, .{
19365 .src_constraints = .{ .{ .int = .word }, .any },29901 .src_constraints = .{ .{ .int = .word }, .any, .any },
19366 .patterns = &.{29902 .patterns = &.{
19367 .{ .src = .{ .to_mut_gpr, .none } },29903 .{ .src = .{ .to_mut_gpr, .none, .none } },
19368 },29904 },
19369 .dst_temps = .{.{ .ref = .src0 }},29905 .dst_temps = .{.{ .ref = .src0 }},
19370 .clobbers = .{ .eflags = true },29906 .clobbers = .{ .eflags = true },
...@@ -19375,10 +29911,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19375,10 +29911,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19375 } },29911 } },
19376 }, .{29912 }, .{
19377 .required_features = .{ .cmov, null, null, null },29913 .required_features = .{ .cmov, null, null, null },
19378 .src_constraints = .{ .{ .int = .dword }, .any },29914 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19379 .patterns = &.{29915 .patterns = &.{
19380 .{ .src = .{ .mem, .none } },29916 .{ .src = .{ .mem, .none, .none } },
19381 .{ .src = .{ .to_gpr, .none } },29917 .{ .src = .{ .to_gpr, .none, .none } },
19382 },29918 },
19383 .dst_temps = .{.{ .rc = .general_purpose }},29919 .dst_temps = .{.{ .rc = .general_purpose }},
19384 .clobbers = .{ .eflags = true },29920 .clobbers = .{ .eflags = true },
...@@ -19388,9 +29924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19388,9 +29924,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19388 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },29924 .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ },
19389 } },29925 } },
19390 }, .{29926 }, .{
19391 .src_constraints = .{ .{ .int = .dword }, .any },29927 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19392 .patterns = &.{29928 .patterns = &.{
19393 .{ .src = .{ .mut_mem, .none } },29929 .{ .src = .{ .mut_mem, .none, .none } },
19394 },29930 },
19395 .dst_temps = .{.{ .ref = .src0 }},29931 .dst_temps = .{.{ .ref = .src0 }},
19396 .clobbers = .{ .eflags = true },29932 .clobbers = .{ .eflags = true },
...@@ -19400,9 +29936,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19400,9 +29936,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19400 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },29936 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
19401 } },29937 } },
19402 }, .{29938 }, .{
19403 .src_constraints = .{ .{ .int = .dword }, .any },29939 .src_constraints = .{ .{ .int = .dword }, .any, .any },
19404 .patterns = &.{29940 .patterns = &.{
19405 .{ .src = .{ .to_mut_gpr, .none } },29941 .{ .src = .{ .to_mut_gpr, .none, .none } },
19406 },29942 },
19407 .dst_temps = .{.{ .ref = .src0 }},29943 .dst_temps = .{.{ .ref = .src0 }},
19408 .clobbers = .{ .eflags = true },29944 .clobbers = .{ .eflags = true },
...@@ -19413,10 +29949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19413,10 +29949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19413 } },29949 } },
19414 }, .{29950 }, .{
19415 .required_features = .{ .@"64bit", .cmov, null, null },29951 .required_features = .{ .@"64bit", .cmov, null, null },
19416 .src_constraints = .{ .{ .int = .qword }, .any },29952 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19417 .patterns = &.{29953 .patterns = &.{
19418 .{ .src = .{ .mem, .none } },29954 .{ .src = .{ .mem, .none, .none } },
19419 .{ .src = .{ .to_gpr, .none } },29955 .{ .src = .{ .to_gpr, .none, .none } },
19420 },29956 },
19421 .dst_temps = .{.{ .rc = .general_purpose }},29957 .dst_temps = .{.{ .rc = .general_purpose }},
19422 .clobbers = .{ .eflags = true },29958 .clobbers = .{ .eflags = true },
...@@ -19427,9 +29963,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19427,9 +29963,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19427 } },29963 } },
19428 }, .{29964 }, .{
19429 .required_features = .{ .@"64bit", null, null, null },29965 .required_features = .{ .@"64bit", null, null, null },
19430 .src_constraints = .{ .{ .int = .qword }, .any },29966 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19431 .patterns = &.{29967 .patterns = &.{
19432 .{ .src = .{ .mut_mem, .none } },29968 .{ .src = .{ .mut_mem, .none, .none } },
19433 },29969 },
19434 .dst_temps = .{.{ .ref = .src0 }},29970 .dst_temps = .{.{ .ref = .src0 }},
19435 .clobbers = .{ .eflags = true },29971 .clobbers = .{ .eflags = true },
...@@ -19440,9 +29976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19440,9 +29976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19440 } },29976 } },
19441 }, .{29977 }, .{
19442 .required_features = .{ .@"64bit", null, null, null },29978 .required_features = .{ .@"64bit", null, null, null },
19443 .src_constraints = .{ .{ .int = .qword }, .any },29979 .src_constraints = .{ .{ .int = .qword }, .any, .any },
19444 .patterns = &.{29980 .patterns = &.{
19445 .{ .src = .{ .to_mut_gpr, .none } },29981 .{ .src = .{ .to_mut_gpr, .none, .none } },
19446 },29982 },
19447 .dst_temps = .{.{ .ref = .src0 }},29983 .dst_temps = .{.{ .ref = .src0 }},
19448 .clobbers = .{ .eflags = true },29984 .clobbers = .{ .eflags = true },
...@@ -19453,9 +29989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19453,9 +29989,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19453 } },29989 } },
19454 }, .{29990 }, .{
19455 .required_features = .{ .@"64bit", null, null, null },29991 .required_features = .{ .@"64bit", null, null, null },
19456 .src_constraints = .{ .any_int, .any },29992 .src_constraints = .{ .any_int, .any, .any },
19457 .patterns = &.{29993 .patterns = &.{
19458 .{ .src = .{ .to_mem, .none } },29994 .{ .src = .{ .to_mem, .none, .none } },
19459 },29995 },
19460 .extra_temps = .{29996 .extra_temps = .{
19461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },29997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19486,10 +30022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19486,10 +30022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19486 } },30022 } },
19487 }, .{30023 }, .{
19488 .required_features = .{ .mmx, .ssse3, null, null },30024 .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 },
19490 .patterns = &.{30026 .patterns = &.{
19491 .{ .src = .{ .mem, .none } },30027 .{ .src = .{ .mem, .none, .none } },
19492 .{ .src = .{ .to_mm, .none } },30028 .{ .src = .{ .to_mm, .none, .none } },
19493 },30029 },
19494 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},30030 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19495 .each = .{ .once = &.{30031 .each = .{ .once = &.{
...@@ -19497,10 +30033,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19497,10 +30033,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19497 } },30033 } },
19498 }, .{30034 }, .{
19499 .required_features = .{ .mmx, .ssse3, null, null },30035 .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 },
19501 .patterns = &.{30037 .patterns = &.{
19502 .{ .src = .{ .mem, .none } },30038 .{ .src = .{ .mem, .none, .none } },
19503 .{ .src = .{ .to_mm, .none } },30039 .{ .src = .{ .to_mm, .none, .none } },
19504 },30040 },
19505 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},30041 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19506 .each = .{ .once = &.{30042 .each = .{ .once = &.{
...@@ -19508,10 +30044,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19508,10 +30044,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19508 } },30044 } },
19509 }, .{30045 }, .{
19510 .required_features = .{ .mmx, .ssse3, null, null },30046 .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 },
19512 .patterns = &.{30048 .patterns = &.{
19513 .{ .src = .{ .mem, .none } },30049 .{ .src = .{ .mem, .none, .none } },
19514 .{ .src = .{ .to_mm, .none } },30050 .{ .src = .{ .to_mm, .none, .none } },
19515 },30051 },
19516 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},30052 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }},
19517 .each = .{ .once = &.{30053 .each = .{ .once = &.{
...@@ -19519,10 +30055,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19519,10 +30055,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19519 } },30055 } },
19520 }, .{30056 }, .{
19521 .required_features = .{ .ssse3, null, null, null },30057 .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 },
19523 .patterns = &.{30059 .patterns = &.{
19524 .{ .src = .{ .mem, .none } },30060 .{ .src = .{ .mem, .none, .none } },
19525 .{ .src = .{ .to_sse, .none } },30061 .{ .src = .{ .to_sse, .none, .none } },
19526 },30062 },
19527 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30063 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19528 .each = .{ .once = &.{30064 .each = .{ .once = &.{
...@@ -19530,10 +30066,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19530,10 +30066,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19530 } },30066 } },
19531 }, .{30067 }, .{
19532 .required_features = .{ .ssse3, null, null, null },30068 .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 },
19534 .patterns = &.{30070 .patterns = &.{
19535 .{ .src = .{ .mem, .none } },30071 .{ .src = .{ .mem, .none, .none } },
19536 .{ .src = .{ .to_sse, .none } },30072 .{ .src = .{ .to_sse, .none, .none } },
19537 },30073 },
19538 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30074 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19539 .each = .{ .once = &.{30075 .each = .{ .once = &.{
...@@ -19541,10 +30077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19541,10 +30077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19541 } },30077 } },
19542 }, .{30078 }, .{
19543 .required_features = .{ .ssse3, null, null, null },30079 .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 },
19545 .patterns = &.{30081 .patterns = &.{
19546 .{ .src = .{ .mem, .none } },30082 .{ .src = .{ .mem, .none, .none } },
19547 .{ .src = .{ .to_sse, .none } },30083 .{ .src = .{ .to_sse, .none, .none } },
19548 },30084 },
19549 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30085 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19550 .each = .{ .once = &.{30086 .each = .{ .once = &.{
...@@ -19552,10 +30088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19552,10 +30088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19552 } },30088 } },
19553 }, .{30089 }, .{
19554 .required_features = .{ .avx, null, null, null },30090 .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 },
19556 .patterns = &.{30092 .patterns = &.{
19557 .{ .src = .{ .mem, .none } },30093 .{ .src = .{ .mem, .none, .none } },
19558 .{ .src = .{ .to_sse, .none } },30094 .{ .src = .{ .to_sse, .none, .none } },
19559 },30095 },
19560 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30096 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19561 .each = .{ .once = &.{30097 .each = .{ .once = &.{
...@@ -19563,10 +30099,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19563,10 +30099,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19563 } },30099 } },
19564 }, .{30100 }, .{
19565 .required_features = .{ .avx, null, null, null },30101 .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 },
19567 .patterns = &.{30103 .patterns = &.{
19568 .{ .src = .{ .mem, .none } },30104 .{ .src = .{ .mem, .none, .none } },
19569 .{ .src = .{ .to_sse, .none } },30105 .{ .src = .{ .to_sse, .none, .none } },
19570 },30106 },
19571 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30107 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19572 .each = .{ .once = &.{30108 .each = .{ .once = &.{
...@@ -19574,10 +30110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19574,10 +30110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19574 } },30110 } },
19575 }, .{30111 }, .{
19576 .required_features = .{ .avx, null, null, null },30112 .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 },
19578 .patterns = &.{30114 .patterns = &.{
19579 .{ .src = .{ .mem, .none } },30115 .{ .src = .{ .mem, .none, .none } },
19580 .{ .src = .{ .to_sse, .none } },30116 .{ .src = .{ .to_sse, .none, .none } },
19581 },30117 },
19582 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30118 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19583 .each = .{ .once = &.{30119 .each = .{ .once = &.{
...@@ -19585,10 +30121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19585,10 +30121,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19585 } },30121 } },
19586 }, .{30122 }, .{
19587 .required_features = .{ .avx2, null, null, null },30123 .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 },
19589 .patterns = &.{30125 .patterns = &.{
19590 .{ .src = .{ .mem, .none } },30126 .{ .src = .{ .mem, .none, .none } },
19591 .{ .src = .{ .to_sse, .none } },30127 .{ .src = .{ .to_sse, .none, .none } },
19592 },30128 },
19593 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30129 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19594 .each = .{ .once = &.{30130 .each = .{ .once = &.{
...@@ -19596,10 +30132,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19596,10 +30132,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19596 } },30132 } },
19597 }, .{30133 }, .{
19598 .required_features = .{ .avx2, null, null, null },30134 .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 },
19600 .patterns = &.{30136 .patterns = &.{
19601 .{ .src = .{ .mem, .none } },30137 .{ .src = .{ .mem, .none, .none } },
19602 .{ .src = .{ .to_sse, .none } },30138 .{ .src = .{ .to_sse, .none, .none } },
19603 },30139 },
19604 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30140 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19605 .each = .{ .once = &.{30141 .each = .{ .once = &.{
...@@ -19607,10 +30143,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19607,10 +30143,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19607 } },30143 } },
19608 }, .{30144 }, .{
19609 .required_features = .{ .avx2, null, null, null },30145 .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 },
19611 .patterns = &.{30147 .patterns = &.{
19612 .{ .src = .{ .mem, .none } },30148 .{ .src = .{ .mem, .none, .none } },
19613 .{ .src = .{ .to_sse, .none } },30149 .{ .src = .{ .to_sse, .none, .none } },
19614 },30150 },
19615 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},30151 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19616 .each = .{ .once = &.{30152 .each = .{ .once = &.{
...@@ -19618,9 +30154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19618,9 +30154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19618 } },30154 } },
19619 }, .{30155 }, .{
19620 .required_features = .{ .avx2, null, null, null },30156 .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 },
19622 .patterns = &.{30158 .patterns = &.{
19623 .{ .src = .{ .to_mem, .none } },30159 .{ .src = .{ .to_mem, .none, .none } },
19624 },30160 },
19625 .extra_temps = .{30161 .extra_temps = .{
19626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19644,9 +30180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19644,9 +30180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19644 } },30180 } },
19645 }, .{30181 }, .{
19646 .required_features = .{ .avx2, null, null, null },30182 .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 },
19648 .patterns = &.{30184 .patterns = &.{
19649 .{ .src = .{ .to_mem, .none } },30185 .{ .src = .{ .to_mem, .none, .none } },
19650 },30186 },
19651 .extra_temps = .{30187 .extra_temps = .{
19652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19670,9 +30206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19670,9 +30206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19670 } },30206 } },
19671 }, .{30207 }, .{
19672 .required_features = .{ .avx2, null, null, null },30208 .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 },
19674 .patterns = &.{30210 .patterns = &.{
19675 .{ .src = .{ .to_mem, .none } },30211 .{ .src = .{ .to_mem, .none, .none } },
19676 },30212 },
19677 .extra_temps = .{30213 .extra_temps = .{
19678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19696,9 +30232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19696,9 +30232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19696 } },30232 } },
19697 }, .{30233 }, .{
19698 .required_features = .{ .avx, null, null, null },30234 .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 },
19700 .patterns = &.{30236 .patterns = &.{
19701 .{ .src = .{ .to_mem, .none } },30237 .{ .src = .{ .to_mem, .none, .none } },
19702 },30238 },
19703 .extra_temps = .{30239 .extra_temps = .{
19704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19722,9 +30258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19722,9 +30258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19722 } },30258 } },
19723 }, .{30259 }, .{
19724 .required_features = .{ .avx, null, null, null },30260 .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 },
19726 .patterns = &.{30262 .patterns = &.{
19727 .{ .src = .{ .to_mem, .none } },30263 .{ .src = .{ .to_mem, .none, .none } },
19728 },30264 },
19729 .extra_temps = .{30265 .extra_temps = .{
19730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19748,9 +30284,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19748,9 +30284,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19748 } },30284 } },
19749 }, .{30285 }, .{
19750 .required_features = .{ .avx, null, null, null },30286 .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 },
19752 .patterns = &.{30288 .patterns = &.{
19753 .{ .src = .{ .to_mem, .none } },30289 .{ .src = .{ .to_mem, .none, .none } },
19754 },30290 },
19755 .extra_temps = .{30291 .extra_temps = .{
19756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19774,9 +30310,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19774,9 +30310,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19774 } },30310 } },
19775 }, .{30311 }, .{
19776 .required_features = .{ .ssse3, null, null, null },30312 .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 },
19778 .patterns = &.{30314 .patterns = &.{
19779 .{ .src = .{ .to_mem, .none } },30315 .{ .src = .{ .to_mem, .none, .none } },
19780 },30316 },
19781 .extra_temps = .{30317 .extra_temps = .{
19782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19800,9 +30336,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19800,9 +30336,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19800 } },30336 } },
19801 }, .{30337 }, .{
19802 .required_features = .{ .ssse3, null, null, null },30338 .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 },
19804 .patterns = &.{30340 .patterns = &.{
19805 .{ .src = .{ .to_mem, .none } },30341 .{ .src = .{ .to_mem, .none, .none } },
19806 },30342 },
19807 .extra_temps = .{30343 .extra_temps = .{
19808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19826,9 +30362,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19826,9 +30362,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19826 } },30362 } },
19827 }, .{30363 }, .{
19828 .required_features = .{ .ssse3, null, null, null },30364 .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 },
19830 .patterns = &.{30366 .patterns = &.{
19831 .{ .src = .{ .to_mem, .none } },30367 .{ .src = .{ .to_mem, .none, .none } },
19832 },30368 },
19833 .extra_temps = .{30369 .extra_temps = .{
19834 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19852,9 +30388,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19852,9 +30388,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19852 } },30388 } },
19853 }, .{30389 }, .{
19854 .required_features = .{ .mmx, .ssse3, null, null },30390 .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 },
19856 .patterns = &.{30444 .patterns = &.{
19857 .{ .src = .{ .to_mem, .none } },30445 .{ .src = .{ .to_mem, .none, .none } },
19858 },30446 },
19859 .extra_temps = .{30447 .extra_temps = .{
19860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -19870,21 +30458,498 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19870,21 +30458,498 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19870 .dst_temps = .{.mem},30458 .dst_temps = .{.mem},
19871 .clobbers = .{ .eflags = true },30459 .clobbers = .{ .eflags = true },
19872 .each = .{ .once = &.{30460 .each = .{ .once = &.{
19873 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },30461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
19874 .{ .@"0:", .p_b, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },30462 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
19875 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },30463 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19876 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },30464 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19877 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._, ._ },
19878 } },30943 } },
19879 }, .{30944 }, .{
19880 .required_features = .{ .mmx, .ssse3, null, null },30945 .required_features = .{ .avx, null, null, null },
19881 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },30946 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19882 .patterns = &.{30947 .patterns = &.{
19883 .{ .src = .{ .to_mem, .none } },30948 .{ .src = .{ .to_sse, .none, .none } },
19884 },30949 },
19885 .extra_temps = .{30950 .extra_temps = .{
19886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30951 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19887 .{ .kind = .{ .rc = .sse } },30952 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19888 .unused,30953 .unused,
19889 .unused,30954 .unused,
19890 .unused,30955 .unused,
...@@ -19893,24 +30958,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19893,24 +30958,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19893 .unused,30958 .unused,
19894 .unused,30959 .unused,
19895 },30960 },
19896 .dst_temps = .{.mem},30961 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19897 .clobbers = .{ .eflags = true },
19898 .each = .{ .once = &.{30962 .each = .{ .once = &.{
19899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },30963 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19900 .{ .@"0:", .p_w, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },30964 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
19901 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19902 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19904 } },30965 } },
19905 }, .{30966 }, .{
19906 .required_features = .{ .mmx, .ssse3, null, null },30967 .required_features = .{ .sse2, null, null, null },
19907 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },30968 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19908 .patterns = &.{30969 .patterns = &.{
19909 .{ .src = .{ .to_mem, .none } },30970 .{ .src = .{ .to_mut_sse, .none, .none } },
19910 },30971 },
19911 .extra_temps = .{30972 .extra_temps = .{
19912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30973 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19913 .{ .kind = .{ .rc = .sse } },30974 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19914 .unused,30975 .unused,
19915 .unused,30976 .unused,
19916 .unused,30977 .unused,
...@@ -19919,25 +30980,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19919,25 +30980,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19919 .unused,30980 .unused,
19920 .unused,30981 .unused,
19921 },30982 },
19922 .dst_temps = .{.mem},30983 .dst_temps = .{.{ .ref = .src0 }},
19923 .clobbers = .{ .eflags = true },
19924 .each = .{ .once = &.{30984 .each = .{ .once = &.{
19925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },30985 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19926 .{ .@"0:", .p_d, .abs, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },30986 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
19927 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
19928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
19929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
19930 } },30987 } },
19931 }, .{30988 }, .{
19932 .required_features = .{ .cmov, .slow_incdec, null, null },30989 .required_features = .{ .sse, null, null, null },
19933 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },30990 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
19934 .patterns = &.{30991 .patterns = &.{
19935 .{ .src = .{ .to_mem, .none } },30992 .{ .src = .{ .to_mut_sse, .none, .none } },
19936 },30993 },
19937 .extra_temps = .{30994 .extra_temps = .{
19938 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },30995 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19939 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },30996 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
19940 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },30997 .unused,
19941 .unused,30998 .unused,
19942 .unused,30999 .unused,
19943 .unused,31000 .unused,
...@@ -19945,28 +31002,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19945,28 +31002,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19945 .unused,31002 .unused,
19946 .unused,31003 .unused,
19947 },31004 },
19948 .dst_temps = .{.mem},31005 .dst_temps = .{.{ .ref = .src0 }},
19949 .clobbers = .{ .eflags = true },
19950 .each = .{ .once = &.{31006 .each = .{ .once = &.{
19951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31007 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19952 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },31008 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
19959 } },31009 } },
19960 }, .{31010 }, .{
19961 .required_features = .{ .cmov, null, null, null },31011 .required_features = .{ .avx2, null, null, null },
19962 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },31012 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
19963 .patterns = &.{31013 .patterns = &.{
19964 .{ .src = .{ .to_mem, .none } },31014 .{ .src = .{ .to_sse, .none, .none } },
19965 },31015 },
19966 .extra_temps = .{31016 .extra_temps = .{
19967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31017 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19968 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },31018 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
19969 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },31019 .unused,
19970 .unused,31020 .unused,
19971 .unused,31021 .unused,
19972 .unused,31022 .unused,
...@@ -19974,27 +31024,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19974,27 +31024,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19974 .unused,31024 .unused,
19975 .unused,31025 .unused,
19976 },31026 },
19977 .dst_temps = .{.mem},31027 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
19978 .clobbers = .{ .eflags = true },
19979 .each = .{ .once = &.{31028 .each = .{ .once = &.{
19980 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
19981 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },31030 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
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", ._, ._, ._ },
19988 } },31031 } },
19989 }, .{31032 }, .{
19990 .required_features = .{ .slow_incdec, null, null, null },31033 .required_features = .{ .avx, null, null, null },
19991 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },31034 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
19992 .patterns = &.{31035 .patterns = &.{
19993 .{ .src = .{ .to_mem, .none } },31036 .{ .src = .{ .to_sse, .none, .none } },
19994 },31037 },
19995 .extra_temps = .{31038 .extra_temps = .{
19996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31039 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
19997 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },31040 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
19998 .unused,31041 .unused,
19999 .unused,31042 .unused,
20000 .unused,31043 .unused,
...@@ -20003,28 +31046,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20003,28 +31046,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20003 .unused,31046 .unused,
20004 .unused,31047 .unused,
20005 },31048 },
20006 .dst_temps = .{.mem},31049 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20007 .clobbers = .{ .eflags = true },
20008 .each = .{ .once = &.{31050 .each = .{ .once = &.{
20009 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31051 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20010 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },31052 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
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", ._, ._, ._ },
20017 } },31053 } },
20018 }, .{31054 }, .{
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 },
20020 .patterns = &.{31057 .patterns = &.{
20021 .{ .src = .{ .to_mem, .none } },31058 .{ .src = .{ .to_mem, .none, .none } },
20022 },31059 },
20023 .extra_temps = .{31060 .extra_temps = .{
20024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20025 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },31062 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20026 .unused,31063 .{ .kind = .{ .rc = .sse } },
20027 .unused,31064 .{ .kind = .{ .rc = .sse } },
20028 .unused,31065 .unused,
20029 .unused,31066 .unused,
20030 .unused,31067 .unused,
...@@ -20032,28 +31069,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20032,28 +31069,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20032 .unused,31069 .unused,
20033 },31070 },
20034 .dst_temps = .{.mem},31071 .dst_temps = .{.mem},
20035 .clobbers = .{ .eflags = true },
20036 .each = .{ .once = &.{31072 .each = .{ .once = &.{
31073 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31074 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20037 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31075 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20038 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_size), ._, ._ },31076 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20039 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },31077 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20040 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },31078 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20041 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },31079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20042 .{ .@"1:", ._, .mov, .memia(.dst0b, .tmp0, .add_size), .tmp1b, ._, ._ },
20043 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
20044 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
20045 } },31080 } },
20046 }, .{31081 }, .{
20047 .required_features = .{ .cmov, null, null, null },31082 .required_features = .{ .sse, null, null, null },
20048 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },31083 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
20049 .patterns = &.{31084 .patterns = &.{
20050 .{ .src = .{ .to_mem, .none } },31085 .{ .src = .{ .to_mem, .none, .none } },
20051 },31086 },
20052 .extra_temps = .{31087 .extra_temps = .{
20053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20054 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },31089 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20055 .unused,31090 .{ .kind = .{ .rc = .sse } },
20056 .unused,31091 .{ .kind = .{ .rc = .sse } },
20057 .unused,31092 .unused,
20058 .unused,31093 .unused,
20059 .unused,31094 .unused,
...@@ -20061,26 +31096,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20061,26 +31096,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20061 .unused,31096 .unused,
20062 },31097 },
20063 .dst_temps = .{.mem},31098 .dst_temps = .{.mem},
20064 .clobbers = .{ .eflags = true },
20065 .each = .{ .once = &.{31099 .each = .{ .once = &.{
31100 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31101 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20066 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31102 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20067 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },31103 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20068 .{ ._, ._, .sub, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },31104 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20069 .{ ._, ._s, .cmov, .tmp1w, .memia(.src0w, .tmp0, .add_size), ._, ._ },31105 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },31106 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
20072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31107 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20073 } },31108 } },
20074 }, .{31109 }, .{
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 },
20076 .patterns = &.{31112 .patterns = &.{
20077 .{ .src = .{ .to_mem, .none } },31113 .{ .src = .{ .to_mem, .none, .none } },
20078 },31114 },
20079 .extra_temps = .{31115 .extra_temps = .{
20080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20081 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },31117 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20082 .unused,31118 .{ .kind = .{ .rc = .sse } },
20083 .unused,31119 .{ .kind = .{ .rc = .sse } },
20084 .unused,31120 .unused,
20085 .unused,31121 .unused,
20086 .unused,31122 .unused,
...@@ -20088,28 +31124,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20088,28 +31124,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20088 .unused,31124 .unused,
20089 },31125 },
20090 .dst_temps = .{.mem},31126 .dst_temps = .{.mem},
20091 .clobbers = .{ .eflags = true },
20092 .each = .{ .once = &.{31127 .each = .{ .once = &.{
31128 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31129 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31130 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20094 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },31131 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20095 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },31132 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20096 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },31133 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20097 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20098 .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
20099 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
20100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20101 } },31135 } },
20102 }, .{31136 }, .{
20103 .required_features = .{ .cmov, null, null, null },31137 .required_features = .{ .sse2, null, null, null },
20104 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },31138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
20105 .patterns = &.{31139 .patterns = &.{
20106 .{ .src = .{ .to_mem, .none } },31140 .{ .src = .{ .to_mem, .none, .none } },
20107 },31141 },
20108 .extra_temps = .{31142 .extra_temps = .{
20109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20110 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },31144 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20111 .unused,31145 .{ .kind = .{ .rc = .sse } },
20112 .unused,31146 .{ .kind = .{ .rc = .sse } },
20113 .unused,31147 .unused,
20114 .unused,31148 .unused,
20115 .unused,31149 .unused,
...@@ -20117,26 +31151,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20117,26 +31151,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20117 .unused,31151 .unused,
20118 },31152 },
20119 .dst_temps = .{.mem},31153 .dst_temps = .{.mem},
20120 .clobbers = .{ .eflags = true },
20121 .each = .{ .once = &.{31154 .each = .{ .once = &.{
31155 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31156 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20122 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20123 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },31158 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20124 .{ ._, ._, .sub, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },31159 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20125 .{ ._, ._s, .cmov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },31160 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20126 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },31161 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20127 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
20128 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31162 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20129 } },31163 } },
20130 }, .{31164 }, .{
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 },
20132 .patterns = &.{31167 .patterns = &.{
20133 .{ .src = .{ .to_mem, .none } },31168 .{ .src = .{ .to_mem, .none, .none } },
20134 },31169 },
20135 .extra_temps = .{31170 .extra_temps = .{
20136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20137 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },31172 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20138 .unused,31173 .{ .kind = .{ .rc = .sse } },
20139 .unused,31174 .{ .kind = .{ .rc = .sse } },
20140 .unused,31175 .unused,
20141 .unused,31176 .unused,
20142 .unused,31177 .unused,
...@@ -20144,28 +31179,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20144,28 +31179,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20144 .unused,31179 .unused,
20145 },31180 },
20146 .dst_temps = .{.mem},31181 .dst_temps = .{.mem},
20147 .clobbers = .{ .eflags = true },
20148 .each = .{ .once = &.{31182 .each = .{ .once = &.{
31183 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31184 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
20149 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20150 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_size), ._, ._ },31186 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20151 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },31187 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20152 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },31188 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20153 .{ ._, ._, .neg, .tmp1d, ._, ._, ._ },
20154 .{ .@"1:", ._, .mov, .memia(.dst0d, .tmp0, .add_size), .tmp1d, ._, ._ },
20155 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
20156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20157 } },31190 } },
20158 }, .{31191 }, .{
20159 .required_features = .{ .@"64bit", .cmov, null, null },31192 .required_features = .{ .avx, null, null, null },
20160 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },31193 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },
20161 .patterns = &.{31194 .patterns = &.{
20162 .{ .src = .{ .to_mem, .none } },31195 .{ .src = .{ .to_mem, .none, .none } },
20163 },31196 },
20164 .extra_temps = .{31197 .extra_temps = .{
20165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20166 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },31199 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20167 .unused,31200 .{ .kind = .{ .rc = .sse } },
20168 .unused,31201 .{ .kind = .{ .rc = .sse } },
20169 .unused,31202 .unused,
20170 .unused,31203 .unused,
20171 .unused,31204 .unused,
...@@ -20173,27 +31206,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20173,27 +31206,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20173 .unused,31206 .unused,
20174 },31207 },
20175 .dst_temps = .{.mem},31208 .dst_temps = .{.mem},
20176 .clobbers = .{ .eflags = true },
20177 .each = .{ .once = &.{31209 .each = .{ .once = &.{
31210 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31211 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20178 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31212 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20179 .{ .@"0:", ._, .xor, .tmp1d, .tmp1d, ._, ._ },31213 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20180 .{ ._, ._, .sub, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },31214 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20181 .{ ._, ._s, .cmov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },31215 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20182 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20183 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
20184 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20185 } },31217 } },
20186 }, .{31218 }, .{
20187 .required_features = .{ .@"64bit", null, null, null },31219 .required_features = .{ .sse2, null, null, null },
20188 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },31220 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20189 .patterns = &.{31221 .patterns = &.{
20190 .{ .src = .{ .to_mem, .none } },31222 .{ .src = .{ .to_mem, .none, .none } },
20191 },31223 },
20192 .extra_temps = .{31224 .extra_temps = .{
20193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20194 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },31226 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20195 .unused,31227 .{ .kind = .{ .rc = .sse } },
20196 .unused,31228 .{ .kind = .{ .rc = .sse } },
20197 .unused,31229 .unused,
20198 .unused,31230 .unused,
20199 .unused,31231 .unused,
...@@ -20201,63 +31233,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20201,63 +31233,1137 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20201 .unused,31233 .unused,
20202 },31234 },
20203 .dst_temps = .{.mem},31235 .dst_temps = .{.mem},
20204 .clobbers = .{ .eflags = true },
20205 .each = .{ .once = &.{31236 .each = .{ .once = &.{
31237 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31238 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
20206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },31239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20207 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ },31240 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20208 .{ ._, ._, .@"test", .tmp1q, .tmp1q, ._, ._ },31241 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20209 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },31242 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20210 .{ ._, ._, .neg, .tmp1q, ._, ._, ._ },31243 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20211 .{ .@"1:", ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
20212 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
20213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },31244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20214 } },31245 } },
20215 }, .{31246 }, .{
20216 .required_features = .{ .@"64bit", null, null, null },31247 .required_features = .{ .sse, null, null, null },
20217 .src_constraints = .{ .any_scalar_int, .any },31248 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },
20218 .patterns = &.{31249 .patterns = &.{
20219 .{ .src = .{ .to_mem, .none } },31250 .{ .src = .{ .to_mem, .none, .none } },
20220 },31251 },
20221 .extra_temps = .{31252 .extra_temps = .{
20222 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },31253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20224 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },31254 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20225 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },31255 .{ .kind = .{ .rc = .sse } },
20226 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },31256 .{ .kind = .{ .rc = .sse } },
31257 .unused,
20227 .unused,31258 .unused,
20228 .unused,31259 .unused,
20229 .unused,31260 .unused,
20230 .unused,31261 .unused,
20231 },31262 },
20232 .dst_temps = .{.mem},31263 .dst_temps = .{.mem},
20233 .clobbers = .{ .eflags = true },
20234 .each = .{ .once = &.{31264 .each = .{ .once = &.{
20235 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },31265 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20236 .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size), ._, ._ },31266 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20237 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_src0_elem_size, -8), ._, ._ },31267 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20238 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },31268 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20239 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },31269 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20240 .{ .@"1:", ._, .mov, .tmp4q, .memi(.src0q, .tmp0), ._, ._ },31270 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20241 .{ ._, ._, .xor, .tmp4q, .tmp2q, ._, ._ },31271 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20242 .{ ._, ._r, .sh, .tmp3b, .ui(1), ._, ._ },31272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20243 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },31273 } },
20244 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },31274 } }) catch |err| switch (err) {
20245 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },31275 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
20246 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },31276 @tagName(air_tag),
20247 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },31277 cg.typeOf(ty_op.operand).fmt(pt),
20248 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },31278 ops[0].tracking(cg),
20249 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },31279 }),
20250 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },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 } },
20251 } },32343 } },
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 &.{ .{
20253 .required_features = .{ .avx, null, null, null },32359 .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 },
20255 .patterns = &.{32361 .patterns = &.{
20256 .{ .src = .{ .to_sse, .none } },32362 .{ .src = .{ .to_sse, .none, .none } },
20257 },32363 },
20258 .extra_temps = .{32364 .extra_temps = .{
20259 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32365 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20260 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32366 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20261 .unused,32367 .unused,
20262 .unused,32368 .unused,
20263 .unused,32369 .unused,
...@@ -20269,17 +32375,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20269,17 +32375,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20269 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32375 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20270 .each = .{ .once = &.{32376 .each = .{ .once = &.{
20271 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32377 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20272 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },32378 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20273 } },32379 } },
20274 }, .{32380 }, .{
20275 .required_features = .{ .sse, null, null, null },32381 .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 },
20277 .patterns = &.{32383 .patterns = &.{
20278 .{ .src = .{ .to_mut_sse, .none } },32384 .{ .src = .{ .to_mut_sse, .none, .none } },
20279 },32385 },
20280 .extra_temps = .{32386 .extra_temps = .{
20281 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20282 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32388 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20283 .unused,32389 .unused,
20284 .unused,32390 .unused,
20285 .unused,32391 .unused,
...@@ -20291,17 +32397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20291,17 +32397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20291 .dst_temps = .{.{ .ref = .src0 }},32397 .dst_temps = .{.{ .ref = .src0 }},
20292 .each = .{ .once = &.{32398 .each = .{ .once = &.{
20293 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32399 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20294 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },32400 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20295 } },32401 } },
20296 }, .{32402 }, .{
20297 .required_features = .{ .avx, null, null, null },32403 .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 },
20299 .patterns = &.{32405 .patterns = &.{
20300 .{ .src = .{ .to_sse, .none } },32406 .{ .src = .{ .to_sse, .none, .none } },
20301 },32407 },
20302 .extra_temps = .{32408 .extra_temps = .{
20303 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32409 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20304 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32410 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20305 .unused,32411 .unused,
20306 .unused,32412 .unused,
20307 .unused,32413 .unused,
...@@ -20313,17 +32419,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20313,17 +32419,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20313 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32419 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20314 .each = .{ .once = &.{32420 .each = .{ .once = &.{
20315 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32421 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20316 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },32422 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20317 } },32423 } },
20318 }, .{32424 }, .{
20319 .required_features = .{ .avx, null, null, null },32425 .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 },
20321 .patterns = &.{32427 .patterns = &.{
20322 .{ .src = .{ .to_sse, .none } },32428 .{ .src = .{ .to_sse, .none, .none } },
20323 },32429 },
20324 .extra_temps = .{32430 .extra_temps = .{
20325 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32431 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20326 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32432 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20327 .unused,32433 .unused,
20328 .unused,32434 .unused,
20329 .unused,32435 .unused,
...@@ -20335,17 +32441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20335,17 +32441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20335 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32441 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20336 .each = .{ .once = &.{32442 .each = .{ .once = &.{
20337 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32443 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20338 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },32444 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20339 } },32445 } },
20340 }, .{32446 }, .{
20341 .required_features = .{ .sse2, null, null, null },32447 .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 },
20343 .patterns = &.{32449 .patterns = &.{
20344 .{ .src = .{ .to_mut_sse, .none } },32450 .{ .src = .{ .to_mut_sse, .none, .none } },
20345 },32451 },
20346 .extra_temps = .{32452 .extra_temps = .{
20347 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32453 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20348 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32454 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20349 .unused,32455 .unused,
20350 .unused,32456 .unused,
20351 .unused,32457 .unused,
...@@ -20357,17 +32463,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20357,17 +32463,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20357 .dst_temps = .{.{ .ref = .src0 }},32463 .dst_temps = .{.{ .ref = .src0 }},
20358 .each = .{ .once = &.{32464 .each = .{ .once = &.{
20359 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32465 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20360 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },32466 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20361 } },32467 } },
20362 }, .{32468 }, .{
20363 .required_features = .{ .avx, null, null, null },32469 .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 },
20365 .patterns = &.{32471 .patterns = &.{
20366 .{ .src = .{ .to_sse, .none } },32472 .{ .src = .{ .to_sse, .none, .none } },
20367 },32473 },
20368 .extra_temps = .{32474 .extra_temps = .{
20369 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32475 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20370 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32476 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20371 .unused,32477 .unused,
20372 .unused,32478 .unused,
20373 .unused,32479 .unused,
...@@ -20379,14 +32485,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20379,14 +32485,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20379 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32485 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20380 .each = .{ .once = &.{32486 .each = .{ .once = &.{
20381 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32487 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20382 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },32488 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20383 } },32489 } },
20384 }, .{32490 }, .{
20385 .required_features = .{ .x87, null, null, null },32491 .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 },
20387 .patterns = &.{32493 .patterns = &.{
20388 .{ .src = .{ .mem, .none } },32494 .{ .src = .{ .mem, .none, .none } },
20389 .{ .src = .{ .to_x87, .none } },32495 .{ .src = .{ .to_x87, .none, .none } },
20390 },32496 },
20391 .extra_temps = .{32497 .extra_temps = .{
20392 .{ .type = .f80, .kind = .{ .reg = .st7 } },32498 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -20402,18 +32508,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20402,18 +32508,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20402 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},32508 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }},
20403 .each = .{ .once = &.{32509 .each = .{ .once = &.{
20404 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },32510 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
20405 .{ ._, .f_, .abs, ._, ._, ._, ._ },32511 .{ ._, .f_, .chs, ._, ._, ._, ._ },
20406 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },32512 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
20407 } },32513 } },
20408 }, .{32514 }, .{
20409 .required_features = .{ .avx, null, null, null },32515 .required_features = .{ .avx, null, null, null },
20410 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },32516 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20411 .patterns = &.{32517 .patterns = &.{
20412 .{ .src = .{ .to_sse, .none } },32518 .{ .src = .{ .to_sse, .none, .none } },
20413 },32519 },
20414 .extra_temps = .{32520 .extra_temps = .{
20415 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32521 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20416 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32522 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20417 .unused,32523 .unused,
20418 .unused,32524 .unused,
20419 .unused,32525 .unused,
...@@ -20425,17 +32531,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20425,17 +32531,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20425 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20426 .each = .{ .once = &.{32532 .each = .{ .once = &.{
20427 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32533 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20428 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },32534 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
20429 } },32535 } },
20430 }, .{32536 }, .{
20431 .required_features = .{ .sse2, null, null, null },32537 .required_features = .{ .sse2, null, null, null },
20432 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },32538 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20433 .patterns = &.{32539 .patterns = &.{
20434 .{ .src = .{ .to_mut_sse, .none } },32540 .{ .src = .{ .to_mut_sse, .none, .none } },
20435 },32541 },
20436 .extra_temps = .{32542 .extra_temps = .{
20437 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32543 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20438 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32544 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20439 .unused,32545 .unused,
20440 .unused,32546 .unused,
20441 .unused,32547 .unused,
...@@ -20447,17 +32553,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20447,17 +32553,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20447 .dst_temps = .{.{ .ref = .src0 }},32553 .dst_temps = .{.{ .ref = .src0 }},
20448 .each = .{ .once = &.{32554 .each = .{ .once = &.{
20449 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32555 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20450 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },32556 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20451 } },32557 } },
20452 }, .{32558 }, .{
20453 .required_features = .{ .sse, null, null, null },32559 .required_features = .{ .sse, null, null, null },
20454 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any },32560 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },
20455 .patterns = &.{32561 .patterns = &.{
20456 .{ .src = .{ .to_mut_sse, .none } },32562 .{ .src = .{ .to_mut_sse, .none, .none } },
20457 },32563 },
20458 .extra_temps = .{32564 .extra_temps = .{
20459 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32565 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20460 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32566 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20461 .unused,32567 .unused,
20462 .unused,32568 .unused,
20463 .unused,32569 .unused,
...@@ -20469,17 +32575,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20469,17 +32575,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20469 .dst_temps = .{.{ .ref = .src0 }},32575 .dst_temps = .{.{ .ref = .src0 }},
20470 .each = .{ .once = &.{32576 .each = .{ .once = &.{
20471 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32577 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20472 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },32578 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
20473 } },32579 } },
20474 }, .{32580 }, .{
20475 .required_features = .{ .avx2, null, null, null },32581 .required_features = .{ .avx2, null, null, null },
20476 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },32582 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
20477 .patterns = &.{32583 .patterns = &.{
20478 .{ .src = .{ .to_sse, .none } },32584 .{ .src = .{ .to_sse, .none, .none } },
20479 },32585 },
20480 .extra_temps = .{32586 .extra_temps = .{
20481 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32587 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20482 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32588 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20483 .unused,32589 .unused,
20484 .unused,32590 .unused,
20485 .unused,32591 .unused,
...@@ -20491,17 +32597,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20491,17 +32597,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20491 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32597 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20492 .each = .{ .once = &.{32598 .each = .{ .once = &.{
20493 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32599 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20494 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },32600 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20495 } },32601 } },
20496 }, .{32602 }, .{
20497 .required_features = .{ .avx, null, null, null },32603 .required_features = .{ .avx, null, null, null },
20498 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any },32604 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },
20499 .patterns = &.{32605 .patterns = &.{
20500 .{ .src = .{ .to_sse, .none } },32606 .{ .src = .{ .to_sse, .none, .none } },
20501 },32607 },
20502 .extra_temps = .{32608 .extra_temps = .{
20503 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },32609 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
20504 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32610 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20505 .unused,32611 .unused,
20506 .unused,32612 .unused,
20507 .unused,32613 .unused,
...@@ -20513,17 +32619,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20513,17 +32619,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20513 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},32619 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20514 .each = .{ .once = &.{32620 .each = .{ .once = &.{
20515 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32621 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20516 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },32622 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
20517 } },32623 } },
20518 }, .{32624 }, .{
20519 .required_features = .{ .avx, null, null, null },32625 .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 },
20521 .patterns = &.{32627 .patterns = &.{
20522 .{ .src = .{ .to_mem, .none } },32628 .{ .src = .{ .to_mem, .none, .none } },
20523 },32629 },
20524 .extra_temps = .{32630 .extra_temps = .{
20525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32631 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20526 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32632 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20527 .{ .kind = .{ .rc = .sse } },32633 .{ .kind = .{ .rc = .sse } },
20528 .{ .kind = .{ .rc = .sse } },32634 .{ .kind = .{ .rc = .sse } },
20529 .unused,32635 .unused,
...@@ -20537,20 +32643,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20537,20 +32643,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20537 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20538 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },32644 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32645 .{ ._, ._, .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), ._ },
20541 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },32647 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20542 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },32648 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20543 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20544 } },32650 } },
20545 }, .{32651 }, .{
20546 .required_features = .{ .sse, null, null, null },32652 .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 },
20548 .patterns = &.{32654 .patterns = &.{
20549 .{ .src = .{ .to_mem, .none } },32655 .{ .src = .{ .to_mem, .none, .none } },
20550 },32656 },
20551 .extra_temps = .{32657 .extra_temps = .{
20552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20553 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32659 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20554 .{ .kind = .{ .rc = .sse } },32660 .{ .kind = .{ .rc = .sse } },
20555 .{ .kind = .{ .rc = .sse } },32661 .{ .kind = .{ .rc = .sse } },
20556 .unused,32662 .unused,
...@@ -20565,20 +32671,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20565,20 +32671,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20565 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },32671 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32672 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20567 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },32673 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20568 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32674 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20569 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },32675 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20570 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },32676 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20572 } },32678 } },
20573 }, .{32679 }, .{
20574 .required_features = .{ .avx, null, null, null },32680 .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 },
20576 .patterns = &.{32682 .patterns = &.{
20577 .{ .src = .{ .to_mem, .none } },32683 .{ .src = .{ .to_mem, .none, .none } },
20578 },32684 },
20579 .extra_temps = .{32685 .extra_temps = .{
20580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20581 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32687 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20582 .{ .kind = .{ .rc = .sse } },32688 .{ .kind = .{ .rc = .sse } },
20583 .{ .kind = .{ .rc = .sse } },32689 .{ .kind = .{ .rc = .sse } },
20584 .unused,32690 .unused,
...@@ -20592,20 +32698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20592,20 +32698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20592 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32698 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20593 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },32699 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32700 .{ ._, ._, .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), ._ },
20596 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },32702 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20597 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },32703 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20598 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20599 } },32705 } },
20600 }, .{32706 }, .{
20601 .required_features = .{ .sse2, null, null, null },32707 .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 },
20603 .patterns = &.{32709 .patterns = &.{
20604 .{ .src = .{ .to_mem, .none } },32710 .{ .src = .{ .to_mem, .none, .none } },
20605 },32711 },
20606 .extra_temps = .{32712 .extra_temps = .{
20607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20608 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32714 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20609 .{ .kind = .{ .rc = .sse } },32715 .{ .kind = .{ .rc = .sse } },
20610 .{ .kind = .{ .rc = .sse } },32716 .{ .kind = .{ .rc = .sse } },
20611 .unused,32717 .unused,
...@@ -20620,20 +32726,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20620,20 +32726,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20620 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },32726 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20621 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32727 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20622 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },32728 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20623 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32729 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20624 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },32730 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20625 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },32731 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20626 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20627 } },32733 } },
20628 }, .{32734 }, .{
20629 .required_features = .{ .avx2, null, null, null },32735 .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 },
20631 .patterns = &.{32737 .patterns = &.{
20632 .{ .src = .{ .to_mem, .none } },32738 .{ .src = .{ .to_mem, .none, .none } },
20633 },32739 },
20634 .extra_temps = .{32740 .extra_temps = .{
20635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20636 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32742 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20637 .{ .kind = .{ .rc = .sse } },32743 .{ .kind = .{ .rc = .sse } },
20638 .{ .kind = .{ .rc = .sse } },32744 .{ .kind = .{ .rc = .sse } },
20639 .unused,32745 .unused,
...@@ -20647,20 +32753,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20647,20 +32753,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20647 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32753 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20648 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },32754 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
20649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32755 .{ ._, ._, .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), ._ },
20651 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },32757 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20652 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },32758 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32759 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20654 } },32760 } },
20655 }, .{32761 }, .{
20656 .required_features = .{ .avx, null, null, null },32762 .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 },
20658 .patterns = &.{32764 .patterns = &.{
20659 .{ .src = .{ .to_mem, .none } },32765 .{ .src = .{ .to_mem, .none, .none } },
20660 },32766 },
20661 .extra_temps = .{32767 .extra_temps = .{
20662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20663 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } },32769 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },
20664 .{ .kind = .{ .rc = .sse } },32770 .{ .kind = .{ .rc = .sse } },
20665 .{ .kind = .{ .rc = .sse } },32771 .{ .kind = .{ .rc = .sse } },
20666 .unused,32772 .unused,
...@@ -20674,20 +32780,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20674,20 +32780,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20674 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },32780 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20675 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },32781 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32782 .{ ._, ._, .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), ._ },
20678 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },32784 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
20679 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },32785 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
20680 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32786 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20681 } },32787 } },
20682 }, .{32788 }, .{
20683 .required_features = .{ .sse2, null, null, null },32789 .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 },
20685 .patterns = &.{32791 .patterns = &.{
20686 .{ .src = .{ .to_mem, .none } },32792 .{ .src = .{ .to_mem, .none, .none } },
20687 },32793 },
20688 .extra_temps = .{32794 .extra_temps = .{
20689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32795 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20690 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32796 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20691 .{ .kind = .{ .rc = .sse } },32797 .{ .kind = .{ .rc = .sse } },
20692 .{ .kind = .{ .rc = .sse } },32798 .{ .kind = .{ .rc = .sse } },
20693 .unused,32799 .unused,
...@@ -20702,20 +32808,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20702,20 +32808,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20702 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },32808 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
20703 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20704 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },32810 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20705 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32811 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20706 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },32812 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },32813 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
20709 } },32815 } },
20710 }, .{32816 }, .{
20711 .required_features = .{ .sse, null, null, null },32817 .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 },
20713 .patterns = &.{32819 .patterns = &.{
20714 .{ .src = .{ .to_mem, .none } },32820 .{ .src = .{ .to_mem, .none, .none } },
20715 },32821 },
20716 .extra_temps = .{32822 .extra_temps = .{
20717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
20718 .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } },32824 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },
20719 .{ .kind = .{ .rc = .sse } },32825 .{ .kind = .{ .rc = .sse } },
20720 .{ .kind = .{ .rc = .sse } },32826 .{ .kind = .{ .rc = .sse } },
20721 .unused,32827 .unused,
...@@ -20730,7 +32836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20730,7 +32836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20730 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },32836 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },32837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20732 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },32838 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20733 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },32839 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
20734 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },32840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
20735 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },32841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
20736 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },32842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
...@@ -20738,12 +32844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20738,12 +32844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20738 } }) catch |err| switch (err) {32844 } }) catch |err| switch (err) {
20739 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{32845 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
20740 @tagName(air_tag),32846 @tagName(air_tag),
20741 cg.typeOf(ty_op.operand).fmt(pt),32847 cg.typeOf(un_op).fmt(pt),
20742 ops[0].tracking(cg),32848 ops[0].tracking(cg),
20743 }),32849 }),
20744 else => |e| return e,32850 else => |e| return e,
20745 };32851 };
20746 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);32852 try res[0].finish(inst, &.{un_op}, &ops, cg);
20747 },32853 },
2074832854
20749 .cmp_lt,32855 .cmp_lt,
...@@ -20772,9 +32878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20772,9 +32878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20772 }) {32878 }) {
20773 inline false, true => |strict| comptime &.{ .{32879 inline false, true => |strict| comptime &.{ .{
20774 .required_features = .{ .f16c, null, null, null },32880 .required_features = .{ .f16c, null, null, null },
20775 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },32881 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
20776 .patterns = &.{32882 .patterns = &.{
20777 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },32883 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20778 },32884 },
20779 .extra_temps = .{32885 .extra_temps = .{
20780 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },32886 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
...@@ -20799,9 +32905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20799,9 +32905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20799 } },32905 } },
20800 }, .{32906 }, .{
20801 .required_features = .{ .sse, null, null, null },32907 .required_features = .{ .sse, null, null, null },
20802 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },32908 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
20803 .patterns = &.{32909 .patterns = &.{
20804 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },32910 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
20805 },32911 },
20806 .call_frame = .{ .alignment = .@"16" },32912 .call_frame = .{ .alignment = .@"16" },
20807 .extra_temps = .{32913 .extra_temps = .{
...@@ -20826,10 +32932,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20826,10 +32932,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20826 } },32932 } },
20827 }, .{32933 }, .{
20828 .required_features = .{ .avx, null, null, null },32934 .required_features = .{ .avx, null, null, null },
20829 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },32935 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
20830 .patterns = &.{32936 .patterns = &.{
20831 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },32937 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20832 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },32938 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20833 },32939 },
20834 .dst_temps = .{.{ .cc = switch (strict) {32940 .dst_temps = .{.{ .cc = switch (strict) {
20835 true => .a,32941 true => .a,
...@@ -20841,10 +32947,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20841,10 +32947,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20841 } },32947 } },
20842 }, .{32948 }, .{
20843 .required_features = .{ .sse, null, null, null },32949 .required_features = .{ .sse, null, null, null },
20844 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },32950 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
20845 .patterns = &.{32951 .patterns = &.{
20846 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },32952 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20847 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },32953 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20848 },32954 },
20849 .dst_temps = .{.{ .cc = switch (strict) {32955 .dst_temps = .{.{ .cc = switch (strict) {
20850 true => .a,32956 true => .a,
...@@ -20856,10 +32962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20856,10 +32962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20856 } },32962 } },
20857 }, .{32963 }, .{
20858 .required_features = .{ .avx, null, null, null },32964 .required_features = .{ .avx, null, null, null },
20859 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },32965 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20860 .patterns = &.{32966 .patterns = &.{
20861 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },32967 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20862 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },32968 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20863 },32969 },
20864 .dst_temps = .{.{ .cc = switch (strict) {32970 .dst_temps = .{.{ .cc = switch (strict) {
20865 true => .a,32971 true => .a,
...@@ -20871,10 +32977,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20871,10 +32977,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20871 } },32977 } },
20872 }, .{32978 }, .{
20873 .required_features = .{ .sse2, null, null, null },32979 .required_features = .{ .sse2, null, null, null },
20874 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },32980 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20875 .patterns = &.{32981 .patterns = &.{
20876 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },32982 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
20877 .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } },32983 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
20878 },32984 },
20879 .dst_temps = .{.{ .cc = switch (strict) {32985 .dst_temps = .{.{ .cc = switch (strict) {
20880 true => .a,32986 true => .a,
...@@ -20886,13 +32992,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20886,13 +32992,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20886 } },32992 } },
20887 }, .{32993 }, .{
20888 .required_features = .{ .x87, .cmov, null, null },32994 .required_features = .{ .x87, .cmov, null, null },
20889 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },32995 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20890 .patterns = &.{32996 .patterns = &.{
20891 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },32997 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20892 },32998 },
20893 .extra_temps = .{32999 .extra_temps = .{
20894 .{ .type = .f80, .kind = .{ .reg = .st6 } },33000 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20895 .{ .type = .f80, .kind = .{ .reg = .st7 } },33001 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20896 .unused,33002 .unused,
20897 .unused,33003 .unused,
20898 .unused,33004 .unused,
...@@ -20914,13 +33020,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20914,13 +33020,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20914 } },33020 } },
20915 }, .{33021 }, .{
20916 .required_features = .{ .sahf, .x87, null, null },33022 .required_features = .{ .sahf, .x87, null, null },
20917 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33023 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20918 .patterns = &.{33024 .patterns = &.{
20919 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },33025 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20920 },33026 },
20921 .extra_temps = .{33027 .extra_temps = .{
20922 .{ .type = .f80, .kind = .{ .reg = .st6 } },33028 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20923 .{ .type = .f80, .kind = .{ .reg = .st7 } },33029 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20924 .{ .type = .u8, .kind = .{ .reg = .ah } },33030 .{ .type = .u8, .kind = .{ .reg = .ah } },
20925 .unused,33031 .unused,
20926 .unused,33032 .unused,
...@@ -20943,13 +33049,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20943,13 +33049,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20943 } },33049 } },
20944 }, .{33050 }, .{
20945 .required_features = .{ .x87, null, null, null },33051 .required_features = .{ .x87, null, null, null },
20946 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33052 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
20947 .patterns = &.{33053 .patterns = &.{
20948 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },33054 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
20949 },33055 },
20950 .extra_temps = .{33056 .extra_temps = .{
20951 .{ .type = .f80, .kind = .{ .reg = .st6 } },33057 .{ .type = .f64, .kind = .{ .reg = .st6 } },
20952 .{ .type = .f80, .kind = .{ .reg = .st7 } },33058 .{ .type = .f64, .kind = .{ .reg = .st7 } },
20953 .{ .type = .u8, .kind = .{ .reg = .ah } },33059 .{ .type = .u8, .kind = .{ .reg = .ah } },
20954 .unused,33060 .unused,
20955 .unused,33061 .unused,
...@@ -20975,10 +33081,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20975,10 +33081,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20975 } },33081 } },
20976 }, .{33082 }, .{
20977 .required_features = .{ .x87, .cmov, null, null },33083 .required_features = .{ .x87, .cmov, null, null },
20978 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33084 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
20979 .patterns = &.{33085 .patterns = &.{
20980 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33086 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
20981 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },33087 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
20982 },33088 },
20983 .extra_temps = .{33089 .extra_temps = .{
20984 .{ .type = .f80, .kind = .{ .reg = .st7 } },33090 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -21002,9 +33108,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21002,9 +33108,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21002 } },33108 } },
21003 }, .{33109 }, .{
21004 .required_features = .{ .sahf, .x87, null, null },33110 .required_features = .{ .sahf, .x87, null, null },
21005 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33111 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21006 .patterns = &.{33112 .patterns = &.{
21007 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },33113 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
21008 },33114 },
21009 .extra_temps = .{33115 .extra_temps = .{
21010 .{ .type = .f80, .kind = .{ .reg = .st6 } },33116 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21031,10 +33137,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21031,10 +33137,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21031 } },33137 } },
21032 }, .{33138 }, .{
21033 .required_features = .{ .sahf, .x87, null, null },33139 .required_features = .{ .sahf, .x87, null, null },
21034 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33140 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21035 .patterns = &.{33141 .patterns = &.{
21036 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33142 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21037 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },33143 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
21038 },33144 },
21039 .extra_temps = .{33145 .extra_temps = .{
21040 .{ .type = .f80, .kind = .{ .reg = .st6 } },33146 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21060,9 +33166,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21060,9 +33166,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21060 } },33166 } },
21061 }, .{33167 }, .{
21062 .required_features = .{ .x87, null, null, null },33168 .required_features = .{ .x87, null, null, null },
21063 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33169 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21064 .patterns = &.{33170 .patterns = &.{
21065 .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } },33171 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },
21066 },33172 },
21067 .extra_temps = .{33173 .extra_temps = .{
21068 .{ .type = .f80, .kind = .{ .reg = .st6 } },33174 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21092,10 +33198,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21092,10 +33198,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21092 } },33198 } },
21093 }, .{33199 }, .{
21094 .required_features = .{ .x87, null, null, null },33200 .required_features = .{ .x87, null, null, null },
21095 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33201 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21096 .patterns = &.{33202 .patterns = &.{
21097 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33203 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21098 .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } },33204 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
21099 },33205 },
21100 .extra_temps = .{33206 .extra_temps = .{
21101 .{ .type = .f80, .kind = .{ .reg = .st6 } },33207 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21124,9 +33230,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21124,9 +33230,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21124 } },33230 } },
21125 }, .{33231 }, .{
21126 .required_features = .{ .sse, null, null, null },33232 .required_features = .{ .sse, null, null, null },
21127 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },33233 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
21128 .patterns = &.{33234 .patterns = &.{
21129 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },33235 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21130 },33236 },
21131 .call_frame = .{ .alignment = .@"16" },33237 .call_frame = .{ .alignment = .@"16" },
21132 .extra_temps = .{33238 .extra_temps = .{
...@@ -21204,15 +33310,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21204,15 +33310,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21204 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {33310 switch (Condition.fromCompareOperatorUnsigned(cmp_op)) {
21205 else => unreachable,33311 else => unreachable,
21206 inline .e, .ne => |cc| comptime &.{.{33312 inline .e, .ne => |cc| comptime &.{.{
21207 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } },33313 .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any },
21208 .patterns = &.{33314 .patterns = &.{
21209 .{ .src = .{ .mem, .imm8 } },33315 .{ .src = .{ .mem, .imm8, .none } },
21210 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },33316 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
21211 .{ .src = .{ .to_gpr, .imm8 } },33317 .{ .src = .{ .to_gpr, .imm8, .none } },
21212 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },33318 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
21213 .{ .src = .{ .mem, .to_gpr } },33319 .{ .src = .{ .mem, .to_gpr, .none } },
21214 .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } },33320 .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } },
21215 .{ .src = .{ .to_gpr, .to_gpr } },33321 .{ .src = .{ .to_gpr, .to_gpr, .none } },
21216 },33322 },
21217 .dst_temps = .{.{ .rc = .general_purpose }},33323 .dst_temps = .{.{ .rc = .general_purpose }},
21218 .clobbers = .{ .eflags = true },33324 .clobbers = .{ .eflags = true },
...@@ -21254,9 +33360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21254,9 +33360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21254 }) {33360 }) {
21255 inline false, true => |optimized| comptime &.{ .{33361 inline false, true => |optimized| comptime &.{ .{
21256 .required_features = .{ .f16c, null, null, null },33362 .required_features = .{ .f16c, null, null, null },
21257 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },33363 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
21258 .patterns = &.{33364 .patterns = &.{
21259 .{ .src = .{ .to_sse, .to_sse } },33365 .{ .src = .{ .to_sse, .to_sse, .none } },
21260 },33366 },
21261 .extra_temps = .{33367 .extra_temps = .{
21262 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },33368 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
...@@ -21277,13 +33383,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21277,13 +33383,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21277 .each = .{ .once = &.{33383 .each = .{ .once = &.{
21278 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },33384 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
21279 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },33385 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },
21280 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ },33386 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },
21281 } },33387 } },
21282 }, .{33388 }, .{
21283 .required_features = .{ .sse, null, null, null },33389 .required_features = .{ .sse, null, null, null },
21284 .src_constraints = .{ .{ .float = .word }, .{ .float = .word } },33390 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
21285 .patterns = &.{33391 .patterns = &.{
21286 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },33392 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21287 },33393 },
21288 .call_frame = .{ .alignment = .@"16" },33394 .call_frame = .{ .alignment = .@"16" },
21289 .extra_temps = .{33395 .extra_temps = .{
...@@ -21305,11 +33411,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21305,11 +33411,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21305 } },33411 } },
21306 }, .{33412 }, .{
21307 .required_features = .{ .avx, null, null, null },33413 .required_features = .{ .avx, null, null, null },
21308 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },33414 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
21309 .patterns = &.{33415 .patterns = &.{
21310 .{ .src = .{ .to_sse, .mem } },33416 .{ .src = .{ .to_sse, .mem, .none } },
21311 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },33417 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21312 .{ .src = .{ .to_sse, .to_sse } },33418 .{ .src = .{ .to_sse, .to_sse, .none } },
21313 },33419 },
21314 .dst_temps = .{.{ .cc = switch (optimized) {33420 .dst_temps = .{.{ .cc = switch (optimized) {
21315 false => .z_and_np,33421 false => .z_and_np,
...@@ -21321,11 +33427,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21321,11 +33427,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21321 } },33427 } },
21322 }, .{33428 }, .{
21323 .required_features = .{ .sse, null, null, null },33429 .required_features = .{ .sse, null, null, null },
21324 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } },33430 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },
21325 .patterns = &.{33431 .patterns = &.{
21326 .{ .src = .{ .to_sse, .mem } },33432 .{ .src = .{ .to_sse, .mem, .none } },
21327 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },33433 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21328 .{ .src = .{ .to_sse, .to_sse } },33434 .{ .src = .{ .to_sse, .to_sse, .none } },
21329 },33435 },
21330 .dst_temps = .{.{ .cc = switch (optimized) {33436 .dst_temps = .{.{ .cc = switch (optimized) {
21331 false => .z_and_np,33437 false => .z_and_np,
...@@ -21337,11 +33443,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21337,11 +33443,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21337 } },33443 } },
21338 }, .{33444 }, .{
21339 .required_features = .{ .avx, null, null, null },33445 .required_features = .{ .avx, null, null, null },
21340 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33446 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21341 .patterns = &.{33447 .patterns = &.{
21342 .{ .src = .{ .to_sse, .mem } },33448 .{ .src = .{ .to_sse, .mem, .none } },
21343 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },33449 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21344 .{ .src = .{ .to_sse, .to_sse } },33450 .{ .src = .{ .to_sse, .to_sse, .none } },
21345 },33451 },
21346 .dst_temps = .{.{ .cc = switch (optimized) {33452 .dst_temps = .{.{ .cc = switch (optimized) {
21347 false => .z_and_np,33453 false => .z_and_np,
...@@ -21353,11 +33459,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21353,11 +33459,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21353 } },33459 } },
21354 }, .{33460 }, .{
21355 .required_features = .{ .sse2, null, null, null },33461 .required_features = .{ .sse2, null, null, null },
21356 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33462 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21357 .patterns = &.{33463 .patterns = &.{
21358 .{ .src = .{ .to_sse, .mem } },33464 .{ .src = .{ .to_sse, .mem, .none } },
21359 .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } },33465 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
21360 .{ .src = .{ .to_sse, .to_sse } },33466 .{ .src = .{ .to_sse, .to_sse, .none } },
21361 },33467 },
21362 .dst_temps = .{.{ .cc = switch (optimized) {33468 .dst_temps = .{.{ .cc = switch (optimized) {
21363 false => .z_and_np,33469 false => .z_and_np,
...@@ -21369,13 +33475,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21369,13 +33475,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21369 } },33475 } },
21370 }, .{33476 }, .{
21371 .required_features = .{ .x87, .cmov, null, null },33477 .required_features = .{ .x87, .cmov, null, null },
21372 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33478 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21373 .patterns = &.{33479 .patterns = &.{
21374 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },33480 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
21375 },33481 },
21376 .extra_temps = .{33482 .extra_temps = .{
21377 .{ .type = .f80, .kind = .{ .reg = .st6 } },33483 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21378 .{ .type = .f80, .kind = .{ .reg = .st7 } },33484 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21379 .unused,33485 .unused,
21380 .unused,33486 .unused,
21381 .unused,33487 .unused,
...@@ -21397,13 +33503,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21397,13 +33503,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21397 } },33503 } },
21398 }, .{33504 }, .{
21399 .required_features = .{ .sahf, .x87, null, null },33505 .required_features = .{ .sahf, .x87, null, null },
21400 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33506 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21401 .patterns = &.{33507 .patterns = &.{
21402 .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } },33508 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },
21403 },33509 },
21404 .extra_temps = .{33510 .extra_temps = .{
21405 .{ .type = .f80, .kind = .{ .reg = .st6 } },33511 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21406 .{ .type = .f80, .kind = .{ .reg = .st7 } },33512 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21407 .{ .type = .u8, .kind = .{ .reg = .ah } },33513 .{ .type = .u8, .kind = .{ .reg = .ah } },
21408 .unused,33514 .unused,
21409 .unused,33515 .unused,
...@@ -21426,13 +33532,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21426,13 +33532,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21426 } },33532 } },
21427 }, .{33533 }, .{
21428 .required_features = .{ .x87, null, null, null },33534 .required_features = .{ .x87, null, null, null },
21429 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } },33535 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },
21430 .patterns = &.{33536 .patterns = &.{
21431 .{ .src = .{ .to_mem, .to_mem } },33537 .{ .src = .{ .to_mem, .to_mem, .none } },
21432 },33538 },
21433 .extra_temps = .{33539 .extra_temps = .{
21434 .{ .type = .f80, .kind = .{ .reg = .st6 } },33540 .{ .type = .f64, .kind = .{ .reg = .st6 } },
21435 .{ .type = .f80, .kind = .{ .reg = .st7 } },33541 .{ .type = .f64, .kind = .{ .reg = .st7 } },
21436 .{ .type = .u8, .kind = .{ .reg = .ah } },33542 .{ .type = .u8, .kind = .{ .reg = .ah } },
21437 .unused,33543 .unused,
21438 .unused,33544 .unused,
...@@ -21465,11 +33571,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21465,11 +33571,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21465 } },33571 } },
21466 }, .{33572 }, .{
21467 .required_features = .{ .x87, .cmov, null, null },33573 .required_features = .{ .x87, .cmov, null, null },
21468 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33574 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21469 .patterns = &.{33575 .patterns = &.{
21470 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33576 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21471 .{ .src = .{ .mem, .to_x87 } },33577 .{ .src = .{ .mem, .to_x87, .none } },
21472 .{ .src = .{ .to_x87, .to_x87 } },33578 .{ .src = .{ .to_x87, .to_x87, .none } },
21473 },33579 },
21474 .extra_temps = .{33580 .extra_temps = .{
21475 .{ .type = .f80, .kind = .{ .reg = .st7 } },33581 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -21493,9 +33599,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21493,9 +33599,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21493 } },33599 } },
21494 }, .{33600 }, .{
21495 .required_features = .{ .sahf, .x87, null, null },33601 .required_features = .{ .sahf, .x87, null, null },
21496 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33602 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21497 .patterns = &.{33603 .patterns = &.{
21498 .{ .src = .{ .mem, .mem } },33604 .{ .src = .{ .mem, .mem, .none } },
21499 },33605 },
21500 .extra_temps = .{33606 .extra_temps = .{
21501 .{ .type = .f80, .kind = .{ .reg = .st6 } },33607 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21522,11 +33628,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21522,11 +33628,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21522 } },33628 } },
21523 }, .{33629 }, .{
21524 .required_features = .{ .sahf, .x87, null, null },33630 .required_features = .{ .sahf, .x87, null, null },
21525 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33631 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21526 .patterns = &.{33632 .patterns = &.{
21527 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33633 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21528 .{ .src = .{ .mem, .to_x87 } },33634 .{ .src = .{ .mem, .to_x87, .none } },
21529 .{ .src = .{ .to_x87, .to_x87 } },33635 .{ .src = .{ .to_x87, .to_x87, .none } },
21530 },33636 },
21531 .extra_temps = .{33637 .extra_temps = .{
21532 .{ .type = .f80, .kind = .{ .reg = .st6 } },33638 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21552,9 +33658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21552,9 +33658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21552 } },33658 } },
21553 }, .{33659 }, .{
21554 .required_features = .{ .x87, null, null, null },33660 .required_features = .{ .x87, null, null, null },
21555 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33661 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21556 .patterns = &.{33662 .patterns = &.{
21557 .{ .src = .{ .mem, .mem } },33663 .{ .src = .{ .mem, .mem, .none } },
21558 },33664 },
21559 .extra_temps = .{33665 .extra_temps = .{
21560 .{ .type = .f80, .kind = .{ .reg = .st6 } },33666 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21591,11 +33697,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21591,11 +33697,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21591 } },33697 } },
21592 }, .{33698 }, .{
21593 .required_features = .{ .x87, null, null, null },33699 .required_features = .{ .x87, null, null, null },
21594 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } },33700 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },
21595 .patterns = &.{33701 .patterns = &.{
21596 .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } },33702 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
21597 .{ .src = .{ .mem, .to_x87 } },33703 .{ .src = .{ .mem, .to_x87, .none } },
21598 .{ .src = .{ .to_x87, .to_x87 } },33704 .{ .src = .{ .to_x87, .to_x87, .none } },
21599 },33705 },
21600 .extra_temps = .{33706 .extra_temps = .{
21601 .{ .type = .f80, .kind = .{ .reg = .st6 } },33707 .{ .type = .f80, .kind = .{ .reg = .st6 } },
...@@ -21630,9 +33736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21630,9 +33736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21630 } },33736 } },
21631 }, .{33737 }, .{
21632 .required_features = .{ .sse, null, null, null },33738 .required_features = .{ .sse, null, null, null },
21633 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } },33739 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
21634 .patterns = &.{33740 .patterns = &.{
21635 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } },33741 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
21636 },33742 },
21637 .call_frame = .{ .alignment = .@"16" },33743 .call_frame = .{ .alignment = .@"16" },
21638 .extra_temps = .{33744 .extra_temps = .{
...@@ -21663,278 +33769,1020 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21663,278 +33769,1020 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21663 },33769 },
21664 }33770 }
21665 },33771 },
21666 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,33772 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21667 }) catch |err| switch (err) {33773 }) catch |err| switch (err) {
21668 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{33774 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21669 @tagName(air_tag),33775 @tagName(air_tag),
21670 cg.typeOf(bin_op.lhs).fmt(pt),33776 cg.typeOf(bin_op.lhs).fmt(pt),
21671 ops[0].tracking(cg),33777 ops[0].tracking(cg),
21672 ops[1].tracking(cg),33778 ops[1].tracking(cg),
21673 }),33779 }),
21674 else => |e| return e,33780 else => |e| return e,
21675 };33781 };
21676 if (opt_info) |*oi| {33782 if (opt_info) |*oi| {
21677 for (ops) |op| for (res) |r| {33783 for (ops) |op| for (res) |r| {
21678 if (op.index == r.index) break;33784 if (op.index == r.index) break;
21679 } else try op.die(cg);33785 } else try op.die(cg);
21680 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});33786 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21681 try res[0].die(cg);33787 try res[0].die(cg);
21682 res[0] = oi.res[0];33788 res[0] = oi.res[0];
21683 try cg.restoreState(oi.state, &oi.deaths, .{33789 try cg.restoreState(oi.state, &oi.deaths, .{
21684 .emit_instructions = true,33790 .emit_instructions = true,
21685 .update_tracking = true,33791 .update_tracking = true,
21686 .resurrect = true,33792 .resurrect = true,
21687 .close_scope = true,33793 .close_scope = true,
21688 });33794 });
21689 cg.performReloc(oi.reloc);33795 cg.performReloc(oi.reloc);
21690 @memset(&ops, res[0]);33796 @memset(&ops, res[0]);
21691 }33797 }
21692 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);33798 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21693 },33799 },
2169433800
21695 .cond_br => try cg.airCondBr(inst),33801 .cond_br => try cg.airCondBr(inst),
21696 .switch_br => try cg.airSwitchBr(inst),33802 .switch_br => try cg.airSwitchBr(inst),
21697 .loop_switch_br => try cg.airLoopSwitchBr(inst),33803 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21698 .switch_dispatch => try cg.airSwitchDispatch(inst),33804 .switch_dispatch => try cg.airSwitchDispatch(inst),
21699 .@"try", .try_cold => try cg.airTry(inst),33805 .@"try", .try_cold => try cg.airTry(inst),
21700 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),33806 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21701 .dbg_stmt => if (cg.debug_output != .none) {33807 .dbg_stmt => if (cg.debug_output != .none) {
21702 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;33808 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21703 _ = try cg.addInst(.{33809 _ = try cg.addInst(.{
21704 .tag = .pseudo,33810 .tag = .pseudo,
21705 .ops = .pseudo_dbg_line_stmt_line_column,33811 .ops = .pseudo_dbg_line_stmt_line_column,
21706 .data = .{ .line_column = .{33812 .data = .{ .line_column = .{
21707 .line = dbg_stmt.line,33813 .line = dbg_stmt.line,
21708 .column = dbg_stmt.column,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, ._, ._, ._ },
21709 } },34406 } },
21710 });34407 }, .{
21711 },34408 .required_features = .{ .avx, null, null, null },
21712 .dbg_empty_stmt => if (cg.debug_output != .none) {34409 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
21713 if (cg.mir_instructions.len > 0) {34410 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
21714 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];34411 .patterns = &.{
21715 if (prev_mir_op.* == .pseudo_dbg_line_line_column)34412 .{ .src = .{ .mem, .none, .none } },
21716 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;34413 .{ .src = .{ .to_sse, .none, .none } },
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 },
21755 },34414 },
21756 }34415 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21757 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);34416 .each = .{ .once = &.{
21758 try ops[0].die(cg);34417 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
21759 },34418 } },
21760 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {34419 }, .{
21761 const un_op = air_datas[@intFromEnum(inst)].un_op;34420 .required_features = .{ .sse2, null, null, null },
21762 const opt_ty = cg.typeOf(un_op).childType(zcu);34421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
21763 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);34422 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
21764 const opt_child_ty = opt_ty.optionalChild(zcu);34423 .patterns = &.{
21765 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));34424 .{ .src = .{ .mem, .none, .none } },
21766 var ops = try cg.tempsFromOperands(inst, .{un_op});34425 .{ .src = .{ .to_sse, .none, .none } },
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)),
21852 },34426 },
21853 }, cg);34427 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21854 try res.finish(inst, &.{ty_op.operand}, &ops, cg);34428 .each = .{ .once = &.{
21855 },34429 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
21856 .ret => try cg.airRet(inst, false),34430 } },
21857 .ret_safe => try cg.airRet(inst, true),34431 }, .{
21858 .ret_load => try cg.airRetLoad(inst),34432 .required_features = .{ .avx, null, null, null },
21859 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {34433 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
21860 else => unreachable,34434 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
21861 .store => false,34435 .patterns = &.{
21862 .store_safe => true,34436 .{ .src = .{ .mem, .none, .none } },
21863 }) else fallback: {34437 .{ .src = .{ .to_sse, .none, .none } },
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)),
21881 },34438 },
21882 .safe = switch (air_tag) {34439 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21883 else => unreachable,34440 .each = .{ .once = &.{
21884 .store => false,34441 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
21885 .store_safe => true,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 } },
21886 },34449 },
21887 }, cg);34450 .extra_temps = .{
21888 for (ops) |op| try op.die(cg);34451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21889 },34452 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
21890 .unreach => {},34453 .unused,
21891 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {34454 .unused,
21892 const ty_op = air_datas[@intFromEnum(inst)].ty_op;34455 .unused,
21893 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});34456 .unused,
21894 var res: [1]Temp = undefined;34457 .unused,
21895 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{34458 .unused,
21896 .required_features = .{ .f16c, null, null, null },34459 .unused,
21897 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },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 },
21898 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},34527 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
21899 .patterns = &.{34528 .patterns = &.{
21900 .{ .src = .{ .to_sse, .none } },34529 .{ .src = .{ .to_mem, .none, .none } },
21901 },34530 },
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 },
21903 .each = .{ .once = &.{34545 .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", ._, ._, ._ },
21905 } },34724 } },
21906 }, .{34725 }, .{
21907 .required_features = .{ .f16c, null, null, null },34726 .required_features = .{ .x87, null, null, null },
21908 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },34727 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
21909 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},34728 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
21910 .patterns = &.{34729 .patterns = &.{
21911 .{ .src = .{ .to_sse, .none } },34730 .{ .src = .{ .mem, .none, .none } },
34731 .{ .src = .{ .to_x87, .none, .none } },
21912 },34732 },
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},
21914 .each = .{ .once = &.{34745 .each = .{ .once = &.{
21915 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },34746 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34747 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
21916 } },34748 } },
21917 }, .{34749 }, .{
21918 .required_features = .{ .f16c, null, null, null },34750 .required_features = .{ .x87, null, null, null },
21919 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },34751 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
21920 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},34752 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
21921 .patterns = &.{34753 .patterns = &.{
21922 .{ .src = .{ .to_sse, .none } },34754 .{ .src = .{ .to_mem, .none, .none } },
21923 },34755 },
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 },
21925 .each = .{ .once = &.{34769 .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", ._, ._, ._ },
21927 } },34775 } },
21928 }, .{34776 }, .{
21929 .required_features = .{ .sse, null, null, null },34777 .required_features = .{ .x87, null, null, null },
21930 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },34778 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
21931 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},34779 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
21932 .patterns = &.{34780 .patterns = &.{
21933 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },34781 .{ .src = .{ .mem, .none, .none } },
34782 .{ .src = .{ .to_x87, .none, .none } },
21934 },34783 },
21935 .call_frame = .{ .alignment = .@"16" },
21936 .extra_temps = .{34784 .extra_temps = .{
21937 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },34785 .{ .type = .f80, .kind = .{ .reg = .st7 } },
21938 .unused,34786 .unused,
21939 .unused,34787 .unused,
21940 .unused,34788 .unused,
...@@ -21944,21 +34792,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21944,21 +34792,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21944 .unused,34792 .unused,
21945 .unused,34793 .unused,
21946 },34794 },
21947 .dst_temps = .{.{ .ref = .src0 }},34795 .dst_temps = .{.mem},
21948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
21949 .each = .{ .once = &.{34796 .each = .{ .once = &.{
21950 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },34797 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34798 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
21951 } },34799 } },
21952 }, .{34800 }, .{
21953 .required_features = .{ .f16c, null, null, null },34801 .required_features = .{ .x87, null, null, null },
21954 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },34802 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
21955 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},34803 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
21956 .patterns = &.{34804 .patterns = &.{
21957 .{ .src = .{ .to_mem, .none } },34805 .{ .src = .{ .to_mem, .none, .none } },
21958 },34806 },
21959 .extra_temps = .{34807 .extra_temps = .{
21960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21961 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },34809 .{ .type = .f80, .kind = .{ .reg = .st7 } },
21962 .unused,34810 .unused,
21963 .unused,34811 .unused,
21964 .unused,34812 .unused,
...@@ -21971,23 +34819,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21971,23 +34819,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21971 .clobbers = .{ .eflags = true },34819 .clobbers = .{ .eflags = true },
21972 .each = .{ .once = &.{34820 .each = .{ .once = &.{
21973 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },34821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
21974 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },34822 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
21975 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },34823 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
21976 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34824 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
21977 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34825 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21978 } },34826 } },
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 } },
21979 }, .{34851 }, .{
21980 .required_features = .{ .avx, null, null, null },34852 .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 },
21982 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},34854 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
21983 .patterns = &.{34855 .patterns = &.{
21984 .{ .src = .{ .to_mem, .none } },34856 .{ .src = .{ .to_mem, .none, .none } },
21985 },34857 },
21986 .call_frame = .{ .alignment = .@"16" },34858 .call_frame = .{ .alignment = .@"16" },
21987 .extra_temps = .{34859 .extra_temps = .{
21988 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21989 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },34861 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
21990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },34862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
21991 .unused,34863 .unused,
21992 .unused,34864 .unused,
21993 .unused,34865 .unused,
...@@ -21999,7 +34871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21999,7 +34871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21999 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },34871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22000 .each = .{ .once = &.{34872 .each = .{ .once = &.{
22001 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },34873 .{ ._, ._, .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), ._, ._ },
22003 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },34875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22004 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },34876 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22005 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },34877 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
...@@ -22007,16 +34879,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22007,16 +34879,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22007 } },34879 } },
22008 }, .{34880 }, .{
22009 .required_features = .{ .sse4_1, null, null, null },34881 .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 },
22011 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},34883 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22012 .patterns = &.{34884 .patterns = &.{
22013 .{ .src = .{ .to_mem, .none } },34885 .{ .src = .{ .to_mem, .none, .none } },
22014 },34886 },
22015 .call_frame = .{ .alignment = .@"16" },34887 .call_frame = .{ .alignment = .@"16" },
22016 .extra_temps = .{34888 .extra_temps = .{
22017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22018 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },34890 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22019 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },34891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22020 .unused,34892 .unused,
22021 .unused,34893 .unused,
22022 .unused,34894 .unused,
...@@ -22028,7 +34900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22028,7 +34900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22028 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },34900 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22029 .each = .{ .once = &.{34901 .each = .{ .once = &.{
22030 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },34902 .{ ._, ._, .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), ._, ._ },
22032 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },34904 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22033 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },34905 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22034 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },34906 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
...@@ -22036,16 +34908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22036,16 +34908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22036 } },34908 } },
22037 }, .{34909 }, .{
22038 .required_features = .{ .sse2, null, null, null },34910 .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 },
22040 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},34912 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22041 .patterns = &.{34913 .patterns = &.{
22042 .{ .src = .{ .to_mem, .none } },34914 .{ .src = .{ .to_mem, .none, .none } },
22043 },34915 },
22044 .call_frame = .{ .alignment = .@"16" },34916 .call_frame = .{ .alignment = .@"16" },
22045 .extra_temps = .{34917 .extra_temps = .{
22046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22047 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },34919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22048 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },34920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22049 .{ .type = .f16, .kind = .{ .reg = .ax } },34921 .{ .type = .f16, .kind = .{ .reg = .ax } },
22050 .unused,34922 .unused,
22051 .unused,34923 .unused,
...@@ -22057,7 +34929,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22057,7 +34929,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },34929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22058 .each = .{ .once = &.{34930 .each = .{ .once = &.{
22059 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },34931 .{ ._, ._, .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), ._, ._ },
22061 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },34933 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22062 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },34934 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22063 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },34935 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
...@@ -22066,16 +34938,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22066,16 +34938,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22066 } },34938 } },
22067 }, .{34939 }, .{
22068 .required_features = .{ .sse, null, null, null },34940 .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 },
22070 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},34942 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22071 .patterns = &.{34943 .patterns = &.{
22072 .{ .src = .{ .to_mem, .none } },34944 .{ .src = .{ .to_mem, .none, .none } },
22073 },34945 },
22074 .call_frame = .{ .alignment = .@"16" },34946 .call_frame = .{ .alignment = .@"16" },
22075 .extra_temps = .{34947 .extra_temps = .{
22076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22077 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },34949 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },34950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22079 .{ .type = .f32, .kind = .mem },34951 .{ .type = .f32, .kind = .mem },
22080 .{ .type = .f16, .kind = .{ .reg = .ax } },34952 .{ .type = .f16, .kind = .{ .reg = .ax } },
22081 .unused,34953 .unused,
...@@ -22087,7 +34959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22087,7 +34959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },34959 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22088 .each = .{ .once = &.{34960 .each = .{ .once = &.{
22089 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },34961 .{ ._, ._, .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), ._, ._ },
22091 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },34963 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22092 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },34964 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22093 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },34965 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
...@@ -22097,14 +34969,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22097,14 +34969,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22097 } },34969 } },
22098 }, .{34970 }, .{
22099 .required_features = .{ .sse, null, null, null },34971 .required_features = .{ .sse, null, null, null },
22100 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },34972 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22101 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},34973 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22102 .patterns = &.{34974 .patterns = &.{
22103 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },34975 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22104 },34976 },
22105 .call_frame = .{ .alignment = .@"16" },34977 .call_frame = .{ .alignment = .@"16" },
22106 .extra_temps = .{34978 .extra_temps = .{
22107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },34979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22108 .unused,34980 .unused,
22109 .unused,34981 .unused,
22110 .unused,34982 .unused,
...@@ -22121,16 +34993,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22121,16 +34993,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22121 } },34993 } },
22122 }, .{34994 }, .{
22123 .required_features = .{ .avx, null, null, null },34995 .required_features = .{ .avx, null, null, null },
22124 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },34996 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22125 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},34997 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22126 .patterns = &.{34998 .patterns = &.{
22127 .{ .src = .{ .to_mem, .none } },34999 .{ .src = .{ .to_mem, .none, .none } },
22128 },35000 },
22129 .call_frame = .{ .alignment = .@"16" },35001 .call_frame = .{ .alignment = .@"16" },
22130 .extra_temps = .{35002 .extra_temps = .{
22131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22132 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35004 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },35005 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22134 .unused,35006 .unused,
22135 .unused,35007 .unused,
22136 .unused,35008 .unused,
...@@ -22142,24 +35014,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22142,24 +35014,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22143 .each = .{ .once = &.{35015 .each = .{ .once = &.{
22144 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35016 .{ ._, ._, .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), ._, ._ },
22146 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },35018 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22147 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },35019 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22148 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },35020 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22150 } },35022 } },
22151 }, .{35023 }, .{
22152 .required_features = .{ .sse4_1, null, null, null },35024 .required_features = .{ .sse2, null, null, null },
22153 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },35025 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22154 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35026 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22155 .patterns = &.{35027 .patterns = &.{
22156 .{ .src = .{ .to_mem, .none } },35028 .{ .src = .{ .to_mem, .none, .none } },
22157 },35029 },
22158 .call_frame = .{ .alignment = .@"16" },35030 .call_frame = .{ .alignment = .@"16" },
22159 .extra_temps = .{35031 .extra_temps = .{
22160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35033 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22162 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },35034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22163 .unused,35035 .unused,
22164 .unused,35036 .unused,
22165 .unused,35037 .unused,
...@@ -22171,25 +35043,107 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22171,25 +35043,107 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22171 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22172 .each = .{ .once = &.{35044 .each = .{ .once = &.{
22173 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35045 .{ ._, ._, .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), ._, ._ },
22175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },35047 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22176 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },35048 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22177 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },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), ._, ._ },
22178 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22179 } },35133 } },
22180 }, .{35134 }, .{
22181 .required_features = .{ .sse2, null, null, null },35135 .required_features = .{ .sse2, null, null, null },
22182 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },35136 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22183 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35137 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22184 .patterns = &.{35138 .patterns = &.{
22185 .{ .src = .{ .to_mem, .none } },35139 .{ .src = .{ .to_mem, .none, .none } },
22186 },35140 },
22187 .call_frame = .{ .alignment = .@"16" },35141 .call_frame = .{ .alignment = .@"16" },
22188 .extra_temps = .{35142 .extra_temps = .{
22189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22190 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35144 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },35145 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
22192 .{ .type = .f16, .kind = .{ .reg = .ax } },35146 .unused,
22193 .unused,35147 .unused,
22194 .unused,35148 .unused,
22195 .unused,35149 .unused,
...@@ -22200,27 +35154,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22200,27 +35154,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22200 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35154 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22201 .each = .{ .once = &.{35155 .each = .{ .once = &.{
22202 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35156 .{ ._, ._, .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), ._, ._ },
22204 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },35158 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22205 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },35159 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22206 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },35160 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22207 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22208 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35161 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22209 } },35162 } },
22210 }, .{35163 }, .{
22211 .required_features = .{ .sse, null, null, null },35164 .required_features = .{ .sse, null, null, null },
22212 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },35165 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22213 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35166 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22214 .patterns = &.{35167 .patterns = &.{
22215 .{ .src = .{ .to_mem, .none } },35168 .{ .src = .{ .to_mem, .none, .none } },
22216 },35169 },
22217 .call_frame = .{ .alignment = .@"16" },35170 .call_frame = .{ .alignment = .@"16" },
22218 .extra_temps = .{35171 .extra_temps = .{
22219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22220 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35173 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22221 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },35174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
22222 .{ .type = .f32, .kind = .mem },35175 .unused,
22223 .{ .type = .f16, .kind = .{ .reg = .ax } },35176 .unused,
22224 .unused,35177 .unused,
22225 .unused,35178 .unused,
22226 .unused,35179 .unused,
...@@ -22230,60 +35183,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22230,60 +35183,186 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22230 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22231 .each = .{ .once = &.{35184 .each = .{ .once = &.{
22232 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35185 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22233 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },35186 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22234 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22235 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },35187 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22236 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },35188 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22237 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },35189 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22238 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22241 } },35191 } },
22242 }, .{35192 }, .{
22243 .required_features = .{ .avx, null, null, null },35193 .required_features = .{ .sse, .x87, null, null },
22244 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },35194 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22245 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},35195 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
22246 .patterns = &.{35196 .patterns = &.{
22247 .{ .src = .{ .mem, .none } },35197 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22248 },35198 },
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 },
22250 .each = .{ .once = &.{35213 .each = .{ .once = &.{
22251 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },35214 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22252 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
22253 } },35215 } },
22254 }, .{35216 }, .{
22255 .required_features = .{ .avx, null, null, null },35217 .required_features = .{ .avx, null, null, null },
22256 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },35218 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
22257 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},35219 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
22258 .patterns = &.{35220 .patterns = &.{
22259 .{ .src = .{ .to_sse, .none } },35221 .{ .src = .{ .to_mem, .none, .none } },
22260 },35222 },
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 },
22262 .each = .{ .once = &.{35237 .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", ._, ._, ._ },
22264 } },35245 } },
22265 }, .{35246 }, .{
22266 .required_features = .{ .sse2, null, null, null },35247 .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 },
22268 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},35324 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22269 .patterns = &.{35325 .patterns = &.{
22270 .{ .src = .{ .mem, .none } },35326 .{ .src = .{ .to_sse, .none, .none } },
22271 .{ .src = .{ .to_sse, .none } },
22272 },35327 },
22273 .dst_temps = .{.{ .rc = .sse }},35328 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22274 .each = .{ .once = &.{35329 .each = .{ .once = &.{
22275 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },35330 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
22276 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
22277 } },35331 } },
22278 }, .{35332 }, .{
22279 .required_features = .{ .x87, null, null, null },35333 .required_features = .{ .f16c, null, null, null },
22280 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },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 },
22281 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},35359 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22282 .patterns = &.{35360 .patterns = &.{
22283 .{ .src = .{ .to_mem, .none } },35361 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22284 },35362 },
35363 .call_frame = .{ .alignment = .@"16" },
22285 .extra_temps = .{35364 .extra_temps = .{
22286 .{ .type = .f80, .kind = .{ .reg = .st7 } },35365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
22287 .unused,35366 .unused,
22288 .unused,35367 .unused,
22289 .unused,35368 .unused,
...@@ -22293,57 +35372,178 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22293,57 +35372,178 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22293 .unused,35372 .unused,
22294 .unused,35373 .unused,
22295 },35374 },
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 },
22296 .dst_temps = .{.mem},35398 .dst_temps = .{.mem},
35399 .clobbers = .{ .eflags = true },
22297 .each = .{ .once = &.{35400 .each = .{ .once = &.{
22298 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },35401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22299 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },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", ._, ._, ._ },
22300 } },35497 } },
22301 }, .{35498 }, .{
22302 .required_features = .{ .avx, null, null, null },35499 .required_features = .{ .f16c, null, null, null },
22303 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },35500 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22304 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},35501 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
22305 .patterns = &.{35502 .patterns = &.{
22306 .{ .src = .{ .mem, .none } },35503 .{ .src = .{ .to_sse, .none, .none } },
22307 .{ .src = .{ .to_sse, .none } },
22308 },35504 },
22309 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},35505 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22310 .each = .{ .once = &.{35506 .each = .{ .once = &.{
22311 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },35507 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35508 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
22312 } },35509 } },
22313 }, .{35510 }, .{
22314 .required_features = .{ .sse2, null, null, null },35511 .required_features = .{ .f16c, null, null, null },
22315 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },35512 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
22316 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},35513 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
22317 .patterns = &.{35514 .patterns = &.{
22318 .{ .src = .{ .mem, .none } },35515 .{ .src = .{ .mem, .none, .none } },
22319 .{ .src = .{ .to_sse, .none } },35516 .{ .src = .{ .to_sse, .none, .none } },
22320 },35517 },
22321 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},35518 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22322 .each = .{ .once = &.{35519 .each = .{ .once = &.{
22323 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },35520 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35521 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
22324 } },35522 } },
22325 }, .{35523 }, .{
22326 .required_features = .{ .avx, null, null, null },35524 .required_features = .{ .f16c, null, null, null },
22327 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },35525 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
22328 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},35526 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
22329 .patterns = &.{35527 .patterns = &.{
22330 .{ .src = .{ .mem, .none } },35528 .{ .src = .{ .mem, .none, .none } },
22331 .{ .src = .{ .to_sse, .none } },35529 .{ .src = .{ .to_sse, .none, .none } },
22332 },35530 },
22333 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},35531 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22334 .each = .{ .once = &.{35532 .each = .{ .once = &.{
22335 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },35533 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
35534 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
22336 } },35535 } },
22337 }, .{35536 }, .{
22338 .required_features = .{ .avx, null, null, null },35537 .required_features = .{ .f16c, null, null, null },
22339 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },35538 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
22340 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},35539 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
22341 .patterns = &.{35540 .patterns = &.{
22342 .{ .src = .{ .to_mem, .none } },35541 .{ .src = .{ .mem, .none, .none } },
35542 .{ .src = .{ .to_sse, .none, .none } },
22343 },35543 },
22344 .extra_temps = .{35544 .extra_temps = .{
22345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35545 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22346 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },35546 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
22347 .unused,35547 .unused,
22348 .unused,35548 .unused,
22349 .unused,35549 .unused,
...@@ -22353,24 +35553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22353,24 +35553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22353 .unused,35553 .unused,
22354 },35554 },
22355 .dst_temps = .{.mem},35555 .dst_temps = .{.mem},
22356 .clobbers = .{ .eflags = true },
22357 .each = .{ .once = &.{35556 .each = .{ .once = &.{
22358 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35557 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
22359 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },35558 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
22360 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },35559 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
22361 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },35560 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
22362 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35561 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
35562 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
22363 } },35563 } },
22364 }, .{35564 }, .{
22365 .required_features = .{ .sse2, null, null, null },35565 .required_features = .{ .sse, null, null, null },
22366 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },35566 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22367 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},35567 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
22368 .patterns = &.{35568 .patterns = &.{
22369 .{ .src = .{ .to_mem, .none } },35569 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22370 },35570 },
35571 .call_frame = .{ .alignment = .@"16" },
22371 .extra_temps = .{35572 .extra_temps = .{
22372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
22373 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },35574 .unused,
22374 .unused,35575 .unused,
22375 .unused,35576 .unused,
22376 .unused,35577 .unused,
...@@ -22379,26 +35580,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22379,26 +35580,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22379 .unused,35580 .unused,
22380 .unused,35581 .unused,
22381 },35582 },
22382 .dst_temps = .{.mem},35583 .dst_temps = .{.{ .ref = .src0 }},
22383 .clobbers = .{ .eflags = true },35584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22384 .each = .{ .once = &.{35585 .each = .{ .once = &.{
22385 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35586 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
22390 } },35587 } },
22391 }, .{35588 }, .{
22392 .required_features = .{ .x87, null, null, null },35589 .required_features = .{ .f16c, null, null, null },
22393 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },35590 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
22394 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},35591 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
22395 .patterns = &.{35592 .patterns = &.{
22396 .{ .src = .{ .to_mem, .none } },35593 .{ .src = .{ .to_mem, .none, .none } },
22397 },35594 },
22398 .extra_temps = .{35595 .extra_temps = .{
22399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22400 .{ .type = .f80, .kind = .{ .reg = .st7 } },35597 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
22401 .unused,35598 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
22402 .unused,35599 .unused,
22403 .unused,35600 .unused,
22404 .unused,35601 .unused,
...@@ -22409,24 +35606,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22409,24 +35606,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22409 .dst_temps = .{.mem},35606 .dst_temps = .{.mem},
22410 .clobbers = .{ .eflags = true },35607 .clobbers = .{ .eflags = true },
22411 .each = .{ .once = &.{35608 .each = .{ .once = &.{
22412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22413 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },35610 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
22414 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },35611 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
22415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
22416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22417 } },35618 } },
22418 }, .{35619 }, .{
22419 .required_features = .{ .avx, null, null, null },35620 .required_features = .{ .avx, null, null, null },
22420 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35621 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22421 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},35622 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22422 .patterns = &.{35623 .patterns = &.{
22423 .{ .src = .{ .to_mem, .none } },35624 .{ .src = .{ .to_mem, .none, .none } },
22424 },35625 },
22425 .call_frame = .{ .size = 16, .alignment = .@"16" },35626 .call_frame = .{ .alignment = .@"16" },
22426 .extra_temps = .{35627 .extra_temps = .{
22427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },35629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22429 .unused,35630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
22430 .unused,35631 .unused,
22431 .unused,35632 .unused,
22432 .unused,35633 .unused,
...@@ -22434,25 +35635,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22434,25 +35635,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22434 .unused,35635 .unused,
22435 .unused,35636 .unused,
22436 },35637 },
22437 .dst_temps = .{.{ .reg = .xmm0 }},35638 .dst_temps = .{.mem},
22438 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35639 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22439 .each = .{ .once = &.{35640 .each = .{ .once = &.{
22440 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },35641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22441 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },35642 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
22442 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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", ._, ._, ._ },
22443 } },35648 } },
22444 }, .{35649 }, .{
22445 .required_features = .{ .sse2, null, null, null },35650 .required_features = .{ .sse2, null, null, null },
22446 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35651 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22447 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},35652 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22448 .patterns = &.{35653 .patterns = &.{
22449 .{ .src = .{ .to_mem, .none } },35654 .{ .src = .{ .to_mem, .none, .none } },
22450 },35655 },
22451 .call_frame = .{ .size = 16, .alignment = .@"16" },35656 .call_frame = .{ .alignment = .@"16" },
22452 .extra_temps = .{35657 .extra_temps = .{
22453 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },35659 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22455 .unused,35660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
22456 .unused,35661 .unused,
22457 .unused,35662 .unused,
22458 .unused,35663 .unused,
...@@ -22460,25 +35665,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22460,25 +35665,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22460 .unused,35665 .unused,
22461 .unused,35666 .unused,
22462 },35667 },
22463 .dst_temps = .{.{ .reg = .xmm0 }},35668 .dst_temps = .{.mem},
22464 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22465 .each = .{ .once = &.{35670 .each = .{ .once = &.{
22466 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },35671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22467 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },35672 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
22468 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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", ._, ._, ._ },
22469 } },35678 } },
22470 }, .{35679 }, .{
22471 .required_features = .{ .sse, null, null, null },35680 .required_features = .{ .sse, null, null, null },
22472 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35681 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22473 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},35682 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22474 .patterns = &.{35683 .patterns = &.{
22475 .{ .src = .{ .to_mem, .none } },35684 .{ .src = .{ .to_mem, .none, .none } },
22476 },35685 },
22477 .call_frame = .{ .size = 16, .alignment = .@"16" },35686 .call_frame = .{ .alignment = .@"16" },
22478 .extra_temps = .{35687 .extra_temps = .{
22479 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },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,
22481 .unused,35696 .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 } },
22482 .unused,35721 .unused,
22483 .unused,35722 .unused,
22484 .unused,35723 .unused,
...@@ -22486,56 +35725,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22486,56 +35725,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22486 .unused,35725 .unused,
22487 .unused,35726 .unused,
22488 },35727 },
22489 .dst_temps = .{.{ .reg = .xmm0 }},35728 .dst_temps = .{.{ .rc = .x87 }},
22490 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22491 .each = .{ .once = &.{35729 .each = .{ .once = &.{
22492 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },35730 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
22493 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },35731 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
22494 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },35732 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
35733 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
22495 } },35734 } },
22496 }, .{35735 }, .{
22497 .required_features = .{ .avx, null, null, null },35736 .required_features = .{ .sse, .x87, null, null },
22498 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35737 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22499 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35738 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
22500 .patterns = &.{35739 .patterns = &.{
22501 .{ .src = .{ .to_mem, .none } },35740 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22502 },35741 },
22503 .call_frame = .{ .size = 16, .alignment = .@"16" },35742 .call_frame = .{ .alignment = .@"16" },
22504 .extra_temps = .{35743 .extra_temps = .{
22505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
22506 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },35745 .unused,
22507 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35746 .unused,
22508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },35747 .unused,
22509 .unused,35748 .unused,
22510 .unused,35749 .unused,
22511 .unused,35750 .unused,
22512 .unused,35751 .unused,
22513 .unused,35752 .unused,
22514 },35753 },
22515 .dst_temps = .{.mem},35754 .dst_temps = .{.{ .reg = .st0 }},
22516 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35755 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22517 .each = .{ .once = &.{35756 .each = .{ .once = &.{
22518 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35757 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
22525 } },35758 } },
22526 }, .{35759 }, .{
22527 .required_features = .{ .sse4_1, null, null, null },35760 .required_features = .{ .avx, null, null, null },
22528 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35761 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22529 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35762 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
22530 .patterns = &.{35763 .patterns = &.{
22531 .{ .src = .{ .to_mem, .none } },35764 .{ .src = .{ .to_mem, .none, .none } },
22532 },35765 },
22533 .call_frame = .{ .size = 16, .alignment = .@"16" },35766 .call_frame = .{ .alignment = .@"16" },
22534 .extra_temps = .{35767 .extra_temps = .{
22535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22536 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },35769 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22537 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
22538 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },35771 .unused,
22539 .unused,35772 .unused,
22540 .unused,35773 .unused,
22541 .unused,35774 .unused,
...@@ -22545,28 +35778,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22545,28 +35778,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22545 .dst_temps = .{.mem},35778 .dst_temps = .{.mem},
22546 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35779 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22547 .each = .{ .once = &.{35780 .each = .{ .once = &.{
22548 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35781 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22549 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },35782 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
22550 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },35783 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
22551 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },35784 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22552 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },35785 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
35786 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
22553 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },35787 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35788 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22555 } },35789 } },
22556 }, .{35790 }, .{
22557 .required_features = .{ .sse2, null, null, null },35791 .required_features = .{ .sse2, null, null, null },
22558 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35792 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22559 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35793 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
22560 .patterns = &.{35794 .patterns = &.{
22561 .{ .src = .{ .to_mem, .none } },35795 .{ .src = .{ .to_mem, .none, .none } },
22562 },35796 },
22563 .call_frame = .{ .size = 16, .alignment = .@"16" },35797 .call_frame = .{ .alignment = .@"16" },
22564 .extra_temps = .{35798 .extra_temps = .{
22565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22566 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },35800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22567 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35801 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
22568 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },35802 .unused,
22569 .{ .type = .f16, .kind = .{ .reg = .ax } },35803 .unused,
22570 .unused,35804 .unused,
22571 .unused,35805 .unused,
22572 .unused,35806 .unused,
...@@ -22575,29 +35809,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22575,29 +35809,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22575 .dst_temps = .{.mem},35809 .dst_temps = .{.mem},
22576 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35810 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22577 .each = .{ .once = &.{35811 .each = .{ .once = &.{
22578 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35812 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22579 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },35813 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
22580 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },35814 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
22581 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },35815 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22582 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },35816 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
22583 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },35817 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
22584 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },35818 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35819 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22586 } },35820 } },
22587 }, .{35821 }, .{
22588 .required_features = .{ .sse, null, null, null },35822 .required_features = .{ .sse, null, null, null },
22589 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35823 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22590 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},35824 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
22591 .patterns = &.{35825 .patterns = &.{
22592 .{ .src = .{ .to_mem, .none } },35826 .{ .src = .{ .to_mem, .none, .none } },
22593 },35827 },
22594 .call_frame = .{ .size = 16, .alignment = .@"16" },35828 .call_frame = .{ .alignment = .@"16" },
22595 .extra_temps = .{35829 .extra_temps = .{
22596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35830 .{ .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" } } },
22600 .{ .type = .f16, .kind = .{ .reg = .ax } },35831 .{ .type = .f16, .kind = .{ .reg = .ax } },
35832 .{ .type = .f32, .kind = .mem },
35833 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
22601 .unused,35835 .unused,
22602 .unused,35836 .unused,
22603 .unused,35837 .unused,
...@@ -22606,26 +35840,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22606,26 +35840,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22606 .dst_temps = .{.mem},35840 .dst_temps = .{.mem},
22607 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22608 .each = .{ .once = &.{35842 .each = .{ .once = &.{
22609 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35843 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22610 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },35844 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
22611 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },35845 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
22612 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },35846 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
22613 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },35847 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
22614 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },35848 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
22615 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },35849 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
22616 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },35850 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35851 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22618 } },35852 } },
22619 }, .{35853 }, .{
22620 .required_features = .{ .x87, null, null, null },35854 .required_features = .{ .sse, null, null, null },
22621 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35855 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22622 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},35856 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
22623 .patterns = &.{35857 .patterns = &.{
22624 .{ .src = .{ .mem, .none } },35858 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22625 .{ .src = .{ .to_x87, .none } },
22626 },35859 },
35860 .call_frame = .{ .alignment = .@"16" },
22627 .extra_temps = .{35861 .extra_temps = .{
22628 .{ .type = .f80, .kind = .{ .reg = .st7 } },35862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
22629 .unused,35863 .unused,
22630 .unused,35864 .unused,
22631 .unused,35865 .unused,
...@@ -22635,22 +35869,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22635,22 +35869,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22635 .unused,35869 .unused,
22636 .unused,35870 .unused,
22637 },35871 },
22638 .dst_temps = .{.mem},35872 .dst_temps = .{.{ .ref = .src0 }},
35873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22639 .each = .{ .once = &.{35874 .each = .{ .once = &.{
22640 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },35875 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22641 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
22642 } },35876 } },
22643 }, .{35877 }, .{
22644 .required_features = .{ .x87, null, null, null },35878 .required_features = .{ .avx, null, null, null },
22645 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35879 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22646 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},35880 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22647 .patterns = &.{35881 .patterns = &.{
22648 .{ .src = .{ .to_mem, .none } },35882 .{ .src = .{ .to_mem, .none, .none } },
22649 },35883 },
35884 .call_frame = .{ .alignment = .@"16" },
22650 .extra_temps = .{35885 .extra_temps = .{
22651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22652 .{ .type = .f80, .kind = .{ .reg = .st7 } },35887 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22653 .unused,35888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
22654 .unused,35889 .unused,
22655 .unused,35890 .unused,
22656 .unused,35891 .unused,
...@@ -22659,26 +35894,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22659,26 +35894,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22659 .unused,35894 .unused,
22660 },35895 },
22661 .dst_temps = .{.mem},35896 .dst_temps = .{.mem},
22662 .clobbers = .{ .eflags = true },35897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22663 .each = .{ .once = &.{35898 .each = .{ .once = &.{
22664 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22665 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },35900 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
22666 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },35901 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
22667 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },35902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35903 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
35904 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22668 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22669 } },35906 } },
22670 }, .{35907 }, .{
22671 .required_features = .{ .x87, null, null, null },35908 .required_features = .{ .sse2, null, null, null },
22672 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35909 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22673 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},35910 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22674 .patterns = &.{35911 .patterns = &.{
22675 .{ .src = .{ .mem, .none } },35912 .{ .src = .{ .to_mem, .none, .none } },
22676 .{ .src = .{ .to_x87, .none } },
22677 },35913 },
35914 .call_frame = .{ .alignment = .@"16" },
22678 .extra_temps = .{35915 .extra_temps = .{
22679 .{ .type = .f80, .kind = .{ .reg = .st7 } },35916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22680 .unused,35917 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22681 .unused,35918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
22682 .unused,35919 .unused,
22683 .unused,35920 .unused,
22684 .unused,35921 .unused,
...@@ -22687,47 +35924,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22687,47 +35924,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22687 .unused,35924 .unused,
22688 },35925 },
22689 .dst_temps = .{.mem},35926 .dst_temps = .{.mem},
35927 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22690 .each = .{ .once = &.{35928 .each = .{ .once = &.{
22691 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },35929 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22692 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },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", ._, ._, ._ },
22693 } },35936 } },
22694 }, .{35937 }, .{
22695 .required_features = .{ .x87, null, null, null },35938 .required_features = .{ .sse, null, null, null },
22696 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },35939 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
22697 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},35940 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22698 .patterns = &.{35941 .patterns = &.{
22699 .{ .src = .{ .to_mem, .none } },35942 .{ .src = .{ .to_mem, .none, .none } },
22700 },35943 },
35944 .call_frame = .{ .alignment = .@"16" },
22701 .extra_temps = .{35945 .extra_temps = .{
22702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22703 .{ .type = .f80, .kind = .{ .reg = .st7 } },35947 .{ .type = .f16, .kind = .{ .reg = .ax } },
22704 .unused,35948 .{ .type = .f32, .kind = .mem },
22705 .unused,35949 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22706 .unused,35950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
22707 .unused,35951 .unused,
22708 .unused,35952 .unused,
22709 .unused,35953 .unused,
22710 .unused,35954 .unused,
22711 },35955 },
22712 .dst_temps = .{.mem},35956 .dst_temps = .{.mem},
22713 .clobbers = .{ .eflags = true },35957 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22714 .each = .{ .once = &.{35958 .each = .{ .once = &.{
22715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },35959 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22716 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },35960 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
22717 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },35961 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
22718 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
22719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22720 } },35967 } },
22721 }, .{35968 }, .{
22722 .required_features = .{ .sse, null, null, null },35969 .required_features = .{ .avx, null, null, null },
22723 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },35970 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22724 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},35971 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
22725 .patterns = &.{35972 .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 } },
22727 },36010 },
22728 .call_frame = .{ .alignment = .@"16" },
22729 .extra_temps = .{36011 .extra_temps = .{
22730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },36012 .{ .type = .f32, .kind = .{ .reg = .st7 } },
22731 .unused,36013 .unused,
22732 .unused,36014 .unused,
22733 .unused,36015 .unused,
...@@ -22737,23 +36019,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22737,23 +36019,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22737 .unused,36019 .unused,
22738 .unused,36020 .unused,
22739 },36021 },
22740 .dst_temps = .{.{ .ref = .src0 }},36022 .dst_temps = .{.mem},
22741 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22742 .each = .{ .once = &.{36023 .each = .{ .once = &.{
22743 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },36024 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
36025 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
22744 } },36026 } },
22745 }, .{36027 }, .{
22746 .required_features = .{ .avx, null, null, null },36028 .required_features = .{ .avx, null, null, null },
22747 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36029 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
22748 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},36030 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
22749 .patterns = &.{36031 .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 } },
22751 },36069 },
22752 .call_frame = .{ .alignment = .@"16" },
22753 .extra_temps = .{36070 .extra_temps = .{
22754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22755 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36072 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
22756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },36073 .unused,
22757 .unused,36074 .unused,
22758 .unused,36075 .unused,
22759 .unused,36076 .unused,
...@@ -22762,27 +36079,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22762,27 +36079,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22762 .unused,36079 .unused,
22763 },36080 },
22764 .dst_temps = .{.mem},36081 .dst_temps = .{.mem},
22765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36082 .clobbers = .{ .eflags = true },
22766 .each = .{ .once = &.{36083 .each = .{ .once = &.{
22767 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36084 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22768 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },36085 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
22769 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36086 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
22770 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },36087 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22771 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22772 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22773 } },36089 } },
22774 }, .{36090 }, .{
22775 .required_features = .{ .sse4_1, null, null, null },36091 .required_features = .{ .sse2, null, null, null },
22776 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36092 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
22777 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},36093 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
22778 .patterns = &.{36094 .patterns = &.{
22779 .{ .src = .{ .to_mem, .none } },36095 .{ .src = .{ .to_mem, .none, .none } },
22780 },36096 },
22781 .call_frame = .{ .alignment = .@"16" },
22782 .extra_temps = .{36097 .extra_temps = .{
22783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22784 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36099 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
22785 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },36100 .unused,
22786 .unused,36101 .unused,
22787 .unused,36102 .unused,
22788 .unused,36103 .unused,
...@@ -22791,28 +36106,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22791,28 +36106,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22791 .unused,36106 .unused,
22792 },36107 },
22793 .dst_temps = .{.mem},36108 .dst_temps = .{.mem},
22794 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36109 .clobbers = .{ .eflags = true },
22795 .each = .{ .once = &.{36110 .each = .{ .once = &.{
22796 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22797 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },36112 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
22798 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36113 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22799 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },36114 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22800 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22801 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36115 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22802 } },36116 } },
22803 }, .{36117 }, .{
22804 .required_features = .{ .sse2, null, null, null },36118 .required_features = .{ .x87, null, null, null },
22805 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36119 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22806 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},36120 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22807 .patterns = &.{36121 .patterns = &.{
22808 .{ .src = .{ .to_mem, .none } },36122 .{ .src = .{ .to_mem, .none, .none } },
22809 },36123 },
22810 .call_frame = .{ .alignment = .@"16" },
22811 .extra_temps = .{36124 .extra_temps = .{
22812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22813 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36126 .{ .type = .f32, .kind = .{ .reg = .st7 } },
22814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },36127 .unused,
22815 .{ .type = .f16, .kind = .{ .reg = .ax } },36128 .unused,
22816 .unused,36129 .unused,
22817 .unused,36130 .unused,
22818 .unused,36131 .unused,
...@@ -22820,57 +36133,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22820,57 +36133,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22820 .unused,36133 .unused,
22821 },36134 },
22822 .dst_temps = .{.mem},36135 .dst_temps = .{.mem},
22823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36136 .clobbers = .{ .eflags = true },
22824 .each = .{ .once = &.{36137 .each = .{ .once = &.{
22825 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22826 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },36139 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22827 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36140 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22828 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },36141 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22829 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22830 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22831 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22832 } },36143 } },
22833 }, .{36144 }, .{
22834 .required_features = .{ .sse, null, null, null },36145 .required_features = .{ .x87, null, null, null },
22835 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36146 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22836 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},36147 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
22837 .patterns = &.{36148 .patterns = &.{
22838 .{ .src = .{ .to_mem, .none } },36149 .{ .src = .{ .to_mem, .none, .none } },
22839 },36150 },
22840 .call_frame = .{ .alignment = .@"16" },
22841 .extra_temps = .{36151 .extra_temps = .{
22842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36152 .{ .type = .f32, .kind = .{ .reg = .st7 } },
22843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },36153 .unused,
22844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },36154 .unused,
22845 .{ .type = .f32, .kind = .mem },36155 .unused,
22846 .{ .type = .f16, .kind = .{ .reg = .ax } },36156 .unused,
22847 .unused,36157 .unused,
22848 .unused,36158 .unused,
22849 .unused,36159 .unused,
22850 .unused,36160 .unused,
22851 },36161 },
22852 .dst_temps = .{.mem},36162 .dst_temps = .{.mem},
22853 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22854 .each = .{ .once = &.{36163 .each = .{ .once = &.{
22855 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36164 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
22856 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },36165 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
22857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36166 } },
22858 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },36167 }, .{
22859 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },36168 .required_features = .{ .x87, null, null, null },
22860 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },36169 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22861 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },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), ._, ._ },
22862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22863 } },36193 } },
22864 }, .{36194 }, .{
22865 .required_features = .{ .sse, null, null, null },36195 .required_features = .{ .sse, null, null, null },
22866 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },36196 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22867 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},36197 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
22868 .patterns = &.{36198 .patterns = &.{
22869 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36199 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22870 },36200 },
22871 .call_frame = .{ .alignment = .@"16" },36201 .call_frame = .{ .alignment = .@"16" },
22872 .extra_temps = .{36202 .extra_temps = .{
22873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },36203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
22874 .unused,36204 .unused,
22875 .unused,36205 .unused,
22876 .unused,36206 .unused,
...@@ -22887,16 +36217,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22887,16 +36217,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22887 } },36217 } },
22888 }, .{36218 }, .{
22889 .required_features = .{ .avx, null, null, null },36219 .required_features = .{ .avx, null, null, null },
22890 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36220 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22891 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},36221 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22892 .patterns = &.{36222 .patterns = &.{
22893 .{ .src = .{ .to_mem, .none } },36223 .{ .src = .{ .to_mem, .none, .none } },
22894 },36224 },
22895 .call_frame = .{ .alignment = .@"16" },36225 .call_frame = .{ .alignment = .@"16" },
22896 .extra_temps = .{36226 .extra_temps = .{
22897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22898 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36228 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22899 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },36229 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
22900 .unused,36230 .unused,
22901 .unused,36231 .unused,
22902 .unused,36232 .unused,
...@@ -22907,25 +36237,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22907,25 +36237,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22907 .dst_temps = .{.mem},36237 .dst_temps = .{.mem},
22908 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22909 .each = .{ .once = &.{36239 .each = .{ .once = &.{
22910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36240 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22911 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },36241 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
22912 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36242 .{ ._, ._, .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, ._, ._ },
22914 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },36244 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22915 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22916 } },36246 } },
22917 }, .{36247 }, .{
22918 .required_features = .{ .sse2, null, null, null },36248 .required_features = .{ .sse2, null, null, null },
22919 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36249 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22920 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},36250 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22921 .patterns = &.{36251 .patterns = &.{
22922 .{ .src = .{ .to_mem, .none } },36252 .{ .src = .{ .to_mem, .none, .none } },
22923 },36253 },
22924 .call_frame = .{ .alignment = .@"16" },36254 .call_frame = .{ .alignment = .@"16" },
22925 .extra_temps = .{36255 .extra_temps = .{
22926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22927 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36257 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22928 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },36258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
22929 .unused,36259 .unused,
22930 .unused,36260 .unused,
22931 .unused,36261 .unused,
...@@ -22936,25 +36266,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22936,25 +36266,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22936 .dst_temps = .{.mem},36266 .dst_temps = .{.mem},
22937 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22938 .each = .{ .once = &.{36268 .each = .{ .once = &.{
22939 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36269 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22940 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },36270 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
22941 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22942 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },36272 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22943 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },36273 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22944 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22945 } },36275 } },
22946 }, .{36276 }, .{
22947 .required_features = .{ .sse, null, null, null },36277 .required_features = .{ .sse, null, null, null },
22948 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36278 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
22949 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},36279 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
22950 .patterns = &.{36280 .patterns = &.{
22951 .{ .src = .{ .to_mem, .none } },36281 .{ .src = .{ .to_mem, .none, .none } },
22952 },36282 },
22953 .call_frame = .{ .alignment = .@"16" },36283 .call_frame = .{ .alignment = .@"16" },
22954 .extra_temps = .{36284 .extra_temps = .{
22955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22956 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36286 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22957 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },36287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
22958 .unused,36288 .unused,
22959 .unused,36289 .unused,
22960 .unused,36290 .unused,
...@@ -22965,23 +36295,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22965,23 +36295,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22965 .dst_temps = .{.mem},36295 .dst_temps = .{.mem},
22966 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22967 .each = .{ .once = &.{36297 .each = .{ .once = &.{
22968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36298 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
22969 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },36299 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
22970 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36300 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22971 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },36301 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22972 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },36302 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22974 } },36304 } },
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 } },
22975 }, .{36355 }, .{
22976 .required_features = .{ .sse, null, null, null },36356 .required_features = .{ .sse, null, null, null },
22977 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },36357 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
22978 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},36358 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
22979 .patterns = &.{36359 .patterns = &.{
22980 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36360 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
22981 },36361 },
22982 .call_frame = .{ .alignment = .@"16" },36362 .call_frame = .{ .alignment = .@"16" },
22983 .extra_temps = .{36363 .extra_temps = .{
22984 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },36364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
22985 .unused,36365 .unused,
22986 .unused,36366 .unused,
22987 .unused,36367 .unused,
...@@ -22998,16 +36378,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22998,16 +36378,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22998 } },36378 } },
22999 }, .{36379 }, .{
23000 .required_features = .{ .avx, null, null, null },36380 .required_features = .{ .avx, null, null, null },
23001 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36381 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
23002 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},36382 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23003 .patterns = &.{36383 .patterns = &.{
23004 .{ .src = .{ .to_mem, .none } },36384 .{ .src = .{ .to_mem, .none, .none } },
23005 },36385 },
23006 .call_frame = .{ .alignment = .@"16" },36386 .call_frame = .{ .alignment = .@"16" },
23007 .extra_temps = .{36387 .extra_temps = .{
23008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23009 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36389 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
23010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },36390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
23011 .unused,36391 .unused,
23012 .unused,36392 .unused,
23013 .unused,36393 .unused,
...@@ -23018,25 +36398,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23018,25 +36398,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23018 .dst_temps = .{.mem},36398 .dst_temps = .{.mem},
23019 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36399 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23020 .each = .{ .once = &.{36400 .each = .{ .once = &.{
23021 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23022 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },36402 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
23023 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36403 .{ ._, ._, .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, ._, ._ },
23025 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },36405 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23027 } },36407 } },
23028 }, .{36408 }, .{
23029 .required_features = .{ .sse2, null, null, null },36409 .required_features = .{ .sse2, null, null, null },
23030 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36410 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
23031 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},36411 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23032 .patterns = &.{36412 .patterns = &.{
23033 .{ .src = .{ .to_mem, .none } },36413 .{ .src = .{ .to_mem, .none, .none } },
23034 },36414 },
23035 .call_frame = .{ .alignment = .@"16" },36415 .call_frame = .{ .alignment = .@"16" },
23036 .extra_temps = .{36416 .extra_temps = .{
23037 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23038 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36418 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
23039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },36419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
23040 .unused,36420 .unused,
23041 .unused,36421 .unused,
23042 .unused,36422 .unused,
...@@ -23047,25 +36427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23047,25 +36427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23047 .dst_temps = .{.mem},36427 .dst_temps = .{.mem},
23048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36428 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23049 .each = .{ .once = &.{36429 .each = .{ .once = &.{
23050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23051 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },36431 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
23052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36432 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23053 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },36433 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23054 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },36434 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23056 } },36436 } },
23057 }, .{36437 }, .{
23058 .required_features = .{ .sse, null, null, null },36438 .required_features = .{ .sse, null, null, null },
23059 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36439 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
23060 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},36440 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23061 .patterns = &.{36441 .patterns = &.{
23062 .{ .src = .{ .to_mem, .none } },36442 .{ .src = .{ .to_mem, .none, .none } },
23063 },36443 },
23064 .call_frame = .{ .alignment = .@"16" },36444 .call_frame = .{ .alignment = .@"16" },
23065 .extra_temps = .{36445 .extra_temps = .{
23066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36447 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
23068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },36448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
23069 .unused,36449 .unused,
23070 .unused,36450 .unused,
23071 .unused,36451 .unused,
...@@ -23076,50 +36456,105 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23076,50 +36456,105 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23076 .dst_temps = .{.mem},36456 .dst_temps = .{.mem},
23077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23078 .each = .{ .once = &.{36458 .each = .{ .once = &.{
23079 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36459 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23080 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },36460 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
36461 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
23081 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36462 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23082 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },36463 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23083 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },36464 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23085 } },36466 } },
23086 }, .{36467 }, .{
23087 .required_features = .{ .sse, null, null, null },36468 .required_features = .{ .avx, null, null, null },
23088 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },36469 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
23089 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},36470 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
23090 .patterns = &.{36471 .patterns = &.{
23091 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36472 .{ .src = .{ .to_mem, .none, .none } },
23092 },36473 },
23093 .call_frame = .{ .alignment = .@"16" },36474 .call_frame = .{ .size = 16, .alignment = .@"16" },
23094 .extra_temps = .{36475 .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,
23096 .unused,36479 .unused,
23097 .unused,36480 .unused,
23098 .unused,36481 .unused,
23099 .unused,36482 .unused,
23100 .unused,36483 .unused,
23101 .unused,36484 .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,
23102 .unused,36509 .unused,
23103 .unused,36510 .unused,
23104 },36511 },
23105 .dst_temps = .{.{ .reg = .st0 }},36512 .dst_temps = .{.{ .reg = .xmm0 }},
23106 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23107 .each = .{ .once = &.{36514 .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, ._, ._, ._ },
23109 } },36544 } },
23110 }, .{36545 }, .{
23111 .required_features = .{ .avx, null, null, null },36546 .required_features = .{ .avx, null, null, null },
23112 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36547 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
23113 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},36548 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23114 .patterns = &.{36549 .patterns = &.{
23115 .{ .src = .{ .to_mem, .none } },36550 .{ .src = .{ .to_mem, .none, .none } },
23116 },36551 },
23117 .call_frame = .{ .alignment = .@"16" },36552 .call_frame = .{ .size = 16, .alignment = .@"16" },
23118 .extra_temps = .{36553 .extra_temps = .{
23119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36555 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
23121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },36556 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
23122 .unused,36557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
23123 .unused,36558 .unused,
23124 .unused,36559 .unused,
23125 .unused,36560 .unused,
...@@ -23129,27 +36564,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23129,27 +36564,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23129 .dst_temps = .{.mem},36564 .dst_temps = .{.mem},
23130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36565 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23131 .each = .{ .once = &.{36566 .each = .{ .once = &.{
23132 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23133 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },36568 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23134 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36569 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
23135 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },36570 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
23136 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },36571 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23137 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },36572 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23138 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23139 } },36574 } },
23140 }, .{36575 }, .{
23141 .required_features = .{ .sse2, null, null, null },36576 .required_features = .{ .sse2, null, null, null },
23142 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36577 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
23143 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},36578 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23144 .patterns = &.{36579 .patterns = &.{
23145 .{ .src = .{ .to_mem, .none } },36580 .{ .src = .{ .to_mem, .none, .none } },
23146 },36581 },
23147 .call_frame = .{ .alignment = .@"16" },36582 .call_frame = .{ .size = 16, .alignment = .@"16" },
23148 .extra_temps = .{36583 .extra_temps = .{
23149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36585 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
23151 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },36586 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
23152 .unused,36587 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
23153 .unused,36588 .unused,
23154 .unused,36589 .unused,
23155 .unused,36590 .unused,
...@@ -23159,27 +36594,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23159,27 +36594,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23159 .dst_temps = .{.mem},36594 .dst_temps = .{.mem},
23160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23161 .each = .{ .once = &.{36596 .each = .{ .once = &.{
23162 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23163 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },36598 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36599 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
23165 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },36600 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
23166 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },36601 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23167 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },36602 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23169 } },36604 } },
23170 }, .{36605 }, .{
23171 .required_features = .{ .sse, null, null, null },36606 .required_features = .{ .sse, null, null, null },
23172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },36607 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
23173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},36608 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23174 .patterns = &.{36609 .patterns = &.{
23175 .{ .src = .{ .to_mem, .none } },36610 .{ .src = .{ .to_mem, .none, .none } },
23176 },36611 },
23177 .call_frame = .{ .alignment = .@"16" },36612 .call_frame = .{ .size = 16, .alignment = .@"16" },
23178 .extra_temps = .{36613 .extra_temps = .{
23179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23180 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36615 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
23181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },36616 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
23182 .unused,36617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
23183 .unused,36618 .unused,
23184 .unused,36619 .unused,
23185 .unused,36620 .unused,
...@@ -23189,11 +36624,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23189,11 +36624,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23189 .dst_temps = .{.mem},36624 .dst_temps = .{.mem},
23190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36625 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23191 .each = .{ .once = &.{36626 .each = .{ .once = &.{
23192 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },36627 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23193 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },36628 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36629 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
23195 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },36630 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
23196 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },36631 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23197 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },36632 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23198 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23199 } },36634 } },
...@@ -23208,138 +36643,76 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23208,138 +36643,76 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23208 };36643 };
23209 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);36644 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
23210 },36645 },
23211 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {36646 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
23212 const ty_op = air_datas[@intFromEnum(inst)].ty_op;36647 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);
23213 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});36650 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
23214 var res: [1]Temp = undefined;36651 var res: [1]Temp = undefined;
23215 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{36652 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
23216 .required_features = .{ .f16c, null, null, null },36653 .dst_constraints = .{.{ .int = .dword }},
23217 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23218 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23219 .patterns = &.{36654 .patterns = &.{
23220 .{ .src = .{ .to_sse, .none } },36655 .{ .src = .{ .mut_mem, .none, .none } },
36656 .{ .src = .{ .to_mut_gpr, .none, .none } },
23221 },36657 },
23222 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36658 .dst_temps = .{.{ .ref = .src0 }},
23223 .each = .{ .once = &.{36659 .each = .{ .once = &.{} },
23224 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23225 } },
23226 }, .{36660 }, .{
23227 .required_features = .{ .f16c, null, null, null },36661 .required_features = .{ .@"64bit", null, null, null },
23228 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },36662 .dst_constraints = .{.{ .int = .qword }},
23229 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
23230 .patterns = &.{36663 .patterns = &.{
23231 .{ .src = .{ .mem, .none } },36664 .{ .src = .{ .mut_mem, .none, .none } },
23232 .{ .src = .{ .to_sse, .none } },36665 .{ .src = .{ .to_mut_gpr, .none, .none } },
23233 },36666 },
23234 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36667 .dst_temps = .{.{ .ref = .src0 }},
23235 .each = .{ .once = &.{36668 .each = .{ .once = &.{} },
23236 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23237 } },
23238 }, .{36669 }, .{
23239 .required_features = .{ .f16c, null, null, null },36670 .dst_constraints = .{.{ .int = .byte }},
23240 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23241 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
23242 .patterns = &.{36671 .patterns = &.{
23243 .{ .src = .{ .mem, .none } },36672 .{ .src = .{ .to_mem, .none, .none } },
23244 .{ .src = .{ .to_sse, .none } },
23245 },36673 },
23246 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36674 .dst_temps = .{.{ .rc = .general_purpose }},
23247 .each = .{ .once = &.{36675 .each = .{ .once = &.{
23248 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },36676 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
23249 } },36677 } },
23250 }, .{36678 }, .{
23251 .required_features = .{ .sse, null, null, null },36679 .dst_constraints = .{.{ .int = .word }},
23252 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23253 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23254 .patterns = &.{36680 .patterns = &.{
23255 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36681 .{ .src = .{ .to_mem, .none, .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,
23268 },36682 },
23269 .dst_temps = .{.{ .ref = .src0 }},36683 .dst_temps = .{.{ .rc = .general_purpose }},
23270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23271 .each = .{ .once = &.{36684 .each = .{ .once = &.{
23272 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },36685 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
23273 } },36686 } },
23274 }, .{36687 }, .{
23275 .required_features = .{ .f16c, null, null, null },36688 .dst_constraints = .{.{ .int = .dword }},
23276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23277 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
23278 .patterns = &.{36689 .patterns = &.{
23279 .{ .src = .{ .to_mem, .none } },36690 .{ .src = .{ .to_mem, .none, .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,
23291 },36691 },
23292 .dst_temps = .{.mem},36692 .dst_temps = .{.{ .rc = .general_purpose }},
23293 .clobbers = .{ .eflags = true },
23294 .each = .{ .once = &.{36693 .each = .{ .once = &.{
23295 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36694 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
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", ._, ._, ._ },
23300 } },36695 } },
23301 }, .{36696 }, .{
23302 .required_features = .{ .avx, null, null, null },36697 .required_features = .{ .@"64bit", null, null, null },
23303 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36698 .dst_constraints = .{.{ .int = .qword }},
23304 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23305 .patterns = &.{36699 .patterns = &.{
23306 .{ .src = .{ .to_mem, .none } },36700 .{ .src = .{ .to_mem, .none, .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,
23319 },36701 },
23320 .dst_temps = .{.mem},36702 .dst_temps = .{.{ .rc = .general_purpose }},
23321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23322 .each = .{ .once = &.{36703 .each = .{ .once = &.{
23323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36704 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
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", ._, ._, ._ },
23330 } },36705 } },
23331 }, .{36706 }, .{
23332 .required_features = .{ .sse2, null, null, null },36707 .required_features = .{ .@"64bit", null, null, null },
23333 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36708 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
23334 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23335 .patterns = &.{36709 .patterns = &.{
23336 .{ .src = .{ .to_mem, .none } },36710 .{ .src = .{ .to_mem, .none, .none } },
23337 },36711 },
23338 .call_frame = .{ .alignment = .@"16" },
23339 .extra_temps = .{36712 .extra_temps = .{
23340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36713 .{ .type = .usize, .kind = .{ .reg = .rsi } },
23341 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36714 .{ .type = .usize, .kind = .{ .reg = .rdi } },
23342 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },36715 .{ .type = .u32, .kind = .{ .reg = .ecx } },
23343 .unused,36716 .unused,
23344 .unused,36717 .unused,
23345 .unused,36718 .unused,
...@@ -23348,180 +36721,109 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23348,180 +36721,109 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23348 .unused,36721 .unused,
23349 },36722 },
23350 .dst_temps = .{.mem},36723 .dst_temps = .{.mem},
23351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23352 .each = .{ .once = &.{36724 .each = .{ .once = &.{
23353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36725 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
23354 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },36726 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
23355 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },36727 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
23356 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36728 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
23357 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23358 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23360 } },36729 } },
23361 }, .{36730 }, .{
23362 .required_features = .{ .sse, null, null, null },36731 .required_features = .{ .sse, null, null, null },
23363 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36732 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
23364 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},36733 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
23365 .patterns = &.{36734 .patterns = &.{
23366 .{ .src = .{ .to_mem, .none } },36735 .{ .src = .{ .mut_mem, .none, .none } },
36736 .{ .src = .{ .to_mut_sse, .none, .none } },
23367 },36737 },
23368 .call_frame = .{ .alignment = .@"16" },36738 .dst_temps = .{.{ .ref = .src0 }},
23369 .extra_temps = .{36739 .each = .{ .once = &.{} },
23370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36740 }, .{
23371 .{ .type = .f16, .kind = .{ .reg = .ax } },36741 .required_features = .{ .avx, null, null, null },
23372 .{ .type = .f32, .kind = .mem },36742 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any },
23373 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36743 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
23374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },36744 .patterns = &.{
23375 .unused,36745 .{ .src = .{ .mut_mem, .none, .none } },
23376 .unused,36746 .{ .src = .{ .to_mut_sse, .none, .none } },
23377 .unused,
23378 .unused,
23379 },36747 },
23380 .dst_temps = .{.mem},36748 .dst_temps = .{.{ .ref = .src0 }},
23381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36749 .each = .{ .once = &.{} },
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 } },
23392 }, .{36750 }, .{
23393 .required_features = .{ .f16c, null, null, null },36751 .required_features = .{ .avx, null, null, null },
23394 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },36752 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
23395 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},36753 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
23396 .patterns = &.{36754 .patterns = &.{
23397 .{ .src = .{ .to_sse, .none } },36755 .{ .src = .{ .to_sse, .none, .none } },
23398 },36756 },
23399 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36757 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23400 .each = .{ .once = &.{36758 .each = .{ .once = &.{
23401 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },36759 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
23402 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
23403 } },36760 } },
23404 }, .{36761 }, .{
23405 .required_features = .{ .f16c, null, null, null },36762 .required_features = .{ .avx, null, null, null },
23406 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any },36763 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
23407 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},36764 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
23408 .patterns = &.{36765 .patterns = &.{
23409 .{ .src = .{ .mem, .none } },36766 .{ .src = .{ .to_sse, .none, .none } },
23410 .{ .src = .{ .to_sse, .none } },
23411 },36767 },
23412 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36768 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23413 .each = .{ .once = &.{36769 .each = .{ .once = &.{
23414 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },36770 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
23415 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
23416 } },36771 } },
23417 }, .{36772 }, .{
23418 .required_features = .{ .f16c, null, null, null },36773 .required_features = .{ .sse2, null, null, null },
23419 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },36774 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
23420 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},36775 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
23421 .patterns = &.{36776 .patterns = &.{
23422 .{ .src = .{ .mem, .none } },36777 .{ .src = .{ .to_mut_sse, .none, .none } },
23423 .{ .src = .{ .to_sse, .none } },
23424 },36778 },
23425 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},36779 .dst_temps = .{.{ .ref = .src0 }},
23426 .each = .{ .once = &.{36780 .each = .{ .once = &.{
23427 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },36781 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
23428 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
23429 } },36782 } },
23430 }, .{36783 }, .{
23431 .required_features = .{ .f16c, null, null, null },36784 .required_features = .{ .sse2, null, null, null },
23432 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },36785 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
23433 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},36786 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
23434 .patterns = &.{36787 .patterns = &.{
23435 .{ .src = .{ .mem, .none } },36788 .{ .src = .{ .to_mut_sse, .none, .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,
23448 },36789 },
23449 .dst_temps = .{.mem},36790 .dst_temps = .{.{ .ref = .src0 }},
23450 .each = .{ .once = &.{36791 .each = .{ .once = &.{
23451 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },36792 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
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, ._, ._ },
23457 } },36793 } },
23458 }, .{36794 }, .{
23459 .required_features = .{ .sse, null, null, null },36795 .required_features = .{ .avx2, null, null, null },
23460 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },36796 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
23461 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},36797 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
23462 .patterns = &.{36798 .patterns = &.{
23463 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36799 .{ .src = .{ .to_sse, .none, .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,
23476 },36800 },
23477 .dst_temps = .{.{ .ref = .src0 }},36801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23479 .each = .{ .once = &.{36802 .each = .{ .once = &.{
23480 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },36803 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
23481 } },36804 } },
23482 }, .{36805 }, .{
23483 .required_features = .{ .f16c, null, null, null },36806 .required_features = .{ .avx2, null, null, null },
23484 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },36807 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
23485 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},36808 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
23486 .patterns = &.{36809 .patterns = &.{
23487 .{ .src = .{ .to_mem, .none } },36810 .{ .src = .{ .to_sse, .none, .none } },
23488 },36811 },
23489 .extra_temps = .{36812 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
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 },
23502 .each = .{ .once = &.{36813 .each = .{ .once = &.{
23503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36814 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },
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", ._, ._, ._ },
23512 } },36815 } },
23513 }, .{36816 }, .{
23514 .required_features = .{ .avx, null, null, null },36817 .required_features = .{ .slow_incdec, null, null, null },
23515 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36818 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
23516 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},36819 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23517 .patterns = &.{36820 .patterns = &.{
23518 .{ .src = .{ .to_mem, .none } },36821 .{ .src = .{ .to_mem, .none, .none } },
23519 },36822 },
23520 .call_frame = .{ .alignment = .@"16" },
23521 .extra_temps = .{36823 .extra_temps = .{
23522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23523 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36825 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },36826 .unused,
23525 .unused,36827 .unused,
23526 .unused,36828 .unused,
23527 .unused,36829 .unused,
...@@ -23530,28 +36832,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23530,28 +36832,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23530 .unused,36832 .unused,
23531 },36833 },
23532 .dst_temps = .{.mem},36834 .dst_temps = .{.mem},
23533 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36835 .clobbers = .{ .eflags = true },
23534 .each = .{ .once = &.{36836 .each = .{ .once = &.{
23535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36837 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23536 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },36838 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23537 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },36839 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23538 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36840 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23539 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23540 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23542 } },36842 } },
23543 }, .{36843 }, .{
23544 .required_features = .{ .sse2, null, null, null },36844 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
23545 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36845 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23546 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23547 .patterns = &.{36846 .patterns = &.{
23548 .{ .src = .{ .to_mem, .none } },36847 .{ .src = .{ .to_mem, .none, .none } },
23549 },36848 },
23550 .call_frame = .{ .alignment = .@"16" },
23551 .extra_temps = .{36849 .extra_temps = .{
23552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36851 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },36852 .unused,
23555 .unused,36853 .unused,
23556 .unused,36854 .unused,
23557 .unused,36855 .unused,
...@@ -23560,108 +36858,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23560,108 +36858,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23560 .unused,36858 .unused,
23561 },36859 },
23562 .dst_temps = .{.mem},36860 .dst_temps = .{.mem},
23563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36861 .clobbers = .{ .eflags = true },
23564 .each = .{ .once = &.{36862 .each = .{ .once = &.{
23565 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36863 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23566 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },36864 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23567 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },36865 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23568 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36866 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23569 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },36867 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23570 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23572 } },36868 } },
23573 }, .{36869 }, .{
23574 .required_features = .{ .sse, null, null, null },36870 .required_features = .{ .avx, null, null, null },
23575 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36871 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23576 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},36872 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
23577 .patterns = &.{36873 .patterns = &.{
23578 .{ .src = .{ .to_mem, .none } },36874 .{ .src = .{ .to_sse, .none, .none } },
23579 },36875 },
23580 .call_frame = .{ .alignment = .@"16" },36876 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23581 .extra_temps = .{36877 .each = .{ .once = &.{
23582 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36878 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
23583 .{ .type = .f16, .kind = .{ .reg = .ax } },36879 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
23584 .{ .type = .f32, .kind = .mem },36880 } },
23585 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36881 }, .{
23586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },36882 .required_features = .{ .avx, null, null, null },
23587 .unused,36883 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23588 .unused,36884 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
23589 .unused,36885 .patterns = &.{
23590 .unused,36886 .{ .src = .{ .to_sse, .none, .none } },
23591 },36887 },
23592 .dst_temps = .{.mem},36888 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23593 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23594 .each = .{ .once = &.{36889 .each = .{ .once = &.{
23595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36890 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
23596 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },36891 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
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", ._, ._, ._ },
23603 } },36892 } },
23604 }, .{36893 }, .{
23605 .required_features = .{ .f16c, .x87, null, null },36894 .required_features = .{ .sse2, null, null, null },
23606 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },36895 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23607 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},36896 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
23608 .patterns = &.{36897 .patterns = &.{
23609 .{ .src = .{ .to_sse, .none } },36898 .{ .src = .{ .to_mut_sse, .none, .none } },
23610 },36899 },
23611 .extra_temps = .{36900 .dst_temps = .{.{ .ref = .src0 }},
23612 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },36901 .each = .{ .once = &.{
23613 .{ .type = .f32, .kind = .mem },36902 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
23614 .{ .type = .f80, .kind = .{ .reg = .st7 } },36903 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
23615 .unused,36904 } },
23616 .unused,36905 }, .{
23617 .unused,36906 .required_features = .{ .sse4_1, null, null, null },
23618 .unused,36907 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23619 .unused,36908 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
23620 .unused,36909 .patterns = &.{
36910 .{ .src = .{ .to_mut_sse, .none, .none } },
23621 },36911 },
23622 .dst_temps = .{.{ .rc = .x87 }},36912 .dst_temps = .{.{ .ref = .src0 }},
23623 .each = .{ .once = &.{36913 .each = .{ .once = &.{
23624 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },36914 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
23625 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },36915 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
23626 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
23627 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
23628 } },36916 } },
23629 }, .{36917 }, .{
23630 .required_features = .{ .sse, null, null, null },36918 .required_features = .{ .avx2, null, null, null },
23631 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },36919 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
23632 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},36920 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
23633 .patterns = &.{36921 .patterns = &.{
23634 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },36922 .{ .src = .{ .to_sse, .none, .none } },
23635 },36923 },
23636 .call_frame = .{ .alignment = .@"16" },36924 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23637 .extra_temps = .{36925 .each = .{ .once = &.{
23638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },36926 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
23639 .unused,36927 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
23640 .unused,36928 } },
23641 .unused,36929 }, .{
23642 .unused,36930 .required_features = .{ .avx2, null, null, null },
23643 .unused,36931 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
23644 .unused,36932 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
23645 .unused,36933 .patterns = &.{
23646 .unused,36934 .{ .src = .{ .to_sse, .none, .none } },
23647 },36935 },
23648 .dst_temps = .{.{ .reg = .st0 }},36936 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23649 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23650 .each = .{ .once = &.{36937 .each = .{ .once = &.{
23651 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },36938 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
36939 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
23652 } },36940 } },
23653 }, .{36941 }, .{
23654 .required_features = .{ .avx, null, null, null },36942 .required_features = .{ .slow_incdec, null, null, null },
23655 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36943 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23656 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},36944 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23657 .patterns = &.{36945 .patterns = &.{
23658 .{ .src = .{ .to_mem, .none } },36946 .{ .src = .{ .to_mem, .none, .none } },
23659 },36947 },
23660 .call_frame = .{ .alignment = .@"16" },
23661 .extra_temps = .{36948 .extra_temps = .{
23662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23663 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36950 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },36951 .unused,
23665 .unused,36952 .unused,
23666 .unused,36953 .unused,
23667 .unused,36954 .unused,
...@@ -23670,29 +36957,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23670,29 +36957,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23670 .unused,36957 .unused,
23671 },36958 },
23672 .dst_temps = .{.mem},36959 .dst_temps = .{.mem},
23673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36960 .clobbers = .{ .eflags = true },
23674 .each = .{ .once = &.{36961 .each = .{ .once = &.{
23675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23676 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },36963 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23677 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },36964 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36965 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23679 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23680 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23681 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },36966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23683 } },36967 } },
23684 }, .{36968 }, .{
23685 .required_features = .{ .sse2, null, null, null },36969 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23686 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36970 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23687 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23688 .patterns = &.{36971 .patterns = &.{
23689 .{ .src = .{ .to_mem, .none } },36972 .{ .src = .{ .to_mem, .none, .none } },
23690 },36973 },
23691 .call_frame = .{ .alignment = .@"16" },
23692 .extra_temps = .{36974 .extra_temps = .{
23693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23694 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36976 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23695 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },36977 .unused,
23696 .unused,36978 .unused,
23697 .unused,36979 .unused,
23698 .unused,36980 .unused,
...@@ -23701,60 +36983,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23701,60 +36983,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23701 .unused,36983 .unused,
23702 },36984 },
23703 .dst_temps = .{.mem},36985 .dst_temps = .{.mem},
23704 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36986 .clobbers = .{ .eflags = true },
23705 .each = .{ .once = &.{36987 .each = .{ .once = &.{
23706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },36988 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23707 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },36989 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
23708 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },36990 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23709 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },36991 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23710 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },36992 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23711 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23712 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23714 } },36993 } },
23715 }, .{36994 }, .{
23716 .required_features = .{ .sse, null, null, null },36995 .required_features = .{ .slow_incdec, null, null, null },
23717 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },36996 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23718 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},36997 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23719 .patterns = &.{36998 .patterns = &.{
23720 .{ .src = .{ .to_mem, .none } },36999 .{ .src = .{ .to_mem, .none, .none } },
23721 },37000 },
23722 .call_frame = .{ .alignment = .@"16" },
23723 .extra_temps = .{37001 .extra_temps = .{
23724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23725 .{ .type = .f16, .kind = .{ .reg = .ax } },37003 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23726 .{ .type = .f32, .kind = .mem },37004 .unused,
23727 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37005 .unused,
23728 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },37006 .unused,
23729 .unused,37007 .unused,
23730 .unused,37008 .unused,
23731 .unused,37009 .unused,
23732 .unused,37010 .unused,
23733 },37011 },
23734 .dst_temps = .{.mem},37012 .dst_temps = .{.mem},
23735 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37013 .clobbers = .{ .eflags = true },
23736 .each = .{ .once = &.{37014 .each = .{ .once = &.{
23737 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37015 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23738 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },37016 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
23739 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },37017 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
23740 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },37018 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23741 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23742 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23743 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23744 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23745 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23746 } },37020 } },
23747 }, .{37021 }, .{
23748 .required_features = .{ .sse, null, null, null },37022 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23749 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },37023 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23750 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
23751 .patterns = &.{37024 .patterns = &.{
23752 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },37025 .{ .src = .{ .to_mem, .none, .none } },
23753 },37026 },
23754 .call_frame = .{ .alignment = .@"16" },
23755 .extra_temps = .{37027 .extra_temps = .{
23756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },37028 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23757 .unused,37029 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23758 .unused,37030 .unused,
23759 .unused,37031 .unused,
23760 .unused,37032 .unused,
...@@ -23763,23 +37035,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23763,23 +37035,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23763 .unused,37035 .unused,
23764 .unused,37036 .unused,
23765 },37037 },
23766 .dst_temps = .{.{ .ref = .src0 }},37038 .dst_temps = .{.mem},
23767 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37039 .clobbers = .{ .eflags = true },
23768 .each = .{ .once = &.{37040 .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", ._, ._, ._ },
23770 } },37046 } },
23771 }, .{37047 }, .{
23772 .required_features = .{ .avx, null, null, null },37048 .required_features = .{ .slow_incdec, null, null, null },
23773 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },37049 .src_constraints = .{ .any_scalar_int, .any, .any },
23774 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37050 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23775 .patterns = &.{37051 .patterns = &.{
23776 .{ .src = .{ .to_mem, .none } },37052 .{ .src = .{ .to_mem, .none, .none } },
23777 },37053 },
23778 .call_frame = .{ .alignment = .@"16" },
23779 .extra_temps = .{37054 .extra_temps = .{
23780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23781 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },37057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23783 .unused,37058 .unused,
23784 .unused,37059 .unused,
23785 .unused,37060 .unused,
...@@ -23788,28 +37063,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23788,28 +37063,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23788 .unused,37063 .unused,
23789 },37064 },
23790 .dst_temps = .{.mem},37065 .dst_temps = .{.mem},
23791 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37066 .clobbers = .{ .eflags = true },
23792 .each = .{ .once = &.{37067 .each = .{ .once = &.{
23793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37068 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23794 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },37069 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23795 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },37070 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
23796 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37071 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
23797 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37072 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
23798 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },37073 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
23799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23800 } },37075 } },
23801 }, .{37076 }, .{
23802 .required_features = .{ .sse2, null, null, null },37077 .src_constraints = .{ .any_scalar_int, .any, .any },
23803 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },37078 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
23804 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23805 .patterns = &.{37079 .patterns = &.{
23806 .{ .src = .{ .to_mem, .none } },37080 .{ .src = .{ .to_mem, .none, .none } },
23807 },37081 },
23808 .call_frame = .{ .alignment = .@"16" },
23809 .extra_temps = .{37082 .extra_temps = .{
23810 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23811 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
23812 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },37085 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
23813 .unused,37086 .unused,
23814 .unused,37087 .unused,
23815 .unused,37088 .unused,
...@@ -23818,152 +37091,111 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23818,152 +37091,111 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23818 .unused,37091 .unused,
23819 },37092 },
23820 .dst_temps = .{.mem},37093 .dst_temps = .{.mem},
23821 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37094 .clobbers = .{ .eflags = true },
23822 .each = .{ .once = &.{37095 .each = .{ .once = &.{
23823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37096 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23824 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },37097 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
23825 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },37098 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
23826 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37099 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
23827 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37100 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
23828 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },37101 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
23829 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37102 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
23830 } },37103 } },
23831 }, .{37104 }, .{
23832 .required_features = .{ .sse, null, null, null },37105 .required_features = .{ .sse, null, null, null },
23833 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },37106 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
23834 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37107 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
23835 .patterns = &.{37108 .patterns = &.{
23836 .{ .src = .{ .to_mem, .none } },37109 .{ .src = .{ .mut_mem, .none, .none } },
37110 .{ .src = .{ .to_mut_sse, .none, .none } },
23837 },37111 },
23838 .call_frame = .{ .alignment = .@"16" },37112 .dst_temps = .{.{ .ref = .src0 }},
23839 .extra_temps = .{37113 .each = .{ .once = &.{} },
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 } },
23862 }, .{37114 }, .{
23863 .required_features = .{ .avx, null, null, null },37115 .required_features = .{ .avx, null, null, null },
23864 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37116 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
23865 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},37117 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
23866 .patterns = &.{37118 .patterns = &.{
23867 .{ .src = .{ .mem, .none } },37119 .{ .src = .{ .mut_mem, .none, .none } },
37120 .{ .src = .{ .to_mut_sse, .none, .none } },
23868 },37121 },
23869 .dst_temps = .{.{ .rc = .sse }},37122 .dst_temps = .{.{ .ref = .src0 }},
23870 .each = .{ .once = &.{37123 .each = .{ .once = &.{} },
23871 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
23872 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
23873 } },
23874 }, .{37124 }, .{
23875 .required_features = .{ .avx, null, null, null },37125 .required_features = .{ .avx, null, null, null },
23876 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37126 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23877 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},37127 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
23878 .patterns = &.{37128 .patterns = &.{
23879 .{ .src = .{ .to_sse, .none } },37129 .{ .src = .{ .to_sse, .none, .none } },
23880 },37130 },
23881 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37131 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23882 .each = .{ .once = &.{37132 .each = .{ .once = &.{
23883 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },37133 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
23884 } },37134 } },
23885 }, .{37135 }, .{
23886 .required_features = .{ .sse2, null, null, null },37136 .required_features = .{ .avx, null, null, null },
23887 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37137 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23888 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},37138 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
23889 .patterns = &.{37139 .patterns = &.{
23890 .{ .src = .{ .mem, .none } },37140 .{ .src = .{ .to_sse, .none, .none } },
23891 .{ .src = .{ .to_sse, .none } },
23892 },37141 },
23893 .dst_temps = .{.{ .rc = .sse }},37142 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23894 .each = .{ .once = &.{37143 .each = .{ .once = &.{
23895 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },37144 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
23896 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
23897 } },37145 } },
23898 }, .{37146 }, .{
23899 .required_features = .{ .x87, null, null, null },37147 .required_features = .{ .sse2, null, null, null },
23900 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37148 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23901 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},37149 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
23902 .patterns = &.{37150 .patterns = &.{
23903 .{ .src = .{ .to_mem, .none } },37151 .{ .src = .{ .to_mut_sse, .none, .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,
23915 },37152 },
23916 .dst_temps = .{.mem},37153 .dst_temps = .{.{ .ref = .src0 }},
23917 .each = .{ .once = &.{37154 .each = .{ .once = &.{
23918 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },37155 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
23919 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
23920 } },37156 } },
23921 }, .{37157 }, .{
23922 .required_features = .{ .avx, null, null, null },37158 .required_features = .{ .sse4_1, null, null, null },
23923 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },37159 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
23924 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},37160 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
23925 .patterns = &.{37161 .patterns = &.{
23926 .{ .src = .{ .mem, .none } },37162 .{ .src = .{ .to_mut_sse, .none, .none } },
23927 .{ .src = .{ .to_sse, .none } },
23928 },37163 },
23929 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37164 .dst_temps = .{.{ .ref = .src0 }},
23930 .each = .{ .once = &.{37165 .each = .{ .once = &.{
23931 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },37166 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
23932 } },37167 } },
23933 }, .{37168 }, .{
23934 .required_features = .{ .sse2, null, null, null },37169 .required_features = .{ .avx2, null, null, null },
23935 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },37170 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
23936 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},37171 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
23937 .patterns = &.{37172 .patterns = &.{
23938 .{ .src = .{ .mem, .none } },37173 .{ .src = .{ .to_sse, .none, .none } },
23939 .{ .src = .{ .to_sse, .none } },
23940 },37174 },
23941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37175 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23942 .each = .{ .once = &.{37176 .each = .{ .once = &.{
23943 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },37177 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
23944 } },37178 } },
23945 }, .{37179 }, .{
23946 .required_features = .{ .avx, null, null, null },37180 .required_features = .{ .avx2, null, null, null },
23947 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },37181 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
23948 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},37182 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
23949 .patterns = &.{37183 .patterns = &.{
23950 .{ .src = .{ .mem, .none } },37184 .{ .src = .{ .to_sse, .none, .none } },
23951 .{ .src = .{ .to_sse, .none } },
23952 },37185 },
23953 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37186 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23954 .each = .{ .once = &.{37187 .each = .{ .once = &.{
23955 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },37188 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
23956 } },37189 } },
23957 }, .{37190 }, .{
23958 .required_features = .{ .avx, null, null, null },37191 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
23959 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },37192 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
23960 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
23961 .patterns = &.{37193 .patterns = &.{
23962 .{ .src = .{ .to_mem, .none } },37194 .{ .src = .{ .to_mem, .none, .none } },
23963 },37195 },
23964 .extra_temps = .{37196 .extra_temps = .{
23965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23966 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },37198 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
23967 .unused,37199 .unused,
23968 .unused,37200 .unused,
23969 .unused,37201 .unused,
...@@ -23975,22 +37207,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23975,22 +37207,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23975 .dst_temps = .{.mem},37207 .dst_temps = .{.mem},
23976 .clobbers = .{ .eflags = true },37208 .clobbers = .{ .eflags = true },
23977 .each = .{ .once = &.{37209 .each = .{ .once = &.{
23978 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23979 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },37211 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23980 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },37212 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
23981 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },37213 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23983 } },37215 } },
23984 }, .{37216 }, .{
23985 .required_features = .{ .sse2, null, null, null },37217 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
23986 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any },37218 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
23987 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
23988 .patterns = &.{37219 .patterns = &.{
23989 .{ .src = .{ .to_mem, .none } },37220 .{ .src = .{ .to_mem, .none, .none } },
23990 },37221 },
23991 .extra_temps = .{37222 .extra_temps = .{
23992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23993 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },37224 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
23994 .unused,37225 .unused,
23995 .unused,37226 .unused,
23996 .unused,37227 .unused,
...@@ -24002,22 +37233,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24002,22 +37233,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24002 .dst_temps = .{.mem},37233 .dst_temps = .{.mem},
24003 .clobbers = .{ .eflags = true },37234 .clobbers = .{ .eflags = true },
24004 .each = .{ .once = &.{37235 .each = .{ .once = &.{
24005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37236 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24006 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },37237 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24007 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37238 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24008 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },37239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24010 } },37241 } },
24011 }, .{37242 }, .{
24012 .required_features = .{ .x87, null, null, null },37243 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
24013 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },37244 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
24014 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
24015 .patterns = &.{37245 .patterns = &.{
24016 .{ .src = .{ .to_mem, .none } },37246 .{ .src = .{ .to_mem, .none, .none } },
24017 },37247 },
24018 .extra_temps = .{37248 .extra_temps = .{
24019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24020 .{ .type = .f80, .kind = .{ .reg = .st7 } },37250 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24021 .unused,37251 .unused,
24022 .unused,37252 .unused,
24023 .unused,37253 .unused,
...@@ -24029,46 +37259,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24029,46 +37259,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24029 .dst_temps = .{.mem},37259 .dst_temps = .{.mem},
24030 .clobbers = .{ .eflags = true },37260 .clobbers = .{ .eflags = true },
24031 .each = .{ .once = &.{37261 .each = .{ .once = &.{
24032 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37262 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24033 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },37263 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24034 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },37264 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
24035 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },37265 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24037 } },37267 } },
24038 }, .{37268 }, .{
24039 .required_features = .{ .x87, null, null, null },37269 .src_constraints = .{ .any_scalar_int, .any, .any },
24040 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37270 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
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 } }},
24065 .patterns = &.{37271 .patterns = &.{
24066 .{ .src = .{ .to_mem, .none } },37272 .{ .src = .{ .to_mem, .none, .none } },
24067 },37273 },
24068 .extra_temps = .{37274 .extra_temps = .{
24069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24070 .{ .type = .f80, .kind = .{ .reg = .st7 } },37276 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24071 .unused,37277 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24072 .unused,37278 .unused,
24073 .unused,37279 .unused,
24074 .unused,37280 .unused,
...@@ -24079,106 +37285,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24079,106 +37285,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24079 .dst_temps = .{.mem},37285 .dst_temps = .{.mem},
24080 .clobbers = .{ .eflags = true },37286 .clobbers = .{ .eflags = true },
24081 .each = .{ .once = &.{37287 .each = .{ .once = &.{
24082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37288 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24083 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },37289 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24084 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },37290 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24085 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },37291 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
37292 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
37293 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
24086 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24087 } },37295 } },
24088 }, .{37296 }, .{
24089 .required_features = .{ .sse, null, null, null },37297 .required_features = .{ .sse, null, null, null },
24090 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },37298 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
24091 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},37299 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
24092 .patterns = &.{37300 .patterns = &.{
24093 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },37301 .{ .src = .{ .mut_mem, .none, .none } },
24094 },37302 .{ .src = .{ .to_mut_sse, .none, .none } },
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,
24106 },37303 },
24107 .dst_temps = .{.{ .ref = .src0 }},37304 .dst_temps = .{.{ .ref = .src0 }},
24108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37305 .each = .{ .once = &.{} },
24109 .each = .{ .once = &.{
24110 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
24111 } },
24112 }, .{37306 }, .{
24113 .required_features = .{ .avx, null, null, null },37307 .required_features = .{ .avx, null, null, null },
24114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },37308 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
24115 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37309 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
24116 .patterns = &.{37310 .patterns = &.{
24117 .{ .src = .{ .to_mem, .none } },37311 .{ .src = .{ .mut_mem, .none, .none } },
37312 .{ .src = .{ .to_mut_sse, .none, .none } },
24118 },37313 },
24119 .call_frame = .{ .alignment = .@"16" },37314 .dst_temps = .{.{ .ref = .src0 }},
24120 .extra_temps = .{37315 .each = .{ .once = &.{} },
24121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37316 }, .{
24122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },37317 .required_features = .{ .avx, null, null, null },
24123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },37318 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
24124 .unused,37319 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
24125 .unused,37320 .patterns = &.{
24126 .unused,37321 .{ .src = .{ .mem, .none, .none } },
24127 .unused,37322 .{ .src = .{ .to_sse, .none, .none } },
24128 .unused,
24129 .unused,
24130 },37323 },
24131 .dst_temps = .{.mem},37324 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24133 .each = .{ .once = &.{37325 .each = .{ .once = &.{
24134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37326 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
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", ._, ._, ._ },
24140 } },37327 } },
24141 }, .{37328 }, .{
24142 .required_features = .{ .sse2, null, null, null },37329 .required_features = .{ .sse2, null, null, null },
24143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },37330 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any },
24144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37331 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
24145 .patterns = &.{37332 .patterns = &.{
24146 .{ .src = .{ .to_mem, .none } },37333 .{ .src = .{ .mem, .none, .none } },
24147 },37334 .{ .src = .{ .to_sse, .none, .none } },
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,
24159 },37335 },
24160 .dst_temps = .{.mem},37336 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24162 .each = .{ .once = &.{37337 .each = .{ .once = &.{
24163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37338 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
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", ._, ._, ._ },
24169 } },37339 } },
24170 }, .{37340 }, .{
24171 .required_features = .{ .sse, null, null, null },37341 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
24172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },37342 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
24173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24174 .patterns = &.{37343 .patterns = &.{
24175 .{ .src = .{ .to_mem, .none } },37344 .{ .src = .{ .to_mem, .none, .none } },
24176 },37345 },
24177 .call_frame = .{ .alignment = .@"16" },
24178 .extra_temps = .{37346 .extra_temps = .{
24179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24180 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },37348 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },37349 .unused,
24182 .unused,37350 .unused,
24183 .unused,37351 .unused,
24184 .unused,37352 .unused,
...@@ -24187,25 +37355,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24187,25 +37355,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24187 .unused,37355 .unused,
24188 },37356 },
24189 .dst_temps = .{.mem},37357 .dst_temps = .{.mem},
24190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37358 .clobbers = .{ .eflags = true },
24191 .each = .{ .once = &.{37359 .each = .{ .once = &.{
24192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37360 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24193 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },37361 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37362 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
24195 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },37363 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24198 } },37365 } },
24199 }, .{37366 }, .{
24200 .required_features = .{ .x87, null, null, null },37367 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
24201 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },37368 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
24202 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
24203 .patterns = &.{37369 .patterns = &.{
24204 .{ .src = .{ .to_mem, .none } },37370 .{ .src = .{ .to_mem, .none, .none } },
24205 },37371 },
24206 .extra_temps = .{37372 .extra_temps = .{
24207 .{ .type = .f80, .kind = .{ .reg = .st7 } },37373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24208 .unused,37374 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24209 .unused,37375 .unused,
24210 .unused,37376 .unused,
24211 .unused,37377 .unused,
...@@ -24215,20 +37381,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24215,20 +37381,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24215 .unused,37381 .unused,
24216 },37382 },
24217 .dst_temps = .{.mem},37383 .dst_temps = .{.mem},
37384 .clobbers = .{ .eflags = true },
24218 .each = .{ .once = &.{37385 .each = .{ .once = &.{
24219 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },37386 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24220 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },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", ._, ._, ._ },
24221 } },37391 } },
24222 }, .{37392 }, .{
24223 .required_features = .{ .x87, null, null, null },37393 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
24224 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },37394 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
24225 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
24226 .patterns = &.{37395 .patterns = &.{
24227 .{ .src = .{ .to_mem, .none } },37396 .{ .src = .{ .to_mem, .none, .none } },
24228 },37397 },
24229 .extra_temps = .{37398 .extra_temps = .{
24230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24231 .{ .type = .f80, .kind = .{ .reg = .st7 } },37400 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24232 .unused,37401 .unused,
24233 .unused,37402 .unused,
24234 .unused,37403 .unused,
...@@ -24240,24 +37409,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24240,24 +37409,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24240 .dst_temps = .{.mem},37409 .dst_temps = .{.mem},
24241 .clobbers = .{ .eflags = true },37410 .clobbers = .{ .eflags = true },
24242 .each = .{ .once = &.{37411 .each = .{ .once = &.{
24243 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24244 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },37413 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24245 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },37414 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
24246 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },37415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24247 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24248 } },37417 } },
24249 }, .{37418 }, .{
24250 .required_features = .{ .sse, null, null, null },37419 .src_constraints = .{ .any_scalar_int, .any, .any },
24251 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },37420 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
24252 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24253 .patterns = &.{37421 .patterns = &.{
24254 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },37422 .{ .src = .{ .to_mem, .none, .none } },
24255 },37423 },
24256 .call_frame = .{ .alignment = .@"16" },
24257 .extra_temps = .{37424 .extra_temps = .{
24258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },37425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24259 .unused,37426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24260 .unused,37427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24261 .unused,37428 .unused,
24262 .unused,37429 .unused,
24263 .unused,37430 .unused,
...@@ -24265,23 +37432,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24265,23 +37432,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24265 .unused,37432 .unused,
24266 .unused,37433 .unused,
24267 },37434 },
24268 .dst_temps = .{.{ .ref = .src0 }},37435 .dst_temps = .{.mem},
24269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37436 .clobbers = .{ .eflags = true },
24270 .each = .{ .once = &.{37437 .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", ._, ._, ._ },
24272 } },37445 } },
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 = &.{} },
24273 }, .{37456 }, .{
24274 .required_features = .{ .avx, null, null, null },37457 .required_features = .{ .avx, null, null, null },
24275 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },37458 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any, .any },
24276 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37459 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
24277 .patterns = &.{37460 .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 } },
24279 },37472 },
24280 .call_frame = .{ .alignment = .@"16" },
24281 .extra_temps = .{37473 .extra_temps = .{
24282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24283 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37475 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },37476 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
24285 .unused,37477 .unused,
24286 .unused,37478 .unused,
24287 .unused,37479 .unused,
...@@ -24290,28 +37482,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24290,28 +37482,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24290 .unused,37482 .unused,
24291 },37483 },
24292 .dst_temps = .{.mem},37484 .dst_temps = .{.mem},
24293 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37485 .clobbers = .{ .eflags = true },
24294 .each = .{ .once = &.{37486 .each = .{ .once = &.{
24295 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37487 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24296 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },37488 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24297 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37489 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
24298 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37490 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
37491 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24299 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },37492 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24300 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37493 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24301 } },37494 } },
24302 }, .{37495 }, .{
24303 .required_features = .{ .sse2, null, null, null },37496 .required_features = .{ .sse, null, null, null },
24304 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },37497 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
24305 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37498 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
24306 .patterns = &.{37499 .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 } },
24308 },37531 },
24309 .call_frame = .{ .alignment = .@"16" },
24310 .extra_temps = .{37532 .extra_temps = .{
24311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24312 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37534 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },37535 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24314 .unused,37536 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24315 .unused,37537 .unused,
24316 .unused,37538 .unused,
24317 .unused,37539 .unused,
...@@ -24319,28 +37541,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24319,28 +37541,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24319 .unused,37541 .unused,
24320 },37542 },
24321 .dst_temps = .{.mem},37543 .dst_temps = .{.mem},
24322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37544 .clobbers = .{ .eflags = true },
24323 .each = .{ .once = &.{37545 .each = .{ .once = &.{
24324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37546 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24325 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },37547 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
24326 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37548 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
24327 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37549 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
24328 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },37550 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37551 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
37552 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
37553 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
24330 } },37554 } },
24331 }, .{37555 }, .{
24332 .required_features = .{ .sse, null, null, null },37556 .required_features = .{ .@"64bit", null, null, null },
24333 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },37557 .src_constraints = .{ .any_scalar_int, .any, .any },
24334 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37558 .dst_constraints = .{.any_scalar_int},
24335 .patterns = &.{37559 .patterns = &.{
24336 .{ .src = .{ .to_mem, .none } },37560 .{ .src = .{ .to_mem, .none, .none } },
24337 },37561 },
24338 .call_frame = .{ .alignment = .@"16" },
24339 .extra_temps = .{37562 .extra_temps = .{
24340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24341 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37564 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24342 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },37565 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24343 .unused,37566 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24344 .unused,37567 .unused,
24345 .unused,37568 .unused,
24346 .unused,37569 .unused,
...@@ -24348,80 +37571,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24348,80 +37571,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24348 .unused,37571 .unused,
24349 },37572 },
24350 .dst_temps = .{.mem},37573 .dst_temps = .{.mem},
24351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37574 .clobbers = .{ .eflags = true },
24352 .each = .{ .once = &.{37575 .each = .{ .once = &.{
24353 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37576 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
24354 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },37577 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
24355 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },37578 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
24356 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },37579 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
24357 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37580 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24358 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },37581 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
24359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37582 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
37583 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24360 } },37584 } },
24361 }, .{37585 } } else comptime &.{ .{
24362 .required_features = .{ .avx, null, null, null },37586 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
24363 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37587 .dst_constraints = .{.{ .signed_int = .dword }},
24364 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24365 .patterns = &.{37588 .patterns = &.{
24366 .{ .src = .{ .to_mem, .none } },37589 .{ .src = .{ .mem, .none, .none } },
37590 .{ .src = .{ .to_gpr, .none, .none } },
24367 },37591 },
24368 .call_frame = .{ .size = 16, .alignment = .@"16" },37592 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24369 .extra_temps = .{37593 .each = .{ .once = &.{
24370 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37594 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
24371 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37595 } },
24372 .unused,37596 }, .{
24373 .unused,37597 .src_constraints = .{ .{ .int = .byte }, .any, .any },
24374 .unused,37598 .dst_constraints = .{.{ .int = .dword }},
24375 .unused,37599 .patterns = &.{
24376 .unused,37600 .{ .src = .{ .mem, .none, .none } },
24377 .unused,37601 .{ .src = .{ .to_gpr, .none, .none } },
24378 .unused,
24379 },37602 },
24380 .dst_temps = .{.{ .reg = .xmm0 }},37603 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24382 .each = .{ .once = &.{37604 .each = .{ .once = &.{
24383 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },37605 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
24384 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24385 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24386 } },37606 } },
24387 }, .{37607 }, .{
24388 .required_features = .{ .sse2, null, null, null },37608 .required_features = .{ .@"64bit", null, null, null },
24389 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37609 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
24390 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},37610 .dst_constraints = .{.{ .signed_int = .qword }},
24391 .patterns = &.{37611 .patterns = &.{
24392 .{ .src = .{ .to_mem, .none } },37612 .{ .src = .{ .mem, .none, .none } },
37613 .{ .src = .{ .to_gpr, .none, .none } },
24393 },37614 },
24394 .call_frame = .{ .size = 16, .alignment = .@"16" },37615 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24395 .extra_temps = .{37616 .each = .{ .once = &.{
24396 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37617 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
24397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37618 } },
24398 .unused,37619 }, .{
24399 .unused,37620 .required_features = .{ .@"64bit", null, null, null },
24400 .unused,37621 .src_constraints = .{ .{ .int = .byte }, .any, .any },
24401 .unused,37622 .dst_constraints = .{.{ .int = .qword }},
24402 .unused,37623 .patterns = &.{
24403 .unused,37624 .{ .src = .{ .mem, .none, .none } },
24404 .unused,37625 .{ .src = .{ .to_gpr, .none, .none } },
24405 },37626 },
24406 .dst_temps = .{.{ .reg = .xmm0 }},37627 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24408 .each = .{ .once = &.{37628 .each = .{ .once = &.{
24409 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },37629 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
24410 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24411 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24412 } },37630 } },
24413 }, .{37631 }, .{
24414 .required_features = .{ .sse, null, null, null },37632 .required_features = .{ .@"64bit", null, null, null },
24415 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37633 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
24416 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},37634 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
24417 .patterns = &.{37635 .patterns = &.{
24418 .{ .src = .{ .to_mem, .none } },37636 .{ .src = .{ .mem, .none, .none } },
37637 .{ .src = .{ .to_gpr, .none, .none } },
24419 },37638 },
24420 .call_frame = .{ .size = 16, .alignment = .@"16" },
24421 .extra_temps = .{37639 .extra_temps = .{
24422 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37640 .{ .type = .i64, .kind = .{ .reg = .rax } },
24423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37641 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24424 .unused,37642 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24425 .unused,37643 .unused,
24426 .unused,37644 .unused,
24427 .unused,37645 .unused,
...@@ -24429,26 +37647,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24429,26 +37647,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24429 .unused,37647 .unused,
24430 .unused,37648 .unused,
24431 },37649 },
24432 .dst_temps = .{.{ .reg = .xmm0 }},37650 .dst_temps = .{.mem},
24433 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37651 .clobbers = .{ .eflags = true },
24434 .each = .{ .once = &.{37652 .each = .{ .once = &.{
24435 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },37653 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
24436 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },37654 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24437 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },37655 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
37656 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
37657 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
37658 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24438 } },37659 } },
24439 }, .{37660 }, .{
24440 .required_features = .{ .avx, null, null, null },37661 .required_features = .{ .@"64bit", null, null, null },
24441 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37662 .src_constraints = .{ .{ .int = .byte }, .any, .any },
24442 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},37663 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24443 .patterns = &.{37664 .patterns = &.{
24444 .{ .src = .{ .to_mem, .none } },37665 .{ .src = .{ .mem, .none, .none } },
37666 .{ .src = .{ .to_gpr, .none, .none } },
24445 },37667 },
24446 .call_frame = .{ .size = 16, .alignment = .@"16" },
24447 .extra_temps = .{37668 .extra_temps = .{
24448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37669 .{ .type = .u64, .kind = .{ .reg = .rax } },
24449 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37670 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24450 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37671 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24451 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37672 .unused,
24452 .unused,37673 .unused,
24453 .unused,37674 .unused,
24454 .unused,37675 .unused,
...@@ -24456,29 +37677,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24456,29 +37677,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24456 .unused,37677 .unused,
24457 },37678 },
24458 .dst_temps = .{.mem},37679 .dst_temps = .{.mem},
24459 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37680 .clobbers = .{ .eflags = true },
24460 .each = .{ .once = &.{37681 .each = .{ .once = &.{
24461 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37682 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
24462 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },37683 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24463 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },37684 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
24464 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },37685 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24465 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37686 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
24466 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },37687 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24468 } },37688 } },
24469 }, .{37689 }, .{
24470 .required_features = .{ .sse2, null, null, null },37690 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
24471 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37691 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
24472 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24473 .patterns = &.{37692 .patterns = &.{
24474 .{ .src = .{ .to_mem, .none } },37693 .{ .src = .{ .mem, .none, .none } },
37694 .{ .src = .{ .to_gpr, .none, .none } },
24475 },37695 },
24476 .call_frame = .{ .size = 16, .alignment = .@"16" },
24477 .extra_temps = .{37696 .extra_temps = .{
24478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37697 .{ .type = .i32, .kind = .{ .reg = .eax } },
24479 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37698 .{ .type = .usize, .kind = .{ .reg = .edi } },
24480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37699 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37700 .unused,
24482 .unused,37701 .unused,
24483 .unused,37702 .unused,
24484 .unused,37703 .unused,
...@@ -24486,29 +37705,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24486,29 +37705,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24486 .unused,37705 .unused,
24487 },37706 },
24488 .dst_temps = .{.mem},37707 .dst_temps = .{.mem},
24489 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37708 .clobbers = .{ .eflags = true },
24490 .each = .{ .once = &.{37709 .each = .{ .once = &.{
24491 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37710 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
24492 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },37711 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24493 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },37712 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24494 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },37713 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
24495 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37714 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
24496 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },37715 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24498 } },37716 } },
24499 }, .{37717 }, .{
24500 .required_features = .{ .sse, null, null, null },37718 .src_constraints = .{ .{ .int = .byte }, .any, .any },
24501 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },37719 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
24502 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24503 .patterns = &.{37720 .patterns = &.{
24504 .{ .src = .{ .to_mem, .none } },37721 .{ .src = .{ .mem, .none, .none } },
37722 .{ .src = .{ .to_gpr, .none, .none } },
24505 },37723 },
24506 .call_frame = .{ .size = 16, .alignment = .@"16" },
24507 .extra_temps = .{37724 .extra_temps = .{
24508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37725 .{ .type = .u32, .kind = .{ .reg = .eax } },
24509 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37726 .{ .type = .usize, .kind = .{ .reg = .edi } },
24510 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37727 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },37728 .unused,
24512 .unused,37729 .unused,
24513 .unused,37730 .unused,
24514 .unused,37731 .unused,
...@@ -24516,95 +37733,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24516,95 +37733,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24516 .unused,37733 .unused,
24517 },37734 },
24518 .dst_temps = .{.mem},37735 .dst_temps = .{.mem},
24519 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37736 .clobbers = .{ .eflags = true },
24520 .each = .{ .once = &.{37737 .each = .{ .once = &.{
24521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },37738 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
24522 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },37739 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24523 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },37740 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24524 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },37741 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24525 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },37742 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
24526 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },37743 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
24527 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24528 } },37744 } },
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 = &.{} },
24563 }, .{37745 }, .{
24564 .dst_constraints = .{.{ .int = .byte }},37746 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
37747 .dst_constraints = .{.{ .signed_int = .dword }},
24565 .patterns = &.{37748 .patterns = &.{
24566 .{ .src = .{ .to_mem, .none } },37749 .{ .src = .{ .mem, .none, .none } },
37750 .{ .src = .{ .to_gpr, .none, .none } },
24567 },37751 },
24568 .dst_temps = .{.{ .rc = .general_purpose }},37752 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24569 .each = .{ .once = &.{37753 .each = .{ .once = &.{
24570 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },37754 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
24571 } },37755 } },
24572 }, .{37756 }, .{
24573 .dst_constraints = .{.{ .int = .word }},37757 .src_constraints = .{ .{ .int = .word }, .any, .any },
37758 .dst_constraints = .{.{ .int = .dword }},
24574 .patterns = &.{37759 .patterns = &.{
24575 .{ .src = .{ .to_mem, .none } },37760 .{ .src = .{ .mem, .none, .none } },
37761 .{ .src = .{ .to_gpr, .none, .none } },
24576 },37762 },
24577 .dst_temps = .{.{ .rc = .general_purpose }},37763 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24578 .each = .{ .once = &.{37764 .each = .{ .once = &.{
24579 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },37765 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
24580 } },37766 } },
24581 }, .{37767 }, .{
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 }},
24583 .patterns = &.{37771 .patterns = &.{
24584 .{ .src = .{ .to_mem, .none } },37772 .{ .src = .{ .mem, .none, .none } },
37773 .{ .src = .{ .to_gpr, .none, .none } },
24585 },37774 },
24586 .dst_temps = .{.{ .rc = .general_purpose }},37775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24587 .each = .{ .once = &.{37776 .each = .{ .once = &.{
24588 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },37777 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
24589 } },37778 } },
24590 }, .{37779 }, .{
24591 .required_features = .{ .@"64bit", null, null, null },37780 .required_features = .{ .@"64bit", null, null, null },
37781 .src_constraints = .{ .{ .int = .word }, .any, .any },
24592 .dst_constraints = .{.{ .int = .qword }},37782 .dst_constraints = .{.{ .int = .qword }},
24593 .patterns = &.{37783 .patterns = &.{
24594 .{ .src = .{ .to_mem, .none } },37784 .{ .src = .{ .mem, .none, .none } },
37785 .{ .src = .{ .to_gpr, .none, .none } },
24595 },37786 },
24596 .dst_temps = .{.{ .rc = .general_purpose }},37787 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24597 .each = .{ .once = &.{37788 .each = .{ .once = &.{
24598 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },37789 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
24599 } },37790 } },
24600 }, .{37791 }, .{
24601 .required_features = .{ .@"64bit", null, null, null },37792 .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 } }},
24603 .patterns = &.{37795 .patterns = &.{
24604 .{ .src = .{ .to_mem, .none } },37796 .{ .src = .{ .mem, .none, .none } },
37797 .{ .src = .{ .to_gpr, .none, .none } },
24605 },37798 },
24606 .extra_temps = .{37799 .extra_temps = .{
24607 .{ .type = .usize, .kind = .{ .reg = .rsi } },37800 .{ .type = .i64, .kind = .{ .reg = .rax } },
24608 .{ .type = .usize, .kind = .{ .reg = .rdi } },37801 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24609 .{ .type = .u32, .kind = .{ .reg = .ecx } },37802 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24610 .unused,37803 .unused,
...@@ -24615,109 +37808,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24615,109 +37808,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24615 .unused,37808 .unused,
24616 },37809 },
24617 .dst_temps = .{.mem},37810 .dst_temps = .{.mem},
37811 .clobbers = .{ .eflags = true },
24618 .each = .{ .once = &.{37812 .each = .{ .once = &.{
24619 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },37813 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
24620 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },37814 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24621 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },37815 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
24622 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },37816 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
24623 } },37817 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
24624 }, .{37818 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
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, ._, ._ },
24687 } },37819 } },
24688 }, .{37820 }, .{
24689 .required_features = .{ .avx2, null, null, null },37821 .required_features = .{ .@"64bit", null, null, null },
24690 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },37822 .src_constraints = .{ .{ .int = .word }, .any, .any },
24691 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},37823 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24692 .patterns = &.{37824 .patterns = &.{
24693 .{ .src = .{ .to_sse, .none } },37825 .{ .src = .{ .mem, .none, .none } },
37826 .{ .src = .{ .to_gpr, .none, .none } },
24694 },37827 },
24695 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37828 .extra_temps = .{
24696 .each = .{ .once = &.{37829 .{ .type = .u64, .kind = .{ .reg = .rax } },
24697 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },37830 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24698 } },37831 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24699 }, .{37832 .unused,
24700 .required_features = .{ .avx2, null, null, null },37833 .unused,
24701 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },37834 .unused,
24702 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},37835 .unused,
24703 .patterns = &.{37836 .unused,
24704 .{ .src = .{ .to_sse, .none } },37837 .unused,
24705 },37838 },
24706 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37839 .dst_temps = .{.mem},
37840 .clobbers = .{ .eflags = true },
24707 .each = .{ .once = &.{37841 .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, ._, ._, ._, ._ },
24709 } },37848 } },
24710 }, .{37849 }, .{
24711 .required_features = .{ .slow_incdec, null, null, null },37850 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
24712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },37851 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
24713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24714 .patterns = &.{37852 .patterns = &.{
24715 .{ .src = .{ .to_mem, .none } },37853 .{ .src = .{ .mem, .none, .none } },
37854 .{ .src = .{ .to_gpr, .none, .none } },
24716 },37855 },
24717 .extra_temps = .{37856 .extra_temps = .{
24718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37857 .{ .type = .i32, .kind = .{ .reg = .eax } },
24719 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },37858 .{ .type = .usize, .kind = .{ .reg = .edi } },
24720 .unused,37859 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24721 .unused,37860 .unused,
24722 .unused,37861 .unused,
24723 .unused,37862 .unused,
...@@ -24728,22 +37867,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24728,22 +37867,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24728 .dst_temps = .{.mem},37867 .dst_temps = .{.mem},
24729 .clobbers = .{ .eflags = true },37868 .clobbers = .{ .eflags = true },
24730 .each = .{ .once = &.{37869 .each = .{ .once = &.{
24731 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },37870 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
24732 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },37871 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24733 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },37872 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24734 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },37873 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
24735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37874 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37875 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24736 } },37876 } },
24737 }, .{37877 }, .{
24738 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },37878 .src_constraints = .{ .{ .int = .word }, .any, .any },
24739 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},37879 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
24740 .patterns = &.{37880 .patterns = &.{
24741 .{ .src = .{ .to_mem, .none } },37881 .{ .src = .{ .mem, .none, .none } },
37882 .{ .src = .{ .to_gpr, .none, .none } },
24742 },37883 },
24743 .extra_temps = .{37884 .extra_temps = .{
24744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37885 .{ .type = .u32, .kind = .{ .reg = .eax } },
24745 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },37886 .{ .type = .usize, .kind = .{ .reg = .edi } },
24746 .unused,37887 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24747 .unused,37888 .unused,
24748 .unused,37889 .unused,
24749 .unused,37890 .unused,
...@@ -24754,95 +37895,106 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24754,95 +37895,106 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24754 .dst_temps = .{.mem},37895 .dst_temps = .{.mem},
24755 .clobbers = .{ .eflags = true },37896 .clobbers = .{ .eflags = true },
24756 .each = .{ .once = &.{37897 .each = .{ .once = &.{
24757 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },37898 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
24758 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },37899 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24759 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },37900 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24760 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },37901 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24761 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },37902 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
37903 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
24762 } },37904 } },
24763 }, .{37905 }, .{
24764 .required_features = .{ .avx, null, null, null },37906 .required_features = .{ .@"64bit", null, null, null },
24765 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },37907 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
24766 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},37908 .dst_constraints = .{.{ .signed_int = .qword }},
24767 .patterns = &.{37909 .patterns = &.{
24768 .{ .src = .{ .to_sse, .none } },37910 .{ .src = .{ .mem, .none, .none } },
37911 .{ .src = .{ .to_gpr, .none, .none } },
24769 },37912 },
24770 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24771 .each = .{ .once = &.{37914 .each = .{ .once = &.{
24772 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },37915 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
24773 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
24774 } },37916 } },
24775 }, .{37917 }, .{
24776 .required_features = .{ .avx, null, null, null },37918 .required_features = .{ .@"64bit", null, null, null },
24777 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },37919 .src_constraints = .{ .{ .int = .dword }, .any, .any },
24778 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},37920 .dst_constraints = .{.{ .int = .qword }},
24779 .patterns = &.{37921 .patterns = &.{
24780 .{ .src = .{ .to_sse, .none } },37922 .{ .src = .{ .mem, .none, .none } },
37923 .{ .src = .{ .to_gpr, .none, .none } },
24781 },37924 },
24782 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37925 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
24783 .each = .{ .once = &.{37926 .each = .{ .once = &.{
24784 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },37927 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
24785 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
24786 } },37928 } },
24787 }, .{37929 }, .{
24788 .required_features = .{ .sse2, null, null, null },37930 .required_features = .{ .@"64bit", null, null, null },
24789 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },37931 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
24790 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},37932 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
24791 .patterns = &.{37933 .patterns = &.{
24792 .{ .src = .{ .to_mut_sse, .none } },37934 .{ .src = .{ .mem, .none, .none } },
37935 .{ .src = .{ .to_gpr, .none, .none } },
24793 },37936 },
24794 .dst_temps = .{.{ .ref = .src0 }},37937 .extra_temps = .{
24795 .each = .{ .once = &.{37938 .{ .type = .i64, .kind = .{ .reg = .rax } },
24796 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },37939 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24797 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },37940 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24798 } },37941 .unused,
24799 }, .{37942 .unused,
24800 .required_features = .{ .sse4_1, null, null, null },37943 .unused,
24801 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },37944 .unused,
24802 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},37945 .unused,
24803 .patterns = &.{37946 .unused,
24804 .{ .src = .{ .to_mut_sse, .none } },
24805 },37947 },
24806 .dst_temps = .{.{ .ref = .src0 }},37948 .dst_temps = .{.mem},
37949 .clobbers = .{ .eflags = true },
24807 .each = .{ .once = &.{37950 .each = .{ .once = &.{
24808 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },37951 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
24809 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },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, ._, ._, ._, ._ },
24810 } },37957 } },
24811 }, .{37958 }, .{
24812 .required_features = .{ .avx2, null, null, null },37959 .required_features = .{ .@"64bit", null, null, null },
24813 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },37960 .src_constraints = .{ .{ .int = .dword }, .any, .any },
24814 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},37961 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24815 .patterns = &.{37962 .patterns = &.{
24816 .{ .src = .{ .to_sse, .none } },37963 .{ .src = .{ .mem, .none, .none } },
37964 .{ .src = .{ .to_gpr, .none, .none } },
24817 },37965 },
24818 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37966 .extra_temps = .{
24819 .each = .{ .once = &.{37967 .{ .type = .u64, .kind = .{ .reg = .rax } },
24820 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },37968 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24821 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },37969 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24822 } },37970 .unused,
24823 }, .{37971 .unused,
24824 .required_features = .{ .avx2, null, null, null },37972 .unused,
24825 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },37973 .unused,
24826 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},37974 .unused,
24827 .patterns = &.{37975 .unused,
24828 .{ .src = .{ .to_sse, .none } },
24829 },37976 },
24830 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},37977 .dst_temps = .{.mem},
37978 .clobbers = .{ .eflags = true },
24831 .each = .{ .once = &.{37979 .each = .{ .once = &.{
24832 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },37980 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
24833 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },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, ._, ._, ._, ._ },
24834 } },37986 } },
24835 }, .{37987 }, .{
24836 .required_features = .{ .slow_incdec, null, null, null },37988 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
24837 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },37989 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},
24838 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24839 .patterns = &.{37990 .patterns = &.{
24840 .{ .src = .{ .to_mem, .none } },37991 .{ .src = .{ .mem, .none, .none } },
37992 .{ .src = .{ .to_gpr, .none, .none } },
24841 },37993 },
24842 .extra_temps = .{37994 .extra_temps = .{
24843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37995 .{ .type = .i32, .kind = .{ .reg = .eax } },
24844 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },37996 .{ .type = .usize, .kind = .{ .reg = .edi } },
24845 .unused,37997 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24846 .unused,37998 .unused,
24847 .unused,37999 .unused,
24848 .unused,38000 .unused,
...@@ -24853,22 +38005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24853,22 +38005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24853 .dst_temps = .{.mem},38005 .dst_temps = .{.mem},
24854 .clobbers = .{ .eflags = true },38006 .clobbers = .{ .eflags = true },
24855 .each = .{ .once = &.{38007 .each = .{ .once = &.{
24856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38008 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
24857 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },38009 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24858 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },38010 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24859 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },38011 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
24860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38012 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
38013 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24861 } },38014 } },
24862 }, .{38015 }, .{
24863 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },38016 .src_constraints = .{ .{ .int = .dword }, .any, .any },
24864 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},38017 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
24865 .patterns = &.{38018 .patterns = &.{
24866 .{ .src = .{ .to_mem, .none } },38019 .{ .src = .{ .mem, .none, .none } },
38020 .{ .src = .{ .to_gpr, .none, .none } },
24867 },38021 },
24868 .extra_temps = .{38022 .extra_temps = .{
24869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38023 .{ .type = .u32, .kind = .{ .reg = .eax } },
24870 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },38024 .{ .type = .usize, .kind = .{ .reg = .edi } },
24871 .unused,38025 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24872 .unused,38026 .unused,
24873 .unused,38027 .unused,
24874 .unused,38028 .unused,
...@@ -24879,23 +38033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24879,23 +38033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24879 .dst_temps = .{.mem},38033 .dst_temps = .{.mem},
24880 .clobbers = .{ .eflags = true },38034 .clobbers = .{ .eflags = true },
24881 .each = .{ .once = &.{38035 .each = .{ .once = &.{
24882 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38036 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
24883 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },38037 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24884 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },38038 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
24885 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },38039 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24886 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },38040 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
38041 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
24887 } },38042 } },
24888 }, .{38043 }, .{
24889 .required_features = .{ .slow_incdec, null, null, null },38044 .required_features = .{ .@"64bit", null, null, null },
24890 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },38045 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
24891 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},38046 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
24892 .patterns = &.{38047 .patterns = &.{
24893 .{ .src = .{ .to_mem, .none } },38048 .{ .src = .{ .mem, .none, .none } },
38049 .{ .src = .{ .to_gpr, .none, .none } },
24894 },38050 },
24895 .extra_temps = .{38051 .extra_temps = .{
24896 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38052 .{ .type = .i64, .kind = .{ .reg = .rax } },
24897 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },38053 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24898 .unused,38054 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24899 .unused,38055 .unused,
24900 .unused,38056 .unused,
24901 .unused,38057 .unused,
...@@ -24906,22 +38062,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24906,22 +38062,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24906 .dst_temps = .{.mem},38062 .dst_temps = .{.mem},
24907 .clobbers = .{ .eflags = true },38063 .clobbers = .{ .eflags = true },
24908 .each = .{ .once = &.{38064 .each = .{ .once = &.{
24909 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38065 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
24910 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },38066 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24911 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },38067 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
24912 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },38068 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
24913 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38069 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
38070 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24914 } },38071 } },
24915 }, .{38072 }, .{
24916 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },38073 .required_features = .{ .@"64bit", null, null, null },
24917 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},38074 .src_constraints = .{ .{ .int = .qword }, .any, .any },
38075 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24918 .patterns = &.{38076 .patterns = &.{
24919 .{ .src = .{ .to_mem, .none } },38077 .{ .src = .{ .mem, .none, .none } },
38078 .{ .src = .{ .to_gpr, .none, .none } },
24920 },38079 },
24921 .extra_temps = .{38080 .extra_temps = .{
24922 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38081 .{ .type = .u64, .kind = .{ .reg = .rax } },
24923 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },38082 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24924 .unused,38083 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24925 .unused,38084 .unused,
24926 .unused,38085 .unused,
24927 .unused,38086 .unused,
...@@ -24932,24 +38091,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24932,24 +38091,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24932 .dst_temps = .{.mem},38091 .dst_temps = .{.mem},
24933 .clobbers = .{ .eflags = true },38092 .clobbers = .{ .eflags = true },
24934 .each = .{ .once = &.{38093 .each = .{ .once = &.{
24935 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38094 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
24936 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },38095 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24937 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },38096 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
24938 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },38097 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
24939 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },38098 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
38099 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24940 } },38100 } },
24941 }, .{38101 }, .{
24942 .required_features = .{ .slow_incdec, null, null, null },38102 .required_features = .{ .@"64bit", null, null, null },
24943 .src_constraints = .{ .any_scalar_int, .any },38103 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
24944 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},38104 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},
24945 .patterns = &.{38105 .patterns = &.{
24946 .{ .src = .{ .to_mem, .none } },38106 .{ .src = .{ .to_mem, .none, .none } },
24947 },38107 },
24948 .extra_temps = .{38108 .extra_temps = .{
24949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38109 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24950 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38110 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24951 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },38111 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24952 .unused,38112 .{ .type = .i64, .kind = .{ .reg = .rax } },
24953 .unused,38113 .unused,
24954 .unused,38114 .unused,
24955 .unused,38115 .unused,
...@@ -24959,25 +38119,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24959,25 +38119,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24959 .dst_temps = .{.mem},38119 .dst_temps = .{.mem},
24960 .clobbers = .{ .eflags = true },38120 .clobbers = .{ .eflags = true },
24961 .each = .{ .once = &.{38121 .each = .{ .once = &.{
24962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38122 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
24963 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },38123 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24964 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },38124 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
24965 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },38125 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24966 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },38126 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
24967 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },38127 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
24968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38128 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
38129 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
38130 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24969 } },38131 } },
24970 }, .{38132 }, .{
24971 .src_constraints = .{ .any_scalar_int, .any },38133 .required_features = .{ .@"64bit", null, null, null },
24972 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},38134 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
38135 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24973 .patterns = &.{38136 .patterns = &.{
24974 .{ .src = .{ .to_mem, .none } },38137 .{ .src = .{ .to_mem, .none, .none } },
24975 },38138 },
24976 .extra_temps = .{38139 .extra_temps = .{
24977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38140 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24978 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38141 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24979 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },38142 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24980 .unused,38143 .{ .type = .u64, .kind = .{ .reg = .rax } },
24981 .unused,38144 .unused,
24982 .unused,38145 .unused,
24983 .unused,38146 .unused,
...@@ -24987,135 +38150,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24987,135 +38150,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24987 .dst_temps = .{.mem},38150 .dst_temps = .{.mem},
24988 .clobbers = .{ .eflags = true },38151 .clobbers = .{ .eflags = true },
24989 .each = .{ .once = &.{38152 .each = .{ .once = &.{
24990 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38153 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
24991 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },38154 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24992 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },38155 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
24993 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },38156 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24994 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },38157 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
24995 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },38158 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
24996 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },38159 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
24997 } },38160 } },
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 = &.{} },
25018 }, .{38161 }, .{
25019 .required_features = .{ .avx, null, null, null },38162 .required_features = .{ .avx, null, null, null },
25020 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },38163 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25021 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},38164 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
25022 .patterns = &.{38165 .patterns = &.{
25023 .{ .src = .{ .to_sse, .none } },38166 .{ .src = .{ .mem, .none, .none } },
38167 .{ .src = .{ .to_sse, .none, .none } },
25024 },38168 },
25025 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38169 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25026 .each = .{ .once = &.{38170 .each = .{ .once = &.{
25027 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },38171 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
25028 } },38172 } },
25029 }, .{38173 }, .{
25030 .required_features = .{ .avx, null, null, null },38174 .required_features = .{ .avx, null, null, null },
25031 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },38175 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25032 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},38176 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
25033 .patterns = &.{38177 .patterns = &.{
25034 .{ .src = .{ .to_sse, .none } },38178 .{ .src = .{ .mem, .none, .none } },
38179 .{ .src = .{ .to_sse, .none, .none } },
25035 },38180 },
25036 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38181 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25037 .each = .{ .once = &.{38182 .each = .{ .once = &.{
25038 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },38183 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
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, ._, ._ },
25050 } },38184 } },
25051 }, .{38185 }, .{
25052 .required_features = .{ .sse4_1, null, null, null },38186 .required_features = .{ .sse4_1, null, null, null },
25053 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },38187 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .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 },
25065 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},38188 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
25066 .patterns = &.{38189 .patterns = &.{
25067 .{ .src = .{ .to_sse, .none } },38190 .{ .src = .{ .mem, .none, .none } },
38191 .{ .src = .{ .to_sse, .none, .none } },
25068 },38192 },
25069 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38193 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25070 .each = .{ .once = &.{38194 .each = .{ .once = &.{
25071 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },38195 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
25072 } },38196 } },
25073 }, .{38197 }, .{
25074 .required_features = .{ .avx2, null, null, null },38198 .required_features = .{ .sse4_1, null, null, null },
25075 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },38199 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25076 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},38200 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
25077 .patterns = &.{38201 .patterns = &.{
25078 .{ .src = .{ .to_sse, .none } },38202 .{ .src = .{ .mem, .none, .none } },
38203 .{ .src = .{ .to_sse, .none, .none } },
25079 },38204 },
25080 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38205 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25081 .each = .{ .once = &.{38206 .each = .{ .once = &.{
25082 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },38207 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
25083 } },38208 } },
25084 }, .{38209 }, .{
25085 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },38210 .required_features = .{ .sse2, null, null, null },
25086 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},38211 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38212 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
25087 .patterns = &.{38213 .patterns = &.{
25088 .{ .src = .{ .to_mem, .none } },38214 .{ .src = .{ .to_mut_sse, .none, .none } },
25089 },38215 },
25090 .extra_temps = .{38216 .extra_temps = .{
25091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38217 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
25092 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25093 .unused,
25094 .unused,
25095 .unused,
25096 .unused,
25097 .unused,
25098 .unused,
25099 .unused,38218 .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 } },
25119 .unused,38219 .unused,
25120 .unused,38220 .unused,
25121 .unused,38221 .unused,
...@@ -25124,51 +38224,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25124,51 +38224,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25124 .unused,38224 .unused,
25125 .unused,38225 .unused,
25126 },38226 },
25127 .dst_temps = .{.mem},38227 .dst_temps = .{.{ .ref = .src0 }},
25128 .clobbers = .{ .eflags = true },
25129 .each = .{ .once = &.{38228 .each = .{ .once = &.{
25130 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38229 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
25131 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },38230 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
25132 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },38231 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
25133 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25135 } },38232 } },
25136 }, .{38233 }, .{
25137 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },38234 .required_features = .{ .sse2, null, null, null },
25138 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},38235 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38236 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
25139 .patterns = &.{38237 .patterns = &.{
25140 .{ .src = .{ .to_mem, .none } },38238 .{ .src = .{ .to_mut_sse, .none, .none } },
25141 },38239 },
25142 .extra_temps = .{38240 .extra_temps = .{
25143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38241 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
25144 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25145 .unused,
25146 .unused,
25147 .unused,
25148 .unused,
25149 .unused,
25150 .unused,38242 .unused,
25151 .unused,38243 .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 } },
25172 .unused,38244 .unused,
25173 .unused,38245 .unused,
25174 .unused,38246 .unused,
...@@ -25176,70 +38248,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25176,70 +38248,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25176 .unused,38248 .unused,
25177 .unused,38249 .unused,
25178 },38250 },
25179 .dst_temps = .{.mem},38251 .dst_temps = .{.{ .ref = .src0 }},
25180 .clobbers = .{ .eflags = true },
25181 .each = .{ .once = &.{38252 .each = .{ .once = &.{
25182 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38253 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
25183 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },38254 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
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", ._, ._, ._ },
25189 } },38255 } },
25190 }, .{38256 }, .{
25191 .required_features = .{ .sse, null, null, null },38257 .required_features = .{ .avx2, null, null, null },
25192 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },38258 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
25193 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},38259 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
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 } }},
25214 .patterns = &.{38260 .patterns = &.{
25215 .{ .src = .{ .mem, .none } },38261 .{ .src = .{ .mem, .none, .none } },
25216 .{ .src = .{ .to_sse, .none } },38262 .{ .src = .{ .to_sse, .none, .none } },
25217 },38263 },
25218 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38264 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25219 .each = .{ .once = &.{38265 .each = .{ .once = &.{
25220 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },38266 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
25221 } },38267 } },
25222 }, .{38268 }, .{
25223 .required_features = .{ .sse2, null, null, null },38269 .required_features = .{ .avx2, null, null, null },
25224 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },38270 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
25225 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},38271 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
25226 .patterns = &.{38272 .patterns = &.{
25227 .{ .src = .{ .mem, .none } },38273 .{ .src = .{ .mem, .none, .none } },
25228 .{ .src = .{ .to_sse, .none } },38274 .{ .src = .{ .to_sse, .none, .none } },
25229 },38275 },
25230 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38276 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25231 .each = .{ .once = &.{38277 .each = .{ .once = &.{
25232 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },38278 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },
25233 } },38279 } },
25234 }, .{38280 }, .{
25235 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },38281 .required_features = .{ .avx2, null, null, null },
25236 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},38282 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38283 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
25237 .patterns = &.{38284 .patterns = &.{
25238 .{ .src = .{ .to_mem, .none } },38285 .{ .src = .{ .to_mem, .none, .none } },
25239 },38286 },
25240 .extra_temps = .{38287 .extra_temps = .{
25241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25242 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38289 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
25243 .unused,38290 .unused,
25244 .unused,38291 .unused,
25245 .unused,38292 .unused,
...@@ -25251,21 +38298,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25251,21 +38298,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25251 .dst_temps = .{.mem},38298 .dst_temps = .{.mem},
25252 .clobbers = .{ .eflags = true },38299 .clobbers = .{ .eflags = true },
25253 .each = .{ .once = &.{38300 .each = .{ .once = &.{
25254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38301 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25255 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },38302 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25256 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },38303 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
25257 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },38304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25259 } },38306 } },
25260 }, .{38307 }, .{
25261 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },38308 .required_features = .{ .avx2, null, null, null },
25262 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},38309 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any },
38310 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
25263 .patterns = &.{38311 .patterns = &.{
25264 .{ .src = .{ .to_mem, .none } },38312 .{ .src = .{ .to_mem, .none, .none } },
25265 },38313 },
25266 .extra_temps = .{38314 .extra_temps = .{
25267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38316 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
25269 .unused,38317 .unused,
25270 .unused,38318 .unused,
25271 .unused,38319 .unused,
...@@ -25277,48 +38325,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25277,48 +38325,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25277 .dst_temps = .{.mem},38325 .dst_temps = .{.mem},
25278 .clobbers = .{ .eflags = true },38326 .clobbers = .{ .eflags = true },
25279 .each = .{ .once = &.{38327 .each = .{ .once = &.{
25280 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25281 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },38329 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25282 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },38330 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
25283 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },38331 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
25284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38332 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25285 } },38333 } },
25286 }, .{38334 }, .{
25287 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },38335 .required_features = .{ .avx, null, null, null },
25288 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},38336 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38337 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
25289 .patterns = &.{38338 .patterns = &.{
25290 .{ .src = .{ .to_mem, .none } },38339 .{ .src = .{ .to_mem, .none, .none } },
25291 },38340 },
25292 .extra_temps = .{38341 .extra_temps = .{
25293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25294 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38343 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
25295 .unused,
25296 .unused,
25297 .unused,
25298 .unused,
25299 .unused,
25300 .unused,
25301 .unused,38344 .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 } },
25322 .unused,38345 .unused,
25323 .unused,38346 .unused,
25324 .unused,38347 .unused,
...@@ -25329,45 +38352,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25329,45 +38352,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25329 .dst_temps = .{.mem},38352 .dst_temps = .{.mem},
25330 .clobbers = .{ .eflags = true },38353 .clobbers = .{ .eflags = true },
25331 .each = .{ .once = &.{38354 .each = .{ .once = &.{
25332 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38355 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25333 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },38356 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
25334 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },38357 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25335 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },38358 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25336 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25337 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25338 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25339 } },38360 } },
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 = &.{} },
25350 }, .{38361 }, .{
25351 .required_features = .{ .avx, null, null, null },38362 .required_features = .{ .avx, null, null, null },
25352 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },38363 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25353 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},38364 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
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 } }},
25364 .patterns = &.{38365 .patterns = &.{
25365 .{ .src = .{ .to_mem, .none } },38366 .{ .src = .{ .to_mem, .none, .none } },
25366 },38367 },
25367 .extra_temps = .{38368 .extra_temps = .{
25368 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38369 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25369 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38370 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
25370 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },38371 .unused,
25371 .unused,38372 .unused,
25372 .unused,38373 .unused,
25373 .unused,38374 .unused,
...@@ -25378,56 +38379,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25378,56 +38379,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25378 .dst_temps = .{.mem},38379 .dst_temps = .{.mem},
25379 .clobbers = .{ .eflags = true },38380 .clobbers = .{ .eflags = true },
25380 .each = .{ .once = &.{38381 .each = .{ .once = &.{
25381 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },38382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25382 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },38383 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
25383 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },38384 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25384 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
25385 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25386 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },38385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25388 } },38387 } },
25389 }, .{38388 }, .{
25390 .required_features = .{ .sse, null, null, null },38389 .required_features = .{ .sse4_1, null, null, null },
25391 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },38390 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25392 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},38391 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
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},
25423 .patterns = &.{38392 .patterns = &.{
25424 .{ .src = .{ .to_mem, .none } },38393 .{ .src = .{ .to_mem, .none, .none } },
25425 },38394 },
25426 .extra_temps = .{38395 .extra_temps = .{
25427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25428 .{ .type = .usize, .kind = .{ .reg = .rsi } },38397 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
25429 .{ .type = .usize, .kind = .{ .reg = .rdi } },38398 .unused,
25430 .{ .type = .u32, .kind = .{ .reg = .ecx } },38399 .unused,
25431 .unused,38400 .unused,
25432 .unused,38401 .unused,
25433 .unused,38402 .unused,
...@@ -25437,27 +38406,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25437,27 +38406,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25437 .dst_temps = .{.mem},38406 .dst_temps = .{.mem},
25438 .clobbers = .{ .eflags = true },38407 .clobbers = .{ .eflags = true },
25439 .each = .{ .once = &.{38408 .each = .{ .once = &.{
25440 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },38409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25441 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },38410 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
25442 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },38411 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25443 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },38412 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25444 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },38413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25445 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25446 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
25447 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
25448 } },38414 } },
25449 }, .{38415 }, .{
25450 .required_features = .{ .@"64bit", null, null, null },38416 .required_features = .{ .sse4_1, null, null, null },
25451 .src_constraints = .{ .any_scalar_int, .any },38417 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
25452 .dst_constraints = .{.any_scalar_int},38418 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
25453 .patterns = &.{38419 .patterns = &.{
25454 .{ .src = .{ .to_mem, .none } },38420 .{ .src = .{ .to_mem, .none, .none } },
25455 },38421 },
25456 .extra_temps = .{38422 .extra_temps = .{
25457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },38423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25458 .{ .type = .usize, .kind = .{ .reg = .rsi } },38424 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
25459 .{ .type = .usize, .kind = .{ .reg = .rdi } },38425 .unused,
25460 .{ .type = .u32, .kind = .{ .reg = .ecx } },38426 .unused,
25461 .unused,38427 .unused,
25462 .unused,38428 .unused,
25463 .unused,38429 .unused,
...@@ -25467,73 +38433,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25467,73 +38433,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25467 .dst_temps = .{.mem},38433 .dst_temps = .{.mem},
25468 .clobbers = .{ .eflags = true },38434 .clobbers = .{ .eflags = true },
25469 .each = .{ .once = &.{38435 .each = .{ .once = &.{
25470 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },38436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25471 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },38437 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
25472 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },38438 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25473 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },38439 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25474 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },38440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
25524 } },38441 } },
25525 }, .{38442 }, .{
25526 .required_features = .{ .@"64bit", null, null, null },38443 .required_features = .{ .slow_incdec, null, null, null },
25527 .src_constraints = .{ .{ .signed_int = .byte }, .any },38444 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25528 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},38445 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
25529 .patterns = &.{38446 .patterns = &.{
25530 .{ .src = .{ .mem, .none } },38447 .{ .src = .{ .to_mem, .none, .none } },
25531 .{ .src = .{ .to_gpr, .none } },
25532 },38448 },
25533 .extra_temps = .{38449 .extra_temps = .{
25534 .{ .type = .i64, .kind = .{ .reg = .rax } },38450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25535 .{ .type = .usize, .kind = .{ .reg = .rdi } },38451 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
25536 .{ .type = .u32, .kind = .{ .reg = .ecx } },38452 .unused,
25537 .unused,38453 .unused,
25538 .unused,38454 .unused,
25539 .unused,38455 .unused,
...@@ -25544,25 +38460,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25544,25 +38460,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25544 .dst_temps = .{.mem},38460 .dst_temps = .{.mem},
25545 .clobbers = .{ .eflags = true },38461 .clobbers = .{ .eflags = true },
25546 .each = .{ .once = &.{38462 .each = .{ .once = &.{
25547 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },38463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25548 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38464 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25549 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38465 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25550 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },38466 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
25551 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25552 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25553 } },38468 } },
25554 }, .{38469 }, .{
25555 .required_features = .{ .@"64bit", null, null, null },38470 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25556 .src_constraints = .{ .{ .int = .byte }, .any },38471 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
25557 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25558 .patterns = &.{38472 .patterns = &.{
25559 .{ .src = .{ .mem, .none } },38473 .{ .src = .{ .to_mem, .none, .none } },
25560 .{ .src = .{ .to_gpr, .none } },
25561 },38474 },
25562 .extra_temps = .{38475 .extra_temps = .{
25563 .{ .type = .u64, .kind = .{ .reg = .rax } },38476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25564 .{ .type = .usize, .kind = .{ .reg = .rdi } },38477 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
25565 .{ .type = .u32, .kind = .{ .reg = .ecx } },38478 .unused,
25566 .unused,38479 .unused,
25567 .unused,38480 .unused,
25568 .unused,38481 .unused,
...@@ -25573,24 +38486,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25573,24 +38486,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25573 .dst_temps = .{.mem},38486 .dst_temps = .{.mem},
25574 .clobbers = .{ .eflags = true },38487 .clobbers = .{ .eflags = true },
25575 .each = .{ .once = &.{38488 .each = .{ .once = &.{
25576 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },38489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25577 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38490 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25578 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38491 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25579 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38492 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
25580 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38493 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
25581 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25582 } },38494 } },
25583 }, .{38495 }, .{
25584 .src_constraints = .{ .{ .signed_int = .byte }, .any },38496 .required_features = .{ .slow_incdec, null, null, null },
25585 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},38497 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
38498 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25586 .patterns = &.{38499 .patterns = &.{
25587 .{ .src = .{ .mem, .none } },38500 .{ .src = .{ .to_mem, .none, .none } },
25588 .{ .src = .{ .to_gpr, .none } },
25589 },38501 },
25590 .extra_temps = .{38502 .extra_temps = .{
25591 .{ .type = .i32, .kind = .{ .reg = .eax } },38503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25592 .{ .type = .usize, .kind = .{ .reg = .edi } },38504 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25593 .{ .type = .u32, .kind = .{ .reg = .ecx } },38505 .unused,
25594 .unused,38506 .unused,
25595 .unused,38507 .unused,
25596 .unused,38508 .unused,
...@@ -25601,24 +38513,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25601,24 +38513,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25601 .dst_temps = .{.mem},38513 .dst_temps = .{.mem},
25602 .clobbers = .{ .eflags = true },38514 .clobbers = .{ .eflags = true },
25603 .each = .{ .once = &.{38515 .each = .{ .once = &.{
25604 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },38516 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25605 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38517 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25606 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38518 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25607 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },38519 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
25608 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38520 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25609 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25610 } },38521 } },
25611 }, .{38522 }, .{
25612 .src_constraints = .{ .{ .int = .byte }, .any },38523 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25613 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},38524 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25614 .patterns = &.{38525 .patterns = &.{
25615 .{ .src = .{ .mem, .none } },38526 .{ .src = .{ .to_mem, .none, .none } },
25616 .{ .src = .{ .to_gpr, .none } },
25617 },38527 },
25618 .extra_temps = .{38528 .extra_temps = .{
25619 .{ .type = .u32, .kind = .{ .reg = .eax } },38529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25620 .{ .type = .usize, .kind = .{ .reg = .edi } },38530 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25621 .{ .type = .u32, .kind = .{ .reg = .ecx } },38531 .unused,
25622 .unused,38532 .unused,
25623 .unused,38533 .unused,
25624 .unused,38534 .unused,
...@@ -25629,71 +38539,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25629,71 +38539,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25629 .dst_temps = .{.mem},38539 .dst_temps = .{.mem},
25630 .clobbers = .{ .eflags = true },38540 .clobbers = .{ .eflags = true },
25631 .each = .{ .once = &.{38541 .each = .{ .once = &.{
25632 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },38542 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25633 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38543 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25634 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38544 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25635 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38545 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
25636 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38546 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
25637 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25638 } },38547 } },
25639 }, .{38548 }, .{
25640 .src_constraints = .{ .{ .signed_int = .word }, .any },38549 .required_features = .{ .avx, null, null, null },
25641 .dst_constraints = .{.{ .signed_int = .dword }},38550 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38551 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25642 .patterns = &.{38552 .patterns = &.{
25643 .{ .src = .{ .mem, .none } },38553 .{ .src = .{ .mem, .none, .none } },
25644 .{ .src = .{ .to_gpr, .none } },38554 .{ .src = .{ .to_sse, .none, .none } },
25645 },38555 },
25646 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},38556 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25647 .each = .{ .once = &.{38557 .each = .{ .once = &.{
25648 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },38558 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
25649 } },38559 } },
25650 }, .{38560 }, .{
25651 .src_constraints = .{ .{ .int = .word }, .any },38561 .required_features = .{ .avx, null, null, null },
25652 .dst_constraints = .{.{ .int = .dword }},38562 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38563 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
25653 .patterns = &.{38564 .patterns = &.{
25654 .{ .src = .{ .mem, .none } },38565 .{ .src = .{ .mem, .none, .none } },
25655 .{ .src = .{ .to_gpr, .none } },38566 .{ .src = .{ .to_sse, .none, .none } },
25656 },38567 },
25657 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},38568 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25658 .each = .{ .once = &.{38569 .each = .{ .once = &.{
25659 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },38570 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
25660 } },38571 } },
25661 }, .{38572 }, .{
25662 .required_features = .{ .@"64bit", null, null, null },38573 .required_features = .{ .sse4_1, null, null, null },
25663 .src_constraints = .{ .{ .signed_int = .word }, .any },38574 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25664 .dst_constraints = .{.{ .signed_int = .qword }},38575 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25665 .patterns = &.{38576 .patterns = &.{
25666 .{ .src = .{ .mem, .none } },38577 .{ .src = .{ .mem, .none, .none } },
25667 .{ .src = .{ .to_gpr, .none } },38578 .{ .src = .{ .to_sse, .none, .none } },
25668 },38579 },
25669 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},38580 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25670 .each = .{ .once = &.{38581 .each = .{ .once = &.{
25671 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },38582 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
25672 } },38583 } },
25673 }, .{38584 }, .{
25674 .required_features = .{ .@"64bit", null, null, null },38585 .required_features = .{ .sse4_1, null, null, null },
25675 .src_constraints = .{ .{ .int = .word }, .any },38586 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25676 .dst_constraints = .{.{ .int = .qword }},38587 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
25677 .patterns = &.{38588 .patterns = &.{
25678 .{ .src = .{ .mem, .none } },38589 .{ .src = .{ .mem, .none, .none } },
25679 .{ .src = .{ .to_gpr, .none } },38590 .{ .src = .{ .to_sse, .none, .none } },
25680 },38591 },
25681 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},38592 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25682 .each = .{ .once = &.{38593 .each = .{ .once = &.{
25683 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },38594 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
25684 } },38595 } },
25685 }, .{38596 }, .{
25686 .required_features = .{ .@"64bit", null, null, null },38597 .required_features = .{ .sse2, null, null, null },
25687 .src_constraints = .{ .{ .signed_int = .word }, .any },38598 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25688 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},38599 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25689 .patterns = &.{38600 .patterns = &.{
25690 .{ .src = .{ .mem, .none } },38601 .{ .src = .{ .to_mut_sse, .none, .none } },
25691 .{ .src = .{ .to_gpr, .none } },
25692 },38602 },
25693 .extra_temps = .{38603 .extra_temps = .{
25694 .{ .type = .i64, .kind = .{ .reg = .rax } },38604 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
25695 .{ .type = .usize, .kind = .{ .reg = .rdi } },38605 .unused,
25696 .{ .type = .u32, .kind = .{ .reg = .ecx } },38606 .unused,
25697 .unused,38607 .unused,
25698 .unused,38608 .unused,
25699 .unused,38609 .unused,
...@@ -25701,28 +38611,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25701,28 +38611,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25701 .unused,38611 .unused,
25702 .unused,38612 .unused,
25703 },38613 },
25704 .dst_temps = .{.mem},38614 .dst_temps = .{.{ .ref = .src0 }},
25705 .clobbers = .{ .eflags = true },
25706 .each = .{ .once = &.{38615 .each = .{ .once = &.{
25707 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },38616 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
25708 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38617 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
25709 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38618 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
25710 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },38619 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
25711 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38620 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
25712 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25713 } },38621 } },
25714 }, .{38622 }, .{
25715 .required_features = .{ .@"64bit", null, null, null },38623 .required_features = .{ .sse2, null, null, null },
25716 .src_constraints = .{ .{ .int = .word }, .any },38624 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25717 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},38625 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
25718 .patterns = &.{38626 .patterns = &.{
25719 .{ .src = .{ .mem, .none } },38627 .{ .src = .{ .to_mut_sse, .none, .none } },
25720 .{ .src = .{ .to_gpr, .none } },
25721 },38628 },
25722 .extra_temps = .{38629 .extra_temps = .{
25723 .{ .type = .u64, .kind = .{ .reg = .rax } },38630 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
25724 .{ .type = .usize, .kind = .{ .reg = .rdi } },38631 .unused,
25725 .{ .type = .u32, .kind = .{ .reg = .ecx } },38632 .unused,
25726 .unused,38633 .unused,
25727 .unused,38634 .unused,
25728 .unused,38635 .unused,
...@@ -25730,27 +38637,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25730,27 +38637,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25730 .unused,38637 .unused,
25731 .unused,38638 .unused,
25732 },38639 },
25733 .dst_temps = .{.mem},38640 .dst_temps = .{.{ .ref = .src0 }},
25734 .clobbers = .{ .eflags = true },
25735 .each = .{ .once = &.{38641 .each = .{ .once = &.{
25736 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },38642 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
25737 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38643 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
25738 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38644 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
25739 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25740 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25741 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25742 } },38645 } },
25743 }, .{38646 }, .{
25744 .src_constraints = .{ .{ .signed_int = .word }, .any },38647 .required_features = .{ .avx2, null, null, null },
25745 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},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 } }},
25746 .patterns = &.{38674 .patterns = &.{
25747 .{ .src = .{ .mem, .none } },38675 .{ .src = .{ .to_mem, .none, .none } },
25748 .{ .src = .{ .to_gpr, .none } },
25749 },38676 },
25750 .extra_temps = .{38677 .extra_temps = .{
25751 .{ .type = .i32, .kind = .{ .reg = .eax } },38678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25752 .{ .type = .usize, .kind = .{ .reg = .edi } },38679 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
25753 .{ .type = .u32, .kind = .{ .reg = .ecx } },38680 .unused,
25754 .unused,38681 .unused,
25755 .unused,38682 .unused,
25756 .unused,38683 .unused,
...@@ -25761,24 +38688,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25761,24 +38688,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25761 .dst_temps = .{.mem},38688 .dst_temps = .{.mem},
25762 .clobbers = .{ .eflags = true },38689 .clobbers = .{ .eflags = true },
25763 .each = .{ .once = &.{38690 .each = .{ .once = &.{
25764 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },38691 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25765 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38692 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
25766 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38693 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
25767 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },38694 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25768 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25769 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25770 } },38696 } },
25771 }, .{38697 }, .{
25772 .src_constraints = .{ .{ .int = .word }, .any },38698 .required_features = .{ .avx2, null, null, null },
25773 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},38699 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any },
38700 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
25774 .patterns = &.{38701 .patterns = &.{
25775 .{ .src = .{ .mem, .none } },38702 .{ .src = .{ .to_mem, .none, .none } },
25776 .{ .src = .{ .to_gpr, .none } },
25777 },38703 },
25778 .extra_temps = .{38704 .extra_temps = .{
25779 .{ .type = .u32, .kind = .{ .reg = .eax } },38705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25780 .{ .type = .usize, .kind = .{ .reg = .edi } },38706 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
25781 .{ .type = .u32, .kind = .{ .reg = .ecx } },38707 .unused,
25782 .unused,38708 .unused,
25783 .unused,38709 .unused,
25784 .unused,38710 .unused,
...@@ -25789,49 +38715,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25789,49 +38715,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25789 .dst_temps = .{.mem},38715 .dst_temps = .{.mem},
25790 .clobbers = .{ .eflags = true },38716 .clobbers = .{ .eflags = true },
25791 .each = .{ .once = &.{38717 .each = .{ .once = &.{
25792 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },38718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25793 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38719 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
25794 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38720 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
25795 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38721 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25796 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38722 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
25822 } },38723 } },
25823 }, .{38724 }, .{
25824 .required_features = .{ .@"64bit", null, null, null },38725 .required_features = .{ .avx, null, null, null },
25825 .src_constraints = .{ .{ .signed_int = .dword }, .any },38726 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25826 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},38727 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25827 .patterns = &.{38728 .patterns = &.{
25828 .{ .src = .{ .mem, .none } },38729 .{ .src = .{ .to_mem, .none, .none } },
25829 .{ .src = .{ .to_gpr, .none } },
25830 },38730 },
25831 .extra_temps = .{38731 .extra_temps = .{
25832 .{ .type = .i64, .kind = .{ .reg = .rax } },38732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25833 .{ .type = .usize, .kind = .{ .reg = .rdi } },38733 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
25834 .{ .type = .u32, .kind = .{ .reg = .ecx } },38734 .unused,
25835 .unused,38735 .unused,
25836 .unused,38736 .unused,
25837 .unused,38737 .unused,
...@@ -25842,25 +38742,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25842,25 +38742,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25842 .dst_temps = .{.mem},38742 .dst_temps = .{.mem},
25843 .clobbers = .{ .eflags = true },38743 .clobbers = .{ .eflags = true },
25844 .each = .{ .once = &.{38744 .each = .{ .once = &.{
25845 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },38745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25846 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38746 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25847 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38747 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25848 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },38748 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25849 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25850 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25851 } },38750 } },
25852 }, .{38751 }, .{
25853 .required_features = .{ .@"64bit", null, null, null },38752 .required_features = .{ .avx, null, null, null },
25854 .src_constraints = .{ .{ .int = .dword }, .any },38753 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
25855 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},38754 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
25856 .patterns = &.{38755 .patterns = &.{
25857 .{ .src = .{ .mem, .none } },38756 .{ .src = .{ .to_mem, .none, .none } },
25858 .{ .src = .{ .to_gpr, .none } },
25859 },38757 },
25860 .extra_temps = .{38758 .extra_temps = .{
25861 .{ .type = .u64, .kind = .{ .reg = .rax } },38759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25862 .{ .type = .usize, .kind = .{ .reg = .rdi } },38760 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25863 .{ .type = .u32, .kind = .{ .reg = .ecx } },38761 .unused,
25864 .unused,38762 .unused,
25865 .unused,38763 .unused,
25866 .unused,38764 .unused,
...@@ -25871,24 +38769,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25871,24 +38769,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25871 .dst_temps = .{.mem},38769 .dst_temps = .{.mem},
25872 .clobbers = .{ .eflags = true },38770 .clobbers = .{ .eflags = true },
25873 .each = .{ .once = &.{38771 .each = .{ .once = &.{
25874 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },38772 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25875 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38773 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25876 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38774 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25877 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38775 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25878 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25879 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25880 } },38777 } },
25881 }, .{38778 }, .{
25882 .src_constraints = .{ .{ .signed_int = .dword }, .any },38779 .required_features = .{ .sse4_1, null, null, null },
25883 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }},38780 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38781 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
25884 .patterns = &.{38782 .patterns = &.{
25885 .{ .src = .{ .mem, .none } },38783 .{ .src = .{ .to_mem, .none, .none } },
25886 .{ .src = .{ .to_gpr, .none } },
25887 },38784 },
25888 .extra_temps = .{38785 .extra_temps = .{
25889 .{ .type = .i32, .kind = .{ .reg = .eax } },38786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25890 .{ .type = .usize, .kind = .{ .reg = .edi } },38787 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
25891 .{ .type = .u32, .kind = .{ .reg = .ecx } },38788 .unused,
25892 .unused,38789 .unused,
25893 .unused,38790 .unused,
25894 .unused,38791 .unused,
...@@ -25899,24 +38796,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25899,24 +38796,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25899 .dst_temps = .{.mem},38796 .dst_temps = .{.mem},
25900 .clobbers = .{ .eflags = true },38797 .clobbers = .{ .eflags = true },
25901 .each = .{ .once = &.{38798 .each = .{ .once = &.{
25902 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },38799 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25903 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38800 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25904 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38801 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25905 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },38802 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25906 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38803 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25907 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25908 } },38804 } },
25909 }, .{38805 }, .{
25910 .src_constraints = .{ .{ .int = .dword }, .any },38806 .required_features = .{ .sse4_1, null, null, null },
25911 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},38807 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
38808 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
25912 .patterns = &.{38809 .patterns = &.{
25913 .{ .src = .{ .mem, .none } },38810 .{ .src = .{ .to_mem, .none, .none } },
25914 .{ .src = .{ .to_gpr, .none } },
25915 },38811 },
25916 .extra_temps = .{38812 .extra_temps = .{
25917 .{ .type = .u32, .kind = .{ .reg = .eax } },38813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25918 .{ .type = .usize, .kind = .{ .reg = .edi } },38814 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
25919 .{ .type = .u32, .kind = .{ .reg = .ecx } },38815 .unused,
25920 .unused,38816 .unused,
25921 .unused,38817 .unused,
25922 .unused,38818 .unused,
...@@ -25927,25 +38823,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25927,25 +38823,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25927 .dst_temps = .{.mem},38823 .dst_temps = .{.mem},
25928 .clobbers = .{ .eflags = true },38824 .clobbers = .{ .eflags = true },
25929 .each = .{ .once = &.{38825 .each = .{ .once = &.{
25930 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },38826 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25931 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38827 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
25932 .{ ._, ._sd, .sto, ._, ._, ._, ._ },38828 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
25933 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38829 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25934 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },38830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25935 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25936 } },38831 } },
25937 }, .{38832 }, .{
25938 .required_features = .{ .@"64bit", null, null, null },38833 .required_features = .{ .slow_incdec, null, null, null },
25939 .src_constraints = .{ .{ .signed_int = .qword }, .any },38834 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25940 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},38835 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
25941 .patterns = &.{38836 .patterns = &.{
25942 .{ .src = .{ .mem, .none } },38837 .{ .src = .{ .to_mem, .none, .none } },
25943 .{ .src = .{ .to_gpr, .none } },
25944 },38838 },
25945 .extra_temps = .{38839 .extra_temps = .{
25946 .{ .type = .i64, .kind = .{ .reg = .rax } },38840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25947 .{ .type = .usize, .kind = .{ .reg = .rdi } },38841 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
25948 .{ .type = .u32, .kind = .{ .reg = .ecx } },38842 .unused,
25949 .unused,38843 .unused,
25950 .unused,38844 .unused,
25951 .unused,38845 .unused,
...@@ -25956,25 +38850,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25956,25 +38850,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25956 .dst_temps = .{.mem},38850 .dst_temps = .{.mem},
25957 .clobbers = .{ .eflags = true },38851 .clobbers = .{ .eflags = true },
25958 .each = .{ .once = &.{38852 .each = .{ .once = &.{
25959 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },38853 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25960 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38854 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25961 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38855 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25962 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },38856 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
25963 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25964 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25965 } },38858 } },
25966 }, .{38859 }, .{
25967 .required_features = .{ .@"64bit", null, null, null },38860 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25968 .src_constraints = .{ .{ .int = .qword }, .any },38861 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
25969 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25970 .patterns = &.{38862 .patterns = &.{
25971 .{ .src = .{ .mem, .none } },38863 .{ .src = .{ .to_mem, .none, .none } },
25972 .{ .src = .{ .to_gpr, .none } },
25973 },38864 },
25974 .extra_temps = .{38865 .extra_temps = .{
25975 .{ .type = .u64, .kind = .{ .reg = .rax } },38866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25976 .{ .type = .usize, .kind = .{ .reg = .rdi } },38867 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
25977 .{ .type = .u32, .kind = .{ .reg = .ecx } },38868 .unused,
25978 .unused,38869 .unused,
25979 .unused,38870 .unused,
25980 .unused,38871 .unused,
...@@ -25985,25 +38876,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -25985,25 +38876,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25985 .dst_temps = .{.mem},38876 .dst_temps = .{.mem},
25986 .clobbers = .{ .eflags = true },38877 .clobbers = .{ .eflags = true },
25987 .each = .{ .once = &.{38878 .each = .{ .once = &.{
25988 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },38879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
25989 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38880 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
25990 .{ ._, ._sq, .sto, ._, ._, ._, ._ },38881 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25991 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },38882 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
25992 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },38883 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
25993 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25994 } },38884 } },
25995 }, .{38885 }, .{
25996 .required_features = .{ .@"64bit", null, null, null },38886 .required_features = .{ .slow_incdec, null, null, null },
25997 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },38887 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
25998 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }},38888 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25999 .patterns = &.{38889 .patterns = &.{
26000 .{ .src = .{ .to_mem, .none } },38890 .{ .src = .{ .to_mem, .none, .none } },
26001 },38891 },
26002 .extra_temps = .{38892 .extra_temps = .{
26003 .{ .type = .usize, .kind = .{ .reg = .rsi } },38893 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26004 .{ .type = .usize, .kind = .{ .reg = .rdi } },38894 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26005 .{ .type = .u32, .kind = .{ .reg = .ecx } },38895 .unused,
26006 .{ .type = .i64, .kind = .{ .reg = .rax } },38896 .unused,
26007 .unused,38897 .unused,
26008 .unused,38898 .unused,
26009 .unused,38899 .unused,
...@@ -26013,28 +38903,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26013,28 +38903,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26013 .dst_temps = .{.mem},38903 .dst_temps = .{.mem},
26014 .clobbers = .{ .eflags = true },38904 .clobbers = .{ .eflags = true },
26015 .each = .{ .once = &.{38905 .each = .{ .once = &.{
26016 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },38906 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26017 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38907 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26018 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },38908 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26019 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },38909 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26020 .{ ._, ._sq, .lod, ._, ._, ._, ._ },38910 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26021 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
26022 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
26023 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26024 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26025 } },38911 } },
26026 }, .{38912 }, .{
26027 .required_features = .{ .@"64bit", null, null, null },38913 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26028 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },38914 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
26029 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
26030 .patterns = &.{38915 .patterns = &.{
26031 .{ .src = .{ .to_mem, .none } },38916 .{ .src = .{ .to_mem, .none, .none } },
26032 },38917 },
26033 .extra_temps = .{38918 .extra_temps = .{
26034 .{ .type = .usize, .kind = .{ .reg = .rsi } },38919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26035 .{ .type = .usize, .kind = .{ .reg = .rdi } },38920 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26036 .{ .type = .u32, .kind = .{ .reg = .ecx } },38921 .unused,
26037 .{ .type = .u64, .kind = .{ .reg = .rax } },38922 .unused,
26038 .unused,38923 .unused,
26039 .unused,38924 .unused,
26040 .unused,38925 .unused,
...@@ -26044,68 +38929,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26044,68 +38929,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26044 .dst_temps = .{.mem},38929 .dst_temps = .{.mem},
26045 .clobbers = .{ .eflags = true },38930 .clobbers = .{ .eflags = true },
26046 .each = .{ .once = &.{38931 .each = .{ .once = &.{
26047 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },38932 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26048 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },38933 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26049 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },38934 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26050 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },38935 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26051 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },38936 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26052 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26053 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26054 } },38937 } },
26055 }, .{38938 }, .{
26056 .required_features = .{ .avx, null, null, null },38939 .required_features = .{ .avx, null, null, null },
26057 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },38940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
26058 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},38941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26059 .patterns = &.{38942 .patterns = &.{
26060 .{ .src = .{ .mem, .none } },38943 .{ .src = .{ .mem, .none, .none } },
26061 .{ .src = .{ .to_sse, .none } },38944 .{ .src = .{ .to_sse, .none, .none } },
26062 },38945 },
26063 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38946 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26064 .each = .{ .once = &.{38947 .each = .{ .once = &.{
26065 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },38948 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
26066 } },38949 } },
26067 }, .{38950 }, .{
26068 .required_features = .{ .avx, null, null, null },38951 .required_features = .{ .avx, null, null, null },
26069 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },38952 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
26070 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},38953 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26071 .patterns = &.{38954 .patterns = &.{
26072 .{ .src = .{ .mem, .none } },38955 .{ .src = .{ .mem, .none, .none } },
26073 .{ .src = .{ .to_sse, .none } },38956 .{ .src = .{ .to_sse, .none, .none } },
26074 },38957 },
26075 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38958 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26076 .each = .{ .once = &.{38959 .each = .{ .once = &.{
26077 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },38960 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
26078 } },38961 } },
26079 }, .{38962 }, .{
26080 .required_features = .{ .sse4_1, null, null, null },38963 .required_features = .{ .sse4_1, null, null, null },
26081 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },38964 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
26082 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},38965 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26083 .patterns = &.{38966 .patterns = &.{
26084 .{ .src = .{ .mem, .none } },38967 .{ .src = .{ .mem, .none, .none } },
26085 .{ .src = .{ .to_sse, .none } },38968 .{ .src = .{ .to_sse, .none, .none } },
26086 },38969 },
26087 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38970 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26088 .each = .{ .once = &.{38971 .each = .{ .once = &.{
26089 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },38972 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
26090 } },38973 } },
26091 }, .{38974 }, .{
26092 .required_features = .{ .sse4_1, null, null, null },38975 .required_features = .{ .sse4_1, null, null, null },
26093 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },38976 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
26094 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},38977 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26095 .patterns = &.{38978 .patterns = &.{
26096 .{ .src = .{ .mem, .none } },38979 .{ .src = .{ .mem, .none, .none } },
26097 .{ .src = .{ .to_sse, .none } },38980 .{ .src = .{ .to_sse, .none, .none } },
26098 },38981 },
26099 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},38982 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26100 .each = .{ .once = &.{38983 .each = .{ .once = &.{
26101 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },38984 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
26102 } },38985 } },
26103 }, .{38986 }, .{
26104 .required_features = .{ .sse2, null, null, null },38987 .required_features = .{ .sse2, null, null, null },
26105 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },38988 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
26106 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},38989 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26107 .patterns = &.{38990 .patterns = &.{
26108 .{ .src = .{ .to_mut_sse, .none } },38991 .{ .src = .{ .to_mut_sse, .none, .none } },
26109 },38992 },
26110 .extra_temps = .{38993 .extra_temps = .{
26111 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },38994 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
...@@ -26123,13 +39006,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26123,13 +39006,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26123 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },39006 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26124 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },39007 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26125 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },39008 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
39009 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
39010 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39011 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
39012 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26126 } },39013 } },
26127 }, .{39014 }, .{
26128 .required_features = .{ .sse2, null, null, null },39015 .required_features = .{ .sse2, null, null, null },
26129 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },39016 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
26130 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},39017 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26131 .patterns = &.{39018 .patterns = &.{
26132 .{ .src = .{ .to_mut_sse, .none } },39019 .{ .src = .{ .to_mut_sse, .none, .none } },
26133 },39020 },
26134 .extra_temps = .{39021 .extra_temps = .{
26135 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },39022 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -26146,41 +39033,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26146,41 +39033,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26146 .each = .{ .once = &.{39033 .each = .{ .once = &.{
26147 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },39034 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26148 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },39035 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
39036 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39037 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26149 } },39038 } },
26150 }, .{39039 }, .{
26151 .required_features = .{ .avx2, null, null, null },39040 .required_features = .{ .avx2, null, null, null },
26152 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },39041 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
26153 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},39042 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26154 .patterns = &.{39043 .patterns = &.{
26155 .{ .src = .{ .mem, .none } },39044 .{ .src = .{ .mem, .none, .none } },
26156 .{ .src = .{ .to_sse, .none } },39045 .{ .src = .{ .to_sse, .none, .none } },
26157 },39046 },
26158 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39047 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26159 .each = .{ .once = &.{39048 .each = .{ .once = &.{
26160 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },39049 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
26161 } },39050 } },
26162 }, .{39051 }, .{
26163 .required_features = .{ .avx2, null, null, null },39052 .required_features = .{ .avx2, null, null, null },
26164 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },39053 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
26165 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},39054 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
26166 .patterns = &.{39055 .patterns = &.{
26167 .{ .src = .{ .mem, .none } },39056 .{ .src = .{ .mem, .none, .none } },
26168 .{ .src = .{ .to_sse, .none } },39057 .{ .src = .{ .to_sse, .none, .none } },
26169 },39058 },
26170 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39059 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26171 .each = .{ .once = &.{39060 .each = .{ .once = &.{
26172 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },39061 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
26173 } },39062 } },
26174 }, .{39063 }, .{
26175 .required_features = .{ .avx2, null, null, null },39064 .required_features = .{ .avx2, null, null, null },
26176 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },39065 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
26177 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},39066 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26178 .patterns = &.{39067 .patterns = &.{
26179 .{ .src = .{ .to_mem, .none } },39068 .{ .src = .{ .to_mem, .none, .none } },
26180 },39069 },
26181 .extra_temps = .{39070 .extra_temps = .{
26182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26183 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },39072 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
26184 .unused,39073 .unused,
26185 .unused,39074 .unused,
26186 .unused,39075 .unused,
...@@ -26193,21 +39082,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26193,21 +39082,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26193 .clobbers = .{ .eflags = true },39082 .clobbers = .{ .eflags = true },
26194 .each = .{ .once = &.{39083 .each = .{ .once = &.{
26195 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39084 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26196 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },39085 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26197 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },39086 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },39087 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26200 } },39089 } },
26201 }, .{39090 }, .{
26202 .required_features = .{ .avx2, null, null, null },39091 .required_features = .{ .avx2, null, null, null },
26203 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },39092 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any },
26204 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},39093 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
26205 .patterns = &.{39094 .patterns = &.{
26206 .{ .src = .{ .to_mem, .none } },39095 .{ .src = .{ .to_mem, .none, .none } },
26207 },39096 },
26208 .extra_temps = .{39097 .extra_temps = .{
26209 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26210 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },39099 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
26211 .unused,39100 .unused,
26212 .unused,39101 .unused,
26213 .unused,39102 .unused,
...@@ -26220,21 +39109,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26220,21 +39109,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26220 .clobbers = .{ .eflags = true },39109 .clobbers = .{ .eflags = true },
26221 .each = .{ .once = &.{39110 .each = .{ .once = &.{
26222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26223 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },39112 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
26224 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },39113 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26225 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },39114 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26226 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39115 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26227 } },39116 } },
26228 }, .{39117 }, .{
26229 .required_features = .{ .avx, null, null, null },39118 .required_features = .{ .avx, null, null, null },
26230 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },39119 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
26231 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},39120 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26232 .patterns = &.{39121 .patterns = &.{
26233 .{ .src = .{ .to_mem, .none } },39122 .{ .src = .{ .to_mem, .none, .none } },
26234 },39123 },
26235 .extra_temps = .{39124 .extra_temps = .{
26236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26237 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },39126 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26238 .unused,39127 .unused,
26239 .unused,39128 .unused,
26240 .unused,39129 .unused,
...@@ -26247,21 +39136,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26247,21 +39136,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26247 .clobbers = .{ .eflags = true },39136 .clobbers = .{ .eflags = true },
26248 .each = .{ .once = &.{39137 .each = .{ .once = &.{
26249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39138 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26250 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },39139 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26251 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39140 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26252 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },39141 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26253 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26254 } },39143 } },
26255 }, .{39144 }, .{
26256 .required_features = .{ .avx, null, null, null },39145 .required_features = .{ .avx, null, null, null },
26257 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },39146 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
26258 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},39147 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
26259 .patterns = &.{39148 .patterns = &.{
26260 .{ .src = .{ .to_mem, .none } },39149 .{ .src = .{ .to_mem, .none, .none } },
26261 },39150 },
26262 .extra_temps = .{39151 .extra_temps = .{
26263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26264 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },39153 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26265 .unused,39154 .unused,
26266 .unused,39155 .unused,
26267 .unused,39156 .unused,
...@@ -26274,21 +39163,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26274,21 +39163,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26274 .clobbers = .{ .eflags = true },39163 .clobbers = .{ .eflags = true },
26275 .each = .{ .once = &.{39164 .each = .{ .once = &.{
26276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26277 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },39166 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26278 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39167 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26279 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },39168 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26281 } },39170 } },
26282 }, .{39171 }, .{
26283 .required_features = .{ .sse4_1, null, null, null },39172 .required_features = .{ .sse4_1, null, null, null },
26284 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },39173 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
26285 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},39174 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26286 .patterns = &.{39175 .patterns = &.{
26287 .{ .src = .{ .to_mem, .none } },39176 .{ .src = .{ .to_mem, .none, .none } },
26288 },39177 },
26289 .extra_temps = .{39178 .extra_temps = .{
26290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26291 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },39180 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26292 .unused,39181 .unused,
26293 .unused,39182 .unused,
26294 .unused,39183 .unused,
...@@ -26301,21 +39190,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26301,21 +39190,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26301 .clobbers = .{ .eflags = true },39190 .clobbers = .{ .eflags = true },
26302 .each = .{ .once = &.{39191 .each = .{ .once = &.{
26303 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26304 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },39193 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26305 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39194 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26306 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },39195 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26307 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26308 } },39197 } },
26309 }, .{39198 }, .{
26310 .required_features = .{ .sse4_1, null, null, null },39199 .required_features = .{ .sse4_1, null, null, null },
26311 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },39200 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
26312 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},39201 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
26313 .patterns = &.{39202 .patterns = &.{
26314 .{ .src = .{ .to_mem, .none } },39203 .{ .src = .{ .to_mem, .none, .none } },
26315 },39204 },
26316 .extra_temps = .{39205 .extra_temps = .{
26317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26318 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },39207 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
26319 .unused,39208 .unused,
26320 .unused,39209 .unused,
26321 .unused,39210 .unused,
...@@ -26328,21 +39217,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26328,21 +39217,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26328 .clobbers = .{ .eflags = true },39217 .clobbers = .{ .eflags = true },
26329 .each = .{ .once = &.{39218 .each = .{ .once = &.{
26330 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39219 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26331 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },39220 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26332 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39221 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26333 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },39222 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26334 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26335 } },39224 } },
26336 }, .{39225 }, .{
26337 .required_features = .{ .slow_incdec, null, null, null },39226 .required_features = .{ .@"64bit", .slow_incdec, null, null },
26338 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },39227 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26339 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},39228 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
26340 .patterns = &.{39229 .patterns = &.{
26341 .{ .src = .{ .to_mem, .none } },39230 .{ .src = .{ .to_mem, .none, .none } },
26342 },39231 },
26343 .extra_temps = .{39232 .extra_temps = .{
26344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26345 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },39234 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
26346 .unused,39235 .unused,
26347 .unused,39236 .unused,
26348 .unused,39237 .unused,
...@@ -26355,20 +39244,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26355,20 +39244,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26355 .clobbers = .{ .eflags = true },39244 .clobbers = .{ .eflags = true },
26356 .each = .{ .once = &.{39245 .each = .{ .once = &.{
26357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39246 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39247 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26359 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },39248 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26360 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },39249 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26361 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26362 } },39251 } },
26363 }, .{39252 }, .{
26364 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },39253 .required_features = .{ .@"64bit", null, null, null },
26365 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},39254 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
39255 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
26366 .patterns = &.{39256 .patterns = &.{
26367 .{ .src = .{ .to_mem, .none } },39257 .{ .src = .{ .to_mem, .none, .none } },
26368 },39258 },
26369 .extra_temps = .{39259 .extra_temps = .{
26370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26371 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },39261 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
26372 .unused,39262 .unused,
26373 .unused,39263 .unused,
26374 .unused,39264 .unused,
...@@ -26381,21 +39271,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26381,21 +39271,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26381 .clobbers = .{ .eflags = true },39271 .clobbers = .{ .eflags = true },
26382 .each = .{ .once = &.{39272 .each = .{ .once = &.{
26383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39273 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26384 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39274 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26385 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },39275 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
26386 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },39276 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26387 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },39277 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26388 } },39278 } },
26389 }, .{39279 }, .{
26390 .required_features = .{ .slow_incdec, null, null, null },39280 .required_features = .{ .slow_incdec, null, null, null },
26391 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },39281 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26392 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},39282 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
26393 .patterns = &.{39283 .patterns = &.{
26394 .{ .src = .{ .to_mem, .none } },39284 .{ .src = .{ .to_mem, .none, .none } },
26395 },39285 },
26396 .extra_temps = .{39286 .extra_temps = .{
26397 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26398 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },39288 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26399 .unused,39289 .unused,
26400 .unused,39290 .unused,
26401 .unused,39291 .unused,
...@@ -26409,19 +39299,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26409,19 +39299,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26409 .each = .{ .once = &.{39299 .each = .{ .once = &.{
26410 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26411 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39301 .{ .@"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, ._, ._ },
26413 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },39303 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26414 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26415 } },39305 } },
26416 }, .{39306 }, .{
26417 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },39307 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26418 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},39308 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
26419 .patterns = &.{39309 .patterns = &.{
26420 .{ .src = .{ .to_mem, .none } },39310 .{ .src = .{ .to_mem, .none, .none } },
26421 },39311 },
26422 .extra_temps = .{39312 .extra_temps = .{
26423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26424 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },39314 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26425 .unused,39315 .unused,
26426 .unused,39316 .unused,
26427 .unused,39317 .unused,
...@@ -26435,64 +39325,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26435,64 +39325,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26435 .each = .{ .once = &.{39325 .each = .{ .once = &.{
26436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26437 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39327 .{ .@"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, ._, ._ },
26439 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },39329 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26440 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },39330 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26441 } },39331 } },
26442 }, .{39332 }, .{
26443 .required_features = .{ .avx, null, null, null },39333 .required_features = .{ .avx, null, null, null },
26444 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },39334 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26445 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},39335 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
26446 .patterns = &.{39336 .patterns = &.{
26447 .{ .src = .{ .mem, .none } },39337 .{ .src = .{ .mem, .none, .none } },
26448 .{ .src = .{ .to_sse, .none } },39338 .{ .src = .{ .to_sse, .none, .none } },
26449 },39339 },
26450 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39340 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26451 .each = .{ .once = &.{39341 .each = .{ .once = &.{
26452 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },39342 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
39343 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
26453 } },39344 } },
26454 }, .{39345 }, .{
26455 .required_features = .{ .avx, null, null, null },39346 .required_features = .{ .avx, null, null, null },
26456 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },39347 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26457 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},39348 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
26458 .patterns = &.{39349 .patterns = &.{
26459 .{ .src = .{ .mem, .none } },39350 .{ .src = .{ .mem, .none, .none } },
26460 .{ .src = .{ .to_sse, .none } },39351 .{ .src = .{ .to_sse, .none, .none } },
26461 },39352 },
26462 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39353 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26463 .each = .{ .once = &.{39354 .each = .{ .once = &.{
26464 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },39355 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
39356 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
26465 } },39357 } },
26466 }, .{39358 }, .{
26467 .required_features = .{ .sse4_1, null, null, null },39359 .required_features = .{ .sse4_1, null, null, null },
26468 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },39360 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26469 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},39361 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
26470 .patterns = &.{39362 .patterns = &.{
26471 .{ .src = .{ .mem, .none } },39363 .{ .src = .{ .mem, .none, .none } },
26472 .{ .src = .{ .to_sse, .none } },39364 .{ .src = .{ .to_sse, .none, .none } },
26473 },39365 },
26474 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39366 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26475 .each = .{ .once = &.{39367 .each = .{ .once = &.{
26476 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },39368 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
39369 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
26477 } },39370 } },
26478 }, .{39371 }, .{
26479 .required_features = .{ .sse4_1, null, null, null },39372 .required_features = .{ .sse4_1, null, null, null },
26480 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },39373 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26481 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},39374 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
26482 .patterns = &.{39375 .patterns = &.{
26483 .{ .src = .{ .mem, .none } },39376 .{ .src = .{ .mem, .none, .none } },
26484 .{ .src = .{ .to_sse, .none } },39377 .{ .src = .{ .to_sse, .none, .none } },
26485 },39378 },
26486 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39379 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26487 .each = .{ .once = &.{39380 .each = .{ .once = &.{
26488 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },39381 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
39382 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
26489 } },39383 } },
26490 }, .{39384 }, .{
26491 .required_features = .{ .sse2, null, null, null },39385 .required_features = .{ .sse2, null, null, null },
26492 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },39386 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26493 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},39387 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
26494 .patterns = &.{39388 .patterns = &.{
26495 .{ .src = .{ .to_mut_sse, .none } },39389 .{ .src = .{ .to_mut_sse, .none, .none } },
26496 },39390 },
26497 .extra_temps = .{39391 .extra_temps = .{
26498 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },39392 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
...@@ -26512,13 +39406,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26512,13 +39406,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26512 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },39406 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26513 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },39407 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26514 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },39408 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39409 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
39410 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
39411 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
39412 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
26515 } },39413 } },
26516 }, .{39414 }, .{
26517 .required_features = .{ .sse2, null, null, null },39415 .required_features = .{ .sse2, null, null, null },
26518 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },39416 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26519 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},39417 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
26520 .patterns = &.{39418 .patterns = &.{
26521 .{ .src = .{ .to_mut_sse, .none } },39419 .{ .src = .{ .to_mut_sse, .none, .none } },
26522 },39420 },
26523 .extra_temps = .{39421 .extra_temps = .{
26524 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },39422 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -26536,43 +39434,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26536,43 +39434,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26536 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },39434 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26537 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },39435 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26538 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },39436 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
39437 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
39438 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
26539 } },39439 } },
26540 }, .{39440 }, .{
26541 .required_features = .{ .avx2, null, null, null },39441 .required_features = .{ .@"64bit", .slow_incdec, null, null },
26542 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },39442 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26543 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},39443 .dst_constraints = .{.any_scalar_signed_int},
26544 .patterns = &.{39444 .patterns = &.{
26545 .{ .src = .{ .mem, .none } },39445 .{ .src = .{ .to_mem, .none, .none } },
26546 .{ .src = .{ .to_sse, .none } },
26547 },39446 },
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 },
26549 .each = .{ .once = &.{39460 .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", ._, ._, ._ },
26551 } },39470 } },
26552 }, .{39471 }, .{
26553 .required_features = .{ .avx2, null, null, null },39472 .required_features = .{ .@"64bit", null, null, null },
26554 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },39473 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26555 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},39474 .dst_constraints = .{.any_scalar_signed_int},
26556 .patterns = &.{39475 .patterns = &.{
26557 .{ .src = .{ .mem, .none } },39476 .{ .src = .{ .to_mem, .none, .none } },
26558 .{ .src = .{ .to_sse, .none } },
26559 },39477 },
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 },
26561 .each = .{ .once = &.{39491 .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", ._, ._, ._ },
26563 } },39501 } },
26564 }, .{39502 }, .{
26565 .required_features = .{ .avx2, null, null, null },39503 .required_features = .{ .@"64bit", .slow_incdec, null, null },
26566 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },39504 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26567 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},39505 .dst_constraints = .{.any_scalar_int},
26568 .patterns = &.{39506 .patterns = &.{
26569 .{ .src = .{ .to_mem, .none } },39507 .{ .src = .{ .to_mem, .none, .none } },
26570 },39508 },
26571 .extra_temps = .{39509 .extra_temps = .{
26572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39510 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26573 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },39511 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26574 .unused,39512 .{ .type = .u64, .kind = .{ .reg = .rax } },
26575 .unused,39513 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26576 .unused,39514 .unused,
26577 .unused,39515 .unused,
26578 .unused,39516 .unused,
...@@ -26583,23 +39521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26583,23 +39521,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26583 .clobbers = .{ .eflags = true },39521 .clobbers = .{ .eflags = true },
26584 .each = .{ .once = &.{39522 .each = .{ .once = &.{
26585 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39523 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26586 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },39524 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
26587 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },39525 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
26589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26590 } },39532 } },
26591 }, .{39533 }, .{
26592 .required_features = .{ .avx2, null, null, null },39534 .required_features = .{ .@"64bit", null, null, null },
26593 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },39535 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
26594 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},39536 .dst_constraints = .{.any_scalar_int},
26595 .patterns = &.{39537 .patterns = &.{
26596 .{ .src = .{ .to_mem, .none } },39538 .{ .src = .{ .to_mem, .none, .none } },
26597 },39539 },
26598 .extra_temps = .{39540 .extra_temps = .{
26599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26600 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },39542 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26601 .unused,39543 .{ .type = .u64, .kind = .{ .reg = .rax } },
26602 .unused,39544 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26603 .unused,39545 .unused,
26604 .unused,39546 .unused,
26605 .unused,39547 .unused,
...@@ -26610,21 +39552,144 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26610,21 +39552,144 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26610 .clobbers = .{ .eflags = true },39552 .clobbers = .{ .eflags = true },
26611 .each = .{ .once = &.{39553 .each = .{ .once = &.{
26612 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39554 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26613 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },39555 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
26614 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },39556 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26615 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },39557 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
26616 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
26617 } },39563 } },
26618 }, .{39564 }, .{
26619 .required_features = .{ .avx, null, null, null },39565 .required_features = .{ .avx, null, null, null },
26620 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },39566 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
26621 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},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 } }},
26622 .patterns = &.{39687 .patterns = &.{
26623 .{ .src = .{ .to_mem, .none } },39688 .{ .src = .{ .to_mem, .none, .none } },
26624 },39689 },
26625 .extra_temps = .{39690 .extra_temps = .{
26626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26627 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },39692 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
26628 .unused,39693 .unused,
26629 .unused,39694 .unused,
26630 .unused,39695 .unused,
...@@ -26637,21 +39702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26637,21 +39702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26637 .clobbers = .{ .eflags = true },39702 .clobbers = .{ .eflags = true },
26638 .each = .{ .once = &.{39703 .each = .{ .once = &.{
26639 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26640 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },39705 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
26641 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39706 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },39707 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26644 } },39709 } },
26645 }, .{39710 }, .{
26646 .required_features = .{ .avx, null, null, null },39711 .required_features = .{ .avx2, null, null, null },
26647 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },39712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
26648 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},39713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
26649 .patterns = &.{39714 .patterns = &.{
26650 .{ .src = .{ .to_mem, .none } },39715 .{ .src = .{ .to_mem, .none, .none } },
26651 },39716 },
26652 .extra_temps = .{39717 .extra_temps = .{
26653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26654 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },39719 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
26655 .unused,39720 .unused,
26656 .unused,39721 .unused,
26657 .unused,39722 .unused,
...@@ -26664,17 +39729,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26664,17 +39729,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26664 .clobbers = .{ .eflags = true },39729 .clobbers = .{ .eflags = true },
26665 .each = .{ .once = &.{39730 .each = .{ .once = &.{
26666 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26667 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },39732 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
26668 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39733 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26669 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },39734 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26671 } },39736 } },
26672 }, .{39737 }, .{
26673 .required_features = .{ .sse4_1, null, null, null },39738 .required_features = .{ .avx, null, null, null },
26674 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },39739 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
26675 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},39740 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26676 .patterns = &.{39741 .patterns = &.{
26677 .{ .src = .{ .to_mem, .none } },39742 .{ .src = .{ .to_mem, .none, .none } },
26678 },39743 },
26679 .extra_temps = .{39744 .extra_temps = .{
26680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -26691,17 +39756,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26691,17 +39756,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26691 .clobbers = .{ .eflags = true },39756 .clobbers = .{ .eflags = true },
26692 .each = .{ .once = &.{39757 .each = .{ .once = &.{
26693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39758 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26694 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },39759 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26695 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39760 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26696 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },39761 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26697 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26698 } },39763 } },
26699 }, .{39764 }, .{
26700 .required_features = .{ .sse4_1, null, null, null },39765 .required_features = .{ .avx, null, null, null },
26701 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },39766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
26702 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},39767 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
26703 .patterns = &.{39768 .patterns = &.{
26704 .{ .src = .{ .to_mem, .none } },39769 .{ .src = .{ .to_mem, .none, .none } },
26705 },39770 },
26706 .extra_temps = .{39771 .extra_temps = .{
26707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -26718,21 +39783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26718,21 +39783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26718 .clobbers = .{ .eflags = true },39783 .clobbers = .{ .eflags = true },
26719 .each = .{ .once = &.{39784 .each = .{ .once = &.{
26720 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39785 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26721 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },39786 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26722 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },39787 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26723 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },39788 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26724 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26725 } },39790 } },
26726 }, .{39791 }, .{
26727 .required_features = .{ .slow_incdec, null, null, null },39792 .required_features = .{ .sse4_1, null, null, null },
26728 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },39793 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
26729 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},39794 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26730 .patterns = &.{39795 .patterns = &.{
26731 .{ .src = .{ .to_mem, .none } },39796 .{ .src = .{ .to_mem, .none, .none } },
26732 },39797 },
26733 .extra_temps = .{39798 .extra_temps = .{
26734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26735 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },39800 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
26736 .unused,39801 .unused,
26737 .unused,39802 .unused,
26738 .unused,39803 .unused,
...@@ -26745,20 +39810,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26745,20 +39810,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26745 .clobbers = .{ .eflags = true },39810 .clobbers = .{ .eflags = true },
26746 .each = .{ .once = &.{39811 .each = .{ .once = &.{
26747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39812 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26748 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39813 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26749 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },39814 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26750 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },39815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26751 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26752 } },39817 } },
26753 }, .{39818 }, .{
26754 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },39819 .required_features = .{ .sse4_1, null, null, null },
26755 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},39820 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
39821 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
26756 .patterns = &.{39822 .patterns = &.{
26757 .{ .src = .{ .to_mem, .none } },39823 .{ .src = .{ .to_mem, .none, .none } },
26758 },39824 },
26759 .extra_temps = .{39825 .extra_temps = .{
26760 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26761 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },39827 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
26762 .unused,39828 .unused,
26763 .unused,39829 .unused,
26764 .unused,39830 .unused,
...@@ -26771,21 +39837,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26771,21 +39837,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26771 .clobbers = .{ .eflags = true },39837 .clobbers = .{ .eflags = true },
26772 .each = .{ .once = &.{39838 .each = .{ .once = &.{
26773 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26774 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39840 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26775 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },39841 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
26776 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },39842 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26777 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },39843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26778 } },39844 } },
26779 }, .{39845 }, .{
26780 .required_features = .{ .slow_incdec, null, null, null },39846 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
26781 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },39847 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26782 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
26783 .patterns = &.{39848 .patterns = &.{
26784 .{ .src = .{ .to_mem, .none } },39849 .{ .src = .{ .to_mem, .none, .none } },
26785 },39850 },
26786 .extra_temps = .{39851 .extra_temps = .{
26787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26788 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },39853 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26789 .unused,39854 .unused,
26790 .unused,39855 .unused,
26791 .unused,39856 .unused,
...@@ -26798,16 +39863,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26798,16 +39863,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26798 .clobbers = .{ .eflags = true },39863 .clobbers = .{ .eflags = true },
26799 .each = .{ .once = &.{39864 .each = .{ .once = &.{
26800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39865 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26801 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39866 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26802 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },39867 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26803 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },39868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26805 } },39870 } },
26806 }, .{39871 }, .{
26807 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },39872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
26808 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},39873 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
26809 .patterns = &.{39874 .patterns = &.{
26810 .{ .src = .{ .to_mem, .none } },39875 .{ .src = .{ .to_mem, .none, .none } },
26811 },39876 },
26812 .extra_temps = .{39877 .extra_temps = .{
26813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -26824,68 +39889,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26824,68 +39889,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26824 .clobbers = .{ .eflags = true },39889 .clobbers = .{ .eflags = true },
26825 .each = .{ .once = &.{39890 .each = .{ .once = &.{
26826 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },39891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26827 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },39892 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
26828 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },39893 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26829 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },39894 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26830 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },39895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26831 } },39896 } },
26832 }, .{39897 }, .{
26833 .required_features = .{ .avx, null, null, null },39898 .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 },
26835 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},39900 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26836 .patterns = &.{39901 .patterns = &.{
26837 .{ .src = .{ .mem, .none } },39902 .{ .src = .{ .mem, .none, .none } },
26838 .{ .src = .{ .to_sse, .none } },39903 .{ .src = .{ .to_sse, .none, .none } },
26839 },39904 },
26840 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39905 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26841 .each = .{ .once = &.{39906 .each = .{ .once = &.{
26842 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },39907 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
26843 } },39908 } },
26844 }, .{39909 }, .{
26845 .required_features = .{ .avx, null, null, null },39910 .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 },
26847 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},39912 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26848 .patterns = &.{39913 .patterns = &.{
26849 .{ .src = .{ .mem, .none } },39914 .{ .src = .{ .mem, .none, .none } },
26850 .{ .src = .{ .to_sse, .none } },39915 .{ .src = .{ .to_sse, .none, .none } },
26851 },39916 },
26852 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39917 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26853 .each = .{ .once = &.{39918 .each = .{ .once = &.{
26854 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },39919 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
26855 } },39920 } },
26856 }, .{39921 }, .{
26857 .required_features = .{ .sse4_1, null, null, null },39922 .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 },
26859 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},39924 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26860 .patterns = &.{39925 .patterns = &.{
26861 .{ .src = .{ .mem, .none } },39926 .{ .src = .{ .mem, .none, .none } },
26862 .{ .src = .{ .to_sse, .none } },39927 .{ .src = .{ .to_sse, .none, .none } },
26863 },39928 },
26864 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39929 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26865 .each = .{ .once = &.{39930 .each = .{ .once = &.{
26866 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },39931 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
26867 } },39932 } },
26868 }, .{39933 }, .{
26869 .required_features = .{ .sse4_1, null, null, null },39934 .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 },
26871 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},39936 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26872 .patterns = &.{39937 .patterns = &.{
26873 .{ .src = .{ .mem, .none } },39938 .{ .src = .{ .mem, .none, .none } },
26874 .{ .src = .{ .to_sse, .none } },39939 .{ .src = .{ .to_sse, .none, .none } },
26875 },39940 },
26876 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},39941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26877 .each = .{ .once = &.{39942 .each = .{ .once = &.{
26878 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },39943 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
26879 } },39944 } },
26880 }, .{39945 }, .{
26881 .required_features = .{ .sse2, null, null, null },39946 .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 },
26883 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},39948 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26884 .patterns = &.{39949 .patterns = &.{
26885 .{ .src = .{ .to_mut_sse, .none } },39950 .{ .src = .{ .to_mut_sse, .none, .none } },
26886 },39951 },
26887 .extra_temps = .{39952 .extra_temps = .{
26888 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },39953 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
26889 .unused,39954 .unused,
26890 .unused,39955 .unused,
26891 .unused,39956 .unused,
...@@ -26898,22 +39963,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26898,22 +39963,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26898 .dst_temps = .{.{ .ref = .src0 }},39963 .dst_temps = .{.{ .ref = .src0 }},
26899 .each = .{ .once = &.{39964 .each = .{ .once = &.{
26900 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },39965 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26901 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },39966 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
26902 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26903 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26904 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },39967 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26905 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },39968 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
26906 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },39969 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26907 } },39970 } },
26908 }, .{39971 }, .{
26909 .required_features = .{ .sse2, null, null, null },39972 .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 },
26911 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},39974 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26912 .patterns = &.{39975 .patterns = &.{
26913 .{ .src = .{ .to_mut_sse, .none } },39976 .{ .src = .{ .to_mut_sse, .none, .none } },
26914 },39977 },
26915 .extra_temps = .{39978 .extra_temps = .{
26916 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },39979 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
26917 .unused,39980 .unused,
26918 .unused,39981 .unused,
26919 .unused,39982 .unused,
...@@ -26926,40 +39989,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26926,40 +39989,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26926 .dst_temps = .{.{ .ref = .src0 }},39989 .dst_temps = .{.{ .ref = .src0 }},
26927 .each = .{ .once = &.{39990 .each = .{ .once = &.{
26928 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },39991 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26929 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26930 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },39992 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26931 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },39993 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26932 } },39994 } },
26933 }, .{39995 }, .{
26934 .required_features = .{ .avx2, null, null, null },39996 .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 },
26936 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},39998 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26937 .patterns = &.{39999 .patterns = &.{
26938 .{ .src = .{ .mem, .none } },40000 .{ .src = .{ .mem, .none, .none } },
26939 .{ .src = .{ .to_sse, .none } },40001 .{ .src = .{ .to_sse, .none, .none } },
26940 },40002 },
26941 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40003 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26942 .each = .{ .once = &.{40004 .each = .{ .once = &.{
26943 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },40005 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
26944 } },40006 } },
26945 }, .{40007 }, .{
26946 .required_features = .{ .avx2, null, null, null },40008 .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 },
26948 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},40010 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
26949 .patterns = &.{40011 .patterns = &.{
26950 .{ .src = .{ .mem, .none } },40012 .{ .src = .{ .mem, .none, .none } },
26951 .{ .src = .{ .to_sse, .none } },40013 .{ .src = .{ .to_sse, .none, .none } },
26952 },40014 },
26953 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40015 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26954 .each = .{ .once = &.{40016 .each = .{ .once = &.{
26955 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },40017 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
26956 } },40018 } },
26957 }, .{40019 }, .{
26958 .required_features = .{ .avx2, null, null, null },40020 .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 },
26960 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},40022 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26961 .patterns = &.{40023 .patterns = &.{
26962 .{ .src = .{ .to_mem, .none } },40024 .{ .src = .{ .to_mem, .none, .none } },
26963 },40025 },
26964 .extra_temps = .{40026 .extra_temps = .{
26965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -26976,17 +40038,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26976,17 +40038,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26976 .clobbers = .{ .eflags = true },40038 .clobbers = .{ .eflags = true },
26977 .each = .{ .once = &.{40039 .each = .{ .once = &.{
26978 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40040 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26979 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },40041 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
26980 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40042 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
26981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },40043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26983 } },40045 } },
26984 }, .{40046 }, .{
26985 .required_features = .{ .avx2, null, null, null },40047 .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 },
26987 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},40049 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
26988 .patterns = &.{40050 .patterns = &.{
26989 .{ .src = .{ .to_mem, .none } },40051 .{ .src = .{ .to_mem, .none, .none } },
26990 },40052 },
26991 .extra_temps = .{40053 .extra_temps = .{
26992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27003,17 +40065,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27003,17 +40065,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27003 .clobbers = .{ .eflags = true },40065 .clobbers = .{ .eflags = true },
27004 .each = .{ .once = &.{40066 .each = .{ .once = &.{
27005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27006 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },40068 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
27007 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40069 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27008 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },40070 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40071 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27010 } },40072 } },
27011 }, .{40073 }, .{
27012 .required_features = .{ .avx, null, null, null },40074 .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 },
27014 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},40076 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27015 .patterns = &.{40077 .patterns = &.{
27016 .{ .src = .{ .to_mem, .none } },40078 .{ .src = .{ .to_mem, .none, .none } },
27017 },40079 },
27018 .extra_temps = .{40080 .extra_temps = .{
27019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40081 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27030,17 +40092,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27030,17 +40092,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27030 .clobbers = .{ .eflags = true },40092 .clobbers = .{ .eflags = true },
27031 .each = .{ .once = &.{40093 .each = .{ .once = &.{
27032 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40094 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27033 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40095 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27034 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40096 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27035 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40097 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27037 } },40099 } },
27038 }, .{40100 }, .{
27039 .required_features = .{ .avx, null, null, null },40101 .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 },
27041 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},40103 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27042 .patterns = &.{40104 .patterns = &.{
27043 .{ .src = .{ .to_mem, .none } },40105 .{ .src = .{ .to_mem, .none, .none } },
27044 },40106 },
27045 .extra_temps = .{40107 .extra_temps = .{
27046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27057,17 +40119,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27057,17 +40119,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27057 .clobbers = .{ .eflags = true },40119 .clobbers = .{ .eflags = true },
27058 .each = .{ .once = &.{40120 .each = .{ .once = &.{
27059 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27060 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40122 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27061 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40123 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27062 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40124 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40125 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27064 } },40126 } },
27065 }, .{40127 }, .{
27066 .required_features = .{ .sse4_1, null, null, null },40128 .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 },
27068 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},40130 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27069 .patterns = &.{40131 .patterns = &.{
27070 .{ .src = .{ .to_mem, .none } },40132 .{ .src = .{ .to_mem, .none, .none } },
27071 },40133 },
27072 .extra_temps = .{40134 .extra_temps = .{
27073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27084,17 +40146,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27084,17 +40146,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27084 .clobbers = .{ .eflags = true },40146 .clobbers = .{ .eflags = true },
27085 .each = .{ .once = &.{40147 .each = .{ .once = &.{
27086 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40148 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27087 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40149 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27088 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40150 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27089 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40151 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27090 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27091 } },40153 } },
27092 }, .{40154 }, .{
27093 .required_features = .{ .sse4_1, null, null, null },40155 .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 },
27095 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},40157 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27096 .patterns = &.{40158 .patterns = &.{
27097 .{ .src = .{ .to_mem, .none } },40159 .{ .src = .{ .to_mem, .none, .none } },
27098 },40160 },
27099 .extra_temps = .{40161 .extra_temps = .{
27100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27111,44 +40173,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27111,44 +40173,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27111 .clobbers = .{ .eflags = true },40173 .clobbers = .{ .eflags = true },
27112 .each = .{ .once = &.{40174 .each = .{ .once = &.{
27113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27114 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40176 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27115 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40177 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27116 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40178 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
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), ._, ._ },
27144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27145 } },40180 } },
27146 }, .{40181 }, .{
27147 .required_features = .{ .@"64bit", null, null, null },40182 .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 },
27149 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},40184 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27150 .patterns = &.{40185 .patterns = &.{
27151 .{ .src = .{ .to_mem, .none } },40186 .{ .src = .{ .to_mem, .none, .none } },
27152 },40187 },
27153 .extra_temps = .{40188 .extra_temps = .{
27154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27164,48 +40199,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27164,48 +40199,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27164 .dst_temps = .{.mem},40199 .dst_temps = .{.mem},
27165 .clobbers = .{ .eflags = true },40200 .clobbers = .{ .eflags = true },
27166 .each = .{ .once = &.{40201 .each = .{ .once = &.{
27167 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27168 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },40203 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27169 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },40204 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27170 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },40205 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
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), ._, ._ },
27198 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27199 } },40207 } },
27200 }, .{40208 }, .{
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 },
27202 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},40211 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
27203 .patterns = &.{40212 .patterns = &.{
27204 .{ .src = .{ .to_mem, .none } },40213 .{ .src = .{ .to_mem, .none, .none } },
27205 },40214 },
27206 .extra_temps = .{40215 .extra_temps = .{
27207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27208 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },40217 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27209 .unused,40218 .unused,
27210 .unused,40219 .unused,
27211 .unused,40220 .unused,
...@@ -27218,72 +40227,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27218,72 +40227,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27218 .clobbers = .{ .eflags = true },40227 .clobbers = .{ .eflags = true },
27219 .each = .{ .once = &.{40228 .each = .{ .once = &.{
27220 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40229 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27221 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },40230 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27222 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },40231 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27223 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },40232 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27224 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },40233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27225 } },40234 } },
27226 }, .{40235 }, .{
27227 .required_features = .{ .avx, null, null, null },40236 .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 },
27229 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},40238 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27230 .patterns = &.{40239 .patterns = &.{
27231 .{ .src = .{ .mem, .none } },40240 .{ .src = .{ .mem, .none, .none } },
27232 .{ .src = .{ .to_sse, .none } },40241 .{ .src = .{ .to_sse, .none, .none } },
27233 },40242 },
27234 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40243 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27235 .each = .{ .once = &.{40244 .each = .{ .once = &.{
27236 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },40245 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
27237 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },40246 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27238 } },40247 } },
27239 }, .{40248 }, .{
27240 .required_features = .{ .avx, null, null, null },40249 .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 },
27242 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},40251 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27243 .patterns = &.{40252 .patterns = &.{
27244 .{ .src = .{ .mem, .none } },40253 .{ .src = .{ .mem, .none, .none } },
27245 .{ .src = .{ .to_sse, .none } },40254 .{ .src = .{ .to_sse, .none, .none } },
27246 },40255 },
27247 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40256 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27248 .each = .{ .once = &.{40257 .each = .{ .once = &.{
27249 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },40258 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
27250 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },40259 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27251 } },40260 } },
27252 }, .{40261 }, .{
27253 .required_features = .{ .sse4_1, null, null, null },40262 .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 },
27255 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},40264 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27256 .patterns = &.{40265 .patterns = &.{
27257 .{ .src = .{ .mem, .none } },40266 .{ .src = .{ .mem, .none, .none } },
27258 .{ .src = .{ .to_sse, .none } },40267 .{ .src = .{ .to_sse, .none, .none } },
27259 },40268 },
27260 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40269 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27261 .each = .{ .once = &.{40270 .each = .{ .once = &.{
27262 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },40271 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
27263 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },40272 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27264 } },40273 } },
27265 }, .{40274 }, .{
27266 .required_features = .{ .sse4_1, null, null, null },40275 .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 },
27268 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},40277 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27269 .patterns = &.{40278 .patterns = &.{
27270 .{ .src = .{ .mem, .none } },40279 .{ .src = .{ .mem, .none, .none } },
27271 .{ .src = .{ .to_sse, .none } },40280 .{ .src = .{ .to_sse, .none, .none } },
27272 },40281 },
27273 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40282 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27274 .each = .{ .once = &.{40283 .each = .{ .once = &.{
27275 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },40284 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
27276 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },40285 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27277 } },40286 } },
27278 }, .{40287 }, .{
27279 .required_features = .{ .sse2, null, null, null },40288 .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 },
27281 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},40290 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27282 .patterns = &.{40291 .patterns = &.{
27283 .{ .src = .{ .to_mut_sse, .none } },40292 .{ .src = .{ .to_mut_sse, .none, .none } },
27284 },40293 },
27285 .extra_temps = .{40294 .extra_temps = .{
27286 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },40295 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
27287 .unused,40296 .unused,
27288 .unused,40297 .unused,
27289 .unused,40298 .unused,
...@@ -27296,9 +40305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27296,9 +40305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27296 .dst_temps = .{.{ .ref = .src0 }},40305 .dst_temps = .{.{ .ref = .src0 }},
27297 .each = .{ .once = &.{40306 .each = .{ .once = &.{
27298 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40307 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27299 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },40308 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27300 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27301 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
27302 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },40309 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27303 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },40310 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27304 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },40311 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
...@@ -27307,13 +40314,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27307,13 +40314,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27307 } },40314 } },
27308 }, .{40315 }, .{
27309 .required_features = .{ .sse2, null, null, null },40316 .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 },
27311 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},40318 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27312 .patterns = &.{40319 .patterns = &.{
27313 .{ .src = .{ .to_mut_sse, .none } },40320 .{ .src = .{ .to_mut_sse, .none, .none } },
27314 },40321 },
27315 .extra_temps = .{40322 .extra_temps = .{
27316 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },40323 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
27317 .unused,40324 .unused,
27318 .unused,40325 .unused,
27319 .unused,40326 .unused,
...@@ -27326,48 +40333,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27326,48 +40333,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27326 .dst_temps = .{.{ .ref = .src0 }},40333 .dst_temps = .{.{ .ref = .src0 }},
27327 .each = .{ .once = &.{40334 .each = .{ .once = &.{
27328 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40335 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27329 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27330 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },40336 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27331 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },40337 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27332 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },40338 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
27333 } },40339 } },
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 } },
27365 }, .{40340 }, .{
27366 .required_features = .{ .@"64bit", null, null, null },40341 .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 },
27368 .dst_constraints = .{.any_scalar_signed_int},40343 .dst_constraints = .{.any_scalar_signed_int},
27369 .patterns = &.{40344 .patterns = &.{
27370 .{ .src = .{ .to_mem, .none } },40345 .{ .src = .{ .to_mem, .none, .none } },
27371 },40346 },
27372 .extra_temps = .{40347 .extra_temps = .{
27373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27385,51 +40360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27385,51 +40360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27385 .each = .{ .once = &.{40360 .each = .{ .once = &.{
27386 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40361 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27387 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },40362 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27388 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },40363 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27389 .{ ._, ._sq, .sto, ._, ._, ._, ._ },40364 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27390 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },40365 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27391 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },40366 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27392 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },40367 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27393 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },40368 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
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), ._, ._ },
27425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27426 } },40370 } },
27427 }, .{40371 }, .{
27428 .required_features = .{ .@"64bit", null, null, null },40372 .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 },
27430 .dst_constraints = .{.any_scalar_int},40374 .dst_constraints = .{.any_scalar_int},
27431 .patterns = &.{40375 .patterns = &.{
27432 .{ .src = .{ .to_mem, .none } },40376 .{ .src = .{ .to_mem, .none, .none } },
27433 },40377 },
27434 .extra_temps = .{40378 .extra_temps = .{
27435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -27447,71 +40391,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27447,71 +40391,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27447 .each = .{ .once = &.{40391 .each = .{ .once = &.{
27448 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40392 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27449 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },40393 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27450 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },40394 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27451 .{ ._, ._sq, .sto, ._, ._, ._, ._ },40395 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27452 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },40396 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27453 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },40397 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27454 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },40398 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27455 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },40399 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27456 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },40400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27457 } },40401 } },
27458 }, .{40402 }, .{
27459 .required_features = .{ .avx, null, null, null },40403 .required_features = .{ .avx, null, null, null },
27460 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40404 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27461 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},40405 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27462 .patterns = &.{40406 .patterns = &.{
27463 .{ .src = .{ .mem, .none } },40407 .{ .src = .{ .mem, .none, .none } },
27464 .{ .src = .{ .to_sse, .none } },40408 .{ .src = .{ .to_sse, .none, .none } },
27465 },40409 },
27466 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40410 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27467 .each = .{ .once = &.{40411 .each = .{ .once = &.{
27468 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },40412 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
27469 } },40413 } },
27470 }, .{40414 }, .{
27471 .required_features = .{ .avx, null, null, null },40415 .required_features = .{ .avx, null, null, null },
27472 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },40416 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27473 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},40417 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27474 .patterns = &.{40418 .patterns = &.{
27475 .{ .src = .{ .mem, .none } },40419 .{ .src = .{ .mem, .none, .none } },
27476 .{ .src = .{ .to_sse, .none } },40420 .{ .src = .{ .to_sse, .none, .none } },
27477 },40421 },
27478 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27479 .each = .{ .once = &.{40423 .each = .{ .once = &.{
27480 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },40424 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
27481 } },40425 } },
27482 }, .{40426 }, .{
27483 .required_features = .{ .sse4_1, null, null, null },40427 .required_features = .{ .sse4_1, null, null, null },
27484 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40428 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27485 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},40429 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27486 .patterns = &.{40430 .patterns = &.{
27487 .{ .src = .{ .mem, .none } },40431 .{ .src = .{ .mem, .none, .none } },
27488 .{ .src = .{ .to_sse, .none } },40432 .{ .src = .{ .to_sse, .none, .none } },
27489 },40433 },
27490 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40434 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27491 .each = .{ .once = &.{40435 .each = .{ .once = &.{
27492 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },40436 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
27493 } },40437 } },
27494 }, .{40438 }, .{
27495 .required_features = .{ .sse4_1, null, null, null },40439 .required_features = .{ .sse4_1, null, null, null },
27496 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },40440 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27497 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},40441 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27498 .patterns = &.{40442 .patterns = &.{
27499 .{ .src = .{ .mem, .none } },40443 .{ .src = .{ .mem, .none, .none } },
27500 .{ .src = .{ .to_sse, .none } },40444 .{ .src = .{ .to_sse, .none, .none } },
27501 },40445 },
27502 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40446 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27503 .each = .{ .once = &.{40447 .each = .{ .once = &.{
27504 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },40448 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
27505 } },40449 } },
27506 }, .{40450 }, .{
27507 .required_features = .{ .sse2, null, null, null },40451 .required_features = .{ .sse2, null, null, null },
27508 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40452 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27509 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},40453 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27510 .patterns = &.{40454 .patterns = &.{
27511 .{ .src = .{ .to_mut_sse, .none } },40455 .{ .src = .{ .to_mut_sse, .none, .none } },
27512 },40456 },
27513 .extra_temps = .{40457 .extra_temps = .{
27514 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },40458 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27515 .unused,40459 .unused,
27516 .unused,40460 .unused,
27517 .unused,40461 .unused,
...@@ -27524,18 +40468,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27524,18 +40468,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27524 .dst_temps = .{.{ .ref = .src0 }},40468 .dst_temps = .{.{ .ref = .src0 }},
27525 .each = .{ .once = &.{40469 .each = .{ .once = &.{
27526 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40470 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27527 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },40471 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
27528 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },40472 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27529 } },40473 } },
27530 }, .{40474 }, .{
27531 .required_features = .{ .sse2, null, null, null },40475 .required_features = .{ .sse2, null, null, null },
27532 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },40476 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27533 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},40477 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27534 .patterns = &.{40478 .patterns = &.{
27535 .{ .src = .{ .to_mut_sse, .none } },40479 .{ .src = .{ .to_mut_sse, .none, .none } },
27536 },40480 },
27537 .extra_temps = .{40481 .extra_temps = .{
27538 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },40482 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27539 .unused,40483 .unused,
27540 .unused,40484 .unused,
27541 .unused,40485 .unused,
...@@ -27548,42 +40492,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27548,42 +40492,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27548 .dst_temps = .{.{ .ref = .src0 }},40492 .dst_temps = .{.{ .ref = .src0 }},
27549 .each = .{ .once = &.{40493 .each = .{ .once = &.{
27550 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40494 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27551 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },40495 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27552 } },40496 } },
27553 }, .{40497 }, .{
27554 .required_features = .{ .avx2, null, null, null },40498 .required_features = .{ .avx2, null, null, null },
27555 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },40499 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
27556 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},40500 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27557 .patterns = &.{40501 .patterns = &.{
27558 .{ .src = .{ .mem, .none } },40502 .{ .src = .{ .mem, .none, .none } },
27559 .{ .src = .{ .to_sse, .none } },40503 .{ .src = .{ .to_sse, .none, .none } },
27560 },40504 },
27561 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40505 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27562 .each = .{ .once = &.{40506 .each = .{ .once = &.{
27563 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },40507 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
27564 } },40508 } },
27565 }, .{40509 }, .{
27566 .required_features = .{ .avx2, null, null, null },40510 .required_features = .{ .avx2, null, null, null },
27567 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },40511 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
27568 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},40512 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
27569 .patterns = &.{40513 .patterns = &.{
27570 .{ .src = .{ .mem, .none } },40514 .{ .src = .{ .mem, .none, .none } },
27571 .{ .src = .{ .to_sse, .none } },40515 .{ .src = .{ .to_sse, .none, .none } },
27572 },40516 },
27573 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40517 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27574 .each = .{ .once = &.{40518 .each = .{ .once = &.{
27575 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },40519 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
27576 } },40520 } },
27577 }, .{40521 }, .{
27578 .required_features = .{ .avx2, null, null, null },40522 .required_features = .{ .avx2, null, null, null },
27579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },40523 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
27580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},40524 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27581 .patterns = &.{40525 .patterns = &.{
27582 .{ .src = .{ .to_mem, .none } },40526 .{ .src = .{ .to_mem, .none, .none } },
27583 },40527 },
27584 .extra_temps = .{40528 .extra_temps = .{
27585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27586 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },40530 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
27587 .unused,40531 .unused,
27588 .unused,40532 .unused,
27589 .unused,40533 .unused,
...@@ -27596,21 +40540,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27596,21 +40540,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27596 .clobbers = .{ .eflags = true },40540 .clobbers = .{ .eflags = true },
27597 .each = .{ .once = &.{40541 .each = .{ .once = &.{
27598 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40542 .{ ._, ._, .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), ._, ._ },
27600 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40544 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27601 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },40545 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27603 } },40547 } },
27604 }, .{40548 }, .{
27605 .required_features = .{ .avx2, null, null, null },40549 .required_features = .{ .avx2, null, null, null },
27606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },40550 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
27607 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},40551 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
27608 .patterns = &.{40552 .patterns = &.{
27609 .{ .src = .{ .to_mem, .none } },40553 .{ .src = .{ .to_mem, .none, .none } },
27610 },40554 },
27611 .extra_temps = .{40555 .extra_temps = .{
27612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27613 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },40557 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
27614 .unused,40558 .unused,
27615 .unused,40559 .unused,
27616 .unused,40560 .unused,
...@@ -27623,21 +40567,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27623,21 +40567,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27623 .clobbers = .{ .eflags = true },40567 .clobbers = .{ .eflags = true },
27624 .each = .{ .once = &.{40568 .each = .{ .once = &.{
27625 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40569 .{ ._, ._, .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), ._, ._ },
27627 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40571 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27628 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },40572 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27629 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27630 } },40574 } },
27631 }, .{40575 }, .{
27632 .required_features = .{ .avx, null, null, null },40576 .required_features = .{ .avx, null, null, null },
27633 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40577 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27634 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},40578 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27635 .patterns = &.{40579 .patterns = &.{
27636 .{ .src = .{ .to_mem, .none } },40580 .{ .src = .{ .to_mem, .none, .none } },
27637 },40581 },
27638 .extra_temps = .{40582 .extra_temps = .{
27639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27640 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },40584 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27641 .unused,40585 .unused,
27642 .unused,40586 .unused,
27643 .unused,40587 .unused,
...@@ -27650,21 +40594,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27650,21 +40594,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27650 .clobbers = .{ .eflags = true },40594 .clobbers = .{ .eflags = true },
27651 .each = .{ .once = &.{40595 .each = .{ .once = &.{
27652 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40596 .{ ._, ._, .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), ._, ._ },
27654 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40598 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27655 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },40599 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27656 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27657 } },40601 } },
27658 }, .{40602 }, .{
27659 .required_features = .{ .avx, null, null, null },40603 .required_features = .{ .avx, null, null, null },
27660 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },40604 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
27661 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},40605 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27662 .patterns = &.{40606 .patterns = &.{
27663 .{ .src = .{ .to_mem, .none } },40607 .{ .src = .{ .to_mem, .none, .none } },
27664 },40608 },
27665 .extra_temps = .{40609 .extra_temps = .{
27666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27667 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },40611 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27668 .unused,40612 .unused,
27669 .unused,40613 .unused,
27670 .unused,40614 .unused,
...@@ -27677,21 +40621,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27677,21 +40621,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27677 .clobbers = .{ .eflags = true },40621 .clobbers = .{ .eflags = true },
27678 .each = .{ .once = &.{40622 .each = .{ .once = &.{
27679 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40623 .{ ._, ._, .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), ._, ._ },
27681 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40625 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27682 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },40626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27684 } },40628 } },
27685 }, .{40629 }, .{
27686 .required_features = .{ .sse4_1, null, null, null },40630 .required_features = .{ .sse4_1, null, null, null },
27687 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27688 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},40632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27689 .patterns = &.{40633 .patterns = &.{
27690 .{ .src = .{ .to_mem, .none } },40634 .{ .src = .{ .to_mem, .none, .none } },
27691 },40635 },
27692 .extra_temps = .{40636 .extra_temps = .{
27693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27694 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },40638 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27695 .unused,40639 .unused,
27696 .unused,40640 .unused,
27697 .unused,40641 .unused,
...@@ -27704,21 +40648,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27704,21 +40648,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27704 .clobbers = .{ .eflags = true },40648 .clobbers = .{ .eflags = true },
27705 .each = .{ .once = &.{40649 .each = .{ .once = &.{
27706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40650 .{ ._, ._, .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), ._, ._ },
27708 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40652 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27709 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },40653 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27710 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27711 } },40655 } },
27712 }, .{40656 }, .{
27713 .required_features = .{ .sse4_1, null, null, null },40657 .required_features = .{ .sse4_1, null, null, null },
27714 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },40658 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
27715 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},40659 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27716 .patterns = &.{40660 .patterns = &.{
27717 .{ .src = .{ .to_mem, .none } },40661 .{ .src = .{ .to_mem, .none, .none } },
27718 },40662 },
27719 .extra_temps = .{40663 .extra_temps = .{
27720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27721 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },40665 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27722 .unused,40666 .unused,
27723 .unused,40667 .unused,
27724 .unused,40668 .unused,
...@@ -27731,20 +40675,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27731,20 +40675,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27731 .clobbers = .{ .eflags = true },40675 .clobbers = .{ .eflags = true },
27732 .each = .{ .once = &.{40676 .each = .{ .once = &.{
27733 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40677 .{ ._, ._, .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), ._, ._ },
27735 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40679 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27736 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },40680 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27738 } },40682 } },
27739 }, .{40683 }, .{
27740 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },40684 .required_features = .{ .@"64bit", null, null, null },
27741 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},40685 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40686 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27742 .patterns = &.{40687 .patterns = &.{
27743 .{ .src = .{ .to_mem, .none } },40688 .{ .src = .{ .to_mem, .none, .none } },
27744 },40689 },
27745 .extra_temps = .{40690 .extra_temps = .{
27746 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27747 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },40692 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27748 .unused,40693 .unused,
27749 .unused,40694 .unused,
27750 .unused,40695 .unused,
...@@ -27757,20 +40702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27757,20 +40702,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27757 .clobbers = .{ .eflags = true },40702 .clobbers = .{ .eflags = true },
27758 .each = .{ .once = &.{40703 .each = .{ .once = &.{
27759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27760 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40705 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27761 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },40706 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27762 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40707 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27764 } },40709 } },
27765 }, .{40710 }, .{
27766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },40711 .required_features = .{ .@"64bit", null, null, null },
27767 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},40712 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
40713 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
27768 .patterns = &.{40714 .patterns = &.{
27769 .{ .src = .{ .to_mem, .none } },40715 .{ .src = .{ .to_mem, .none, .none } },
27770 },40716 },
27771 .extra_temps = .{40717 .extra_temps = .{
27772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },40719 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27774 .unused,40720 .unused,
27775 .unused,40721 .unused,
27776 .unused,40722 .unused,
...@@ -27783,68 +40729,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27783,68 +40729,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27783 .clobbers = .{ .eflags = true },40729 .clobbers = .{ .eflags = true },
27784 .each = .{ .once = &.{40730 .each = .{ .once = &.{
27785 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27786 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },40732 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27787 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },40733 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27788 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },40734 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27790 } },40736 } },
27791 }, .{40737 }, .{
27792 .required_features = .{ .avx, null, null, null },40738 .required_features = .{ .avx, null, null, null },
27793 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },40739 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27794 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},40740 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27795 .patterns = &.{40741 .patterns = &.{
27796 .{ .src = .{ .mem, .none } },40742 .{ .src = .{ .mem, .none, .none } },
27797 .{ .src = .{ .to_sse, .none } },40743 .{ .src = .{ .to_sse, .none, .none } },
27798 },40744 },
27799 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40745 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27800 .each = .{ .once = &.{40746 .each = .{ .once = &.{
27801 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },40747 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
40748 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27802 } },40749 } },
27803 }, .{40750 }, .{
27804 .required_features = .{ .avx, null, null, null },40751 .required_features = .{ .avx, null, null, null },
27805 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },40752 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27806 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},40753 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27807 .patterns = &.{40754 .patterns = &.{
27808 .{ .src = .{ .mem, .none } },40755 .{ .src = .{ .mem, .none, .none } },
27809 .{ .src = .{ .to_sse, .none } },40756 .{ .src = .{ .to_sse, .none, .none } },
27810 },40757 },
27811 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40758 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27812 .each = .{ .once = &.{40759 .each = .{ .once = &.{
27813 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },40760 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
40761 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27814 } },40762 } },
27815 }, .{40763 }, .{
27816 .required_features = .{ .sse4_1, null, null, null },40764 .required_features = .{ .sse4_1, null, null, null },
27817 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },40765 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27818 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},40766 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27819 .patterns = &.{40767 .patterns = &.{
27820 .{ .src = .{ .mem, .none } },40768 .{ .src = .{ .mem, .none, .none } },
27821 .{ .src = .{ .to_sse, .none } },40769 .{ .src = .{ .to_sse, .none, .none } },
27822 },40770 },
27823 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40771 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27824 .each = .{ .once = &.{40772 .each = .{ .once = &.{
27825 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },40773 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
40774 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27826 } },40775 } },
27827 }, .{40776 }, .{
27828 .required_features = .{ .sse4_1, null, null, null },40777 .required_features = .{ .sse4_1, null, null, null },
27829 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },40778 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27830 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},40779 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27831 .patterns = &.{40780 .patterns = &.{
27832 .{ .src = .{ .mem, .none } },40781 .{ .src = .{ .mem, .none, .none } },
27833 .{ .src = .{ .to_sse, .none } },40782 .{ .src = .{ .to_sse, .none, .none } },
27834 },40783 },
27835 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},40784 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27836 .each = .{ .once = &.{40785 .each = .{ .once = &.{
27837 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },40786 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
40787 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27838 } },40788 } },
27839 }, .{40789 }, .{
27840 .required_features = .{ .sse2, null, null, null },40790 .required_features = .{ .sse2, null, null, null },
27841 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },40791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27842 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},40792 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27843 .patterns = &.{40793 .patterns = &.{
27844 .{ .src = .{ .to_mut_sse, .none } },40794 .{ .src = .{ .to_mut_sse, .none, .none } },
27845 },40795 },
27846 .extra_temps = .{40796 .extra_temps = .{
27847 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },40797 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27848 .unused,40798 .unused,
27849 .unused,40799 .unused,
27850 .unused,40800 .unused,
...@@ -27857,20 +40807,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27857,20 +40807,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27857 .dst_temps = .{.{ .ref = .src0 }},40807 .dst_temps = .{.{ .ref = .src0 }},
27858 .each = .{ .once = &.{40808 .each = .{ .once = &.{
27859 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40809 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27860 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },40810 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
27861 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27862 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27863 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },40811 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40812 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
40813 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
27864 } },40814 } },
27865 }, .{40815 }, .{
27866 .required_features = .{ .sse2, null, null, null },40816 .required_features = .{ .sse2, null, null, null },
27867 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },40817 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27868 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},40818 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27869 .patterns = &.{40819 .patterns = &.{
27870 .{ .src = .{ .to_mut_sse, .none } },40820 .{ .src = .{ .to_mut_sse, .none, .none } },
27871 },40821 },
27872 .extra_temps = .{40822 .extra_temps = .{
27873 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },40823 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27874 .unused,40824 .unused,
27875 .unused,40825 .unused,
27876 .unused,40826 .unused,
...@@ -27883,45 +40833,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27883,45 +40833,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27883 .dst_temps = .{.{ .ref = .src0 }},40833 .dst_temps = .{.{ .ref = .src0 }},
27884 .each = .{ .once = &.{40834 .each = .{ .once = &.{
27885 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },40835 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27886 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27887 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },40836 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
40837 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
27888 } },40838 } },
27889 }, .{40839 }, .{
27890 .required_features = .{ .avx2, null, null, null },40840 .required_features = .{ .@"64bit", null, null, null },
27891 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },40841 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27892 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},40842 .dst_constraints = .{.any_scalar_signed_int},
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 } }},
27917 .patterns = &.{40843 .patterns = &.{
27918 .{ .src = .{ .to_mem, .none } },40844 .{ .src = .{ .to_mem, .none, .none } },
27919 },40845 },
27920 .extra_temps = .{40846 .extra_temps = .{
27921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27922 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },40848 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27923 .unused,40849 .{ .type = .i64, .kind = .{ .reg = .rax } },
27924 .unused,40850 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27925 .unused,40851 .unused,
27926 .unused,40852 .unused,
27927 .unused,40853 .unused,
...@@ -27932,23 +40858,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27932,23 +40858,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27932 .clobbers = .{ .eflags = true },40858 .clobbers = .{ .eflags = true },
27933 .each = .{ .once = &.{40859 .each = .{ .once = &.{
27934 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40860 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27935 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },40861 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27936 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40862 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27937 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
27938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27939 } },40869 } },
27940 }, .{40870 }, .{
27941 .required_features = .{ .avx2, null, null, null },40871 .required_features = .{ .@"64bit", null, null, null },
27942 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },40872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
27943 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},40873 .dst_constraints = .{.any_scalar_int},
27944 .patterns = &.{40874 .patterns = &.{
27945 .{ .src = .{ .to_mem, .none } },40875 .{ .src = .{ .to_mem, .none, .none } },
27946 },40876 },
27947 .extra_temps = .{40877 .extra_temps = .{
27948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27949 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },40879 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27950 .unused,40880 .{ .type = .u64, .kind = .{ .reg = .rax } },
27951 .unused,40881 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27952 .unused,40882 .unused,
27953 .unused,40883 .unused,
27954 .unused,40884 .unused,
...@@ -27959,24 +40889,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27959,24 +40889,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27959 .clobbers = .{ .eflags = true },40889 .clobbers = .{ .eflags = true },
27960 .each = .{ .once = &.{40890 .each = .{ .once = &.{
27961 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27962 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },40892 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27963 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },40893 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
27964 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
27965 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },40899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27966 } },40900 } },
27967 }, .{40901 }, .{
27968 .required_features = .{ .avx, null, null, null },40902 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27969 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },40903 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27970 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},40904 .dst_constraints = .{.any_scalar_signed_int},
27971 .patterns = &.{40905 .patterns = &.{
27972 .{ .src = .{ .to_mem, .none } },40906 .{ .src = .{ .to_mem, .none, .none } },
27973 },40907 },
27974 .extra_temps = .{40908 .extra_temps = .{
27975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40909 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27976 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },40910 .{ .type = .usize, .kind = .{ .reg = .rsi } },
27977 .unused,40911 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27978 .unused,40912 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27979 .unused,40913 .{ .type = .i64, .kind = .{ .reg = .rax } },
27980 .unused,40914 .unused,
27981 .unused,40915 .unused,
27982 .unused,40916 .unused,
...@@ -27985,25 +40919,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -27985,25 +40919,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27985 .dst_temps = .{.mem},40919 .dst_temps = .{.mem},
27986 .clobbers = .{ .eflags = true },40920 .clobbers = .{ .eflags = true },
27987 .each = .{ .once = &.{40921 .each = .{ .once = &.{
27988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40922 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
27989 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },40923 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
27990 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40924 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
27991 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },40925 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
27992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
27993 } },40934 } },
27994 }, .{40935 }, .{
27995 .required_features = .{ .avx, null, null, null },40936 .required_features = .{ .@"64bit", null, null, null },
27996 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },40937 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
27997 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},40938 .dst_constraints = .{.any_scalar_signed_int},
27998 .patterns = &.{40939 .patterns = &.{
27999 .{ .src = .{ .to_mem, .none } },40940 .{ .src = .{ .to_mem, .none, .none } },
28000 },40941 },
28001 .extra_temps = .{40942 .extra_temps = .{
28002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28003 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },40944 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28004 .unused,40945 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28005 .unused,40946 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28006 .unused,40947 .{ .type = .i64, .kind = .{ .reg = .rax } },
28007 .unused,40948 .unused,
28008 .unused,40949 .unused,
28009 .unused,40950 .unused,
...@@ -28012,25 +40953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28012,25 +40953,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28012 .dst_temps = .{.mem},40953 .dst_temps = .{.mem},
28013 .clobbers = .{ .eflags = true },40954 .clobbers = .{ .eflags = true },
28014 .each = .{ .once = &.{40955 .each = .{ .once = &.{
28015 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40956 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28016 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },40957 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28017 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40958 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28018 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },40959 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
28020 } },40968 } },
28021 }, .{40969 }, .{
28022 .required_features = .{ .sse4_1, null, null, null },40970 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28023 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },40971 .src_constraints = .{ .any_scalar_int, .any, .any },
28024 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},40972 .dst_constraints = .{.any_scalar_int},
28025 .patterns = &.{40973 .patterns = &.{
28026 .{ .src = .{ .to_mem, .none } },40974 .{ .src = .{ .to_mem, .none, .none } },
28027 },40975 },
28028 .extra_temps = .{40976 .extra_temps = .{
28029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40977 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28030 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },40978 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28031 .unused,40979 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28032 .unused,40980 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28033 .unused,40981 .{ .type = .u64, .kind = .{ .reg = .rax } },
28034 .unused,40982 .unused,
28035 .unused,40983 .unused,
28036 .unused,40984 .unused,
...@@ -28039,319 +40987,374 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28039,319 +40987,374 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28039 .dst_temps = .{.mem},40987 .dst_temps = .{.mem},
28040 .clobbers = .{ .eflags = true },40988 .clobbers = .{ .eflags = true },
28041 .each = .{ .once = &.{40989 .each = .{ .once = &.{
28042 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },40990 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28043 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },40991 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28044 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },40992 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28045 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },40993 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28046 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
28047 } },41000 } },
28048 }, .{41001 }, .{
28049 .required_features = .{ .sse4_1, null, null, null },41002 .required_features = .{ .@"64bit", null, null, null },
28050 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },41003 .src_constraints = .{ .any_scalar_int, .any, .any },
28051 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},41004 .dst_constraints = .{.any_scalar_int},
28052 .patterns = &.{41005 .patterns = &.{
28053 .{ .src = .{ .to_mem, .none } },41006 .{ .src = .{ .to_mem, .none, .none } },
28054 },41007 },
28055 .extra_temps = .{41008 .extra_temps = .{
28056 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41009 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28057 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },41010 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28058 .unused,41011 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28059 .unused,41012 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28060 .unused,41013 .{ .type = .u64, .kind = .{ .reg = .rax } },
28061 .unused,41014 .unused,
28062 .unused,41015 .unused,
28063 .unused,41016 .unused,
28064 .unused,41017 .unused,
28065 },41018 },
28066 .dst_temps = .{.mem},41019 .dst_temps = .{.mem},
28067 .clobbers = .{ .eflags = true },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 }},
28068 .each = .{ .once = &.{41161 .each = .{ .once = &.{
28069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41162 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
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", ._, ._, ._ },
28074 } },41163 } },
28075 }, .{41164 }, .{
28076 .required_features = .{ .@"64bit", null, null, null },41165 .required_features = .{ .fast_imm16, null, null, null },
28077 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },41166 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
28078 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},41167 .dst_constraints = .{.{ .unsigned_int = .word }},
28079 .patterns = &.{41168 .patterns = &.{
28080 .{ .src = .{ .to_mem, .none } },41169 .{ .src = .{ .to_mut_gpr, .none, .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,
28092 },41170 },
28093 .dst_temps = .{.mem},41171 .dst_temps = .{.{ .ref = .src0 }},
28094 .clobbers = .{ .eflags = true },41172 .clobbers = .{ .eflags = true },
28095 .each = .{ .once = &.{41173 .each = .{ .once = &.{
28096 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41174 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
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", ._, ._, ._ },
28101 } },41175 } },
28102 }, .{41176 }, .{
28103 .required_features = .{ .@"64bit", null, null, null },41177 .required_features = .{ .fast_imm16, null, null, null },
28104 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },41178 .src_constraints = .{ .any_unsigned_int, .any, .any },
28105 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},41179 .dst_constraints = .{.{ .unsigned_int = .word }},
28106 .patterns = &.{41180 .patterns = &.{
28107 .{ .src = .{ .to_mem, .none } },41181 .{ .src = .{ .to_mem, .none, .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,
28119 },41182 },
28120 .dst_temps = .{.mem},41183 .dst_temps = .{.{ .rc = .general_purpose }},
28121 .clobbers = .{ .eflags = true },41184 .clobbers = .{ .eflags = true },
28122 .each = .{ .once = &.{41185 .each = .{ .once = &.{
28123 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41186 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },
28124 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },41187 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },
28125 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28126 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28128 } },41188 } },
28129 }, .{41189 }, .{
28130 .required_features = .{ .avx, null, null, null },41190 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
28131 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },41191 .dst_constraints = .{.{ .exact_int = 32 }},
28132 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28133 .patterns = &.{41192 .patterns = &.{
28134 .{ .src = .{ .mem, .none } },41193 .{ .src = .{ .to_mut_gpr, .none, .none } },
28135 .{ .src = .{ .to_sse, .none } },
28136 },41194 },
28137 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41195 .dst_temps = .{.{ .ref = .src0 }},
28138 .each = .{ .once = &.{41196 .each = .{ .once = &.{} },
28139 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
28140 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28141 } },
28142 }, .{41197 }, .{
28143 .required_features = .{ .avx, null, null, null },41198 .src_constraints = .{ .any_int, .any, .any },
28144 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },41199 .dst_constraints = .{.{ .exact_int = 32 }},
28145 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28146 .patterns = &.{41200 .patterns = &.{
28147 .{ .src = .{ .mem, .none } },41201 .{ .src = .{ .to_mem, .none, .none } },
28148 .{ .src = .{ .to_sse, .none } },
28149 },41202 },
28150 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41203 .dst_temps = .{.{ .rc = .general_purpose }},
28151 .each = .{ .once = &.{41204 .each = .{ .once = &.{
28152 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },41205 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
28153 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28154 } },41206 } },
28155 }, .{41207 }, .{
28156 .required_features = .{ .sse4_1, null, null, null },41208 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
28157 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },41209 .dst_constraints = .{.{ .signed_int = .dword }},
28158 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28159 .patterns = &.{41210 .patterns = &.{
28160 .{ .src = .{ .mem, .none } },41211 .{ .src = .{ .to_mut_gpr, .none, .none } },
28161 .{ .src = .{ .to_sse, .none } },
28162 },41212 },
28163 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41213 .dst_temps = .{.{ .ref = .src0 }},
41214 .clobbers = .{ .eflags = true },
28164 .each = .{ .once = &.{41215 .each = .{ .once = &.{
28165 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },41216 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
28166 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },41217 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
28167 } },41218 } },
28168 }, .{41219 }, .{
28169 .required_features = .{ .sse4_1, null, null, null },41220 .src_constraints = .{ .any_signed_int, .any, .any },
28170 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },41221 .dst_constraints = .{.{ .signed_int = .dword }},
28171 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28172 .patterns = &.{41222 .patterns = &.{
28173 .{ .src = .{ .mem, .none } },41223 .{ .src = .{ .to_mem, .none, .none } },
28174 .{ .src = .{ .to_sse, .none } },
28175 },41224 },
28176 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41225 .dst_temps = .{.{ .rc = .general_purpose }},
41226 .clobbers = .{ .eflags = true },
28177 .each = .{ .once = &.{41227 .each = .{ .once = &.{
28178 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },41228 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
28179 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },41229 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
41230 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
28180 } },41231 } },
28181 }, .{41232 }, .{
28182 .required_features = .{ .sse2, null, null, null },41233 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
28183 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },41234 .dst_constraints = .{.{ .unsigned_int = .dword }},
28184 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28185 .patterns = &.{41235 .patterns = &.{
28186 .{ .src = .{ .to_mut_sse, .none } },41236 .{ .src = .{ .to_mut_gpr, .none, .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,
28198 },41237 },
28199 .dst_temps = .{.{ .ref = .src0 }},41238 .dst_temps = .{.{ .ref = .src0 }},
41239 .clobbers = .{ .eflags = true },
28200 .each = .{ .once = &.{41240 .each = .{ .once = &.{
28201 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },41241 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
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, ._, ._ },
28208 } },41242 } },
28209 }, .{41243 }, .{
28210 .required_features = .{ .sse2, null, null, null },41244 .src_constraints = .{ .any_unsigned_int, .any, .any },
28211 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },41245 .dst_constraints = .{.{ .unsigned_int = .dword }},
28212 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28213 .patterns = &.{41246 .patterns = &.{
28214 .{ .src = .{ .to_mut_sse, .none } },41247 .{ .src = .{ .to_mem, .none, .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,
28226 },41248 },
28227 .dst_temps = .{.{ .ref = .src0 }},41249 .dst_temps = .{.{ .rc = .general_purpose }},
41250 .clobbers = .{ .eflags = true },
28228 .each = .{ .once = &.{41251 .each = .{ .once = &.{
28229 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },41252 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
28230 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },41253 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },
28231 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28232 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28233 } },41254 } },
28234 }, .{41255 }, .{
28235 .required_features = .{ .@"64bit", null, null, null },41256 .required_features = .{ .@"64bit", null, null, null },
28236 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },41257 .src_constraints = .{ .any_int, .any, .any },
28237 .dst_constraints = .{.any_scalar_signed_int},41258 .dst_constraints = .{.{ .exact_int = 64 }},
28238 .patterns = &.{41259 .patterns = &.{
28239 .{ .src = .{ .to_mem, .none } },41260 .{ .src = .{ .to_mem, .none, .none } },
28240 },41261 },
28241 .extra_temps = .{41262 .dst_temps = .{.{ .rc = .general_purpose }},
28242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41263 .each = .{ .once = &.{
28243 .{ .type = .usize, .kind = .{ .reg = .rdi } },41264 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
28244 .{ .type = .i64, .kind = .{ .reg = .rax } },41265 } },
28245 .{ .type = .u32, .kind = .{ .reg = .ecx } },41266 }, .{
28246 .unused,41267 .required_features = .{ .@"64bit", null, null, null },
28247 .unused,41268 .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any },
28248 .unused,41269 .dst_constraints = .{.{ .signed_int = .qword }},
28249 .unused,41270 .patterns = &.{
28250 .unused,41271 .{ .src = .{ .to_mut_gpr, .none, .none } },
28251 },41272 },
28252 .dst_temps = .{.mem},41273 .dst_temps = .{.{ .ref = .src0 }},
28253 .clobbers = .{ .eflags = true },41274 .clobbers = .{ .eflags = true },
28254 .each = .{ .once = &.{41275 .each = .{ .once = &.{
28255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41276 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
28256 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },41277 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
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", ._, ._, ._ },
28264 } },41278 } },
28265 }, .{41279 }, .{
28266 .required_features = .{ .@"64bit", null, null, null },41280 .required_features = .{ .@"64bit", null, null, null },
28267 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },41281 .src_constraints = .{ .any_signed_int, .any, .any },
28268 .dst_constraints = .{.any_scalar_int},41282 .dst_constraints = .{.{ .signed_int = .qword }},
28269 .patterns = &.{41283 .patterns = &.{
28270 .{ .src = .{ .to_mem, .none } },41284 .{ .src = .{ .to_mem, .none, .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,
28282 },41285 },
28283 .dst_temps = .{.mem},41286 .dst_temps = .{.{ .rc = .general_purpose }},
28284 .clobbers = .{ .eflags = true },41287 .clobbers = .{ .eflags = true },
28285 .each = .{ .once = &.{41288 .each = .{ .once = &.{
28286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41289 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
28287 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },41290 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
28288 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },41291 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_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", ._, ._, ._ },
28295 } },41292 } },
28296 }, .{41293 }, .{
28297 .required_features = .{ .avx, null, null, null },41294 .required_features = .{ .@"64bit", .bmi2, null, null },
28298 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },41295 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
28299 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},41296 .dst_constraints = .{.{ .unsigned_int = .qword }},
28300 .patterns = &.{41297 .patterns = &.{
28301 .{ .src = .{ .mem, .none } },41298 .{ .src = .{ .mem, .none, .none } },
28302 .{ .src = .{ .to_sse, .none } },41299 .{ .src = .{ .to_gpr, .none, .none } },
28303 },41300 },
28304 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41301 .dst_temps = .{.{ .rc = .general_purpose }},
41302 .clobbers = .{ .eflags = true },
28305 .each = .{ .once = &.{41303 .each = .{ .once = &.{
28306 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },41304 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
41305 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },
28307 } },41306 } },
28308 }, .{41307 }, .{
28309 .required_features = .{ .avx, null, null, null },41308 .required_features = .{ .@"64bit", .bmi2, null, null },
28310 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },41309 .src_constraints = .{ .any_unsigned_int, .any, .any },
28311 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},41310 .dst_constraints = .{.{ .unsigned_int = .qword }},
28312 .patterns = &.{41311 .patterns = &.{
28313 .{ .src = .{ .mem, .none } },41312 .{ .src = .{ .to_mem, .none, .none } },
28314 .{ .src = .{ .to_sse, .none } },
28315 },41313 },
28316 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41314 .dst_temps = .{.{ .rc = .general_purpose }},
41315 .clobbers = .{ .eflags = true },
28317 .each = .{ .once = &.{41316 .each = .{ .once = &.{
28318 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },41317 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },
41318 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },
28319 } },41319 } },
28320 }, .{41320 }, .{
28321 .required_features = .{ .sse4_1, null, null, null },41321 .required_features = .{ .@"64bit", null, null, null },
28322 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },41322 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },
28323 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},41323 .dst_constraints = .{.{ .unsigned_int = .qword }},
28324 .patterns = &.{41324 .patterns = &.{
28325 .{ .src = .{ .mem, .none } },41325 .{ .src = .{ .mem, .none, .none } },
28326 .{ .src = .{ .to_sse, .none } },41326 .{ .src = .{ .to_gpr, .none, .none } },
28327 },41327 },
28328 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41328 .dst_temps = .{.{ .rc = .general_purpose }},
41329 .clobbers = .{ .eflags = true },
28329 .each = .{ .once = &.{41330 .each = .{ .once = &.{
28330 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },41331 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
41332 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
28331 } },41333 } },
28332 }, .{41334 }, .{
28333 .required_features = .{ .sse4_1, null, null, null },41335 .required_features = .{ .@"64bit", null, null, null },
28334 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },41336 .src_constraints = .{ .any_unsigned_int, .any, .any },
28335 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},41337 .dst_constraints = .{.{ .unsigned_int = .qword }},
28336 .patterns = &.{41338 .patterns = &.{
28337 .{ .src = .{ .mem, .none } },41339 .{ .src = .{ .to_mem, .none, .none } },
28338 .{ .src = .{ .to_sse, .none } },
28339 },41340 },
28340 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41341 .dst_temps = .{.{ .rc = .general_purpose }},
41342 .clobbers = .{ .eflags = true },
28341 .each = .{ .once = &.{41343 .each = .{ .once = &.{
28342 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },41344 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },
41345 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },
28343 } },41346 } },
28344 }, .{41347 }, .{
28345 .required_features = .{ .sse2, null, null, null },41348 .required_features = .{ .@"64bit", null, null, null },
28346 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },41349 .src_constraints = .{ .any_int, .any, .any },
28347 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},41350 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
28348 .patterns = &.{41351 .patterns = &.{
28349 .{ .src = .{ .to_mut_sse, .none } },41352 .{ .src = .{ .to_mem, .none, .none } },
28350 },41353 },
28351 .extra_temps = .{41354 .extra_temps = .{
28352 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },41355 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28353 .unused,41356 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28354 .unused,41357 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28355 .unused,41358 .unused,
28356 .unused,41359 .unused,
28357 .unused,41360 .unused,
...@@ -28359,23 +41362,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28359,23 +41362,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28359 .unused,41362 .unused,
28360 .unused,41363 .unused,
28361 },41364 },
28362 .dst_temps = .{.{ .ref = .src0 }},41365 .dst_temps = .{.mem},
28363 .each = .{ .once = &.{41366 .each = .{ .once = &.{
28364 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },41367 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28365 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },41368 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28366 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },41369 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
41370 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28367 } },41371 } },
28368 }, .{41372 }, .{
28369 .required_features = .{ .sse2, null, null, null },41373 .required_features = .{ .@"64bit", null, null, null },
28370 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },41374 .src_constraints = .{ .any_signed_int, .any, .any },
28371 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},41375 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
28372 .patterns = &.{41376 .patterns = &.{
28373 .{ .src = .{ .to_mut_sse, .none } },41377 .{ .src = .{ .to_mem, .none, .none } },
28374 },41378 },
28375 .extra_temps = .{41379 .extra_temps = .{
28376 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },41380 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28377 .unused,41381 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28378 .unused,41382 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28379 .unused,41383 .unused,
28380 .unused,41384 .unused,
28381 .unused,41385 .unused,
...@@ -28383,46 +41387,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28383,46 +41387,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28383 .unused,41387 .unused,
28384 .unused,41388 .unused,
28385 },41389 },
28386 .dst_temps = .{.{ .ref = .src0 }},41390 .dst_temps = .{.mem},
28387 .each = .{ .once = &.{41391 .clobbers = .{ .eflags = true },
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 } }},
28412 .each = .{ .once = &.{41392 .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, ._, ._ },
28414 } },41401 } },
28415 }, .{41402 }, .{
28416 .required_features = .{ .avx2, null, null, null },41403 .required_features = .{ .@"64bit", null, null, null },
28417 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },41404 .src_constraints = .{ .any_signed_int, .any, .any },
28418 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},41405 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
28419 .patterns = &.{41406 .patterns = &.{
28420 .{ .src = .{ .to_mem, .none } },41407 .{ .src = .{ .to_mem, .none, .none } },
28421 },41408 },
28422 .extra_temps = .{41409 .extra_temps = .{
28423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28424 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },41411 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28425 .unused,41412 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28426 .unused,41413 .unused,
28427 .unused,41414 .unused,
28428 .unused,41415 .unused,
...@@ -28433,23 +41420,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28433,23 +41420,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28433 .dst_temps = .{.mem},41420 .dst_temps = .{.mem},
28434 .clobbers = .{ .eflags = true },41421 .clobbers = .{ .eflags = true },
28435 .each = .{ .once = &.{41422 .each = .{ .once = &.{
28436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41423 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28437 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },41424 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28438 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },41425 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28439 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },41426 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
28441 } },41433 } },
28442 }, .{41434 }, .{
28443 .required_features = .{ .avx2, null, null, null },41435 .required_features = .{ .@"64bit", null, null, null },
28444 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },41436 .src_constraints = .{ .any_signed_int, .any, .any },
28445 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},41437 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},
28446 .patterns = &.{41438 .patterns = &.{
28447 .{ .src = .{ .to_mem, .none } },41439 .{ .src = .{ .to_mem, .none, .none } },
28448 },41440 },
28449 .extra_temps = .{41441 .extra_temps = .{
28450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41442 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28451 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },41443 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28452 .unused,41444 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28453 .unused,41445 .unused,
28454 .unused,41446 .unused,
28455 .unused,41447 .unused,
...@@ -28460,23 +41452,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28460,23 +41452,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28460 .dst_temps = .{.mem},41452 .dst_temps = .{.mem},
28461 .clobbers = .{ .eflags = true },41453 .clobbers = .{ .eflags = true },
28462 .each = .{ .once = &.{41454 .each = .{ .once = &.{
28463 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41455 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28464 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },41456 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28465 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },41457 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28466 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },41458 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
28468 } },41463 } },
28469 }, .{41464 }, .{
28470 .required_features = .{ .avx, null, null, null },41465 .required_features = .{ .@"64bit", null, null, null },
28471 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },41466 .src_constraints = .{ .any_unsigned_int, .any, .any },
28472 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},41467 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
28473 .patterns = &.{41468 .patterns = &.{
28474 .{ .src = .{ .to_mem, .none } },41469 .{ .src = .{ .to_mem, .none, .none } },
28475 },41470 },
28476 .extra_temps = .{41471 .extra_temps = .{
28477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41472 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28478 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },41473 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28479 .unused,41474 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28480 .unused,41475 .unused,
28481 .unused,41476 .unused,
28482 .unused,41477 .unused,
...@@ -28485,25 +41480,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28485,25 +41480,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28485 .unused,41480 .unused,
28486 },41481 },
28487 .dst_temps = .{.mem},41482 .dst_temps = .{.mem},
28488 .clobbers = .{ .eflags = true },
28489 .each = .{ .once = &.{41483 .each = .{ .once = &.{
28490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41484 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28491 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },41485 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28492 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },41486 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },41487 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41488 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
28495 } },41489 } },
28496 }, .{41490 }, .{
28497 .required_features = .{ .avx, null, null, null },41491 .required_features = .{ .@"64bit", .bmi2, null, null },
28498 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },41492 .src_constraints = .{ .any_unsigned_int, .any, .any },
28499 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},41493 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
28500 .patterns = &.{41494 .patterns = &.{
28501 .{ .src = .{ .to_mem, .none } },41495 .{ .src = .{ .to_mem, .none, .none } },
28502 },41496 },
28503 .extra_temps = .{41497 .extra_temps = .{
28504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41498 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28505 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },41499 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28506 .unused,41500 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28507 .unused,41501 .unused,
28508 .unused,41502 .unused,
28509 .unused,41503 .unused,
...@@ -28514,23 +41508,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28514,23 +41508,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28514 .dst_temps = .{.mem},41508 .dst_temps = .{.mem},
28515 .clobbers = .{ .eflags = true },41509 .clobbers = .{ .eflags = true },
28516 .each = .{ .once = &.{41510 .each = .{ .once = &.{
28517 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41511 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28518 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },41512 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28519 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },41513 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28520 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },41514 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28521 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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), ._, ._ },
28522 } },41519 } },
28523 }, .{41520 }, .{
28524 .required_features = .{ .sse4_1, null, null, null },41521 .required_features = .{ .@"64bit", .bmi2, null, null },
28525 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },41522 .src_constraints = .{ .any_unsigned_int, .any, .any },
28526 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},41523 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
28527 .patterns = &.{41524 .patterns = &.{
28528 .{ .src = .{ .to_mem, .none } },41525 .{ .src = .{ .to_mem, .none, .none } },
28529 },41526 },
28530 .extra_temps = .{41527 .extra_temps = .{
28531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41528 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28532 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },41529 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28533 .unused,41530 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28534 .unused,41531 .unused,
28535 .unused,41532 .unused,
28536 .unused,41533 .unused,
...@@ -28541,23 +41538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28541,23 +41538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28541 .dst_temps = .{.mem},41538 .dst_temps = .{.mem},
28542 .clobbers = .{ .eflags = true },41539 .clobbers = .{ .eflags = true },
28543 .each = .{ .once = &.{41540 .each = .{ .once = &.{
28544 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41541 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28545 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },41542 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28546 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },41543 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28547 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },41544 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
28549 } },41548 } },
28550 }, .{41549 }, .{
28551 .required_features = .{ .sse4_1, null, null, null },41550 .required_features = .{ .@"64bit", null, null, null },
28552 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },41551 .src_constraints = .{ .any_unsigned_int, .any, .any },
28553 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},41552 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
28554 .patterns = &.{41553 .patterns = &.{
28555 .{ .src = .{ .to_mem, .none } },41554 .{ .src = .{ .to_mem, .none, .none } },
28556 },41555 },
28557 .extra_temps = .{41556 .extra_temps = .{
28558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41557 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28559 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },41558 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28560 .unused,41559 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28561 .unused,41560 .unused,
28562 .unused,41561 .unused,
28563 .unused,41562 .unused,
...@@ -28568,23 +41567,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28568,23 +41567,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28568 .dst_temps = .{.mem},41567 .dst_temps = .{.mem},
28569 .clobbers = .{ .eflags = true },41568 .clobbers = .{ .eflags = true },
28570 .each = .{ .once = &.{41569 .each = .{ .once = &.{
28571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41570 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28572 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },41571 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28573 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },41572 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28574 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },41573 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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), ._, ._ },
28576 } },41578 } },
28577 }, .{41579 }, .{
28578 .required_features = .{ .@"64bit", null, null, null },41580 .required_features = .{ .@"64bit", null, null, null },
28579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },41581 .src_constraints = .{ .any_unsigned_int, .any, .any },
28580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},41582 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
28581 .patterns = &.{41583 .patterns = &.{
28582 .{ .src = .{ .to_mem, .none } },41584 .{ .src = .{ .to_mem, .none, .none } },
28583 },41585 },
28584 .extra_temps = .{41586 .extra_temps = .{
28585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41587 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28586 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },41588 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28587 .unused,41589 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28588 .unused,41590 .unused,
28589 .unused,41591 .unused,
28590 .unused,41592 .unused,
...@@ -28595,23 +41597,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28595,23 +41597,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28595 .dst_temps = .{.mem},41597 .dst_temps = .{.mem},
28596 .clobbers = .{ .eflags = true },41598 .clobbers = .{ .eflags = true },
28597 .each = .{ .once = &.{41599 .each = .{ .once = &.{
28598 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41600 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
28599 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },41601 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
28600 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },41602 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28601 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },41603 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41604 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
41605 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
41606 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28603 } },41607 } },
28604 }, .{41608 }, .{
28605 .required_features = .{ .@"64bit", null, null, null },41609 .required_features = .{ .avx, null, null, null },
28606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },41610 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28607 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},41611 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
28608 .patterns = &.{41612 .patterns = &.{
28609 .{ .src = .{ .to_mem, .none } },41613 .{ .src = .{ .to_sse, .none, .none } },
28610 },41614 },
28611 .extra_temps = .{41615 .extra_temps = .{
28612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41616 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28613 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },41617 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28614 .unused,41618 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
28615 .unused,41619 .unused,
28616 .unused,41620 .unused,
28617 .unused,41621 .unused,
...@@ -28619,77 +41623,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28619,77 +41623,73 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28619 .unused,41623 .unused,
28620 .unused,41624 .unused,
28621 },41625 },
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 },
28639 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41626 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28640 .each = .{ .once = &.{41627 .each = .{ .once = &.{
28641 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },41628 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28642 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },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), ._ },
28643 } },41633 } },
28644 }, .{41634 }, .{
28645 .required_features = .{ .avx, null, null, null },41635 .required_features = .{ .avx, null, null, null },
28646 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },41636 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28647 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},41637 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
28648 .patterns = &.{41638 .patterns = &.{
28649 .{ .src = .{ .mem, .none } },41639 .{ .src = .{ .to_sse, .none, .none } },
28650 .{ .src = .{ .to_sse, .none } },
28651 },41640 },
28652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41641 .extra_temps = .{
28653 .each = .{ .once = &.{41642 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28654 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },41643 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
28655 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },41644 .unused,
28656 } },41645 .unused,
28657 }, .{41646 .unused,
28658 .required_features = .{ .sse4_1, null, null, null },41647 .unused,
28659 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },41648 .unused,
28660 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},41649 .unused,
28661 .patterns = &.{41650 .unused,
28662 .{ .src = .{ .mem, .none } },
28663 .{ .src = .{ .to_sse, .none } },
28664 },41651 },
28665 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},41652 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28666 .each = .{ .once = &.{41653 .each = .{ .once = &.{
28667 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },41654 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28668 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },41655 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
28669 } },41656 } },
28670 }, .{41657 }, .{
28671 .required_features = .{ .sse4_1, null, null, null },41658 .required_features = .{ .sse2, null, null, null },
28672 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },41659 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28673 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},41660 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
28674 .patterns = &.{41661 .patterns = &.{
28675 .{ .src = .{ .mem, .none } },41662 .{ .src = .{ .to_mut_sse, .none, .none } },
28676 .{ .src = .{ .to_sse, .none } },
28677 },41663 },
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 }},
28679 .each = .{ .once = &.{41676 .each = .{ .once = &.{
28680 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },41677 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28681 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },41678 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
41679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
41680 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },
41681 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
28682 } },41682 } },
28683 }, .{41683 }, .{
28684 .required_features = .{ .sse2, null, null, null },41684 .required_features = .{ .sse2, null, null, null },
28685 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },41685 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28686 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},41686 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
28687 .patterns = &.{41687 .patterns = &.{
28688 .{ .src = .{ .to_mut_sse, .none } },41688 .{ .src = .{ .to_mut_sse, .none, .none } },
28689 },41689 },
28690 .extra_temps = .{41690 .extra_temps = .{
28691 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },41691 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28692 .unused,41692 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
28693 .unused,41693 .unused,
28694 .unused,41694 .unused,
28695 .unused,41695 .unused,
...@@ -28700,22 +41700,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28700,22 +41700,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28700 },41700 },
28701 .dst_temps = .{.{ .ref = .src0 }},41701 .dst_temps = .{.{ .ref = .src0 }},
28702 .each = .{ .once = &.{41702 .each = .{ .once = &.{
28703 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },41703 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28704 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },41704 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
28705 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28706 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28707 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28708 } },41705 } },
28709 }, .{41706 }, .{
28710 .required_features = .{ .sse2, null, null, null },41707 .required_features = .{ .sse, null, null, null },
28711 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },41708 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28712 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},41709 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
28713 .patterns = &.{41710 .patterns = &.{
28714 .{ .src = .{ .to_mut_sse, .none } },41711 .{ .src = .{ .to_mut_sse, .none, .none } },
28715 },41712 },
28716 .extra_temps = .{41713 .extra_temps = .{
28717 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },41714 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28718 .unused,41715 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
28719 .unused,41716 .unused,
28720 .unused,41717 .unused,
28721 .unused,41718 .unused,
...@@ -28726,86 +41723,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28726,86 +41723,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28726 },41723 },
28727 .dst_temps = .{.{ .ref = .src0 }},41724 .dst_temps = .{.{ .ref = .src0 }},
28728 .each = .{ .once = &.{41725 .each = .{ .once = &.{
28729 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },41726 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28730 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },41727 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
28731 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28732 } },41728 } },
28733 }, .{41729 }, .{
28734 .required_features = .{ .@"64bit", null, null, null },41730 .required_features = .{ .avx2, null, null, null },
28735 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },41731 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
28736 .dst_constraints = .{.any_scalar_signed_int},41732 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},
28737 .patterns = &.{41733 .patterns = &.{
28738 .{ .src = .{ .to_mem, .none } },41734 .{ .src = .{ .to_sse, .none, .none } },
28739 },41735 },
28740 .extra_temps = .{41736 .extra_temps = .{
28741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41737 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28742 .{ .type = .usize, .kind = .{ .reg = .rdi } },41738 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28743 .{ .type = .i64, .kind = .{ .reg = .rax } },41739 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
28744 .{ .type = .u32, .kind = .{ .reg = .ecx } },41740 .unused,
28745 .unused,41741 .unused,
28746 .unused,41742 .unused,
28747 .unused,41743 .unused,
28748 .unused,41744 .unused,
28749 .unused,41745 .unused,
28750 },41746 },
28751 .dst_temps = .{.mem},41747 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28752 .clobbers = .{ .eflags = true },
28753 .each = .{ .once = &.{41748 .each = .{ .once = &.{
28754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41749 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28755 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },41750 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
28756 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },41751 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
28757 .{ ._, ._sq, .sto, ._, ._, ._, ._ },41752 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },
28758 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },41753 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },
28759 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28760 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28761 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28763 } },41754 } },
28764 }, .{41755 }, .{
28765 .required_features = .{ .@"64bit", null, null, null },41756 .required_features = .{ .avx2, null, null, null },
28766 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },41757 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
28767 .dst_constraints = .{.any_scalar_int},41758 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
28768 .patterns = &.{41759 .patterns = &.{
28769 .{ .src = .{ .to_mem, .none } },41760 .{ .src = .{ .to_sse, .none, .none } },
28770 },41761 },
28771 .extra_temps = .{41762 .extra_temps = .{
28772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41763 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
28773 .{ .type = .usize, .kind = .{ .reg = .rdi } },41764 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
28774 .{ .type = .u64, .kind = .{ .reg = .rax } },41765 .unused,
28775 .{ .type = .u32, .kind = .{ .reg = .ecx } },41766 .unused,
28776 .unused,41767 .unused,
28777 .unused,41768 .unused,
28778 .unused,41769 .unused,
28779 .unused,41770 .unused,
28780 .unused,41771 .unused,
28781 },41772 },
28782 .dst_temps = .{.mem},41773 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28783 .clobbers = .{ .eflags = true },
28784 .each = .{ .once = &.{41774 .each = .{ .once = &.{
28785 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },41775 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
28786 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },41776 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
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", ._, ._, ._ },
28794 } },41777 } },
28795 }, .{41778 }, .{
28796 .required_features = .{ .@"64bit", .slow_incdec, null, null },41779 .required_features = .{ .avx2, null, null, null },
28797 .src_constraints = .{ .any_scalar_signed_int, .any },41780 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
28798 .dst_constraints = .{.any_scalar_signed_int},41781 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
28799 .patterns = &.{41782 .patterns = &.{
28800 .{ .src = .{ .to_mem, .none } },41783 .{ .src = .{ .to_mem, .none, .none } },
28801 },41784 },
28802 .extra_temps = .{41785 .extra_temps = .{
28803 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },41786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28804 .{ .type = .usize, .kind = .{ .reg = .rsi } },41787 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
28805 .{ .type = .usize, .kind = .{ .reg = .rdi } },41788 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
28806 .{ .type = .u32, .kind = .{ .reg = .ecx } },41789 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },
28807 .{ .type = .i64, .kind = .{ .reg = .rax } },41790 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28808 .unused,41791 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
28809 .unused,41792 .unused,
28810 .unused,41793 .unused,
28811 .unused,41794 .unused,
...@@ -28813,32 +41796,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28813,32 +41796,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28813 .dst_temps = .{.mem},41796 .dst_temps = .{.mem},
28814 .clobbers = .{ .eflags = true },41797 .clobbers = .{ .eflags = true },
28815 .each = .{ .once = &.{41798 .each = .{ .once = &.{
28816 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },41799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
28817 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },41800 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
28818 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },41801 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
28819 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },41802 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
28820 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },41803 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
28821 .{ ._, ._sq, .lod, ._, ._, ._, ._ },41804 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
28822 .{ ._, ._sq, .sto, ._, ._, ._, ._ },41805 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
28823 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },41806 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
28824 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },41807 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
28825 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },41808 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
28826 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },41809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28827 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
28828 } },41810 } },
28829 }, .{41811 }, .{
28830 .required_features = .{ .@"64bit", null, null, null },41812 .required_features = .{ .avx2, null, null, null },
28831 .src_constraints = .{ .any_scalar_signed_int, .any },41813 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
28832 .dst_constraints = .{.any_scalar_signed_int},41814 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},
28833 .patterns = &.{41815 .patterns = &.{
28834 .{ .src = .{ .to_mem, .none } },41816 .{ .src = .{ .to_mem, .none, .none } },
28835 },41817 },
28836 .extra_temps = .{41818 .extra_temps = .{
28837 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },41819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28838 .{ .type = .usize, .kind = .{ .reg = .rsi } },41820 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
28839 .{ .type = .usize, .kind = .{ .reg = .rdi } },41821 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
28840 .{ .type = .u32, .kind = .{ .reg = .ecx } },41822 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28841 .{ .type = .i64, .kind = .{ .reg = .rax } },41823 .unused,
28842 .unused,41824 .unused,
28843 .unused,41825 .unused,
28844 .unused,41826 .unused,
...@@ -28847,33 +41829,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28847,33 +41829,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28847 .dst_temps = .{.mem},41829 .dst_temps = .{.mem},
28848 .clobbers = .{ .eflags = true },41830 .clobbers = .{ .eflags = true },
28849 .each = .{ .once = &.{41831 .each = .{ .once = &.{
28850 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },41832 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
28851 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },41833 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
28852 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },41834 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
28853 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },41835 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
28854 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },41836 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
28855 .{ ._, ._sq, .lod, ._, ._, ._, ._ },41837 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
28856 .{ ._, ._sq, .sto, ._, ._, ._, ._ },41838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
28862 } },41839 } },
28863 }, .{41840 }, .{
28864 .required_features = .{ .@"64bit", .slow_incdec, null, null },41841 .required_features = .{ .avx, null, null, null },
28865 .src_constraints = .{ .any_scalar_int, .any },41842 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28866 .dst_constraints = .{.any_scalar_int},41843 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
28867 .patterns = &.{41844 .patterns = &.{
28868 .{ .src = .{ .to_mem, .none } },41845 .{ .src = .{ .to_mem, .none, .none } },
28869 },41846 },
28870 .extra_temps = .{41847 .extra_temps = .{
28871 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },41848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28872 .{ .type = .usize, .kind = .{ .reg = .rsi } },41849 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28873 .{ .type = .usize, .kind = .{ .reg = .rdi } },41850 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28874 .{ .type = .u32, .kind = .{ .reg = .ecx } },41851 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28875 .{ .type = .u64, .kind = .{ .reg = .rax } },41852 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28876 .unused,41853 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
28877 .unused,41854 .unused,
28878 .unused,41855 .unused,
28879 .unused,41856 .unused,
...@@ -28881,30 +41858,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28881,30 +41858,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28881 .dst_temps = .{.mem},41858 .dst_temps = .{.mem},
28882 .clobbers = .{ .eflags = true },41859 .clobbers = .{ .eflags = true },
28883 .each = .{ .once = &.{41860 .each = .{ .once = &.{
28884 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },41861 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
28885 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },41862 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
28886 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },41863 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
28887 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },41864 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
28888 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },41865 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
28889 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },41866 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
28890 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },41867 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
28891 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },41868 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
28892 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },41869 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
28893 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },41870 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28894 } },41872 } },
28895 }, .{41873 }, .{
28896 .required_features = .{ .@"64bit", null, null, null },41874 .required_features = .{ .avx, null, null, null },
28897 .src_constraints = .{ .any_scalar_int, .any },41875 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
28898 .dst_constraints = .{.any_scalar_int},41876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
28899 .patterns = &.{41877 .patterns = &.{
28900 .{ .src = .{ .to_mem, .none } },41878 .{ .src = .{ .to_mem, .none, .none } },
28901 },41879 },
28902 .extra_temps = .{41880 .extra_temps = .{
28903 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },41881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28904 .{ .type = .usize, .kind = .{ .reg = .rsi } },41882 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
28905 .{ .type = .usize, .kind = .{ .reg = .rdi } },41883 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
28906 .{ .type = .u32, .kind = .{ .reg = .ecx } },41884 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28907 .{ .type = .u64, .kind = .{ .reg = .rax } },41885 .unused,
28908 .unused,41886 .unused,
28909 .unused,41887 .unused,
28910 .unused,41888 .unused,
...@@ -28913,342 +41891,425 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -28913,342 +41891,425 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28913 .dst_temps = .{.mem},41891 .dst_temps = .{.mem},
28914 .clobbers = .{ .eflags = true },41892 .clobbers = .{ .eflags = true },
28915 .each = .{ .once = &.{41893 .each = .{ .once = &.{
28916 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },41894 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
28917 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },41895 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
28918 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },41896 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
28919 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },41897 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
28920 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },41898 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
28921 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },41899 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28922 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },41900 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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), ._, ._ },
28984 } },41901 } },
28985 }, .{41902 }, .{
28986 .src_constraints = .{ .any_unsigned_int, .any },41903 .required_features = .{ .sse2, null, null, null },
28987 .dst_constraints = .{.{ .exact_unsigned_int = 8 }},41904 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41905 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
28988 .patterns = &.{41906 .patterns = &.{
28989 .{ .src = .{ .to_mem, .none } },41907 .{ .src = .{ .to_mem, .none, .none } },
28990 },41908 },
28991 .dst_temps = .{.{ .rc = .general_purpose }},41909 .extra_temps = .{
28992 .each = .{ .once = &.{41910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28993 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },41911 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28994 } },41912 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28995 }, .{41913 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
28996 .src_constraints = .{ .{ .signed_int = .gpr }, .any },41914 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
28997 .dst_constraints = .{.{ .signed_int = .byte }},41915 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
28998 .patterns = &.{41916 .unused,
28999 .{ .src = .{ .to_mut_gpr, .none } },41917 .unused,
41918 .unused,
29000 },41919 },
29001 .dst_temps = .{.{ .ref = .src0 }},41920 .dst_temps = .{.mem},
29002 .clobbers = .{ .eflags = true },41921 .clobbers = .{ .eflags = true },
29003 .each = .{ .once = &.{41922 .each = .{ .once = &.{
29004 .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },41923 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
29005 .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ },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", ._, ._, ._ },
29006 } },41935 } },
29007 }, .{41936 }, .{
29008 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },41937 .required_features = .{ .sse2, null, null, null },
29009 .dst_constraints = .{.{ .unsigned_int = .byte }},41938 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41939 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
29010 .patterns = &.{41940 .patterns = &.{
29011 .{ .src = .{ .to_mut_gpr, .none } },41941 .{ .src = .{ .to_mem, .none, .none } },
29012 },41942 },
29013 .dst_temps = .{.{ .ref = .src0 }},41943 .extra_temps = .{
29014 .clobbers = .{ .eflags = true },41944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29015 .each = .{ .once = &.{41945 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29016 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },41946 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29017 } },41947 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29018 }, .{41948 .unused,
29019 .src_constraints = .{ .any_int, .any },41949 .unused,
29020 .dst_constraints = .{.{ .unsigned_int = .byte }},41950 .unused,
29021 .patterns = &.{41951 .unused,
29022 .{ .src = .{ .to_mem, .none } },41952 .unused,
29023 },41953 },
29024 .dst_temps = .{.{ .rc = .general_purpose }},41954 .dst_temps = .{.mem},
29025 .clobbers = .{ .eflags = true },41955 .clobbers = .{ .eflags = true },
29026 .each = .{ .once = &.{41956 .each = .{ .once = &.{
29027 .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ },41957 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29028 .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ },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", ._, ._, ._ },
29029 } },41965 } },
29030 }, .{41966 }, .{
29031 .src_constraints = .{ .{ .int = .gpr }, .any },41967 .required_features = .{ .sse, null, null, null },
29032 .dst_constraints = .{.{ .exact_int = 16 }},41968 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
41969 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
29033 .patterns = &.{41970 .patterns = &.{
29034 .{ .src = .{ .to_mut_gpr, .none } },41971 .{ .src = .{ .to_mem, .none, .none } },
29035 },41972 },
29036 .dst_temps = .{.{ .ref = .src0 }},41973 .extra_temps = .{
29037 .each = .{ .once = &.{} },41974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29038 }, .{41975 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29039 .src_constraints = .{ .any_signed_int, .any },41976 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
29040 .dst_constraints = .{.{ .exact_signed_int = 16 }},41977 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
29041 .patterns = &.{41978 .unused,
29042 .{ .src = .{ .to_mem, .none } },41979 .unused,
41980 .unused,
41981 .unused,
41982 .unused,
29043 },41983 },
29044 .dst_temps = .{.{ .rc = .general_purpose }},41984 .dst_temps = .{.mem},
41985 .clobbers = .{ .eflags = true },
29045 .each = .{ .once = &.{41986 .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", ._, ._, ._ },
29047 } },41995 } },
29048 }, .{41996 }, .{
29049 .src_constraints = .{ .any_unsigned_int, .any },41997 .required_features = .{ .slow_incdec, null, null, null },
29050 .dst_constraints = .{.{ .exact_unsigned_int = 16 }},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 } }},
29051 .patterns = &.{42000 .patterns = &.{
29052 .{ .src = .{ .to_mem, .none } },42001 .{ .src = .{ .to_mem, .none, .none } },
29053 },42002 },
29054 .dst_temps = .{.{ .rc = .general_purpose }},42003 .extra_temps = .{
29055 .each = .{ .once = &.{42004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29056 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },42005 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29057 } },42006 .unused,
29058 }, .{42007 .unused,
29059 .required_features = .{ .fast_imm16, null, null, null },42008 .unused,
29060 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },42009 .unused,
29061 .dst_constraints = .{.{ .unsigned_int = .word }},42010 .unused,
29062 .patterns = &.{42011 .unused,
29063 .{ .src = .{ .to_mut_gpr, .none } },42012 .unused,
29064 },42013 },
29065 .dst_temps = .{.{ .ref = .src0 }},42014 .dst_temps = .{.mem},
29066 .clobbers = .{ .eflags = true },42015 .clobbers = .{ .eflags = true },
29067 .each = .{ .once = &.{42016 .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", ._, ._, ._ },
29069 } },42024 } },
29070 }, .{42025 }, .{
29071 .required_features = .{ .fast_imm16, null, null, null },42026 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
29072 .src_constraints = .{ .any_unsigned_int, .any },42027 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},
29073 .dst_constraints = .{.{ .unsigned_int = .word }},
29074 .patterns = &.{42028 .patterns = &.{
29075 .{ .src = .{ .to_mem, .none } },42029 .{ .src = .{ .to_mem, .none, .none } },
29076 },42030 },
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},
29078 .clobbers = .{ .eflags = true },42043 .clobbers = .{ .eflags = true },
29079 .each = .{ .once = &.{42044 .each = .{ .once = &.{
29080 .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ },42045 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29081 .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ },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", ._, ._, ._ },
29082 } },42052 } },
29083 }, .{42053 }, .{
29084 .src_constraints = .{ .{ .int = .gpr }, .any },42054 .required_features = .{ .slow_incdec, null, null, null },
29085 .dst_constraints = .{.{ .exact_int = 32 }},42055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
29086 .patterns = &.{42056 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
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 }},
29094 .patterns = &.{42057 .patterns = &.{
29095 .{ .src = .{ .to_mem, .none } },42058 .{ .src = .{ .to_mem, .none, .none } },
29096 },42059 },
29097 .dst_temps = .{.{ .rc = .general_purpose }},42060 .extra_temps = .{
29098 .each = .{ .once = &.{42061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29099 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },42062 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29100 } },42063 .unused,
29101 }, .{42064 .unused,
29102 .src_constraints = .{ .{ .signed_int = .gpr }, .any },42065 .unused,
29103 .dst_constraints = .{.{ .signed_int = .dword }},42066 .unused,
29104 .patterns = &.{42067 .unused,
29105 .{ .src = .{ .to_mut_gpr, .none } },42068 .unused,
42069 .unused,
29106 },42070 },
29107 .dst_temps = .{.{ .ref = .src0 }},42071 .dst_temps = .{.mem},
29108 .clobbers = .{ .eflags = true },42072 .clobbers = .{ .eflags = true },
29109 .each = .{ .once = &.{42073 .each = .{ .once = &.{
29110 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },42074 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29111 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_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", ._, ._, ._ },
29112 } },42081 } },
29113 }, .{42082 }, .{
29114 .src_constraints = .{ .any_signed_int, .any },42083 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
29115 .dst_constraints = .{.{ .signed_int = .dword }},42084 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29116 .patterns = &.{42085 .patterns = &.{
29117 .{ .src = .{ .to_mem, .none } },42086 .{ .src = .{ .to_mem, .none, .none } },
29118 },42087 },
29119 .dst_temps = .{.{ .rc = .general_purpose }},42088 .extra_temps = .{
29120 .clobbers = .{ .eflags = true },42089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29121 .each = .{ .once = &.{42090 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29122 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },42091 .unused,
29123 .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },42092 .unused,
29124 .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ },42093 .unused,
29125 } },42094 .unused,
29126 }, .{42095 .unused,
29127 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },42096 .unused,
29128 .dst_constraints = .{.{ .unsigned_int = .dword }},42097 .unused,
29129 .patterns = &.{
29130 .{ .src = .{ .to_mut_gpr, .none } },
29131 },42098 },
29132 .dst_temps = .{.{ .ref = .src0 }},42099 .dst_temps = .{.mem},
29133 .clobbers = .{ .eflags = true },42100 .clobbers = .{ .eflags = true },
29134 .each = .{ .once = &.{42101 .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", ._, ._, ._ },
29136 } },42109 } },
29137 }, .{42110 }, .{
29138 .src_constraints = .{ .any_unsigned_int, .any },42111 .required_features = .{ .slow_incdec, null, null, null },
29139 .dst_constraints = .{.{ .unsigned_int = .dword }},42112 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
42113 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29140 .patterns = &.{42114 .patterns = &.{
29141 .{ .src = .{ .to_mem, .none } },42115 .{ .src = .{ .to_mem, .none, .none } },
29142 },42116 },
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},
29144 .clobbers = .{ .eflags = true },42129 .clobbers = .{ .eflags = true },
29145 .each = .{ .once = &.{42130 .each = .{ .once = &.{
29146 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },42131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29147 .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ },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", ._, ._, ._ },
29148 } },42137 } },
29149 }, .{42138 }, .{
29150 .required_features = .{ .@"64bit", null, null, null },42139 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
29151 .src_constraints = .{ .any_int, .any },42140 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29152 .dst_constraints = .{.{ .exact_int = 64 }},
29153 .patterns = &.{42141 .patterns = &.{
29154 .{ .src = .{ .to_mem, .none } },42142 .{ .src = .{ .to_mem, .none, .none } },
29155 },42143 },
29156 .dst_temps = .{.{ .rc = .general_purpose }},42144 .extra_temps = .{
29157 .each = .{ .once = &.{42145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29158 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },42146 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29159 } },42147 .unused,
29160 }, .{42148 .unused,
29161 .required_features = .{ .@"64bit", null, null, null },42149 .unused,
29162 .src_constraints = .{ .{ .signed_int = .gpr }, .any },42150 .unused,
29163 .dst_constraints = .{.{ .signed_int = .qword }},42151 .unused,
29164 .patterns = &.{42152 .unused,
29165 .{ .src = .{ .to_mut_gpr, .none } },42153 .unused,
29166 },42154 },
29167 .dst_temps = .{.{ .ref = .src0 }},42155 .dst_temps = .{.mem},
29168 .clobbers = .{ .eflags = true },42156 .clobbers = .{ .eflags = true },
29169 .each = .{ .once = &.{42157 .each = .{ .once = &.{
29170 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },42158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29171 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_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", ._, ._, ._ },
29172 } },42164 } },
29173 }, .{42165 }, .{
29174 .required_features = .{ .@"64bit", null, null, null },42166 .required_features = .{ .slow_incdec, null, null, null },
29175 .src_constraints = .{ .any_signed_int, .any },42167 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
29176 .dst_constraints = .{.{ .signed_int = .qword }},42168 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29177 .patterns = &.{42169 .patterns = &.{
29178 .{ .src = .{ .to_mem, .none } },42170 .{ .src = .{ .to_mem, .none, .none } },
29179 },42171 },
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},
29181 .clobbers = .{ .eflags = true },42184 .clobbers = .{ .eflags = true },
29182 .each = .{ .once = &.{42185 .each = .{ .once = &.{
29183 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },42186 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29184 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },42187 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
29185 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },42188 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42189 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29186 } },42191 } },
29187 }, .{42192 }, .{
29188 .required_features = .{ .@"64bit", .bmi2, null, null },42193 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
29189 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },42194 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29190 .dst_constraints = .{.{ .unsigned_int = .qword }},
29191 .patterns = &.{42195 .patterns = &.{
29192 .{ .src = .{ .mem, .none } },42196 .{ .src = .{ .to_mem, .none, .none } },
29193 .{ .src = .{ .to_gpr, .none } },
29194 },42197 },
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},
29196 .clobbers = .{ .eflags = true },42210 .clobbers = .{ .eflags = true },
29197 .each = .{ .once = &.{42211 .each = .{ .once = &.{
29198 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },42212 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29199 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },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", ._, ._, ._ },
29200 } },42217 } },
29201 }, .{42218 }, .{
29202 .required_features = .{ .@"64bit", .bmi2, null, null },42219 .required_features = .{ .slow_incdec, null, null, null },
29203 .src_constraints = .{ .any_unsigned_int, .any },42220 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
29204 .dst_constraints = .{.{ .unsigned_int = .qword }},42221 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29205 .patterns = &.{42222 .patterns = &.{
29206 .{ .src = .{ .to_mem, .none } },42223 .{ .src = .{ .to_mem, .none, .none } },
29207 },42224 },
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},
29209 .clobbers = .{ .eflags = true },42237 .clobbers = .{ .eflags = true },
29210 .each = .{ .once = &.{42238 .each = .{ .once = &.{
29211 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },42239 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29212 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },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", ._, ._, ._ },
29213 } },42246 } },
29214 }, .{42247 }, .{
29215 .required_features = .{ .@"64bit", null, null, null },42248 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
29216 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any },42249 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29217 .dst_constraints = .{.{ .unsigned_int = .qword }},
29218 .patterns = &.{42250 .patterns = &.{
29219 .{ .src = .{ .mem, .none } },42251 .{ .src = .{ .to_mem, .none, .none } },
29220 .{ .src = .{ .to_gpr, .none } },
29221 },42252 },
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},
29223 .clobbers = .{ .eflags = true },42265 .clobbers = .{ .eflags = true },
29224 .each = .{ .once = &.{42266 .each = .{ .once = &.{
29225 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },42267 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29226 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },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", ._, ._, ._ },
29227 } },42274 } },
29228 }, .{42275 }, .{
29229 .required_features = .{ .@"64bit", null, null, null },42276 .required_features = .{ .slow_incdec, null, null, null },
29230 .src_constraints = .{ .any_unsigned_int, .any },42277 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
29231 .dst_constraints = .{.{ .unsigned_int = .qword }},42278 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29232 .patterns = &.{42279 .patterns = &.{
29233 .{ .src = .{ .to_mem, .none } },42280 .{ .src = .{ .to_mem, .none, .none } },
29234 },42281 },
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},
29236 .clobbers = .{ .eflags = true },42294 .clobbers = .{ .eflags = true },
29237 .each = .{ .once = &.{42295 .each = .{ .once = &.{
29238 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },42296 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29239 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },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", ._, ._, ._ },
29240 } },42302 } },
29241 }, .{42303 }, .{
29242 .required_features = .{ .@"64bit", null, null, null },42304 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
29243 .src_constraints = .{ .any_int, .any },42305 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29244 .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }},
29245 .patterns = &.{42306 .patterns = &.{
29246 .{ .src = .{ .to_mem, .none } },42307 .{ .src = .{ .to_mem, .none, .none } },
29247 },42308 },
29248 .extra_temps = .{42309 .extra_temps = .{
29249 .{ .type = .usize, .kind = .{ .reg = .rsi } },42310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29250 .{ .type = .usize, .kind = .{ .reg = .rdi } },42311 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29251 .{ .type = .u32, .kind = .{ .reg = .ecx } },42312 .unused,
29252 .unused,42313 .unused,
29253 .unused,42314 .unused,
29254 .unused,42315 .unused,
...@@ -29257,23 +42318,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29257,23 +42318,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29257 .unused,42318 .unused,
29258 },42319 },
29259 .dst_temps = .{.mem},42320 .dst_temps = .{.mem},
42321 .clobbers = .{ .eflags = true },
29260 .each = .{ .once = &.{42322 .each = .{ .once = &.{
29261 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42323 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29262 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42324 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
29263 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },42325 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
29264 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42326 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42327 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42328 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29265 } },42329 } },
29266 }, .{42330 }, .{
29267 .required_features = .{ .@"64bit", null, null, null },42331 .required_features = .{ .slow_incdec, null, null, null },
29268 .src_constraints = .{ .any_signed_int, .any },42332 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29269 .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},42333 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29270 .patterns = &.{42334 .patterns = &.{
29271 .{ .src = .{ .to_mem, .none } },42335 .{ .src = .{ .to_mem, .none, .none } },
29272 },42336 },
29273 .extra_temps = .{42337 .extra_temps = .{
29274 .{ .type = .usize, .kind = .{ .reg = .rsi } },42338 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29275 .{ .type = .usize, .kind = .{ .reg = .rdi } },42339 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29276 .{ .type = .u32, .kind = .{ .reg = .ecx } },42340 .unused,
29277 .unused,42341 .unused,
29278 .unused,42342 .unused,
29279 .unused,42343 .unused,
...@@ -29284,26 +42348,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29284,26 +42348,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29284 .dst_temps = .{.mem},42348 .dst_temps = .{.mem},
29285 .clobbers = .{ .eflags = true },42349 .clobbers = .{ .eflags = true },
29286 .each = .{ .once = &.{42350 .each = .{ .once = &.{
29287 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42351 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29288 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42352 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29289 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },42353 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29290 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42354 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29291 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },42355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29292 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29293 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29294 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29295 } },42356 } },
29296 }, .{42357 }, .{
29297 .required_features = .{ .@"64bit", null, null, null },42358 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29298 .src_constraints = .{ .any_signed_int, .any },42359 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29299 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }},
29300 .patterns = &.{42360 .patterns = &.{
29301 .{ .src = .{ .to_mem, .none } },42361 .{ .src = .{ .to_mem, .none, .none } },
29302 },42362 },
29303 .extra_temps = .{42363 .extra_temps = .{
29304 .{ .type = .usize, .kind = .{ .reg = .rsi } },42364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29305 .{ .type = .usize, .kind = .{ .reg = .rdi } },42365 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29306 .{ .type = .u32, .kind = .{ .reg = .ecx } },42366 .unused,
29307 .unused,42367 .unused,
29308 .unused,42368 .unused,
29309 .unused,42369 .unused,
...@@ -29314,28 +42374,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29314,28 +42374,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29314 .dst_temps = .{.mem},42374 .dst_temps = .{.mem},
29315 .clobbers = .{ .eflags = true },42375 .clobbers = .{ .eflags = true },
29316 .each = .{ .once = &.{42376 .each = .{ .once = &.{
29317 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42377 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29318 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42378 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29319 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },42379 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29320 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42380 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29321 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },42381 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
29327 } },42382 } },
29328 }, .{42383 }, .{
29329 .required_features = .{ .@"64bit", null, null, null },42384 .required_features = .{ .slow_incdec, null, null, null },
29330 .src_constraints = .{ .any_signed_int, .any },42385 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29331 .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }},42386 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29332 .patterns = &.{42387 .patterns = &.{
29333 .{ .src = .{ .to_mem, .none } },42388 .{ .src = .{ .to_mem, .none, .none } },
29334 },42389 },
29335 .extra_temps = .{42390 .extra_temps = .{
29336 .{ .type = .usize, .kind = .{ .reg = .rsi } },42391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29337 .{ .type = .usize, .kind = .{ .reg = .rdi } },42392 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29338 .{ .type = .u32, .kind = .{ .reg = .ecx } },42393 .unused,
29339 .unused,42394 .unused,
29340 .unused,42395 .unused,
29341 .unused,42396 .unused,
...@@ -29346,26 +42401,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29346,26 +42401,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29346 .dst_temps = .{.mem},42401 .dst_temps = .{.mem},
29347 .clobbers = .{ .eflags = true },42402 .clobbers = .{ .eflags = true },
29348 .each = .{ .once = &.{42403 .each = .{ .once = &.{
29349 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42404 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29350 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42405 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29351 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },42406 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29352 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42407 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29353 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },42408 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29354 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },42409 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29355 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },42410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29356 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29357 } },42411 } },
29358 }, .{42412 }, .{
29359 .required_features = .{ .@"64bit", null, null, null },42413 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29360 .src_constraints = .{ .any_unsigned_int, .any },42414 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29361 .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
29362 .patterns = &.{42415 .patterns = &.{
29363 .{ .src = .{ .to_mem, .none } },42416 .{ .src = .{ .to_mem, .none, .none } },
29364 },42417 },
29365 .extra_temps = .{42418 .extra_temps = .{
29366 .{ .type = .usize, .kind = .{ .reg = .rsi } },42419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29367 .{ .type = .usize, .kind = .{ .reg = .rdi } },42420 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29368 .{ .type = .u32, .kind = .{ .reg = .ecx } },42421 .unused,
29369 .unused,42422 .unused,
29370 .unused,42423 .unused,
29371 .unused,42424 .unused,
...@@ -29374,24 +42427,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29374,24 +42427,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29374 .unused,42427 .unused,
29375 },42428 },
29376 .dst_temps = .{.mem},42429 .dst_temps = .{.mem},
42430 .clobbers = .{ .eflags = true },
29377 .each = .{ .once = &.{42431 .each = .{ .once = &.{
29378 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42432 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29379 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42433 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29380 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },42434 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29381 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42435 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29382 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },42436 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42437 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42438 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29383 } },42439 } },
29384 }, .{42440 }, .{
29385 .required_features = .{ .@"64bit", .bmi2, null, null },42441 .required_features = .{ .bmi2, .slow_incdec, null, null },
29386 .src_constraints = .{ .any_unsigned_int, .any },42442 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29387 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},42443 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29388 .patterns = &.{42444 .patterns = &.{
29389 .{ .src = .{ .to_mem, .none } },42445 .{ .src = .{ .to_mem, .none, .none } },
29390 },42446 },
29391 .extra_temps = .{42447 .extra_temps = .{
29392 .{ .type = .usize, .kind = .{ .reg = .rsi } },42448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29393 .{ .type = .usize, .kind = .{ .reg = .rdi } },42449 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29394 .{ .type = .u32, .kind = .{ .reg = .ecx } },42450 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29395 .unused,42451 .unused,
29396 .unused,42452 .unused,
29397 .unused,42453 .unused,
...@@ -29402,26 +42458,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29402,26 +42458,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29402 .dst_temps = .{.mem},42458 .dst_temps = .{.mem},
29403 .clobbers = .{ .eflags = true },42459 .clobbers = .{ .eflags = true },
29404 .each = .{ .once = &.{42460 .each = .{ .once = &.{
29405 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29406 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42462 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
29407 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },42463 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
29408 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42464 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
29409 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },42465 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29410 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },42466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29411 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
29412 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
29413 } },42467 } },
29414 }, .{42468 }, .{
29415 .required_features = .{ .@"64bit", .bmi2, null, null },42469 .required_features = .{ .bmi2, null, null, null },
29416 .src_constraints = .{ .any_unsigned_int, .any },42470 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29417 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},42471 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29418 .patterns = &.{42472 .patterns = &.{
29419 .{ .src = .{ .to_mem, .none } },42473 .{ .src = .{ .to_mem, .none, .none } },
29420 },42474 },
29421 .extra_temps = .{42475 .extra_temps = .{
29422 .{ .type = .usize, .kind = .{ .reg = .rsi } },42476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29423 .{ .type = .usize, .kind = .{ .reg = .rdi } },42477 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29424 .{ .type = .u32, .kind = .{ .reg = .ecx } },42478 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29425 .unused,42479 .unused,
29426 .unused,42480 .unused,
29427 .unused,42481 .unused,
...@@ -29432,25 +42486,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29432,25 +42486,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29432 .dst_temps = .{.mem},42486 .dst_temps = .{.mem},
29433 .clobbers = .{ .eflags = true },42487 .clobbers = .{ .eflags = true },
29434 .each = .{ .once = &.{42488 .each = .{ .once = &.{
29435 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42489 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29436 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42490 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
29437 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },42491 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
29438 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42492 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
29439 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },42493 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29440 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },42494 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29441 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
29442 } },42495 } },
29443 }, .{42496 }, .{
29444 .required_features = .{ .@"64bit", null, null, null },42497 .required_features = .{ .slow_incdec, null, null, null },
29445 .src_constraints = .{ .any_unsigned_int, .any },42498 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29446 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},42499 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29447 .patterns = &.{42500 .patterns = &.{
29448 .{ .src = .{ .to_mem, .none } },42501 .{ .src = .{ .to_mem, .none, .none } },
29449 },42502 },
29450 .extra_temps = .{42503 .extra_temps = .{
29451 .{ .type = .usize, .kind = .{ .reg = .rsi } },42504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29452 .{ .type = .usize, .kind = .{ .reg = .rdi } },42505 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29453 .{ .type = .u32, .kind = .{ .reg = .ecx } },42506 .unused,
29454 .unused,42507 .unused,
29455 .unused,42508 .unused,
29456 .unused,42509 .unused,
...@@ -29461,26 +42514,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29461,26 +42514,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29461 .dst_temps = .{.mem},42514 .dst_temps = .{.mem},
29462 .clobbers = .{ .eflags = true },42515 .clobbers = .{ .eflags = true },
29463 .each = .{ .once = &.{42516 .each = .{ .once = &.{
29464 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42517 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29465 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42518 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29466 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },42519 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
29467 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42520 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29468 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },42521 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29469 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },42522 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29470 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29471 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
29472 } },42523 } },
29473 }, .{42524 }, .{
29474 .required_features = .{ .@"64bit", null, null, null },42525 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
29475 .src_constraints = .{ .any_unsigned_int, .any },42526 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29476 .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
29477 .patterns = &.{42527 .patterns = &.{
29478 .{ .src = .{ .to_mem, .none } },42528 .{ .src = .{ .to_mem, .none, .none } },
29479 },42529 },
29480 .extra_temps = .{42530 .extra_temps = .{
29481 .{ .type = .usize, .kind = .{ .reg = .rsi } },42531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29482 .{ .type = .usize, .kind = .{ .reg = .rdi } },42532 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29483 .{ .type = .u32, .kind = .{ .reg = .ecx } },42533 .unused,
29484 .unused,42534 .unused,
29485 .unused,42535 .unused,
29486 .unused,42536 .unused,
...@@ -29491,25 +42541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29491,25 +42541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29491 .dst_temps = .{.mem},42541 .dst_temps = .{.mem},
29492 .clobbers = .{ .eflags = true },42542 .clobbers = .{ .eflags = true },
29493 .each = .{ .once = &.{42543 .each = .{ .once = &.{
29494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },42544 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29495 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },42545 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
29496 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },42546 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
29497 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },42547 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29498 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },42548 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29499 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },42549 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29500 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29501 } },42550 } },
29502 }, .{42551 }, .{
29503 .required_features = .{ .avx, null, null, null },42552 .required_features = .{ .slow_incdec, null, null, null },
29504 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },42553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29505 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},42554 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29506 .patterns = &.{42555 .patterns = &.{
29507 .{ .src = .{ .to_sse, .none } },42556 .{ .src = .{ .to_mem, .none, .none } },
29508 },42557 },
29509 .extra_temps = .{42558 .extra_temps = .{
29510 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29511 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42560 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29512 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42561 .unused,
29513 .unused,42562 .unused,
29514 .unused,42563 .unused,
29515 .unused,42564 .unused,
...@@ -29517,24 +42566,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29517,24 +42566,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29517 .unused,42566 .unused,
29518 .unused,42567 .unused,
29519 },42568 },
29520 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42569 .dst_temps = .{.mem},
42570 .clobbers = .{ .eflags = true },
29521 .each = .{ .once = &.{42571 .each = .{ .once = &.{
29522 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42572 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29523 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },42573 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
29524 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },42574 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29525 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },42575 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29526 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },42576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29527 } },42577 } },
29528 }, .{42578 }, .{
29529 .required_features = .{ .avx, null, null, null },42579 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29530 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42580 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29531 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
29532 .patterns = &.{42581 .patterns = &.{
29533 .{ .src = .{ .to_sse, .none } },42582 .{ .src = .{ .to_mem, .none, .none } },
29534 },42583 },
29535 .extra_temps = .{42584 .extra_temps = .{
29536 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29537 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },42586 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29538 .unused,42587 .unused,
29539 .unused,42588 .unused,
29540 .unused,42589 .unused,
...@@ -29543,22 +42592,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29543,22 +42592,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29543 .unused,42592 .unused,
29544 .unused,42593 .unused,
29545 },42594 },
29546 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42595 .dst_temps = .{.mem},
42596 .clobbers = .{ .eflags = true },
29547 .each = .{ .once = &.{42597 .each = .{ .once = &.{
29548 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42598 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29549 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },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", ._, ._, ._ },
29550 } },42603 } },
29551 }, .{42604 }, .{
29552 .required_features = .{ .sse2, null, null, null },42605 .required_features = .{ .slow_incdec, null, null, null },
29553 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },42606 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29554 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},42607 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29555 .patterns = &.{42608 .patterns = &.{
29556 .{ .src = .{ .to_mut_sse, .none } },42609 .{ .src = .{ .to_mem, .none, .none } },
29557 },42610 },
29558 .extra_temps = .{42611 .extra_temps = .{
29559 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29560 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42613 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29561 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42614 .unused,
29562 .unused,42615 .unused,
29563 .unused,42616 .unused,
29564 .unused,42617 .unused,
...@@ -29566,24 +42619,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29566,24 +42619,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29566 .unused,42619 .unused,
29567 .unused,42620 .unused,
29568 },42621 },
29569 .dst_temps = .{.{ .ref = .src0 }},42622 .dst_temps = .{.mem},
42623 .clobbers = .{ .eflags = true },
29570 .each = .{ .once = &.{42624 .each = .{ .once = &.{
29571 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42625 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29572 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },42626 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
29573 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },42627 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29574 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },42628 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29575 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },42629 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
42630 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
42631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29576 } },42632 } },
29577 }, .{42633 }, .{
29578 .required_features = .{ .sse2, null, null, null },42634 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29579 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42635 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29580 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},
29581 .patterns = &.{42636 .patterns = &.{
29582 .{ .src = .{ .to_mut_sse, .none } },42637 .{ .src = .{ .to_mem, .none, .none } },
29583 },42638 },
29584 .extra_temps = .{42639 .extra_temps = .{
29585 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29586 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },42641 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29587 .unused,42642 .unused,
29588 .unused,42643 .unused,
29589 .unused,42644 .unused,
...@@ -29592,22 +42647,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29592,22 +42647,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29592 .unused,42647 .unused,
29593 .unused,42648 .unused,
29594 },42649 },
29595 .dst_temps = .{.{ .ref = .src0 }},42650 .dst_temps = .{.mem},
42651 .clobbers = .{ .eflags = true },
29596 .each = .{ .once = &.{42652 .each = .{ .once = &.{
29597 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42653 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29598 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
29599 } },42660 } },
29600 }, .{42661 }, .{
29601 .required_features = .{ .sse, null, null, null },42662 .required_features = .{ .bmi2, .slow_incdec, null, null },
29602 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42663 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29603 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},42664 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29604 .patterns = &.{42665 .patterns = &.{
29605 .{ .src = .{ .to_mut_sse, .none } },42666 .{ .src = .{ .to_mem, .none, .none } },
29606 },42667 },
29607 .extra_temps = .{42668 .extra_temps = .{
29608 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29609 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },42670 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29610 .unused,42671 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29611 .unused,42672 .unused,
29612 .unused,42673 .unused,
29613 .unused,42674 .unused,
...@@ -29615,22 +42676,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29615,22 +42676,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29615 .unused,42676 .unused,
29616 .unused,42677 .unused,
29617 },42678 },
29618 .dst_temps = .{.{ .ref = .src0 }},42679 .dst_temps = .{.mem},
42680 .clobbers = .{ .eflags = true },
29619 .each = .{ .once = &.{42681 .each = .{ .once = &.{
29620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42682 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29621 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
29622 } },42688 } },
29623 }, .{42689 }, .{
29624 .required_features = .{ .avx2, null, null, null },42690 .required_features = .{ .bmi2, null, null, null },
29625 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },42691 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29626 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }},42692 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29627 .patterns = &.{42693 .patterns = &.{
29628 .{ .src = .{ .to_sse, .none } },42694 .{ .src = .{ .to_mem, .none, .none } },
29629 },42695 },
29630 .extra_temps = .{42696 .extra_temps = .{
29631 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29632 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42698 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29633 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42699 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29634 .unused,42700 .unused,
29635 .unused,42701 .unused,
29636 .unused,42702 .unused,
...@@ -29638,24 +42704,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29638,24 +42704,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29638 .unused,42704 .unused,
29639 .unused,42705 .unused,
29640 },42706 },
29641 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42707 .dst_temps = .{.mem},
42708 .clobbers = .{ .eflags = true },
29642 .each = .{ .once = &.{42709 .each = .{ .once = &.{
29643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42710 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29644 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },42711 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
29645 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },42712 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
29646 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },42713 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
29647 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },42714 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42715 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29648 } },42716 } },
29649 }, .{42717 }, .{
29650 .required_features = .{ .avx2, null, null, null },42718 .required_features = .{ .slow_incdec, null, null, null },
29651 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },42719 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29652 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},42720 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29653 .patterns = &.{42721 .patterns = &.{
29654 .{ .src = .{ .to_sse, .none } },42722 .{ .src = .{ .to_mem, .none, .none } },
29655 },42723 },
29656 .extra_temps = .{42724 .extra_temps = .{
29657 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },42725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29658 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },42726 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29659 .unused,42727 .unused,
29660 .unused,42728 .unused,
29661 .unused,42729 .unused,
...@@ -29664,25 +42732,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29664,25 +42732,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29664 .unused,42732 .unused,
29665 .unused,42733 .unused,
29666 },42734 },
29667 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},42735 .dst_temps = .{.mem},
42736 .clobbers = .{ .eflags = true },
29668 .each = .{ .once = &.{42737 .each = .{ .once = &.{
29669 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },42738 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29670 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },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", ._, ._, ._ },
29671 } },42744 } },
29672 }, .{42745 }, .{
29673 .required_features = .{ .avx2, null, null, null },42746 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
29674 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },42747 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29675 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }},
29676 .patterns = &.{42748 .patterns = &.{
29677 .{ .src = .{ .to_mem, .none } },42749 .{ .src = .{ .to_mem, .none, .none } },
29678 },42750 },
29679 .extra_temps = .{42751 .extra_temps = .{
29680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29681 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },42753 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29682 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },42754 .unused,
29683 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },42755 .unused,
29684 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42756 .unused,
29685 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42757 .unused,
29686 .unused,42758 .unused,
29687 .unused,42759 .unused,
29688 .unused,42760 .unused,
...@@ -29690,30 +42762,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29690,30 +42762,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29690 .dst_temps = .{.mem},42762 .dst_temps = .{.mem},
29691 .clobbers = .{ .eflags = true },42763 .clobbers = .{ .eflags = true },
29692 .each = .{ .once = &.{42764 .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), ._, ._ },
29697 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42765 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29698 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },42766 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
29699 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },42767 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
29700 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },42768 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
29701 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },42769 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29702 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },42770 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29704 } },42771 } },
29705 }, .{42772 }, .{
29706 .required_features = .{ .avx2, null, null, null },42773 .required_features = .{ .slow_incdec, null, null, null },
29707 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },42774 .src_constraints = .{ .any_scalar_int, .any, .any },
29708 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }},42775 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29709 .patterns = &.{42776 .patterns = &.{
29710 .{ .src = .{ .to_mem, .none } },42777 .{ .src = .{ .to_mem, .none, .none } },
29711 },42778 },
29712 .extra_temps = .{42779 .extra_temps = .{
29713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29714 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },42781 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29715 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },42782 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29716 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42783 .unused,
29717 .unused,42784 .unused,
29718 .unused,42785 .unused,
29719 .unused,42786 .unused,
...@@ -29723,28 +42790,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29723,28 +42790,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29723 .dst_temps = .{.mem},42790 .dst_temps = .{.mem},
29724 .clobbers = .{ .eflags = true },42791 .clobbers = .{ .eflags = true },
29725 .each = .{ .once = &.{42792 .each = .{ .once = &.{
29726 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29727 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
29728 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42793 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29729 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },42794 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29730 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },42795 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29731 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },42796 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42797 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42798 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29733 } },42800 } },
29734 }, .{42801 }, .{
29735 .required_features = .{ .avx, null, null, null },42802 .src_constraints = .{ .any_scalar_int, .any, .any },
29736 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },42803 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
29737 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
29738 .patterns = &.{42804 .patterns = &.{
29739 .{ .src = .{ .to_mem, .none } },42805 .{ .src = .{ .to_mem, .none, .none } },
29740 },42806 },
29741 .extra_temps = .{42807 .extra_temps = .{
29742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29743 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42809 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29744 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42810 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29745 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42811 .unused,
29746 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42812 .unused,
29747 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42813 .unused,
29748 .unused,42814 .unused,
29749 .unused,42815 .unused,
29750 .unused,42816 .unused,
...@@ -29752,30 +42818,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29752,30 +42818,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29752 .dst_temps = .{.mem},42818 .dst_temps = .{.mem},
29753 .clobbers = .{ .eflags = true },42819 .clobbers = .{ .eflags = true },
29754 .each = .{ .once = &.{42820 .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), ._, ._ },
29759 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29760 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },42822 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29761 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },42823 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29762 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },42824 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
29763 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },42825 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
29764 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },42826 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42827 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29766 } },42828 } },
29767 }, .{42829 }, .{
29768 .required_features = .{ .avx, null, null, null },42830 .required_features = .{ .slow_incdec, null, null, null },
29769 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42831 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
29770 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},42832 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29771 .patterns = &.{42833 .patterns = &.{
29772 .{ .src = .{ .to_mem, .none } },42834 .{ .src = .{ .to_mem, .none, .none } },
29773 },42835 },
29774 .extra_temps = .{42836 .extra_temps = .{
29775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29776 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42838 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29777 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42839 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29778 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42840 .unused,
29779 .unused,42841 .unused,
29780 .unused,42842 .unused,
29781 .unused,42843 .unused,
...@@ -29785,28 +42847,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29785,28 +42847,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29785 .dst_temps = .{.mem},42847 .dst_temps = .{.mem},
29786 .clobbers = .{ .eflags = true },42848 .clobbers = .{ .eflags = true },
29787 .each = .{ .once = &.{42849 .each = .{ .once = &.{
29788 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29789 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
29790 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42850 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29791 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },42851 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29792 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },42852 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29793 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },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), ._, ._ },
29794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29795 } },42859 } },
29796 }, .{42860 }, .{
29797 .required_features = .{ .sse2, null, null, null },42861 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
29798 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },42862 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
29799 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }},
29800 .patterns = &.{42863 .patterns = &.{
29801 .{ .src = .{ .to_mem, .none } },42864 .{ .src = .{ .to_mem, .none, .none } },
29802 },42865 },
29803 .extra_temps = .{42866 .extra_temps = .{
29804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29805 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42868 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29806 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42869 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
29807 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },42870 .unused,
29808 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42871 .unused,
29809 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },42872 .unused,
29810 .unused,42873 .unused,
29811 .unused,42874 .unused,
29812 .unused,42875 .unused,
...@@ -29814,31 +42877,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29814,31 +42877,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29814 .dst_temps = .{.mem},42877 .dst_temps = .{.mem},
29815 .clobbers = .{ .eflags = true },42878 .clobbers = .{ .eflags = true },
29816 .each = .{ .once = &.{42879 .each = .{ .once = &.{
29817 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
29818 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
29819 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
29820 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
29821 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42880 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29822 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },42881 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29823 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },42882 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29824 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },42883 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29825 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },42884 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
29826 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },42885 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
29827 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },42886 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
29828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42887 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42888 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29829 } },42889 } },
29830 }, .{42890 }, .{
29831 .required_features = .{ .sse2, null, null, null },42891 .required_features = .{ .bmi2, .slow_incdec, null, null },
29832 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42892 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
29833 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},42893 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29834 .patterns = &.{42894 .patterns = &.{
29835 .{ .src = .{ .to_mem, .none } },42895 .{ .src = .{ .to_mem, .none, .none } },
29836 },42896 },
29837 .extra_temps = .{42897 .extra_temps = .{
29838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29839 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42899 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29840 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42900 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29841 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42901 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29842 .unused,42902 .unused,
29843 .unused,42903 .unused,
29844 .unused,42904 .unused,
...@@ -29848,27 +42908,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29848,27 +42908,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29848 .dst_temps = .{.mem},42908 .dst_temps = .{.mem},
29849 .clobbers = .{ .eflags = true },42909 .clobbers = .{ .eflags = true },
29850 .each = .{ .once = &.{42910 .each = .{ .once = &.{
29851 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29852 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
29853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29854 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },42912 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29855 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },42913 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
29856 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },42914 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
29857 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },42915 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
42916 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42917 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29859 } },42919 } },
29860 }, .{42920 }, .{
29861 .required_features = .{ .sse, null, null, null },42921 .required_features = .{ .bmi2, null, null, null },
29862 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },42922 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
29863 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }},42923 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29864 .patterns = &.{42924 .patterns = &.{
29865 .{ .src = .{ .to_mem, .none } },42925 .{ .src = .{ .to_mem, .none, .none } },
29866 },42926 },
29867 .extra_temps = .{42927 .extra_temps = .{
29868 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29869 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29870 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },42930 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29871 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },42931 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29872 .unused,42932 .unused,
29873 .unused,42933 .unused,
29874 .unused,42934 .unused,
...@@ -29878,26 +42938,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29878,26 +42938,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29878 .dst_temps = .{.mem},42938 .dst_temps = .{.mem},
29879 .clobbers = .{ .eflags = true },42939 .clobbers = .{ .eflags = true },
29880 .each = .{ .once = &.{42940 .each = .{ .once = &.{
29881 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
29882 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
29883 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42941 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29884 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },42942 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29885 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },42943 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
29886 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },42944 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
29887 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },42945 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
29888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42946 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
42947 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
42948 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29889 } },42949 } },
29890 }, .{42950 }, .{
29891 .required_features = .{ .slow_incdec, null, null, null },42951 .required_features = .{ .slow_incdec, null, null, null },
29892 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },42952 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
29893 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},42953 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29894 .patterns = &.{42954 .patterns = &.{
29895 .{ .src = .{ .to_mem, .none } },42955 .{ .src = .{ .to_mem, .none, .none } },
29896 },42956 },
29897 .extra_temps = .{42957 .extra_temps = .{
29898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29899 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },42959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29900 .unused,42960 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29901 .unused,42961 .unused,
29902 .unused,42962 .unused,
29903 .unused,42963 .unused,
...@@ -29909,23 +42969,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29909,23 +42969,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29909 .clobbers = .{ .eflags = true },42969 .clobbers = .{ .eflags = true },
29910 .each = .{ .once = &.{42970 .each = .{ .once = &.{
29911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },42971 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29912 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },42972 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29913 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },42973 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29914 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },42974 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
29915 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },42975 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
42976 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
29916 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },42977 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
29917 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },42978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
29918 } },42979 } },
29919 }, .{42980 }, .{
29920 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },42981 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
29921 .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }},42982 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
29922 .patterns = &.{42983 .patterns = &.{
29923 .{ .src = .{ .to_mem, .none } },42984 .{ .src = .{ .to_mem, .none, .none } },
29924 },42985 },
29925 .extra_temps = .{42986 .extra_temps = .{
29926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29927 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },42988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
29928 .unused,42989 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29929 .unused,42990 .unused,
29930 .unused,42991 .unused,
29931 .unused,42992 .unused,
...@@ -29937,23 +42998,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29937,23 +42998,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29937 .clobbers = .{ .eflags = true },42998 .clobbers = .{ .eflags = true },
29938 .each = .{ .once = &.{42999 .each = .{ .once = &.{
29939 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43000 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
29940 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },43001 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
29941 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },43002 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
29942 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },43003 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
29943 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43004 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
43005 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
29944 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43006 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
29945 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43007 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29946 } },43008 } },
29947 }, .{43009 }, .{
29948 .required_features = .{ .slow_incdec, null, null, null },43010 .required_features = .{ .avx, null, null, null },
29949 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },43011 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
29950 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},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 } }},
29951 .patterns = &.{43025 .patterns = &.{
29952 .{ .src = .{ .to_mem, .none } },43026 .{ .src = .{ .to_sse, .none, .none } },
29953 },43027 },
29954 .extra_temps = .{43028 .extra_temps = .{
29955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43029 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29956 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43030 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
29957 .unused,43031 .unused,
29958 .unused,43032 .unused,
29959 .unused,43033 .unused,
...@@ -29962,26 +43036,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29962,26 +43036,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29962 .unused,43036 .unused,
29963 .unused,43037 .unused,
29964 },43038 },
29965 .dst_temps = .{.mem},43039 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
29966 .clobbers = .{ .eflags = true },
29967 .each = .{ .once = &.{43040 .each = .{ .once = &.{
29968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43041 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29969 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },43042 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
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", ._, ._, ._ },
29975 } },43043 } },
29976 }, .{43044 }, .{
29977 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },43045 .required_features = .{ .sse2, null, null, null },
29978 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},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 } }},
29979 .patterns = &.{43060 .patterns = &.{
29980 .{ .src = .{ .to_mem, .none } },43061 .{ .src = .{ .to_mut_sse, .none, .none } },
29981 },43062 },
29982 .extra_temps = .{43063 .extra_temps = .{
29983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43064 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
29984 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43065 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
29985 .unused,43066 .unused,
29986 .unused,43067 .unused,
29987 .unused,43068 .unused,
...@@ -29990,27 +43071,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -29990,27 +43071,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
29990 .unused,43071 .unused,
29991 .unused,43072 .unused,
29992 },43073 },
29993 .dst_temps = .{.mem},43074 .dst_temps = .{.{ .ref = .src0 }},
29994 .clobbers = .{ .eflags = true },
29995 .each = .{ .once = &.{43075 .each = .{ .once = &.{
29996 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43076 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
29997 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },43077 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
30003 } },43078 } },
30004 }, .{43079 }, .{
30005 .required_features = .{ .slow_incdec, null, null, null },43080 .required_features = .{ .sse, null, null, null },
30006 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },43081 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
30007 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43082 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
30008 .patterns = &.{43083 .patterns = &.{
30009 .{ .src = .{ .to_mem, .none } },43084 .{ .src = .{ .to_mut_sse, .none, .none } },
30010 },43085 },
30011 .extra_temps = .{43086 .extra_temps = .{
30012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30013 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43088 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
30014 .unused,43089 .unused,
30015 .unused,43090 .unused,
30016 .unused,43091 .unused,
...@@ -30019,25 +43094,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30019,25 +43094,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30019 .unused,43094 .unused,
30020 .unused,43095 .unused,
30021 },43096 },
30022 .dst_temps = .{.mem},43097 .dst_temps = .{.{ .ref = .src0 }},
30023 .clobbers = .{ .eflags = true },
30024 .each = .{ .once = &.{43098 .each = .{ .once = &.{
30025 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43099 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30026 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },43100 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
30031 } },43101 } },
30032 }, .{43102 }, .{
30033 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },43103 .required_features = .{ .avx2, null, null, null },
30034 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},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 } }},
30035 .patterns = &.{43118 .patterns = &.{
30036 .{ .src = .{ .to_mem, .none } },43119 .{ .src = .{ .to_sse, .none, .none } },
30037 },43120 },
30038 .extra_temps = .{43121 .extra_temps = .{
30039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
30040 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43123 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
30041 .unused,43124 .unused,
30042 .unused,43125 .unused,
30043 .unused,43126 .unused,
...@@ -30046,26 +43129,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30046,26 +43129,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30046 .unused,43129 .unused,
30047 .unused,43130 .unused,
30048 },43131 },
30049 .dst_temps = .{.mem},43132 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30050 .clobbers = .{ .eflags = true },
30051 .each = .{ .once = &.{43133 .each = .{ .once = &.{
30052 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43134 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
30053 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },43135 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
30054 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
30055 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
30056 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30057 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30058 } },43136 } },
30059 }, .{43137 }, .{
30060 .required_features = .{ .slow_incdec, null, null, null },43138 .required_features = .{ .avx2, null, null, null },
30061 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },43139 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
30062 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43140 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
30063 .patterns = &.{43141 .patterns = &.{
30064 .{ .src = .{ .to_mem, .none } },43142 .{ .src = .{ .to_mem, .none, .none } },
30065 },43143 },
30066 .extra_temps = .{43144 .extra_temps = .{
30067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30068 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43146 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
30069 .unused,43147 .unused,
30070 .unused,43148 .unused,
30071 .unused,43149 .unused,
...@@ -30078,22 +43156,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30078,22 +43156,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30078 .clobbers = .{ .eflags = true },43156 .clobbers = .{ .eflags = true },
30079 .each = .{ .once = &.{43157 .each = .{ .once = &.{
30080 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30081 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43159 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
30082 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43160 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
30083 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },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), ._, ._ },
30084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30085 } },43165 } },
30086 }, .{43166 }, .{
30087 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },43167 .required_features = .{ .avx2, null, null, null },
30088 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43168 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
43169 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},
30089 .patterns = &.{43170 .patterns = &.{
30090 .{ .src = .{ .to_mem, .none } },43171 .{ .src = .{ .to_mem, .none, .none } },
30091 },43172 },
30092 .extra_temps = .{43173 .extra_temps = .{
30093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30094 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43175 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
30095 .unused,43176 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
30096 .unused,43177 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
30097 .unused,43178 .unused,
30098 .unused,43179 .unused,
30099 .unused,43180 .unused,
...@@ -30103,22 +43184,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30103,22 +43184,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30103 .dst_temps = .{.mem},43184 .dst_temps = .{.mem},
30104 .clobbers = .{ .eflags = true },43185 .clobbers = .{ .eflags = true },
30105 .each = .{ .once = &.{43186 .each = .{ .once = &.{
43187 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43188 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
30106 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43189 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30107 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43190 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
30108 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43191 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
30109 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43192 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
30110 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43193 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30111 } },43194 } },
30112 }, .{43195 }, .{
30113 .required_features = .{ .slow_incdec, null, null, null },43196 .required_features = .{ .avx, null, null, null },
30114 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },43197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
30115 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43198 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
30116 .patterns = &.{43199 .patterns = &.{
30117 .{ .src = .{ .to_mem, .none } },43200 .{ .src = .{ .to_mem, .none, .none } },
30118 },43201 },
30119 .extra_temps = .{43202 .extra_temps = .{
30120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30121 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43204 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
30122 .unused,43205 .unused,
30123 .unused,43206 .unused,
30124 .unused,43207 .unused,
...@@ -30131,24 +43214,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30131,24 +43214,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30131 .clobbers = .{ .eflags = true },43214 .clobbers = .{ .eflags = true },
30132 .each = .{ .once = &.{43215 .each = .{ .once = &.{
30133 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43216 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30134 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43217 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30135 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43218 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
30136 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43219 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
30137 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43220 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
30138 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43221 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30140 } },43223 } },
30141 }, .{43224 }, .{
30142 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },43225 .required_features = .{ .avx, null, null, null },
30143 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43226 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43227 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
30144 .patterns = &.{43228 .patterns = &.{
30145 .{ .src = .{ .to_mem, .none } },43229 .{ .src = .{ .to_mem, .none, .none } },
30146 },43230 },
30147 .extra_temps = .{43231 .extra_temps = .{
30148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30149 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43233 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
30150 .unused,43234 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
30151 .unused,43235 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
30152 .unused,43236 .unused,
30153 .unused,43237 .unused,
30154 .unused,43238 .unused,
...@@ -30158,24 +43242,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30158,24 +43242,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30158 .dst_temps = .{.mem},43242 .dst_temps = .{.mem},
30159 .clobbers = .{ .eflags = true },43243 .clobbers = .{ .eflags = true },
30160 .each = .{ .once = &.{43244 .each = .{ .once = &.{
43245 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43246 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
30161 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43247 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30162 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43248 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
30163 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43249 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
30164 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43250 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30165 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30166 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
30167 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30168 } },43252 } },
30169 }, .{43253 }, .{
30170 .required_features = .{ .slow_incdec, null, null, null },43254 .required_features = .{ .sse2, null, null, null },
30171 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },43255 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
30172 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43256 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
30173 .patterns = &.{43257 .patterns = &.{
30174 .{ .src = .{ .to_mem, .none } },43258 .{ .src = .{ .to_mem, .none, .none } },
30175 },43259 },
30176 .extra_temps = .{43260 .extra_temps = .{
30177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30178 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43262 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
30179 .unused,43263 .unused,
30180 .unused,43264 .unused,
30181 .unused,43265 .unused,
...@@ -30188,24 +43272,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30188,24 +43272,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30188 .clobbers = .{ .eflags = true },43272 .clobbers = .{ .eflags = true },
30189 .each = .{ .once = &.{43273 .each = .{ .once = &.{
30190 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43274 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30191 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43275 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30192 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43276 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
30193 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43277 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
30194 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43278 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
43279 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30195 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30196 } },43281 } },
30197 }, .{43282 }, .{
30198 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },43283 .required_features = .{ .sse2, null, null, null },
30199 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43284 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
43285 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},
30200 .patterns = &.{43286 .patterns = &.{
30201 .{ .src = .{ .to_mem, .none } },43287 .{ .src = .{ .to_mem, .none, .none } },
30202 },43288 },
30203 .extra_temps = .{43289 .extra_temps = .{
30204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43290 .{ .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,
30206 .unused,43296 .unused,
30207 .unused,43297 .unused,
30208 .unused,43298 .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,
30209 .unused,43325 .unused,
30210 .unused,43326 .unused,
30211 .unused,43327 .unused,
...@@ -30214,23 +43330,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30214,23 +43330,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30214 .dst_temps = .{.mem},43330 .dst_temps = .{.mem},
30215 .clobbers = .{ .eflags = true },43331 .clobbers = .{ .eflags = true },
30216 .each = .{ .once = &.{43332 .each = .{ .once = &.{
43333 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
43334 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
30217 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43335 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30218 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },43336 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
30219 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43337 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
30220 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43338 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
30221 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43339 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
30222 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30223 } },43341 } },
30224 }, .{43342 }, .{
30225 .required_features = .{ .slow_incdec, null, null, null },43343 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
30226 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },43344 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
30227 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
30228 .patterns = &.{43345 .patterns = &.{
30229 .{ .src = .{ .to_mem, .none } },43346 .{ .src = .{ .to_mem, .none, .none } },
30230 },43347 },
30231 .extra_temps = .{43348 .extra_temps = .{
30232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30233 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43350 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30234 .unused,43351 .unused,
30235 .unused,43352 .unused,
30236 .unused,43353 .unused,
...@@ -30243,20 +43360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30243,20 +43360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30243 .clobbers = .{ .eflags = true },43360 .clobbers = .{ .eflags = true },
30244 .each = .{ .once = &.{43361 .each = .{ .once = &.{
30245 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43362 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30246 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43363 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
30247 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43364 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30248 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43365 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30249 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30250 } },43367 } },
30251 }, .{43368 }, .{
30252 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },43369 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
30253 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43370 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
30254 .patterns = &.{43371 .patterns = &.{
30255 .{ .src = .{ .to_mem, .none } },43372 .{ .src = .{ .to_mem, .none, .none } },
30256 },43373 },
30257 .extra_temps = .{43374 .extra_temps = .{
30258 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30259 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43376 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
30260 .unused,43377 .unused,
30261 .unused,43378 .unused,
30262 .unused,43379 .unused,
...@@ -30269,21 +43386,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30269,21 +43386,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30269 .clobbers = .{ .eflags = true },43386 .clobbers = .{ .eflags = true },
30270 .each = .{ .once = &.{43387 .each = .{ .once = &.{
30271 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30272 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43389 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
30273 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43390 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30274 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43391 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30275 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43392 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43393 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30276 } },43395 } },
30277 }, .{43396 }, .{
30278 .required_features = .{ .slow_incdec, null, null, null },43397 .required_features = .{ .fast_imm16, null, null, null },
30279 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },43398 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
30280 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43399 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30281 .patterns = &.{43400 .patterns = &.{
30282 .{ .src = .{ .to_mem, .none } },43401 .{ .src = .{ .to_mem, .none, .none } },
30283 },43402 },
30284 .extra_temps = .{43403 .extra_temps = .{
30285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30286 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43405 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30287 .unused,43406 .unused,
30288 .unused,43407 .unused,
30289 .unused,43408 .unused,
...@@ -30296,22 +43415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30296,22 +43415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30296 .clobbers = .{ .eflags = true },43415 .clobbers = .{ .eflags = true },
30297 .each = .{ .once = &.{43416 .each = .{ .once = &.{
30298 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43417 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30299 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43418 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
30300 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43419 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
30301 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43420 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30302 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43421 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30303 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30305 } },43423 } },
30306 }, .{43424 }, .{
30307 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },43425 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
30308 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43426 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30309 .patterns = &.{43427 .patterns = &.{
30310 .{ .src = .{ .to_mem, .none } },43428 .{ .src = .{ .to_mem, .none, .none } },
30311 },43429 },
30312 .extra_temps = .{43430 .extra_temps = .{
30313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30314 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43432 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30315 .unused,43433 .unused,
30316 .unused,43434 .unused,
30317 .unused,43435 .unused,
...@@ -30324,24 +43442,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30324,24 +43442,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30324 .clobbers = .{ .eflags = true },43442 .clobbers = .{ .eflags = true },
30325 .each = .{ .once = &.{43443 .each = .{ .once = &.{
30326 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43444 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30327 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43445 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
30328 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43446 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
30329 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43447 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30330 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43448 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30331 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30332 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30333 } },43450 } },
30334 }, .{43451 }, .{
30335 .required_features = .{ .bmi2, .slow_incdec, null, null },43452 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30336 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },43453 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
30337 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
30338 .patterns = &.{43454 .patterns = &.{
30339 .{ .src = .{ .to_mem, .none } },43455 .{ .src = .{ .to_mem, .none, .none } },
30340 },43456 },
30341 .extra_temps = .{43457 .extra_temps = .{
30342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30343 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43459 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30344 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43460 .unused,
30345 .unused,43461 .unused,
30346 .unused,43462 .unused,
30347 .unused,43463 .unused,
...@@ -30353,23 +43469,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30353,23 +43469,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30353 .clobbers = .{ .eflags = true },43469 .clobbers = .{ .eflags = true },
30354 .each = .{ .once = &.{43470 .each = .{ .once = &.{
30355 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30356 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },43472 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30357 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },43473 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30358 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43474 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30359 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30360 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30361 } },43476 } },
30362 }, .{43477 }, .{
30363 .required_features = .{ .bmi2, null, null, null },43478 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30364 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },43479 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
30365 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
30366 .patterns = &.{43480 .patterns = &.{
30367 .{ .src = .{ .to_mem, .none } },43481 .{ .src = .{ .to_mem, .none, .none } },
30368 },43482 },
30369 .extra_temps = .{43483 .extra_temps = .{
30370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30371 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43485 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
30372 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43486 .unused,
30373 .unused,43487 .unused,
30374 .unused,43488 .unused,
30375 .unused,43489 .unused,
...@@ -30381,23 +43495,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30381,23 +43495,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30381 .clobbers = .{ .eflags = true },43495 .clobbers = .{ .eflags = true },
30382 .each = .{ .once = &.{43496 .each = .{ .once = &.{
30383 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43497 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30384 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },43498 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30385 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },43499 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30386 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43500 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30387 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43501 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30388 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43502 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30389 } },43504 } },
30390 }, .{43505 }, .{
30391 .required_features = .{ .slow_incdec, null, null, null },43506 .required_features = .{ .bmi2, null, null, null },
30392 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },43507 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30393 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43508 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30394 .patterns = &.{43509 .patterns = &.{
30395 .{ .src = .{ .to_mem, .none } },43510 .{ .src = .{ .to_mem, .none, .none } },
30396 },43511 },
30397 .extra_temps = .{43512 .extra_temps = .{
30398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30399 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43514 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30400 .unused,43515 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30401 .unused,43516 .unused,
30402 .unused,43517 .unused,
30403 .unused,43518 .unused,
...@@ -30409,21 +43524,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30409,21 +43524,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30409 .clobbers = .{ .eflags = true },43524 .clobbers = .{ .eflags = true },
30410 .each = .{ .once = &.{43525 .each = .{ .once = &.{
30411 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43526 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30412 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43527 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30413 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43528 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30414 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43529 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30415 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43530 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30417 } },43532 } },
30418 }, .{43533 }, .{
30419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },43534 .required_features = .{ .fast_imm16, null, null, null },
30420 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43535 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
43536 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30421 .patterns = &.{43537 .patterns = &.{
30422 .{ .src = .{ .to_mem, .none } },43538 .{ .src = .{ .to_mem, .none, .none } },
30423 },43539 },
30424 .extra_temps = .{43540 .extra_temps = .{
30425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43541 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30426 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43542 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30427 .unused,43543 .unused,
30428 .unused,43544 .unused,
30429 .unused,43545 .unused,
...@@ -30436,22 +43552,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30436,22 +43552,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30436 .clobbers = .{ .eflags = true },43552 .clobbers = .{ .eflags = true },
30437 .each = .{ .once = &.{43553 .each = .{ .once = &.{
30438 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30439 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },43555 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30440 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43556 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
30441 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43557 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30442 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43558 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30443 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30444 } },43560 } },
30445 }, .{43561 }, .{
30446 .required_features = .{ .slow_incdec, null, null, null },43562 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
30447 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },43563 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30448 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},
30449 .patterns = &.{43564 .patterns = &.{
30450 .{ .src = .{ .to_mem, .none } },43565 .{ .src = .{ .to_mem, .none, .none } },
30451 },43566 },
30452 .extra_temps = .{43567 .extra_temps = .{
30453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30454 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43569 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30455 .unused,43570 .unused,
30456 .unused,43571 .unused,
30457 .unused,43572 .unused,
...@@ -30464,20 +43579,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30464,20 +43579,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30464 .clobbers = .{ .eflags = true },43579 .clobbers = .{ .eflags = true },
30465 .each = .{ .once = &.{43580 .each = .{ .once = &.{
30466 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43581 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30467 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43582 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
30468 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43583 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
30469 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43584 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
43585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30470 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30471 } },43587 } },
30472 }, .{43588 }, .{
30473 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },43589 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30474 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43590 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
30475 .patterns = &.{43591 .patterns = &.{
30476 .{ .src = .{ .to_mem, .none } },43592 .{ .src = .{ .to_mem, .none, .none } },
30477 },43593 },
30478 .extra_temps = .{43594 .extra_temps = .{
30479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30480 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43596 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30481 .unused,43597 .unused,
30482 .unused,43598 .unused,
30483 .unused,43599 .unused,
...@@ -30490,21 +43606,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30490,21 +43606,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30490 .clobbers = .{ .eflags = true },43606 .clobbers = .{ .eflags = true },
30491 .each = .{ .once = &.{43607 .each = .{ .once = &.{
30492 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43608 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30493 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43609 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30494 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43610 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30495 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43611 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30496 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30497 } },43613 } },
30498 }, .{43614 }, .{
30499 .required_features = .{ .slow_incdec, null, null, null },43615 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30500 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },43616 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
30501 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
30502 .patterns = &.{43617 .patterns = &.{
30503 .{ .src = .{ .to_mem, .none } },43618 .{ .src = .{ .to_mem, .none, .none } },
30504 },43619 },
30505 .extra_temps = .{43620 .extra_temps = .{
30506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30507 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43622 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
30508 .unused,43623 .unused,
30509 .unused,43624 .unused,
30510 .unused,43625 .unused,
...@@ -30517,23 +43632,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30517,23 +43632,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30517 .clobbers = .{ .eflags = true },43632 .clobbers = .{ .eflags = true },
30518 .each = .{ .once = &.{43633 .each = .{ .once = &.{
30519 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43634 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30520 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43635 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30521 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43636 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30522 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43637 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30523 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43638 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30524 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43639 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30526 } },43641 } },
30527 }, .{43642 }, .{
30528 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },43643 .required_features = .{ .bmi2, null, null, null },
30529 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43644 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
43645 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30530 .patterns = &.{43646 .patterns = &.{
30531 .{ .src = .{ .to_mem, .none } },43647 .{ .src = .{ .to_mem, .none, .none } },
30532 },43648 },
30533 .extra_temps = .{43649 .extra_temps = .{
30534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30535 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43651 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30536 .unused,43652 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30537 .unused,43653 .unused,
30538 .unused,43654 .unused,
30539 .unused,43655 .unused,
...@@ -30545,24 +43661,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30545,24 +43661,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30545 .clobbers = .{ .eflags = true },43661 .clobbers = .{ .eflags = true },
30546 .each = .{ .once = &.{43662 .each = .{ .once = &.{
30547 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43663 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30548 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43664 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30549 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43665 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30550 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43666 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30551 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43667 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30552 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43668 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30553 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30554 } },43669 } },
30555 }, .{43670 }, .{
30556 .required_features = .{ .bmi2, .slow_incdec, null, null },43671 .required_features = .{ .fast_imm16, null, null, null },
30557 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },43672 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30558 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43673 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30559 .patterns = &.{43674 .patterns = &.{
30560 .{ .src = .{ .to_mem, .none } },43675 .{ .src = .{ .to_mem, .none, .none } },
30561 },43676 },
30562 .extra_temps = .{43677 .extra_temps = .{
30563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30564 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43679 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30565 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43680 .unused,
30566 .unused,43681 .unused,
30567 .unused,43682 .unused,
30568 .unused,43683 .unused,
...@@ -30574,23 +43689,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30574,23 +43689,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30574 .clobbers = .{ .eflags = true },43689 .clobbers = .{ .eflags = true },
30575 .each = .{ .once = &.{43690 .each = .{ .once = &.{
30576 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43691 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30577 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },43692 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30578 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },43693 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
30579 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43694 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30580 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43695 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30582 } },43697 } },
30583 }, .{43698 }, .{
30584 .required_features = .{ .bmi2, null, null, null },43699 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
30585 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },43700 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30586 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
30587 .patterns = &.{43701 .patterns = &.{
30588 .{ .src = .{ .to_mem, .none } },43702 .{ .src = .{ .to_mem, .none, .none } },
30589 },43703 },
30590 .extra_temps = .{43704 .extra_temps = .{
30591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30592 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43706 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30593 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43707 .unused,
30594 .unused,43708 .unused,
30595 .unused,43709 .unused,
30596 .unused,43710 .unused,
...@@ -30602,22 +43716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30602,22 +43716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30602 .clobbers = .{ .eflags = true },43716 .clobbers = .{ .eflags = true },
30603 .each = .{ .once = &.{43717 .each = .{ .once = &.{
30604 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43718 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30605 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },43719 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
30606 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },43720 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
30607 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43721 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30608 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43722 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30609 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30610 } },43724 } },
30611 }, .{43725 }, .{
30612 .required_features = .{ .slow_incdec, null, null, null },43726 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
30613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },43727 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
30614 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
30615 .patterns = &.{43728 .patterns = &.{
30616 .{ .src = .{ .to_mem, .none } },43729 .{ .src = .{ .to_mem, .none, .none } },
30617 },43730 },
30618 .extra_temps = .{43731 .extra_temps = .{
30619 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30620 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43733 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30621 .unused,43734 .unused,
30622 .unused,43735 .unused,
30623 .unused,43736 .unused,
...@@ -30631,20 +43744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30631,20 +43744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30631 .each = .{ .once = &.{43744 .each = .{ .once = &.{
30632 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43745 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30633 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43746 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30634 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43747 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30635 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43748 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30636 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30638 } },43750 } },
30639 }, .{43751 }, .{
30640 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },43752 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
30641 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43753 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
30642 .patterns = &.{43754 .patterns = &.{
30643 .{ .src = .{ .to_mem, .none } },43755 .{ .src = .{ .to_mem, .none, .none } },
30644 },43756 },
30645 .extra_temps = .{43757 .extra_temps = .{
30646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30647 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43759 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
30648 .unused,43760 .unused,
30649 .unused,43761 .unused,
30650 .unused,43762 .unused,
...@@ -30658,22 +43770,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30658,22 +43770,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30658 .each = .{ .once = &.{43770 .each = .{ .once = &.{
30659 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30660 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },43772 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30661 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },43773 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30662 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },43774 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30663 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43775 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30664 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43776 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
43777 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30665 } },43778 } },
30666 }, .{43779 }, .{
30667 .required_features = .{ .slow_incdec, null, null, null },43780 .required_features = .{ .bmi2, null, null, null },
30668 .src_constraints = .{ .any_scalar_int, .any },43781 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
30669 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43782 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30670 .patterns = &.{43783 .patterns = &.{
30671 .{ .src = .{ .to_mem, .none } },43784 .{ .src = .{ .to_mem, .none, .none } },
30672 },43785 },
30673 .extra_temps = .{43786 .extra_temps = .{
30674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30675 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30676 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43788 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
43789 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30677 .unused,43790 .unused,
30678 .unused,43791 .unused,
30679 .unused,43792 .unused,
...@@ -30685,23 +43798,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30685,23 +43798,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30685 .clobbers = .{ .eflags = true },43798 .clobbers = .{ .eflags = true },
30686 .each = .{ .once = &.{43799 .each = .{ .once = &.{
30687 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43800 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30688 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43801 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
30689 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },43802 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
30690 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43803 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30691 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43804 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30692 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30694 } },43806 } },
30695 }, .{43807 }, .{
30696 .src_constraints = .{ .any_scalar_int, .any },43808 .required_features = .{ .fast_imm16, null, null, null },
30697 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }},43809 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
43810 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30698 .patterns = &.{43811 .patterns = &.{
30699 .{ .src = .{ .to_mem, .none } },43812 .{ .src = .{ .to_mem, .none, .none } },
30700 },43813 },
30701 .extra_temps = .{43814 .extra_temps = .{
30702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30703 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43816 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30704 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43817 .unused,
30705 .unused,43818 .unused,
30706 .unused,43819 .unused,
30707 .unused,43820 .unused,
...@@ -30713,24 +43826,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30713,24 +43826,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30713 .clobbers = .{ .eflags = true },43826 .clobbers = .{ .eflags = true },
30714 .each = .{ .once = &.{43827 .each = .{ .once = &.{
30715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43828 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30716 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43829 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30717 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },43830 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
30718 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43831 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30719 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43832 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30720 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30721 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30722 } },43834 } },
30723 }, .{43835 }, .{
30724 .required_features = .{ .slow_incdec, null, null, null },43836 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
30725 .src_constraints = .{ .any_scalar_signed_int, .any },43837 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30726 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},
30727 .patterns = &.{43838 .patterns = &.{
30728 .{ .src = .{ .to_mem, .none } },43839 .{ .src = .{ .to_mem, .none, .none } },
30729 },43840 },
30730 .extra_temps = .{43841 .extra_temps = .{
30731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30732 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43843 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30733 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43844 .unused,
30734 .unused,43845 .unused,
30735 .unused,43846 .unused,
30736 .unused,43847 .unused,
...@@ -30742,25 +43853,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30742,25 +43853,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30742 .clobbers = .{ .eflags = true },43853 .clobbers = .{ .eflags = true },
30743 .each = .{ .once = &.{43854 .each = .{ .once = &.{
30744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43855 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30745 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43856 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
30746 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },43857 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
30747 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43858 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
30748 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43859 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30749 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30750 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30751 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
30752 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43860 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30753 } },43861 } },
30754 }, .{43862 }, .{
30755 .src_constraints = .{ .any_scalar_signed_int, .any },43863 .src_constraints = .{ .any_scalar_int, .any, .any },
30756 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }},43864 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},
30757 .patterns = &.{43865 .patterns = &.{
30758 .{ .src = .{ .to_mem, .none } },43866 .{ .src = .{ .to_mem, .none, .none } },
30759 },43867 },
30760 .extra_temps = .{43868 .extra_temps = .{
30761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30762 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30763 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },43871 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30764 .unused,43872 .unused,
30765 .unused,43873 .unused,
30766 .unused,43874 .unused,
...@@ -30774,25 +43882,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30774,25 +43882,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30774 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43882 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30775 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43883 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30776 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },43884 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30777 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },43885 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30778 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
30779 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
30780 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43886 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30781 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43887 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30782 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30783 } },43889 } },
30784 }, .{43890 }, .{
30785 .required_features = .{ .bmi2, .slow_incdec, null, null },43891 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
30786 .src_constraints = .{ .any_scalar_unsigned_int, .any },43892 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
30787 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},
30788 .patterns = &.{43893 .patterns = &.{
30789 .{ .src = .{ .to_mem, .none } },43894 .{ .src = .{ .to_mem, .none, .none } },
30790 },43895 },
30791 .extra_temps = .{43896 .extra_temps = .{
30792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30793 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43898 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30794 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43899 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
30795 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43900 .unused,
30796 .unused,43901 .unused,
30797 .unused,43902 .unused,
30798 .unused,43903 .unused,
...@@ -30804,25 +43909,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30804,25 +43909,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30804 .each = .{ .once = &.{43909 .each = .{ .once = &.{
30805 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30806 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43911 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30807 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },43912 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30808 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },43913 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30809 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },43914 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
43915 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30810 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43916 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30811 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43917 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30813 } },43919 } },
30814 }, .{43920 }, .{
30815 .required_features = .{ .bmi2, null, null, null },43921 .required_features = .{ .bmi2, null, null, null },
30816 .src_constraints = .{ .any_scalar_unsigned_int, .any },43922 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
30817 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43923 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30818 .patterns = &.{43924 .patterns = &.{
30819 .{ .src = .{ .to_mem, .none } },43925 .{ .src = .{ .to_mem, .none, .none } },
30820 },43926 },
30821 .extra_temps = .{43927 .extra_temps = .{
30822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30824 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43930 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30825 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43931 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30826 .unused,43932 .unused,
30827 .unused,43933 .unused,
30828 .unused,43934 .unused,
...@@ -30836,22 +43942,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30836,22 +43942,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30836 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43942 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30837 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },43943 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
30838 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },43944 .{ .@"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, ._, ._ },
30840 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43946 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30841 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },43947 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30842 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },43948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30843 } },43949 } },
30844 }, .{43950 }, .{
30845 .required_features = .{ .slow_incdec, null, null, null },43951 .required_features = .{ .fast_imm16, null, null, null },
30846 .src_constraints = .{ .any_scalar_unsigned_int, .any },43952 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
30847 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43953 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30848 .patterns = &.{43954 .patterns = &.{
30849 .{ .src = .{ .to_mem, .none } },43955 .{ .src = .{ .to_mem, .none, .none } },
30850 },43956 },
30851 .extra_temps = .{43957 .extra_temps = .{
30852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30854 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43960 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30855 .unused,43961 .unused,
30856 .unused,43962 .unused,
30857 .unused,43963 .unused,
...@@ -30865,22 +43971,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30865,22 +43971,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30865 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },43971 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30866 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },43972 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30867 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },43973 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30868 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },43974 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
30869 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },43975 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30870 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },43976 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30871 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },43977 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30872 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },43978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30873 } },43979 } },
30874 }, .{43980 }, .{
30875 .src_constraints = .{ .any_scalar_unsigned_int, .any },43981 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
30876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }},43982 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
30877 .patterns = &.{43983 .patterns = &.{
30878 .{ .src = .{ .to_mem, .none } },43984 .{ .src = .{ .to_mem, .none, .none } },
30879 },43985 },
30880 .extra_temps = .{43986 .extra_temps = .{
30881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },43988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
30883 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },43989 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
30884 .unused,43990 .unused,
30885 .unused,43991 .unused,
30886 .unused,43992 .unused,
...@@ -30894,30 +44000,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30894,30 +44000,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30894 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44000 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
30895 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },44001 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
30896 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },44002 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
30897 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },44003 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
30898 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },44004 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
30899 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },44005 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
30900 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },44006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
30901 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },44007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
30902 } },44008 } },
30903 }, .{44009 }, .{
30904 .required_features = .{ .avx, null, null, null },44010 .required_features = .{ .avx, null, null, null },
30905 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },44011 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
30906 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},44012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
30907 .patterns = &.{44013 .patterns = &.{
30908 .{ .src = .{ .to_sse, .none } },44014 .{ .src = .{ .to_sse, .none, .none } },
30909 },44015 },
30910 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},44016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
30911 .each = .{ .once = &.{44017 .each = .{ .once = &.{
30912 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },44018 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
30913 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },44019 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
30914 } },44020 } },
30915 }, .{44021 }, .{
30916 .required_features = .{ .avx, null, null, null },44022 .required_features = .{ .avx, null, null, null },
30917 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44023 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
30918 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44024 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
30919 .patterns = &.{44025 .patterns = &.{
30920 .{ .src = .{ .to_sse, .none } },44026 .{ .src = .{ .to_sse, .none, .none } },
30921 },44027 },
30922 .extra_temps = .{44028 .extra_temps = .{
30923 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44029 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -30937,22 +44043,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30937,22 +44043,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30937 } },44043 } },
30938 }, .{44044 }, .{
30939 .required_features = .{ .sse2, null, null, null },44045 .required_features = .{ .sse2, null, null, null },
30940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },44046 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
30941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},44047 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
30942 .patterns = &.{44048 .patterns = &.{
30943 .{ .src = .{ .to_mut_sse, .none } },44049 .{ .src = .{ .to_mut_sse, .none, .none } },
30944 },44050 },
30945 .dst_temps = .{.{ .ref = .src0 }},44051 .dst_temps = .{.{ .ref = .src0 }},
30946 .each = .{ .once = &.{44052 .each = .{ .once = &.{
30947 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },44053 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30948 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },44054 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
30949 } },44055 } },
30950 }, .{44056 }, .{
30951 .required_features = .{ .sse2, null, null, null },44057 .required_features = .{ .sse2, null, null, null },
30952 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44058 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
30953 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44059 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
30954 .patterns = &.{44060 .patterns = &.{
30955 .{ .src = .{ .to_mut_sse, .none } },44061 .{ .src = .{ .to_mut_sse, .none, .none } },
30956 },44062 },
30957 .extra_temps = .{44063 .extra_temps = .{
30958 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44064 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -30972,10 +44078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30972,10 +44078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30972 } },44078 } },
30973 }, .{44079 }, .{
30974 .required_features = .{ .sse, null, null, null },44080 .required_features = .{ .sse, null, null, null },
30975 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44081 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
30976 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44082 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
30977 .patterns = &.{44083 .patterns = &.{
30978 .{ .src = .{ .to_mut_sse, .none } },44084 .{ .src = .{ .to_mut_sse, .none, .none } },
30979 },44085 },
30980 .extra_temps = .{44086 .extra_temps = .{
30981 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -30995,22 +44101,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -30995,22 +44101,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
30995 } },44101 } },
30996 }, .{44102 }, .{
30997 .required_features = .{ .avx2, null, null, null },44103 .required_features = .{ .avx2, null, null, null },
30998 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },44104 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
30999 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},44105 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
31000 .patterns = &.{44106 .patterns = &.{
31001 .{ .src = .{ .to_sse, .none } },44107 .{ .src = .{ .to_sse, .none, .none } },
31002 },44108 },
31003 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},44109 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31004 .each = .{ .once = &.{44110 .each = .{ .once = &.{
31005 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },44111 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
31006 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },44112 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
31007 } },44113 } },
31008 }, .{44114 }, .{
31009 .required_features = .{ .avx2, null, null, null },44115 .required_features = .{ .avx2, null, null, null },
31010 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },44116 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
31011 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }},44117 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
31012 .patterns = &.{44118 .patterns = &.{
31013 .{ .src = .{ .to_sse, .none } },44119 .{ .src = .{ .to_sse, .none, .none } },
31014 },44120 },
31015 .extra_temps = .{44121 .extra_temps = .{
31016 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -31030,14 +44136,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31030,14 +44136,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31030 } },44136 } },
31031 }, .{44137 }, .{
31032 .required_features = .{ .avx2, null, null, null },44138 .required_features = .{ .avx2, null, null, null },
31033 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },44139 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
31034 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},44140 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
31035 .patterns = &.{44141 .patterns = &.{
31036 .{ .src = .{ .to_mem, .none } },44142 .{ .src = .{ .to_mem, .none, .none } },
31037 },44143 },
31038 .extra_temps = .{44144 .extra_temps = .{
31039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31040 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },44146 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
31041 .unused,44147 .unused,
31042 .unused,44148 .unused,
31043 .unused,44149 .unused,
...@@ -31051,23 +44157,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31051,23 +44157,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31051 .each = .{ .once = &.{44157 .each = .{ .once = &.{
31052 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31053 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },44159 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
31054 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },44160 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
31055 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },44161 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
31056 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },44162 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
31057 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },44163 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
31058 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31059 } },44165 } },
31060 }, .{44166 }, .{
31061 .required_features = .{ .avx2, null, null, null },44167 .required_features = .{ .avx2, null, null, null },
31062 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },44168 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
31063 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }},44169 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},
31064 .patterns = &.{44170 .patterns = &.{
31065 .{ .src = .{ .to_mem, .none } },44171 .{ .src = .{ .to_mem, .none, .none } },
31066 },44172 },
31067 .extra_temps = .{44173 .extra_temps = .{
31068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31069 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },44175 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
31070 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },44176 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
31071 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },44177 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
31072 .unused,44178 .unused,
31073 .unused,44179 .unused,
...@@ -31088,14 +44194,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31088,14 +44194,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31088 } },44194 } },
31089 }, .{44195 }, .{
31090 .required_features = .{ .avx, null, null, null },44196 .required_features = .{ .avx, null, null, null },
31091 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },44197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
31092 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},44198 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
31093 .patterns = &.{44199 .patterns = &.{
31094 .{ .src = .{ .to_mem, .none } },44200 .{ .src = .{ .to_mem, .none, .none } },
31095 },44201 },
31096 .extra_temps = .{44202 .extra_temps = .{
31097 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31098 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },44204 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
31099 .unused,44205 .unused,
31100 .unused,44206 .unused,
31101 .unused,44207 .unused,
...@@ -31109,23 +44215,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31109,23 +44215,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31109 .each = .{ .once = &.{44215 .each = .{ .once = &.{
31110 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44216 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31111 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },44217 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31112 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },44218 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
31113 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },44219 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
31114 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44220 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31115 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },44221 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31117 } },44223 } },
31118 }, .{44224 }, .{
31119 .required_features = .{ .avx, null, null, null },44225 .required_features = .{ .avx, null, null, null },
31120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44226 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
31121 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44227 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
31122 .patterns = &.{44228 .patterns = &.{
31123 .{ .src = .{ .to_mem, .none } },44229 .{ .src = .{ .to_mem, .none, .none } },
31124 },44230 },
31125 .extra_temps = .{44231 .extra_temps = .{
31126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31127 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44233 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31128 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44234 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31129 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },44235 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
31130 .unused,44236 .unused,
31131 .unused,44237 .unused,
...@@ -31146,14 +44252,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31146,14 +44252,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31146 } },44252 } },
31147 }, .{44253 }, .{
31148 .required_features = .{ .sse2, null, null, null },44254 .required_features = .{ .sse2, null, null, null },
31149 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },44255 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
31150 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},44256 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
31151 .patterns = &.{44257 .patterns = &.{
31152 .{ .src = .{ .to_mem, .none } },44258 .{ .src = .{ .to_mem, .none, .none } },
31153 },44259 },
31154 .extra_temps = .{44260 .extra_temps = .{
31155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31156 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },44262 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
31157 .unused,44263 .unused,
31158 .unused,44264 .unused,
31159 .unused,44265 .unused,
...@@ -31167,23 +44273,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31167,23 +44273,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31167 .each = .{ .once = &.{44273 .each = .{ .once = &.{
31168 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44274 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31169 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },44275 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
31170 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },44276 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
31171 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },44277 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
31172 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },44278 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
31173 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },44279 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
31174 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31175 } },44281 } },
31176 }, .{44282 }, .{
31177 .required_features = .{ .sse2, null, null, null },44283 .required_features = .{ .sse2, null, null, null },
31178 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44284 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
31179 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44285 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
31180 .patterns = &.{44286 .patterns = &.{
31181 .{ .src = .{ .to_mem, .none } },44287 .{ .src = .{ .to_mem, .none, .none } },
31182 },44288 },
31183 .extra_temps = .{44289 .extra_temps = .{
31184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44290 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31185 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44291 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31186 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44292 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31187 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },44293 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
31188 .unused,44294 .unused,
31189 .unused,44295 .unused,
...@@ -31205,15 +44311,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31205,15 +44311,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31205 } },44311 } },
31206 }, .{44312 }, .{
31207 .required_features = .{ .sse, null, null, null },44313 .required_features = .{ .sse, null, null, null },
31208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },44314 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
31209 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }},44315 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},
31210 .patterns = &.{44316 .patterns = &.{
31211 .{ .src = .{ .to_mem, .none } },44317 .{ .src = .{ .to_mem, .none, .none } },
31212 },44318 },
31213 .extra_temps = .{44319 .extra_temps = .{
31214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31215 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44321 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31216 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },44322 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
31217 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },44323 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
31218 .unused,44324 .unused,
31219 .unused,44325 .unused,
...@@ -31234,14 +44340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31234,14 +44340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31235 } },44341 } },
31236 }, .{44342 }, .{
31237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },44343 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
31238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},44344 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
31239 .patterns = &.{44345 .patterns = &.{
31240 .{ .src = .{ .to_mem, .none } },44346 .{ .src = .{ .to_mem, .none, .none } },
31241 },44347 },
31242 .extra_temps = .{44348 .extra_temps = .{
31243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31244 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44350 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31245 .unused,44351 .unused,
31246 .unused,44352 .unused,
31247 .unused,44353 .unused,
...@@ -31254,20 +44360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31254,20 +44360,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31254 .clobbers = .{ .eflags = true },44360 .clobbers = .{ .eflags = true },
31255 .each = .{ .once = &.{44361 .each = .{ .once = &.{
31256 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44362 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31257 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },44363 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
31258 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44364 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31259 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44365 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31261 } },44367 } },
31262 }, .{44368 }, .{
31263 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },44369 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
31264 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},44370 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
31265 .patterns = &.{44371 .patterns = &.{
31266 .{ .src = .{ .to_mem, .none } },44372 .{ .src = .{ .to_mem, .none, .none } },
31267 },44373 },
31268 .extra_temps = .{44374 .extra_temps = .{
31269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31270 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },44376 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
31271 .unused,44377 .unused,
31272 .unused,44378 .unused,
31273 .unused,44379 .unused,
...@@ -31280,24 +44386,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31280,24 +44386,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31280 .clobbers = .{ .eflags = true },44386 .clobbers = .{ .eflags = true },
31281 .each = .{ .once = &.{44387 .each = .{ .once = &.{
31282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44388 .{ ._, ._, .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), ._, ._ },
31284 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44390 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31285 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44391 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31286 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44392 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31287 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44393 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31288 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31289 } },44395 } },
31290 }, .{44396 }, .{
31291 .required_features = .{ .fast_imm16, null, null, null },44397 .required_features = .{ .bmi2, null, null, null },
31292 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },44398 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
31293 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44399 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31294 .patterns = &.{44400 .patterns = &.{
31295 .{ .src = .{ .to_mem, .none } },44401 .{ .src = .{ .to_mem, .none, .none } },
31296 },44402 },
31297 .extra_temps = .{44403 .extra_temps = .{
31298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31299 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44405 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31300 .unused,44406 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31301 .unused,44407 .unused,
31302 .unused,44408 .unused,
31303 .unused,44409 .unused,
...@@ -31309,21 +44415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31309,21 +44415,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31309 .clobbers = .{ .eflags = true },44415 .clobbers = .{ .eflags = true },
31310 .each = .{ .once = &.{44416 .each = .{ .once = &.{
31311 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44417 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31312 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },44418 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
31313 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },44419 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
31314 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44420 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31315 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44421 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31316 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31317 } },44423 } },
31318 }, .{44424 }, .{
31319 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },44425 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
31320 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44426 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31321 .patterns = &.{44427 .patterns = &.{
31322 .{ .src = .{ .to_mem, .none } },44428 .{ .src = .{ .to_mem, .none, .none } },
31323 },44429 },
31324 .extra_temps = .{44430 .extra_temps = .{
31325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31326 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31327 .unused,44433 .unused,
31328 .unused,44434 .unused,
31329 .unused,44435 .unused,
...@@ -31336,21 +44442,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31336,21 +44442,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31336 .clobbers = .{ .eflags = true },44442 .clobbers = .{ .eflags = true },
31337 .each = .{ .once = &.{44443 .each = .{ .once = &.{
31338 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44444 .{ ._, ._, .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), ._, ._ },
31340 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },44446 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31341 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44447 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31342 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44448 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31343 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31344 } },44450 } },
31345 }, .{44451 }, .{
31346 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },44452 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
31347 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},44453 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
31348 .patterns = &.{44454 .patterns = &.{
31349 .{ .src = .{ .to_mem, .none } },44455 .{ .src = .{ .to_mem, .none, .none } },
31350 },44456 },
31351 .extra_temps = .{44457 .extra_temps = .{
31352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31353 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44459 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31354 .unused,44460 .unused,
31355 .unused,44461 .unused,
31356 .unused,44462 .unused,
...@@ -31364,19 +44470,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31364,19 +44470,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31364 .each = .{ .once = &.{44470 .each = .{ .once = &.{
31365 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31366 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },44472 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
31367 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44473 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31368 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44474 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31370 } },44476 } },
31371 }, .{44477 }, .{
31372 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },44478 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
31373 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},44479 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
31374 .patterns = &.{44480 .patterns = &.{
31375 .{ .src = .{ .to_mem, .none } },44481 .{ .src = .{ .to_mem, .none, .none } },
31376 },44482 },
31377 .extra_temps = .{44483 .extra_temps = .{
31378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31379 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },44485 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
31380 .unused,44486 .unused,
31381 .unused,44487 .unused,
31382 .unused,44488 .unused,
...@@ -31392,21 +44498,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31392,21 +44498,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31392 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },44498 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
31393 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44499 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31394 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44500 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31395 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44501 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31396 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44502 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31397 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31398 } },44504 } },
31399 }, .{44505 }, .{
31400 .required_features = .{ .bmi2, null, null, null },44506 .required_features = .{ .bmi2, null, null, null },
31401 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },44507 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
31402 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44508 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31403 .patterns = &.{44509 .patterns = &.{
31404 .{ .src = .{ .to_mem, .none } },44510 .{ .src = .{ .to_mem, .none, .none } },
31405 },44511 },
31406 .extra_temps = .{44512 .extra_temps = .{
31407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31408 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },44514 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31409 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31410 .unused,44516 .unused,
31411 .unused,44517 .unused,
31412 .unused,44518 .unused,
...@@ -31420,47 +44526,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31420,47 +44526,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31420 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44526 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31421 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },44527 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
31422 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },44528 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31423 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },44529 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31424 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44530 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
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), ._, ._ },
31453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44531 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31454 } },44532 } },
31455 }, .{44533 }, .{
31456 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },44534 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
31457 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44535 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31458 .patterns = &.{44536 .patterns = &.{
31459 .{ .src = .{ .to_mem, .none } },44537 .{ .src = .{ .to_mem, .none, .none } },
31460 },44538 },
31461 .extra_temps = .{44539 .extra_temps = .{
31462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31463 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44541 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31464 .unused,44542 .unused,
31465 .unused,44543 .unused,
31466 .unused,44544 .unused,
...@@ -31475,45 +44553,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31475,45 +44553,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31475 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44553 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31476 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },44554 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
31477 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },44555 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31478 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44556 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31479 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44557 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
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), ._, ._ },
31506 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44558 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31507 } },44559 } },
31508 }, .{44560 }, .{
31509 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },44561 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
31510 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},44562 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
31511 .patterns = &.{44563 .patterns = &.{
31512 .{ .src = .{ .to_mem, .none } },44564 .{ .src = .{ .to_mem, .none, .none } },
31513 },44565 },
31514 .extra_temps = .{44566 .extra_temps = .{
31515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31516 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },44568 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31517 .unused,44569 .unused,
31518 .unused,44570 .unused,
31519 .unused,44571 .unused,
...@@ -31527,23 +44579,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31527,23 +44579,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31527 .each = .{ .once = &.{44579 .each = .{ .once = &.{
31528 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44580 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31529 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },44581 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31530 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44582 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31531 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44583 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31532 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
31533 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
31534 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44584 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31535 } },44585 } },
31536 }, .{44586 }, .{
31537 .required_features = .{ .bmi2, null, null, null },44587 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
31538 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },44588 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
31539 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
31540 .patterns = &.{44589 .patterns = &.{
31541 .{ .src = .{ .to_mem, .none } },44590 .{ .src = .{ .to_mem, .none, .none } },
31542 },44591 },
31543 .extra_temps = .{44592 .extra_temps = .{
31544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31545 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },44594 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
31546 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44595 .unused,
31547 .unused,44596 .unused,
31548 .unused,44597 .unused,
31549 .unused,44598 .unused,
...@@ -31555,23 +44604,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31555,23 +44604,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31555 .clobbers = .{ .eflags = true },44604 .clobbers = .{ .eflags = true },
31556 .each = .{ .once = &.{44605 .each = .{ .once = &.{
31557 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44606 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31558 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },44607 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31559 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },44608 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31560 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },44609 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31561 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44610 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
44611 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31562 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31563 } },44613 } },
31564 }, .{44614 }, .{
31565 .required_features = .{ .fast_imm16, null, null, null },44615 .required_features = .{ .bmi2, null, null, null },
31566 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },44616 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
31567 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44617 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31568 .patterns = &.{44618 .patterns = &.{
31569 .{ .src = .{ .to_mem, .none } },44619 .{ .src = .{ .to_mem, .none, .none } },
31570 },44620 },
31571 .extra_temps = .{44621 .extra_temps = .{
31572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31573 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44623 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31574 .unused,44624 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31575 .unused,44625 .unused,
31576 .unused,44626 .unused,
31577 .unused,44627 .unused,
...@@ -31583,21 +44633,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31583,21 +44633,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31583 .clobbers = .{ .eflags = true },44633 .clobbers = .{ .eflags = true },
31584 .each = .{ .once = &.{44634 .each = .{ .once = &.{
31585 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31586 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },44636 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
31587 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },44637 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31588 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44638 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31589 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31590 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31591 } },44641 } },
31592 }, .{44642 }, .{
31593 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },44643 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
31594 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44644 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31595 .patterns = &.{44645 .patterns = &.{
31596 .{ .src = .{ .to_mem, .none } },44646 .{ .src = .{ .to_mem, .none, .none } },
31597 },44647 },
31598 .extra_temps = .{44648 .extra_temps = .{
31599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31600 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44650 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31601 .unused,44651 .unused,
31602 .unused,44652 .unused,
31603 .unused,44653 .unused,
...@@ -31612,19 +44662,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31612,19 +44662,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31612 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44662 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31613 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },44663 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
31614 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },44664 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31615 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44665 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31616 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44666 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44667 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31618 } },44668 } },
31619 }, .{44669 }, .{
31620 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },44670 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
31621 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},44671 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
31622 .patterns = &.{44672 .patterns = &.{
31623 .{ .src = .{ .to_mem, .none } },44673 .{ .src = .{ .to_mem, .none, .none } },
31624 },44674 },
31625 .extra_temps = .{44675 .extra_temps = .{
31626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31627 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44677 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31628 .unused,44678 .unused,
31629 .unused,44679 .unused,
31630 .unused,44680 .unused,
...@@ -31638,19 +44688,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31638,19 +44688,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31638 .each = .{ .once = &.{44688 .each = .{ .once = &.{
31639 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44689 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31640 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },44690 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
31641 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44691 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31642 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44692 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31644 } },44694 } },
31645 }, .{44695 }, .{
31646 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },44696 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
31647 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},44697 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
31648 .patterns = &.{44698 .patterns = &.{
31649 .{ .src = .{ .to_mem, .none } },44699 .{ .src = .{ .to_mem, .none, .none } },
31650 },44700 },
31651 .extra_temps = .{44701 .extra_temps = .{
31652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31653 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },44703 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
31654 .unused,44704 .unused,
31655 .unused,44705 .unused,
31656 .unused,44706 .unused,
...@@ -31666,21 +44716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31666,21 +44716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31666 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },44716 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
31667 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44717 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31668 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44718 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31669 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44719 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31670 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44720 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31672 } },44722 } },
31673 }, .{44723 }, .{
31674 .required_features = .{ .bmi2, null, null, null },44724 .required_features = .{ .bmi2, null, null, null },
31675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },44725 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
31676 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44726 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31677 .patterns = &.{44727 .patterns = &.{
31678 .{ .src = .{ .to_mem, .none } },44728 .{ .src = .{ .to_mem, .none, .none } },
31679 },44729 },
31680 .extra_temps = .{44730 .extra_temps = .{
31681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31682 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },44732 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31683 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44733 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31684 .unused,44734 .unused,
31685 .unused,44735 .unused,
31686 .unused,44736 .unused,
...@@ -31694,47 +44744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31694,47 +44744,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31694 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31695 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },44745 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
31696 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },44746 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
31697 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },44747 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31698 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44748 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
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), ._, ._ },
31727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44749 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31728 } },44750 } },
31729 }, .{44751 }, .{
31730 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },44752 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
31731 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44753 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31732 .patterns = &.{44754 .patterns = &.{
31733 .{ .src = .{ .to_mem, .none } },44755 .{ .src = .{ .to_mem, .none, .none } },
31734 },44756 },
31735 .extra_temps = .{44757 .extra_temps = .{
31736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31737 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44759 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31738 .unused,44760 .unused,
31739 .unused,44761 .unused,
31740 .unused,44762 .unused,
...@@ -31749,20 +44771,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31749,20 +44771,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31749 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31750 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },44772 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
31751 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },44773 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
31752 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },44774 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
31753 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44775 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31755 } },44777 } },
31756 }, .{44778 }, .{
31757 .src_constraints = .{ .any_scalar_int, .any },44779 .src_constraints = .{ .any_scalar_int, .any, .any },
31758 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }},44780 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},
31759 .patterns = &.{44781 .patterns = &.{
31760 .{ .src = .{ .to_mem, .none } },44782 .{ .src = .{ .to_mem, .none, .none } },
31761 },44783 },
31762 .extra_temps = .{44784 .extra_temps = .{
31763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31764 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },44786 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31765 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44787 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31766 .unused,44788 .unused,
31767 .unused,44789 .unused,
31768 .unused,44790 .unused,
...@@ -31776,21 +44798,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31776,21 +44798,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31776 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44798 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31777 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },44799 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
31778 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },44800 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31779 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },44801 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31780 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },44802 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31781 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44803 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31782 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31783 } },44805 } },
31784 }, .{44806 }, .{
31785 .src_constraints = .{ .any_scalar_signed_int, .any },44807 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
31786 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},44808 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
31787 .patterns = &.{44809 .patterns = &.{
31788 .{ .src = .{ .to_mem, .none } },44810 .{ .src = .{ .to_mem, .none, .none } },
31789 },44811 },
31790 .extra_temps = .{44812 .extra_temps = .{
31791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31792 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },44814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31793 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },44815 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
31794 .unused,44816 .unused,
31795 .unused,44817 .unused,
31796 .unused,44818 .unused,
...@@ -31806,23 +44828,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31806,23 +44828,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31806 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },44828 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31807 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44829 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
31808 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },44830 .{ ._, ._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, ._, ._ },
31810 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },44832 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31811 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44833 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44834 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31813 } },44835 } },
31814 }, .{44836 }, .{
31815 .required_features = .{ .bmi2, null, null, null },44837 .required_features = .{ .bmi2, null, null, null },
31816 .src_constraints = .{ .any_scalar_unsigned_int, .any },44838 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
31817 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44839 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31818 .patterns = &.{44840 .patterns = &.{
31819 .{ .src = .{ .to_mem, .none } },44841 .{ .src = .{ .to_mem, .none, .none } },
31820 },44842 },
31821 .extra_temps = .{44843 .extra_temps = .{
31822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },44845 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31824 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },44846 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31825 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44847 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31826 .unused,44848 .unused,
31827 .unused,44849 .unused,
31828 .unused,44850 .unused,
...@@ -31836,22 +44858,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31836,22 +44858,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31836 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },44858 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
31837 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },44859 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
31838 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },44860 .{ .@"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, ._, ._ },
31840 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },44862 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31841 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31843 } },44865 } },
31844 }, .{44866 }, .{
31845 .required_features = .{ .fast_imm16, null, null, null },44867 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
31846 .src_constraints = .{ .any_scalar_unsigned_int, .any },44868 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},
31847 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},
31848 .patterns = &.{44869 .patterns = &.{
31849 .{ .src = .{ .to_mem, .none } },44870 .{ .src = .{ .to_mem, .none, .none } },
31850 },44871 },
31851 .extra_temps = .{44872 .extra_temps = .{
31852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44873 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },44874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31854 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
31855 .unused,44876 .unused,
31856 .unused,44877 .unused,
31857 .unused,44878 .unused,
...@@ -31865,22 +44886,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31865,22 +44886,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31865 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },44886 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
31866 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },44887 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
31867 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },44888 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
31868 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },44889 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
31869 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },44890 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
31870 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },44891 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
31871 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },44892 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
31872 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },44893 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
31873 } },44894 } },
31874 }, .{44895 }, .{
31875 .src_constraints = .{ .any_scalar_unsigned_int, .any },44896 .required_features = .{ .avx, null, null, null },
31876 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }},44897 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
44898 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
31877 .patterns = &.{44899 .patterns = &.{
31878 .{ .src = .{ .to_mem, .none } },44900 .{ .src = .{ .to_sse, .none, .none } },
31879 },44901 },
31880 .extra_temps = .{44902 .extra_temps = .{
31881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44903 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
31882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },44904 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
31883 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },44905 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
31884 .unused,44906 .unused,
31885 .unused,44907 .unused,
31886 .unused,44908 .unused,
...@@ -31888,36 +44910,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31888,36 +44910,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31888 .unused,44910 .unused,
31889 .unused,44911 .unused,
31890 },44912 },
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 },
31910 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},44913 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
31911 .each = .{ .once = &.{44914 .each = .{ .once = &.{
31912 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },44915 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31913 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },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), ._ },
31914 } },44920 } },
31915 }, .{44921 }, .{
31916 .required_features = .{ .avx, null, null, null },44922 .required_features = .{ .avx, null, null, null },
31917 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },44923 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
31918 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},44924 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
31919 .patterns = &.{44925 .patterns = &.{
31920 .{ .src = .{ .to_sse, .none } },44926 .{ .src = .{ .to_sse, .none, .none } },
31921 },44927 },
31922 .extra_temps = .{44928 .extra_temps = .{
31923 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44929 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -31937,22 +44943,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31937,22 +44943,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31937 } },44943 } },
31938 }, .{44944 }, .{
31939 .required_features = .{ .sse2, null, null, null },44945 .required_features = .{ .sse2, null, null, null },
31940 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },44946 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
31941 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},44947 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
31942 .patterns = &.{44948 .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,
31944 },44961 },
31945 .dst_temps = .{.{ .ref = .src0 }},44962 .dst_temps = .{.{ .ref = .src0 }},
31946 .each = .{ .once = &.{44963 .each = .{ .once = &.{
31947 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },44964 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
31948 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },44965 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
44966 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
44967 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
44968 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
31949 } },44969 } },
31950 }, .{44970 }, .{
31951 .required_features = .{ .sse2, null, null, null },44971 .required_features = .{ .sse2, null, null, null },
31952 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },44972 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
31953 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},44973 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
31954 .patterns = &.{44974 .patterns = &.{
31955 .{ .src = .{ .to_mut_sse, .none } },44975 .{ .src = .{ .to_mut_sse, .none, .none } },
31956 },44976 },
31957 .extra_temps = .{44977 .extra_temps = .{
31958 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },44978 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -31972,10 +44992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31972,10 +44992,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31972 } },44992 } },
31973 }, .{44993 }, .{
31974 .required_features = .{ .sse, null, null, null },44994 .required_features = .{ .sse, null, null, null },
31975 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },44995 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
31976 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},44996 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
31977 .patterns = &.{44997 .patterns = &.{
31978 .{ .src = .{ .to_mut_sse, .none } },44998 .{ .src = .{ .to_mut_sse, .none, .none } },
31979 },44999 },
31980 .extra_temps = .{45000 .extra_temps = .{
31981 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },45001 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -31995,22 +45015,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -31995,22 +45015,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
31995 } },45015 } },
31996 }, .{45016 }, .{
31997 .required_features = .{ .avx2, null, null, null },45017 .required_features = .{ .avx2, null, null, null },
31998 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },45018 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
31999 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},45019 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
32000 .patterns = &.{45020 .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,
32002 },45033 },
32003 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45034 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
32004 .each = .{ .once = &.{45035 .each = .{ .once = &.{
32005 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },45036 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
32006 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },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), ._ },
32007 } },45041 } },
32008 }, .{45042 }, .{
32009 .required_features = .{ .avx2, null, null, null },45043 .required_features = .{ .avx2, null, null, null },
32010 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },45044 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
32011 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},45045 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
32012 .patterns = &.{45046 .patterns = &.{
32013 .{ .src = .{ .to_sse, .none } },45047 .{ .src = .{ .to_sse, .none, .none } },
32014 },45048 },
32015 .extra_temps = .{45049 .extra_temps = .{
32016 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },45050 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
...@@ -32030,18 +45064,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32030,18 +45064,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32030 } },45064 } },
32031 }, .{45065 }, .{
32032 .required_features = .{ .avx2, null, null, null },45066 .required_features = .{ .avx2, null, null, null },
32033 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },45067 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
32034 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},45068 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
32035 .patterns = &.{45069 .patterns = &.{
32036 .{ .src = .{ .to_mem, .none } },45070 .{ .src = .{ .to_mem, .none, .none } },
32037 },45071 },
32038 .extra_temps = .{45072 .extra_temps = .{
32039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32040 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },45074 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32041 .unused,45075 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32042 .unused,45076 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
32043 .unused,45077 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32044 .unused,45078 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32045 .unused,45079 .unused,
32046 .unused,45080 .unused,
32047 .unused,45081 .unused,
...@@ -32049,25 +45083,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32049,25 +45083,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32049 .dst_temps = .{.mem},45083 .dst_temps = .{.mem},
32050 .clobbers = .{ .eflags = true },45084 .clobbers = .{ .eflags = true },
32051 .each = .{ .once = &.{45085 .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), ._, ._ },
32052 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32053 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },45091 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
32054 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },45092 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },
32055 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },45093 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },
32056 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },45094 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },
32057 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },45095 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
32058 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32059 } },45097 } },
32060 }, .{45098 }, .{
32061 .required_features = .{ .avx2, null, null, null },45099 .required_features = .{ .avx2, null, null, null },
32062 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },45100 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
32063 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }},45101 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},
32064 .patterns = &.{45102 .patterns = &.{
32065 .{ .src = .{ .to_mem, .none } },45103 .{ .src = .{ .to_mem, .none, .none } },
32066 },45104 },
32067 .extra_temps = .{45105 .extra_temps = .{
32068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32069 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },45107 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
32070 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },45108 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
32071 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },45109 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32072 .unused,45110 .unused,
32073 .unused,45111 .unused,
...@@ -32088,18 +45126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32088,18 +45126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32088 } },45126 } },
32089 }, .{45127 }, .{
32090 .required_features = .{ .avx, null, null, null },45128 .required_features = .{ .avx, null, null, null },
32091 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },45129 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
32092 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},45130 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
32093 .patterns = &.{45131 .patterns = &.{
32094 .{ .src = .{ .to_mem, .none } },45132 .{ .src = .{ .to_mem, .none, .none } },
32095 },45133 },
32096 .extra_temps = .{45134 .extra_temps = .{
32097 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32098 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },45136 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32099 .unused,45137 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32100 .unused,45138 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32101 .unused,45139 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32102 .unused,45140 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32103 .unused,45141 .unused,
32104 .unused,45142 .unused,
32105 .unused,45143 .unused,
...@@ -32107,25 +45145,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32107,25 +45145,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32107 .dst_temps = .{.mem},45145 .dst_temps = .{.mem},
32108 .clobbers = .{ .eflags = true },45146 .clobbers = .{ .eflags = true },
32109 .each = .{ .once = &.{45147 .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), ._, ._ },
32110 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45152 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32111 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },45153 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
32112 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },45154 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },
32113 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },45155 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },
32114 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45156 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
32115 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },45157 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32117 } },45159 } },
32118 }, .{45160 }, .{
32119 .required_features = .{ .avx, null, null, null },45161 .required_features = .{ .avx, null, null, null },
32120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },45162 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
32121 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},45163 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
32122 .patterns = &.{45164 .patterns = &.{
32123 .{ .src = .{ .to_mem, .none } },45165 .{ .src = .{ .to_mem, .none, .none } },
32124 },45166 },
32125 .extra_temps = .{45167 .extra_temps = .{
32126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45168 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32127 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45169 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32128 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45170 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32129 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },45171 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32130 .unused,45172 .unused,
32131 .unused,45173 .unused,
...@@ -32146,18 +45188,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32146,18 +45188,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32146 } },45188 } },
32147 }, .{45189 }, .{
32148 .required_features = .{ .sse2, null, null, null },45190 .required_features = .{ .sse2, null, null, null },
32149 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },45191 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
32150 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},45192 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
32151 .patterns = &.{45193 .patterns = &.{
32152 .{ .src = .{ .to_mem, .none } },45194 .{ .src = .{ .to_mem, .none, .none } },
32153 },45195 },
32154 .extra_temps = .{45196 .extra_temps = .{
32155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32156 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },45198 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32157 .unused,45199 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32158 .unused,45200 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
32159 .unused,45201 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32160 .unused,45202 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
32161 .unused,45203 .unused,
32162 .unused,45204 .unused,
32163 .unused,45205 .unused,
...@@ -32165,25 +45207,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32165,25 +45207,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32165 .dst_temps = .{.mem},45207 .dst_temps = .{.mem},
32166 .clobbers = .{ .eflags = true },45208 .clobbers = .{ .eflags = true },
32167 .each = .{ .once = &.{45209 .each = .{ .once = &.{
45210 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
45211 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
45212 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
45213 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
32168 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45214 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32169 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },45215 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },
32170 .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },45216 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32171 .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },45217 .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ },
32172 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },45218 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },
45219 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
32173 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },45220 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32174 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32175 } },45222 } },
32176 }, .{45223 }, .{
32177 .required_features = .{ .sse2, null, null, null },45224 .required_features = .{ .sse2, null, null, null },
32178 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },45225 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
32179 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},45226 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
32180 .patterns = &.{45227 .patterns = &.{
32181 .{ .src = .{ .to_mem, .none } },45228 .{ .src = .{ .to_mem, .none, .none } },
32182 },45229 },
32183 .extra_temps = .{45230 .extra_temps = .{
32184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32185 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45232 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32186 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45233 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32187 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },45234 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32188 .unused,45235 .unused,
32189 .unused,45236 .unused,
...@@ -32205,15 +45252,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32205,15 +45252,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32205 } },45252 } },
32206 }, .{45253 }, .{
32207 .required_features = .{ .sse, null, null, null },45254 .required_features = .{ .sse, null, null, null },
32208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },45255 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
32209 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }},45256 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
32210 .patterns = &.{45257 .patterns = &.{
32211 .{ .src = .{ .to_mem, .none } },45258 .{ .src = .{ .to_mem, .none, .none } },
32212 },45259 },
32213 .extra_temps = .{45260 .extra_temps = .{
32214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32215 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45262 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32216 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },45263 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
32217 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },45264 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
32218 .unused,45265 .unused,
32219 .unused,45266 .unused,
...@@ -32234,14 +45281,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32234,14 +45281,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45281 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32235 } },45282 } },
32236 }, .{45283 }, .{
32237 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },45284 .required_features = .{ .@"64bit", null, null, null },
32238 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},45285 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45286 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
32239 .patterns = &.{45287 .patterns = &.{
32240 .{ .src = .{ .to_mem, .none } },45288 .{ .src = .{ .to_mem, .none, .none } },
32241 },45289 },
32242 .extra_temps = .{45290 .extra_temps = .{
32243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45292 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32245 .unused,45293 .unused,
32246 .unused,45294 .unused,
32247 .unused,45295 .unused,
...@@ -32254,20 +45302,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32254,20 +45302,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32254 .clobbers = .{ .eflags = true },45302 .clobbers = .{ .eflags = true },
32255 .each = .{ .once = &.{45303 .each = .{ .once = &.{
32256 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45304 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32257 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },45305 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
32258 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45306 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32259 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45307 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32261 } },45309 } },
32262 }, .{45310 }, .{
32263 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },45311 .required_features = .{ .@"64bit", null, null, null },
32264 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},45312 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45313 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
32265 .patterns = &.{45314 .patterns = &.{
32266 .{ .src = .{ .to_mem, .none } },45315 .{ .src = .{ .to_mem, .none, .none } },
32267 },45316 },
32268 .extra_temps = .{45317 .extra_temps = .{
32269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32270 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },45319 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
32271 .unused,45320 .unused,
32272 .unused,45321 .unused,
32273 .unused,45322 .unused,
...@@ -32280,24 +45329,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32280,24 +45329,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32280 .clobbers = .{ .eflags = true },45329 .clobbers = .{ .eflags = true },
32281 .each = .{ .once = &.{45330 .each = .{ .once = &.{
32282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45331 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32283 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },45332 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
32284 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45333 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32285 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45334 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32286 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45335 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32287 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45336 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32288 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45337 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32289 } },45338 } },
32290 }, .{45339 }, .{
32291 .required_features = .{ .bmi2, null, null, null },45340 .required_features = .{ .@"64bit", .bmi2, null, null },
32292 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },45341 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
32293 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45342 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32294 .patterns = &.{45343 .patterns = &.{
32295 .{ .src = .{ .to_mem, .none } },45344 .{ .src = .{ .to_mem, .none, .none } },
32296 },45345 },
32297 .extra_temps = .{45346 .extra_temps = .{
32298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32299 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45348 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32300 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45349 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32301 .unused,45350 .unused,
32302 .unused,45351 .unused,
32303 .unused,45352 .unused,
...@@ -32310,20 +45359,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32310,20 +45359,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32310 .each = .{ .once = &.{45359 .each = .{ .once = &.{
32311 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45360 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32312 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },45361 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32313 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },45362 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },
32314 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45363 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
32315 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45364 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32316 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45365 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32317 } },45366 } },
32318 }, .{45367 }, .{
32319 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },45368 .required_features = .{ .@"64bit", null, null, null },
32320 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45369 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
45370 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32321 .patterns = &.{45371 .patterns = &.{
32322 .{ .src = .{ .to_mem, .none } },45372 .{ .src = .{ .to_mem, .none, .none } },
32323 },45373 },
32324 .extra_temps = .{45374 .extra_temps = .{
32325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32326 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45376 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32327 .unused,45377 .unused,
32328 .unused,45378 .unused,
32329 .unused,45379 .unused,
...@@ -32336,21 +45386,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32336,21 +45386,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32336 .clobbers = .{ .eflags = true },45386 .clobbers = .{ .eflags = true },
32337 .each = .{ .once = &.{45387 .each = .{ .once = &.{
32338 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32339 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },45389 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
32340 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },45390 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
32341 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45391 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32342 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45392 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32343 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45393 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32344 } },45394 } },
32345 }, .{45395 }, .{
32346 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },45396 .required_features = .{ .@"64bit", null, null, null },
32347 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},45397 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45398 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
32348 .patterns = &.{45399 .patterns = &.{
32349 .{ .src = .{ .to_mem, .none } },45400 .{ .src = .{ .to_mem, .none, .none } },
32350 },45401 },
32351 .extra_temps = .{45402 .extra_temps = .{
32352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32353 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45404 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32354 .unused,45405 .unused,
32355 .unused,45406 .unused,
32356 .unused,45407 .unused,
...@@ -32363,20 +45414,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32363,20 +45414,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32363 .clobbers = .{ .eflags = true },45414 .clobbers = .{ .eflags = true },
32364 .each = .{ .once = &.{45415 .each = .{ .once = &.{
32365 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45416 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32366 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45417 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32367 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45418 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32368 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45419 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32370 } },45421 } },
32371 }, .{45422 }, .{
32372 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },45423 .required_features = .{ .@"64bit", null, null, null },
32373 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},45424 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45425 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
32374 .patterns = &.{45426 .patterns = &.{
32375 .{ .src = .{ .to_mem, .none } },45427 .{ .src = .{ .to_mem, .none, .none } },
32376 },45428 },
32377 .extra_temps = .{45429 .extra_temps = .{
32378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32379 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },45431 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
32380 .unused,45432 .unused,
32381 .unused,45433 .unused,
32382 .unused,45434 .unused,
...@@ -32389,24 +45441,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32389,24 +45441,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32389 .clobbers = .{ .eflags = true },45441 .clobbers = .{ .eflags = true },
32390 .each = .{ .once = &.{45442 .each = .{ .once = &.{
32391 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45443 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32392 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45444 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32393 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45445 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32394 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45446 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32395 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45447 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32396 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45448 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32397 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32398 } },45450 } },
32399 }, .{45451 }, .{
32400 .required_features = .{ .bmi2, null, null, null },45452 .required_features = .{ .@"64bit", .bmi2, null, null },
32401 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },45453 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
32402 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45454 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32403 .patterns = &.{45455 .patterns = &.{
32404 .{ .src = .{ .to_mem, .none } },45456 .{ .src = .{ .to_mem, .none, .none } },
32405 },45457 },
32406 .extra_temps = .{45458 .extra_temps = .{
32407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32408 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45460 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45461 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32410 .unused,45462 .unused,
32411 .unused,45463 .unused,
32412 .unused,45464 .unused,
...@@ -32419,20 +45471,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32419,20 +45471,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32419 .each = .{ .once = &.{45471 .each = .{ .once = &.{
32420 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45472 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32421 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },45473 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32422 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },45474 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },
32423 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45475 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
32424 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45476 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32426 } },45478 } },
32427 }, .{45479 }, .{
32428 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },45480 .required_features = .{ .@"64bit", null, null, null },
32429 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
45482 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32430 .patterns = &.{45483 .patterns = &.{
32431 .{ .src = .{ .to_mem, .none } },45484 .{ .src = .{ .to_mem, .none, .none } },
32432 },45485 },
32433 .extra_temps = .{45486 .extra_temps = .{
32434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32435 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45488 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32436 .unused,45489 .unused,
32437 .unused,45490 .unused,
32438 .unused,45491 .unused,
...@@ -32445,21 +45498,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32445,21 +45498,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32445 .clobbers = .{ .eflags = true },45498 .clobbers = .{ .eflags = true },
32446 .each = .{ .once = &.{45499 .each = .{ .once = &.{
32447 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45500 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32448 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },45501 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
32449 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },45502 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
32450 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45503 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32451 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32452 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45505 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32453 } },45506 } },
32454 }, .{45507 }, .{
32455 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },45508 .required_features = .{ .@"64bit", null, null, null },
32456 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},45509 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45510 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},
32457 .patterns = &.{45511 .patterns = &.{
32458 .{ .src = .{ .to_mem, .none } },45512 .{ .src = .{ .to_mem, .none, .none } },
32459 },45513 },
32460 .extra_temps = .{45514 .extra_temps = .{
32461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32462 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45516 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32463 .unused,45517 .unused,
32464 .unused,45518 .unused,
32465 .unused,45519 .unused,
...@@ -32472,20 +45526,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32472,20 +45526,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32472 .clobbers = .{ .eflags = true },45526 .clobbers = .{ .eflags = true },
32473 .each = .{ .once = &.{45527 .each = .{ .once = &.{
32474 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45528 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32475 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45529 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
32476 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45530 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32477 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45531 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32479 } },45533 } },
32480 }, .{45534 }, .{
32481 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },45535 .required_features = .{ .@"64bit", null, null, null },
32482 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},45536 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
45537 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
32483 .patterns = &.{45538 .patterns = &.{
32484 .{ .src = .{ .to_mem, .none } },45539 .{ .src = .{ .to_mem, .none, .none } },
32485 },45540 },
32486 .extra_temps = .{45541 .extra_temps = .{
32487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45542 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32488 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },45543 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
32489 .unused,45544 .unused,
32490 .unused,45545 .unused,
32491 .unused,45546 .unused,
...@@ -32498,24 +45553,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32498,24 +45553,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32498 .clobbers = .{ .eflags = true },45553 .clobbers = .{ .eflags = true },
32499 .each = .{ .once = &.{45554 .each = .{ .once = &.{
32500 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45555 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32501 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45556 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
32502 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45557 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32503 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45558 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32504 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45559 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
32505 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45560 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32506 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32507 } },45562 } },
32508 }, .{45563 }, .{
32509 .required_features = .{ .bmi2, null, null, null },45564 .required_features = .{ .@"64bit", .bmi2, null, null },
32510 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },45565 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
32511 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45566 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32512 .patterns = &.{45567 .patterns = &.{
32513 .{ .src = .{ .to_mem, .none } },45568 .{ .src = .{ .to_mem, .none, .none } },
32514 },45569 },
32515 .extra_temps = .{45570 .extra_temps = .{
32516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45571 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32517 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },45572 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32518 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45573 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32519 .unused,45574 .unused,
32520 .unused,45575 .unused,
32521 .unused,45576 .unused,
...@@ -32528,25 +45583,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32528,25 +45583,83 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32528 .each = .{ .once = &.{45583 .each = .{ .once = &.{
32529 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45584 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32530 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },45585 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
32531 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },45586 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
32532 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45587 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
32533 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32534 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32535 } },45590 } },
32536 }, .{45591 }, .{
32537 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },45592 .required_features = .{ .@"64bit", null, null, null },
32538 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},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 } }},
32539 .patterns = &.{45623 .patterns = &.{
32540 .{ .src = .{ .to_mem, .none } },45624 .{ .src = .{ .to_mem, .none, .none } },
32541 },45625 },
32542 .extra_temps = .{45626 .extra_temps = .{
32543 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45628 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45629 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
45630 .unused,
32545 .unused,45631 .unused,
32546 .unused,45632 .unused,
32547 .unused,45633 .unused,
32548 .unused,45634 .unused,
32549 .unused,45635 .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,
32550 .unused,45663 .unused,
32551 .unused,45664 .unused,
32552 },45665 },
...@@ -32554,23 +45667,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32554,23 +45667,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32554 .clobbers = .{ .eflags = true },45667 .clobbers = .{ .eflags = true },
32555 .each = .{ .once = &.{45668 .each = .{ .once = &.{
32556 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45669 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32557 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },45670 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32558 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },45671 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
32559 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45672 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
32560 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
32561 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32562 } },45678 } },
32563 }, .{45679 }, .{
32564 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },45680 .required_features = .{ .@"64bit", .bmi2, null, null },
32565 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},45681 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45682 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32566 .patterns = &.{45683 .patterns = &.{
32567 .{ .src = .{ .to_mem, .none } },45684 .{ .src = .{ .to_mem, .none, .none } },
32568 },45685 },
32569 .extra_temps = .{45686 .extra_temps = .{
32570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32571 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45688 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32572 .unused,45689 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32573 .unused,45690 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32574 .unused,45691 .unused,
32575 .unused,45692 .unused,
32576 .unused,45693 .unused,
...@@ -32581,21 +45698,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32581,21 +45698,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32581 .clobbers = .{ .eflags = true },45698 .clobbers = .{ .eflags = true },
32582 .each = .{ .once = &.{45699 .each = .{ .once = &.{
32583 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45700 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32584 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45701 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32585 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45702 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
32586 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
32587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45707 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32588 } },45708 } },
32589 }, .{45709 }, .{
32590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any },45710 .required_features = .{ .@"64bit", null, null, null },
32591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},45711 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
45712 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},
32592 .patterns = &.{45713 .patterns = &.{
32593 .{ .src = .{ .to_mem, .none } },45714 .{ .src = .{ .to_mem, .none, .none } },
32594 },45715 },
32595 .extra_temps = .{45716 .extra_temps = .{
32596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32597 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },45718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32598 .unused,45719 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32599 .unused,45720 .unused,
32600 .unused,45721 .unused,
32601 .unused,45722 .unused,
...@@ -32607,25 +45728,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32607,25 +45728,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32607 .clobbers = .{ .eflags = true },45728 .clobbers = .{ .eflags = true },
32608 .each = .{ .once = &.{45729 .each = .{ .once = &.{
32609 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45730 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
32610 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45731 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
32611 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45732 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
32612 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45733 .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
32613 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45734 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
32614 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45735 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
45736 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32615 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32616 } },45738 } },
32617 }, .{45739 }, .{
32618 .required_features = .{ .bmi2, null, null, null },45740 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32619 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },45741 .src_constraints = .{ .any_scalar_int, .any, .any },
32620 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45742 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
32621 .patterns = &.{45743 .patterns = &.{
32622 .{ .src = .{ .to_mem, .none } },45744 .{ .src = .{ .to_mem, .none, .none } },
32623 },45745 },
32624 .extra_temps = .{45746 .extra_temps = .{
32625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32626 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32627 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45747 .{ .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 } },
32629 .unused,45751 .unused,
32630 .unused,45752 .unused,
32631 .unused,45753 .unused,
...@@ -32635,24 +45757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32635,24 +45757,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32635 .dst_temps = .{.mem},45757 .dst_temps = .{.mem},
32636 .clobbers = .{ .eflags = true },45758 .clobbers = .{ .eflags = true },
32637 .each = .{ .once = &.{45759 .each = .{ .once = &.{
32638 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45760 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32639 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },45761 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32640 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },45762 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32641 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45763 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
32642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45764 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45765 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
45766 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
45767 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
32644 } },45768 } },
32645 }, .{45769 }, .{
32646 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },45770 .required_features = .{ .@"64bit", null, null, null },
32647 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45771 .src_constraints = .{ .any_scalar_int, .any, .any },
45772 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},
32648 .patterns = &.{45773 .patterns = &.{
32649 .{ .src = .{ .to_mem, .none } },45774 .{ .src = .{ .to_mem, .none, .none } },
32650 },45775 },
32651 .extra_temps = .{45776 .extra_temps = .{
32652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32653 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32654 .unused,45778 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32655 .unused,45779 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45780 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32656 .unused,45781 .unused,
32657 .unused,45782 .unused,
32658 .unused,45783 .unused,
...@@ -32662,24 +45787,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32662,24 +45787,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32662 .dst_temps = .{.mem},45787 .dst_temps = .{.mem},
32663 .clobbers = .{ .eflags = true },45788 .clobbers = .{ .eflags = true },
32664 .each = .{ .once = &.{45789 .each = .{ .once = &.{
32665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45790 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32666 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },45791 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32667 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },45792 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32668 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },45793 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
32669 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45794 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },45795 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
45796 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
45797 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
32671 } },45798 } },
32672 }, .{45799 }, .{
32673 .src_constraints = .{ .any_scalar_int, .any },45800 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32674 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }},45801 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45802 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
32675 .patterns = &.{45803 .patterns = &.{
32676 .{ .src = .{ .to_mem, .none } },45804 .{ .src = .{ .to_mem, .none, .none } },
32677 },45805 },
32678 .extra_temps = .{45806 .extra_temps = .{
32679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32681 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45807 .{ .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 } },
32683 .unused,45811 .unused,
32684 .unused,45812 .unused,
32685 .unused,45813 .unused,
...@@ -32689,25 +45817,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32689,25 +45817,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32689 .dst_temps = .{.mem},45817 .dst_temps = .{.mem},
32690 .clobbers = .{ .eflags = true },45818 .clobbers = .{ .eflags = true },
32691 .each = .{ .once = &.{45819 .each = .{ .once = &.{
32692 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45820 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32693 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45821 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32694 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45822 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32695 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45823 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
32696 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45824 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32697 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45825 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
32698 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
32699 } },45833 } },
32700 }, .{45834 }, .{
32701 .src_constraints = .{ .any_scalar_signed_int, .any },45835 .required_features = .{ .@"64bit", null, null, null },
32702 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},45836 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45837 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
32703 .patterns = &.{45838 .patterns = &.{
32704 .{ .src = .{ .to_mem, .none } },45839 .{ .src = .{ .to_mem, .none, .none } },
32705 },45840 },
32706 .extra_temps = .{45841 .extra_temps = .{
32707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45842 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32709 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },45843 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32710 .unused,45844 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32711 .unused,45846 .unused,
32712 .unused,45847 .unused,
32713 .unused,45848 .unused,
...@@ -32717,28 +45852,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32717,28 +45852,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32717 .dst_temps = .{.mem},45852 .dst_temps = .{.mem},
32718 .clobbers = .{ .eflags = true },45853 .clobbers = .{ .eflags = true },
32719 .each = .{ .once = &.{45854 .each = .{ .once = &.{
32720 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45855 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32721 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45856 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32722 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45857 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32723 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45858 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
32724 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },45859 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32725 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45860 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
32726 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45861 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
32727 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45862 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
32728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
32729 } },45868 } },
32730 }, .{45869 }, .{
32731 .required_features = .{ .bmi2, null, null, null },45870 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32732 .src_constraints = .{ .any_scalar_unsigned_int, .any },45871 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
32733 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45872 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
32734 .patterns = &.{45873 .patterns = &.{
32735 .{ .src = .{ .to_mem, .none } },45874 .{ .src = .{ .to_mem, .none, .none } },
32736 },45875 },
32737 .extra_temps = .{45876 .extra_temps = .{
32738 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32739 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32740 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32741 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45877 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
45878 .{ .type = .usize, .kind = .{ .reg = .rsi } },
45879 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45880 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32742 .unused,45881 .unused,
32743 .unused,45882 .unused,
32744 .unused,45883 .unused,
...@@ -32748,26 +45887,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32748,26 +45887,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32748 .dst_temps = .{.mem},45887 .dst_temps = .{.mem},
32749 .clobbers = .{ .eflags = true },45888 .clobbers = .{ .eflags = true },
32750 .each = .{ .once = &.{45889 .each = .{ .once = &.{
32751 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45890 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32752 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45891 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32753 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },45892 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32754 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },45893 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
32755 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },45894 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32756 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45895 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
32757 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45896 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
32758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
32759 } },45905 } },
32760 }, .{45906 }, .{
32761 .src_constraints = .{ .any_scalar_unsigned_int, .any },45907 .required_features = .{ .@"64bit", null, null, null },
32762 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }},45908 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
45909 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},
32763 .patterns = &.{45910 .patterns = &.{
32764 .{ .src = .{ .to_mem, .none } },45911 .{ .src = .{ .to_mem, .none, .none } },
32765 },45912 },
32766 .extra_temps = .{45913 .extra_temps = .{
32767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32768 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45914 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },45915 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32770 .unused,45916 .{ .type = .usize, .kind = .{ .reg = .rdi } },
45917 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32771 .unused,45918 .unused,
32772 .unused,45919 .unused,
32773 .unused,45920 .unused,
...@@ -32777,199 +45924,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32777,199 +45924,304 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32777 .dst_temps = .{.mem},45924 .dst_temps = .{.mem},
32778 .clobbers = .{ .eflags = true },45925 .clobbers = .{ .eflags = true },
32779 .each = .{ .once = &.{45926 .each = .{ .once = &.{
32780 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },45927 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32781 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },45928 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32782 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },45929 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32783 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },45930 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
32784 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },45931 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32785 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },45932 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
32786 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },45933 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },
32787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
32788 } },45942 } },
32789 }, .{45943 }, .{
32790 .required_features = .{ .avx, null, null, null },45944 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },45945 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
32792 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},45946 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
32793 .patterns = &.{45947 .patterns = &.{
32794 .{ .src = .{ .to_sse, .none } },45948 .{ .src = .{ .to_mem, .none, .none } },
32795 },45949 },
32796 .extra_temps = .{45950 .extra_temps = .{
32797 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },45951 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32798 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },45952 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32799 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },45953 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32800 .unused,45954 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32801 .unused,45955 .{ .type = .u64, .kind = .{ .reg = .rax } },
32802 .unused,45956 .unused,
32803 .unused,45957 .unused,
32804 .unused,45958 .unused,
32805 .unused,45959 .unused,
32806 },45960 },
32807 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45961 .dst_temps = .{.mem},
45962 .clobbers = .{ .eflags = true },
32808 .each = .{ .once = &.{45963 .each = .{ .once = &.{
32809 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },45964 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32810 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },45965 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32811 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },45966 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32812 .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },45967 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
32813 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },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", ._, ._, ._ },
32814 } },45976 } },
32815 }, .{45977 }, .{
32816 .required_features = .{ .avx, null, null, null },45978 .required_features = .{ .@"64bit", null, null, null },
32817 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },45979 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
32818 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},45980 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},
32819 .patterns = &.{45981 .patterns = &.{
32820 .{ .src = .{ .to_sse, .none } },45982 .{ .src = .{ .to_mem, .none, .none } },
32821 },45983 },
32822 .extra_temps = .{45984 .extra_temps = .{
32823 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },45985 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32824 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },45986 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32825 .unused,45987 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32826 .unused,45988 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32827 .unused,45989 .{ .type = .u64, .kind = .{ .reg = .rax } },
32828 .unused,45990 .unused,
32829 .unused,45991 .unused,
32830 .unused,45992 .unused,
32831 .unused,45993 .unused,
32832 },45994 },
32833 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},45995 .dst_temps = .{.mem},
45996 .clobbers = .{ .eflags = true },
32834 .each = .{ .once = &.{45997 .each = .{ .once = &.{
32835 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },45998 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32836 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },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", ._, ._, ._ },
32837 } },46010 } },
32838 }, .{46011 }, .{
32839 .required_features = .{ .sse2, null, null, null },46012 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32840 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },46013 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32841 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},46014 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32842 .patterns = &.{46015 .patterns = &.{
32843 .{ .src = .{ .to_mut_sse, .none } },46016 .{ .src = .{ .to_mem, .none, .none } },
32844 },46017 },
32845 .extra_temps = .{46018 .extra_temps = .{
32846 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },46019 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32847 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46020 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32848 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },46021 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32849 .unused,46022 .{ .type = .u64, .kind = .{ .reg = .rax } },
32850 .unused,46023 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32851 .unused,46024 .unused,
32852 .unused,46025 .unused,
32853 .unused,46026 .unused,
32854 .unused,46027 .unused,
32855 },46028 },
32856 .dst_temps = .{.{ .ref = .src0 }},46029 .dst_temps = .{.mem},
46030 .clobbers = .{ .eflags = true },
32857 .each = .{ .once = &.{46031 .each = .{ .once = &.{
32858 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },46032 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32859 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },46033 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32860 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },46034 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32861 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },46035 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
32862 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
32863 } },46042 } },
32864 }, .{46043 }, .{
32865 .required_features = .{ .sse2, null, null, null },46044 .required_features = .{ .@"64bit", null, null, null },
32866 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },46045 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32867 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},46046 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32868 .patterns = &.{46047 .patterns = &.{
32869 .{ .src = .{ .to_mut_sse, .none } },46048 .{ .src = .{ .to_mem, .none, .none } },
32870 },46049 },
32871 .extra_temps = .{46050 .extra_temps = .{
32872 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },46051 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32873 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },46052 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32874 .unused,46053 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32875 .unused,46054 .{ .type = .u64, .kind = .{ .reg = .rax } },
32876 .unused,46055 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32877 .unused,46056 .unused,
32878 .unused,46057 .unused,
32879 .unused,46058 .unused,
32880 .unused,46059 .unused,
32881 },46060 },
32882 .dst_temps = .{.{ .ref = .src0 }},46061 .dst_temps = .{.mem},
46062 .clobbers = .{ .eflags = true },
32883 .each = .{ .once = &.{46063 .each = .{ .once = &.{
32884 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },46064 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32885 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
32886 } },46074 } },
32887 }, .{46075 }, .{
32888 .required_features = .{ .sse, null, null, null },46076 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
32889 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },46077 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32890 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},46078 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32891 .patterns = &.{46079 .patterns = &.{
32892 .{ .src = .{ .to_mut_sse, .none } },46080 .{ .src = .{ .to_mem, .none, .none } },
32893 },46081 },
32894 .extra_temps = .{46082 .extra_temps = .{
32895 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },46083 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32896 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },46084 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32897 .unused,46085 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32898 .unused,46086 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32899 .unused,46087 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32900 .unused,46088 .unused,
32901 .unused,46089 .unused,
32902 .unused,46090 .unused,
32903 .unused,46091 .unused,
32904 },46092 },
32905 .dst_temps = .{.{ .ref = .src0 }},46093 .dst_temps = .{.mem},
46094 .clobbers = .{ .eflags = true },
32906 .each = .{ .once = &.{46095 .each = .{ .once = &.{
32907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },46096 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32908 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
32909 } },46109 } },
32910 }, .{46110 }, .{
32911 .required_features = .{ .avx2, null, null, null },46111 .required_features = .{ .@"64bit", .bmi2, null, null },
32912 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },46112 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32913 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},46113 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32914 .patterns = &.{46114 .patterns = &.{
32915 .{ .src = .{ .to_sse, .none } },46115 .{ .src = .{ .to_mem, .none, .none } },
32916 },46116 },
32917 .extra_temps = .{46117 .extra_temps = .{
32918 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },46118 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32919 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46119 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32920 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },46120 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32921 .unused,46121 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32922 .unused,46122 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32923 .unused,46123 .unused,
32924 .unused,46124 .unused,
32925 .unused,46125 .unused,
32926 .unused,46126 .unused,
32927 },46127 },
32928 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46128 .dst_temps = .{.mem},
46129 .clobbers = .{ .eflags = true },
32929 .each = .{ .once = &.{46130 .each = .{ .once = &.{
32930 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },46131 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32931 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },46132 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32932 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },46133 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32933 .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },46134 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
32934 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },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", ._, ._, ._ },
32935 } },46144 } },
32936 }, .{46145 }, .{
32937 .required_features = .{ .avx2, null, null, null },46146 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
32938 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },46147 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32939 .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},46148 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
32940 .patterns = &.{46149 .patterns = &.{
32941 .{ .src = .{ .to_sse, .none } },46150 .{ .src = .{ .to_mem, .none, .none } },
32942 },46151 },
32943 .extra_temps = .{46152 .extra_temps = .{
32944 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },46153 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32945 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },46154 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32946 .unused,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 } },
32947 .unused,46159 .unused,
32948 .unused,46160 .unused,
32949 .unused,46161 .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 } },
32950 .unused,46192 .unused,
32951 .unused,46193 .unused,
32952 .unused,46194 .unused,
32953 },46195 },
32954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},46196 .dst_temps = .{.mem},
46197 .clobbers = .{ .eflags = true },
32955 .each = .{ .once = &.{46198 .each = .{ .once = &.{
32956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },46199 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32957 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },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", ._, ._, ._ },
32958 } },46210 } },
32959 }, .{46211 }, .{
32960 .required_features = .{ .avx2, null, null, null },46212 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32961 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },46213 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32962 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},46214 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32963 .patterns = &.{46215 .patterns = &.{
32964 .{ .src = .{ .to_mem, .none } },46216 .{ .src = .{ .to_mem, .none, .none } },
32965 },46217 },
32966 .extra_temps = .{46218 .extra_temps = .{
32967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
32968 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },46220 .{ .type = .usize, .kind = .{ .reg = .rsi } },
32969 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },46221 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32970 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },46222 .{ .type = .u32, .kind = .{ .reg = .ecx } },
32971 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46223 .unused,
32972 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },46224 .unused,
32973 .unused,46225 .unused,
32974 .unused,46226 .unused,
32975 .unused,46227 .unused,
...@@ -32977,30 +46229,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32977,30 +46229,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32977 .dst_temps = .{.mem},46229 .dst_temps = .{.mem},
32978 .clobbers = .{ .eflags = true },46230 .clobbers = .{ .eflags = true },
32979 .each = .{ .once = &.{46231 .each = .{ .once = &.{
32980 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },46232 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
32981 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },46233 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
32982 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },46234 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32983 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },46235 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
32984 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46236 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
32985 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },46237 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
32986 .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ },46238 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },
32987 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },46239 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },
32988 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },46240 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },
32989 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },46241 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
32990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46242 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },
46243 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46244 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
32991 } },46245 } },
32992 }, .{46246 }, .{
32993 .required_features = .{ .avx2, null, null, null },46247 .required_features = .{ .@"64bit", null, null, null },
32994 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },46248 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
32995 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }},46249 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},
32996 .patterns = &.{46250 .patterns = &.{
32997 .{ .src = .{ .to_mem, .none } },46251 .{ .src = .{ .to_mem, .none, .none } },
32998 },46252 },
32999 .extra_temps = .{46253 .extra_temps = .{
33000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33001 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },46255 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33002 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },46256 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33003 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46257 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33004 .unused,46258 .unused,
33005 .unused,46259 .unused,
33006 .unused,46260 .unused,
...@@ -33010,28 +46264,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33010,28 +46264,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33010 .dst_temps = .{.mem},46264 .dst_temps = .{.mem},
33011 .clobbers = .{ .eflags = true },46265 .clobbers = .{ .eflags = true },
33012 .each = .{ .once = &.{46266 .each = .{ .once = &.{
33013 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },46267 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33014 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },46268 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33015 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46269 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33016 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },46270 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
33017 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },46271 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33018 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },46272 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
33019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
33020 } },46280 } },
33021 }, .{46281 }, .{
33022 .required_features = .{ .avx, null, null, null },46282 .required_features = .{ .@"64bit", .slow_incdec, null, null },
33023 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },46283 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
33024 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},46284 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
33025 .patterns = &.{46285 .patterns = &.{
33026 .{ .src = .{ .to_mem, .none } },46286 .{ .src = .{ .to_mem, .none, .none } },
33027 },46287 },
33028 .extra_temps = .{46288 .extra_temps = .{
33029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33030 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46290 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33031 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46291 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33032 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46292 .{ .type = .u64, .kind = .{ .reg = .rax } },
33033 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46293 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33034 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },46294 .unused,
33035 .unused,46295 .unused,
33036 .unused,46296 .unused,
33037 .unused,46297 .unused,
...@@ -33039,31 +46299,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33039,31 +46299,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33039 .dst_temps = .{.mem},46299 .dst_temps = .{.mem},
33040 .clobbers = .{ .eflags = true },46300 .clobbers = .{ .eflags = true },
33041 .each = .{ .once = &.{46301 .each = .{ .once = &.{
33042 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },46302 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33043 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },46303 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33044 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },46304 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33045 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },46305 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33046 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46306 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33047 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },46307 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33048 .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ },46308 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },
33049 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },46309 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },
33050 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },46310 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
33051 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },46311 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
33052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46312 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46313 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
33053 } },46314 } },
33054 }, .{46315 }, .{
33055 .required_features = .{ .avx, null, null, null },46316 .required_features = .{ .@"64bit", null, null, null },
33056 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },46317 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
33057 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},46318 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},
33058 .patterns = &.{46319 .patterns = &.{
33059 .{ .src = .{ .to_mem, .none } },46320 .{ .src = .{ .to_mem, .none, .none } },
33060 },46321 },
33061 .extra_temps = .{46322 .extra_temps = .{
33062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46323 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
33063 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46324 .{ .type = .usize, .kind = .{ .reg = .rsi } },
33064 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46325 .{ .type = .usize, .kind = .{ .reg = .rdi } },
33065 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46326 .{ .type = .u64, .kind = .{ .reg = .rax } },
33066 .unused,46327 .{ .type = .u32, .kind = .{ .reg = .ecx } },
33067 .unused,46328 .unused,
33068 .unused,46329 .unused,
33069 .unused,46330 .unused,
...@@ -33072,118 +46333,456 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33072,118 +46333,456 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33072 .dst_temps = .{.mem},46333 .dst_temps = .{.mem},
33073 .clobbers = .{ .eflags = true },46334 .clobbers = .{ .eflags = true },
33074 .each = .{ .once = &.{46335 .each = .{ .once = &.{
33075 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },46336 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
33076 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },46337 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
33077 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46338 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
33078 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },46339 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
33079 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },46340 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
33080 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },46341 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
33081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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), ._, ._ },
33082 } },46540 } },
33083 }, .{46541 }, .{
33084 .required_features = .{ .sse2, null, null, null },46542 .dst_constraints = .{.{ .int = .byte }},
33085 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
33086 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
33087 .patterns = &.{46543 .patterns = &.{
33088 .{ .src = .{ .to_mem, .none } },46544 .{ .src = .{ .to_gpr, .to_gpr, .none } },
33089 },46545 },
33090 .extra_temps = .{46546 .dst_temps = .{.{ .rc = .general_purpose }},
33091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46547 .each = .{ .once = &.{
33092 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46548 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
33093 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46549 } },
33094 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },46550 }, .{
33095 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46551 .dst_constraints = .{.{ .int = .word }},
33096 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },46552 .patterns = &.{
33097 .unused,46553 .{ .src = .{ .to_gpr, .simm32, .none } },
33098 .unused,
33099 .unused,
33100 },46554 },
33101 .dst_temps = .{.mem},46555 .dst_temps = .{.{ .rc = .general_purpose }},
33102 .clobbers = .{ .eflags = true },
33103 .each = .{ .once = &.{46556 .each = .{ .once = &.{
33104 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },46557 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
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", ._, ._, ._ },
33116 } },46558 } },
33117 }, .{46559 }, .{
33118 .required_features = .{ .sse2, null, null, null },46560 .dst_constraints = .{.{ .int = .word }},
33119 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
33120 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }},
33121 .patterns = &.{46561 .patterns = &.{
33122 .{ .src = .{ .to_mem, .none } },46562 .{ .src = .{ .to_gpr, .to_gpr, .none } },
33123 },46563 },
33124 .extra_temps = .{46564 .dst_temps = .{.{ .rc = .general_purpose }},
33125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46565 .each = .{ .once = &.{
33126 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46566 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
33127 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46567 } },
33128 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46568 }, .{
33129 .unused,46569 .dst_constraints = .{.{ .int = .dword }},
33130 .unused,46570 .patterns = &.{
33131 .unused,46571 .{ .src = .{ .to_gpr, .simm32, .none } },
33132 .unused,46572 },
33133 .unused,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 } },
33134 },46749 },
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 } }},
33151 .patterns = &.{46750 .patterns = &.{
33152 .{ .src = .{ .to_mem, .none } },46751 .{ .src = .{ .to_sse, .to_sse, .to_sse } },
33153 },46752 },
33154 .extra_temps = .{46753 .extra_temps = .{
33155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46754 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33156 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46755 .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33157 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },46756 .unused,
33158 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },46757 .unused,
33159 .unused,46758 .unused,
33160 .unused,46759 .unused,
33161 .unused,46760 .unused,
33162 .unused,46761 .unused,
33163 .unused,46762 .unused,
33164 },46763 },
33165 .dst_temps = .{.mem},46764 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33166 .clobbers = .{ .eflags = true },
33167 .each = .{ .once = &.{46765 .each = .{ .once = &.{
33168 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },46766 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
33169 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },46767 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
33170 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46768 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
33171 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },46769 .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ },
33172 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },46770 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33173 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
33174 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33176 } },46771 } },
33177 }, .{46772 }, .{
33178 .required_features = .{ .@"64bit", null, null, null },46773 .required_features = .{ .sse, null, null, null },
33179 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },46774 .src_constraints = .{
33180 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},46775 .{ .scalar_float = .{ .of = .word, .is = .word } },
46776 .{ .scalar_float = .{ .of = .word, .is = .word } },
46777 .{ .scalar_float = .{ .of = .word, .is = .word } },
46778 },
33181 .patterns = &.{46779 .patterns = &.{
33182 .{ .src = .{ .to_mem, .none } },46780 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
33183 },46781 },
46782 .call_frame = .{ .alignment = .@"16" },
33184 .extra_temps = .{46783 .extra_temps = .{
33185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46784 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
33186 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },46785 .unused,
33187 .unused,46786 .unused,
33188 .unused,46787 .unused,
33189 .unused,46788 .unused,
...@@ -33192,25 +46791,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33192,25 +46791,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33192 .unused,46791 .unused,
33193 .unused,46792 .unused,
33194 },46793 },
33195 .dst_temps = .{.mem},46794 .dst_temps = .{.{ .ref = .src0 }},
33196 .clobbers = .{ .eflags = true },46795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33197 .each = .{ .once = &.{46796 .each = .{ .once = &.{
33198 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46797 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
33203 } },46798 } },
33204 }, .{46799 }, .{
33205 .required_features = .{ .@"64bit", null, null, null },46800 .required_features = .{ .fma, .f16c, null, null },
33206 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },46801 .src_constraints = .{
33207 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},46802 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46803 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46804 .{ .scalar_float = .{ .of = .qword, .is = .word } },
46805 },
33208 .patterns = &.{46806 .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 } },
33210 },46815 },
33211 .extra_temps = .{46816 .extra_temps = .{
33212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46817 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33213 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },46818 .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33214 .unused,46819 .unused,
33215 .unused,46820 .unused,
33216 .unused,46821 .unused,
...@@ -33219,28 +46824,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33219,28 +46824,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33219 .unused,46824 .unused,
33220 .unused,46825 .unused,
33221 },46826 },
33222 .dst_temps = .{.mem},46827 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33223 .clobbers = .{ .eflags = true },
33224 .each = .{ .once = &.{46828 .each = .{ .once = &.{
33225 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46829 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
33226 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },46830 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
33227 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },46831 .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ },
33228 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },46832 .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ },
33229 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },46833 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
33230 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33232 } },46834 } },
33233 }, .{46835 }, .{
33234 .required_features = .{ .@"64bit", .bmi2, null, null },46836 .required_features = .{ .fma, .f16c, null, null },
33235 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },46837 .src_constraints = .{
33236 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},46838 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46839 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46840 .{ .scalar_float = .{ .of = .xword, .is = .word } },
46841 },
33237 .patterns = &.{46842 .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 } },
33239 },46851 },
33240 .extra_temps = .{46852 .extra_temps = .{
33241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46853 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33242 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },46854 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33243 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },46855 .unused,
33244 .unused,46856 .unused,
33245 .unused,46857 .unused,
33246 .unused,46858 .unused,
...@@ -33248,28 +46860,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33248,28 +46860,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33248 .unused,46860 .unused,
33249 .unused,46861 .unused,
33250 },46862 },
33251 .dst_temps = .{.mem},46863 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
33252 .clobbers = .{ .eflags = true },
33253 .each = .{ .once = &.{46864 .each = .{ .once = &.{
33254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46865 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
33255 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },46866 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
33256 .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ },46867 .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ },
33257 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },46868 .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ },
33258 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46869 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
33259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33260 } },46870 } },
33261 }, .{46871 }, .{
33262 .required_features = .{ .@"64bit", null, null, null },46872 .required_features = .{ .fma, .f16c, null, null },
33263 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },46873 .src_constraints = .{
33264 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},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 },
33265 .patterns = &.{46878 .patterns = &.{
33266 .{ .src = .{ .to_mem, .none } },46879 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33267 },46880 },
33268 .extra_temps = .{46881 .extra_temps = .{
33269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33270 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },46883 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33271 .unused,46884 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33272 .unused,46885 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33273 .unused,46886 .unused,
33274 .unused,46887 .unused,
33275 .unused,46888 .unused,
...@@ -33277,221 +46890,232 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33277,221 +46890,232 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33277 .unused,46890 .unused,
33278 },46891 },
33279 .dst_temps = .{.mem},46892 .dst_temps = .{.mem},
33280 .clobbers = .{ .eflags = true },
33281 .each = .{ .once = &.{46893 .each = .{ .once = &.{
33282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33283 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },46895 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33284 .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },46896 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
33285 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },46897 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
33286 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },46898 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },
46899 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
46900 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33288 } },46902 } },
33289 }, .{46903 }, .{
33290 .required_features = .{ .@"64bit", null, null, null },46904 .required_features = .{ .avx, null, null, null },
33291 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },46905 .src_constraints = .{
33292 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},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 },
33293 .patterns = &.{46910 .patterns = &.{
33294 .{ .src = .{ .to_mem, .none } },46911 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33295 },46912 },
46913 .call_frame = .{ .alignment = .@"16" },
33296 .extra_temps = .{46914 .extra_temps = .{
33297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33298 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },46916 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33299 .unused,46917 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33300 .unused,46918 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
33301 .unused,46919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
33302 .unused,46920 .unused,
33303 .unused,46921 .unused,
33304 .unused,46922 .unused,
33305 .unused,46923 .unused,
33306 },46924 },
33307 .dst_temps = .{.mem},46925 .dst_temps = .{.mem},
33308 .clobbers = .{ .eflags = true },46926 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33309 .each = .{ .once = &.{46927 .each = .{ .once = &.{
33310 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46928 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33311 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },46929 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
33312 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },46930 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
33313 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
33314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46936 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33315 } },46937 } },
33316 }, .{46938 }, .{
33317 .required_features = .{ .@"64bit", null, null, null },46939 .required_features = .{ .sse4_1, null, null, null },
33318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },46940 .src_constraints = .{
33319 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},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 },
33320 .patterns = &.{46945 .patterns = &.{
33321 .{ .src = .{ .to_mem, .none } },46946 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33322 },46947 },
46948 .call_frame = .{ .alignment = .@"16" },
33323 .extra_temps = .{46949 .extra_temps = .{
33324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33325 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },46951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33326 .unused,46952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33327 .unused,46953 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
33328 .unused,46954 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
33329 .unused,46955 .unused,
33330 .unused,46956 .unused,
33331 .unused,46957 .unused,
33332 .unused,46958 .unused,
33333 },46959 },
33334 .dst_temps = .{.mem},46960 .dst_temps = .{.mem},
33335 .clobbers = .{ .eflags = true },46961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33336 .each = .{ .once = &.{46962 .each = .{ .once = &.{
33337 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },46963 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33338 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },46964 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
33339 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },46965 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
33340 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },46966 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
33341 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },46967 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
33342 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
33343 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },46973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33344 } },46974 } },
33345 }, .{46975 }, .{
33346 .required_features = .{ .@"64bit", .bmi2, null, null },46976 .required_features = .{ .sse2, null, null, null },
33347 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },46977 .src_constraints = .{
33348 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},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 },
33349 .patterns = &.{46982 .patterns = &.{
33350 .{ .src = .{ .to_mem, .none } },46983 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33351 },46984 },
46985 .call_frame = .{ .alignment = .@"16" },
33352 .extra_temps = .{46986 .extra_temps = .{
33353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33354 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },46988 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33355 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },46989 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33356 .unused,46990 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
33357 .unused,46991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
33358 .unused,46992 .{ .type = .f16, .kind = .{ .reg = .ax } },
33359 .unused,46993 .unused,
33360 .unused,46994 .unused,
33361 .unused,46995 .unused,
33362 },46996 },
33363 .dst_temps = .{.mem},46997 .dst_temps = .{.mem},
33364 .clobbers = .{ .eflags = true },46998 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33365 .each = .{ .once = &.{46999 .each = .{ .once = &.{
33366 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33367 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },47001 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
33368 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ },47002 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
33369 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },47003 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
33370 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
33371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33372 } },47012 } },
33373 }, .{47013 }, .{
33374 .required_features = .{ .@"64bit", null, null, null },47014 .required_features = .{ .sse, null, null, null },
33375 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },47015 .src_constraints = .{
33376 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},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 },
33377 .patterns = &.{47020 .patterns = &.{
33378 .{ .src = .{ .to_mem, .none } },47021 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33379 },47022 },
47023 .call_frame = .{ .alignment = .@"16" },
33380 .extra_temps = .{47024 .extra_temps = .{
33381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33382 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47026 .{ .type = .f16, .kind = .{ .reg = .ax } },
33383 .unused,47027 .{ .type = .f32, .kind = .mem },
33384 .unused,47028 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33385 .unused,47029 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33386 .unused,47030 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
33387 .unused,47031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
33388 .unused,47032 .unused,
33389 .unused,47033 .unused,
33390 },47034 },
33391 .dst_temps = .{.mem},47035 .dst_temps = .{.mem},
33392 .clobbers = .{ .eflags = true },47036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33393 .each = .{ .once = &.{47037 .each = .{ .once = &.{
33394 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33395 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },47039 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
33396 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },47040 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
33397 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },47041 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
33398 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
33399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },47053 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33400 } },47054 } },
33401 }, .{47055 }, .{
33402 .required_features = .{ .@"64bit", null, null, null },47056 .required_features = .{ .fma, null, null, null },
33403 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },47057 .src_constraints = .{
33404 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},47058 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33405 .patterns = &.{47059 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33406 .{ .src = .{ .to_mem, .none } },47060 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33407 },47061 },
33408 .extra_temps = .{47062 .patterns = &.{
33409 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47063 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
33410 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47064 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
33411 .unused,47065 .{ .src = .{ .mut_sse, .sse, .sse } },
33412 .unused,47066 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
33413 .unused,
33414 .unused,
33415 .unused,
33416 .unused,
33417 .unused,
33418 },47067 },
33419 .dst_temps = .{.mem},47068 .dst_temps = .{.{ .ref = .src0 }},
33420 .clobbers = .{ .eflags = true },
33421 .each = .{ .once = &.{47069 .each = .{ .once = &.{
33422 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47070 .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ },
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", ._, ._, ._ },
33427 } },47071 } },
33428 }, .{47072 }, .{
33429 .required_features = .{ .@"64bit", null, null, null },47073 .required_features = .{ .fma, null, null, null },
33430 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any },47074 .src_constraints = .{
33431 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},47075 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33432 .patterns = &.{47076 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33433 .{ .src = .{ .to_mem, .none } },47077 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33434 },47078 },
33435 .extra_temps = .{47079 .patterns = &.{
33436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47080 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
33437 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },47081 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
33438 .unused,47082 .{ .src = .{ .mut_sse, .sse, .sse } },
33439 .unused,47083 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
33440 .unused,
33441 .unused,
33442 .unused,
33443 .unused,
33444 .unused,
33445 },47084 },
33446 .dst_temps = .{.mem},47085 .dst_temps = .{.{ .ref = .src0 }},
33447 .clobbers = .{ .eflags = true },
33448 .each = .{ .once = &.{47086 .each = .{ .once = &.{
33449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47087 .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ },
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", ._, ._, ._ },
33456 } },47088 } },
33457 }, .{47089 }, .{
33458 .required_features = .{ .@"64bit", .bmi2, null, null },47090 .required_features = .{ .fma, null, null, null },
33459 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },47091 .src_constraints = .{
33460 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},47092 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33461 .patterns = &.{47093 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33462 .{ .src = .{ .to_mem, .none } },47094 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
33463 },47095 },
33464 .extra_temps = .{47096 .patterns = &.{
33465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47097 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
33466 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47098 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
33467 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47099 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
33468 .unused,
33469 .unused,
33470 .unused,
33471 .unused,
33472 .unused,
33473 .unused,
33474 },47100 },
33475 .dst_temps = .{.mem},47101 .dst_temps = .{.{ .ref = .src2 }},
33476 .clobbers = .{ .eflags = true },
33477 .each = .{ .once = &.{47102 .each = .{ .once = &.{
33478 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47103 .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ },
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", ._, ._, ._ },
33484 } },47104 } },
33485 }, .{47105 }, .{
33486 .required_features = .{ .@"64bit", null, null, null },47106 .required_features = .{ .sse, null, null, null },
33487 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any },47107 .src_constraints = .{
33488 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},47108 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47109 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47110 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
47111 },
33489 .patterns = &.{47112 .patterns = &.{
33490 .{ .src = .{ .to_mem, .none } },47113 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
33491 },47114 },
47115 .call_frame = .{ .alignment = .@"16" },
33492 .extra_temps = .{47116 .extra_temps = .{
33493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47117 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
33494 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47118 .unused,
33495 .unused,47119 .unused,
33496 .unused,47120 .unused,
33497 .unused,47121 .unused,
...@@ -33500,178 +47124,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33500,178 +47124,126 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33500 .unused,47124 .unused,
33501 .unused,47125 .unused,
33502 },47126 },
33503 .dst_temps = .{.mem},47127 .dst_temps = .{.{ .ref = .src0 }},
33504 .clobbers = .{ .eflags = true },47128 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33505 .each = .{ .once = &.{47129 .each = .{ .once = &.{
33506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47130 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
33512 } },47131 } },
33513 }, .{47132 }, .{
33514 .required_features = .{ .@"64bit", null, null, null },47133 .required_features = .{ .fma, null, null, null },
33515 .src_constraints = .{ .any_scalar_int, .any },47134 .src_constraints = .{
33516 .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }},47135 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33517 .patterns = &.{47136 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33518 .{ .src = .{ .to_mem, .none } },47137 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33519 },47138 },
33520 .extra_temps = .{47139 .patterns = &.{
33521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47140 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
33522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47141 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
33523 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47142 .{ .src = .{ .mut_sse, .sse, .sse } },
33524 .unused,47143 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
33525 .unused,
33526 .unused,
33527 .unused,
33528 .unused,
33529 .unused,
33530 },47144 },
33531 .dst_temps = .{.mem},47145 .dst_temps = .{.{ .ref = .src0 }},
33532 .clobbers = .{ .eflags = true },
33533 .each = .{ .once = &.{47146 .each = .{ .once = &.{
33534 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47147 .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ },
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", ._, ._, ._ },
33541 } },47148 } },
33542 }, .{47149 }, .{
33543 .required_features = .{ .@"64bit", null, null, null },47150 .required_features = .{ .fma, null, null, null },
33544 .src_constraints = .{ .any_scalar_signed_int, .any },47151 .src_constraints = .{
33545 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},47152 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33546 .patterns = &.{47153 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33547 .{ .src = .{ .to_mem, .none } },47154 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33548 },47155 },
33549 .extra_temps = .{47156 .patterns = &.{
33550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47157 .{ .src = .{ .to_mut_sse, .to_sse, .mem } },
33551 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47158 .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } },
33552 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },47159 .{ .src = .{ .mut_sse, .sse, .sse } },
33553 .unused,47160 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
33554 .unused,
33555 .unused,
33556 .unused,
33557 .unused,
33558 .unused,
33559 },47161 },
33560 .dst_temps = .{.mem},47162 .dst_temps = .{.{ .ref = .src0 }},
33561 .clobbers = .{ .eflags = true },
33562 .each = .{ .once = &.{47163 .each = .{ .once = &.{
33563 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47164 .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ },
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", ._, ._, ._ },
33572 } },47165 } },
33573 }, .{47166 }, .{
33574 .required_features = .{ .@"64bit", .bmi2, null, null },47167 .required_features = .{ .fma, null, null, null },
33575 .src_constraints = .{ .any_scalar_unsigned_int, .any },47168 .src_constraints = .{
33576 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},47169 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33577 .patterns = &.{47170 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33578 .{ .src = .{ .to_mem, .none } },47171 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
33579 },47172 },
33580 .extra_temps = .{47173 .patterns = &.{
33581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47174 .{ .src = .{ .to_sse, .mem, .to_mut_sse } },
33582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47175 .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } },
33583 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47176 .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } },
33584 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
33585 .unused,
33586 .unused,
33587 .unused,
33588 .unused,
33589 .unused,
33590 },47177 },
33591 .dst_temps = .{.mem},47178 .dst_temps = .{.{ .ref = .src2 }},
33592 .clobbers = .{ .eflags = true },
33593 .each = .{ .once = &.{47179 .each = .{ .once = &.{
33594 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47180 .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ },
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", ._, ._, ._ },
33602 } },47181 } },
33603 }, .{47182 }, .{
33604 .required_features = .{ .@"64bit", null, null, null },47183 .required_features = .{ .fma, null, null, null },
33605 .src_constraints = .{ .any_scalar_unsigned_int, .any },47184 .src_constraints = .{
33606 .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }},47185 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33607 .patterns = &.{47186 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33608 .{ .src = .{ .to_mem, .none } },47187 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33609 },47188 },
33610 .extra_temps = .{47189 .patterns = &.{
33611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },47190 .{ .src = .{ .to_mut_sse, .mem, .to_sse } },
33612 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47191 .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } },
33613 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },47192 .{ .src = .{ .mut_sse, .sse, .sse } },
33614 .unused,47193 .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } },
33615 .unused,
33616 .unused,
33617 .unused,
33618 .unused,
33619 .unused,
33620 },47194 },
33621 .dst_temps = .{.mem},47195 .dst_temps = .{.{ .ref = .src0 }},
33622 .clobbers = .{ .eflags = true },
33623 .each = .{ .once = &.{47196 .each = .{ .once = &.{
33624 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },47197 .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ },
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", ._, ._, ._ },
33632 } },47198 } },
33633 }, .{47199 }, .{
33634 .required_features = .{ .@"64bit", .slow_incdec, null, null },47200 .required_features = .{ .fma, null, null, null },
33635 .src_constraints = .{ .any_scalar_int, .any },47201 .src_constraints = .{
33636 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},47202 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47203 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47204 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
47205 },
33637 .patterns = &.{47206 .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 } },
33639 },47211 },
33640 .extra_temps = .{47212 .dst_temps = .{.{ .ref = .src0 }},
33641 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47213 .each = .{ .once = &.{
33642 .{ .type = .usize, .kind = .{ .reg = .rsi } },47214 .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ },
33643 .{ .type = .usize, .kind = .{ .reg = .rdi } },47215 } },
33644 .{ .type = .u32, .kind = .{ .reg = .ecx } },47216 }, .{
33645 .unused,47217 .required_features = .{ .fma, null, null, null },
33646 .unused,47218 .src_constraints = .{
33647 .unused,47219 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33648 .unused,47220 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33649 .unused,47221 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
33650 },47222 },
33651 .dst_temps = .{.mem},47223 .patterns = &.{
33652 .clobbers = .{ .eflags = true },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 }},
33653 .each = .{ .once = &.{47229 .each = .{ .once = &.{
33654 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47230 .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ },
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", ._, ._, ._ },
33662 } },47231 } },
33663 }, .{47232 }, .{
33664 .required_features = .{ .@"64bit", null, null, null },47233 .required_features = .{ .fma, null, null, null },
33665 .src_constraints = .{ .any_scalar_int, .any },47234 .src_constraints = .{
33666 .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }},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 },
33667 .patterns = &.{47239 .patterns = &.{
33668 .{ .src = .{ .to_mem, .none } },47240 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33669 },47241 },
33670 .extra_temps = .{47242 .extra_temps = .{
33671 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33672 .{ .type = .usize, .kind = .{ .reg = .rsi } },47244 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33673 .{ .type = .usize, .kind = .{ .reg = .rdi } },47245 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33674 .{ .type = .u32, .kind = .{ .reg = .ecx } },47246 .unused,
33675 .unused,47247 .unused,
33676 .unused,47248 .unused,
33677 .unused,47249 .unused,
...@@ -33679,955 +47251,607 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33679,955 +47251,607 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33679 .unused,47251 .unused,
33680 },47252 },
33681 .dst_temps = .{.mem},47253 .dst_temps = .{.mem},
33682 .clobbers = .{ .eflags = true },
33683 .each = .{ .once = &.{47254 .each = .{ .once = &.{
33684 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33685 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47256 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
33686 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47257 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
33687 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },47258 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
33688 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47259 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
33689 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },47260 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
33690 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },47261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33691 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
33692 } },47262 } },
33693 }, .{47263 }, .{
33694 .required_features = .{ .@"64bit", .slow_incdec, null, null },47264 .required_features = .{ .avx, null, null, null },
33695 .src_constraints = .{ .any_scalar_signed_int, .any },47265 .src_constraints = .{
33696 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},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 },
33697 .patterns = &.{47270 .patterns = &.{
33698 .{ .src = .{ .to_mem, .none } },47271 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33699 },47272 },
47273 .call_frame = .{ .alignment = .@"16" },
33700 .extra_temps = .{47274 .extra_temps = .{
33701 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33702 .{ .type = .usize, .kind = .{ .reg = .rsi } },47276 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33703 .{ .type = .usize, .kind = .{ .reg = .rdi } },47277 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
33704 .{ .type = .u32, .kind = .{ .reg = .ecx } },47278 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
33705 .unused,47279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
33706 .unused,47280 .unused,
33707 .unused,47281 .unused,
33708 .unused,47282 .unused,
33709 .unused,47283 .unused,
33710 },47284 },
33711 .dst_temps = .{.mem},47285 .dst_temps = .{.mem},
33712 .clobbers = .{ .eflags = true },47286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33713 .each = .{ .once = &.{47287 .each = .{ .once = &.{
33714 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33715 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47289 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
33716 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47290 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
33717 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },47291 .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
33718 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
33719 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },47293 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33720 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },47294 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33721 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },47295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
33727 } },47296 } },
33728 }, .{47297 }, .{
33729 .required_features = .{ .@"64bit", null, null, null },47298 .required_features = .{ .sse, null, null, null },
33730 .src_constraints = .{ .any_scalar_signed_int, .any },47299 .src_constraints = .{
33731 .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }},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 },
33732 .patterns = &.{47304 .patterns = &.{
33733 .{ .src = .{ .to_mem, .none } },47305 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33734 },47306 },
47307 .call_frame = .{ .alignment = .@"16" },
33735 .extra_temps = .{47308 .extra_temps = .{
33736 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33737 .{ .type = .usize, .kind = .{ .reg = .rsi } },47310 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33738 .{ .type = .usize, .kind = .{ .reg = .rdi } },47311 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
33739 .{ .type = .u32, .kind = .{ .reg = .ecx } },47312 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
33740 .unused,47313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
33741 .unused,47314 .unused,
33742 .unused,47315 .unused,
33743 .unused,47316 .unused,
33744 .unused,47317 .unused,
33745 },47318 },
33746 .dst_temps = .{.mem},47319 .dst_temps = .{.mem},
33747 .clobbers = .{ .eflags = true },47320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33748 .each = .{ .once = &.{47321 .each = .{ .once = &.{
33749 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33750 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47323 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
33751 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47324 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
33752 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },47325 .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
33753 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47326 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
33754 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },47327 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33755 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },47328 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
33756 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },47329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
33762 } },47330 } },
33763 }, .{47331 }, .{
33764 .required_features = .{ .@"64bit", .slow_incdec, null, null },47332 .required_features = .{ .fma, null, null, null },
33765 .src_constraints = .{ .any_scalar_signed_int, .any },47333 .src_constraints = .{
33766 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},47334 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47335 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47336 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
47337 },
33767 .patterns = &.{47338 .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 } },
33769 },47343 },
33770 .extra_temps = .{47344 .dst_temps = .{.{ .ref = .src0 }},
33771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47345 .each = .{ .once = &.{
33772 .{ .type = .usize, .kind = .{ .reg = .rsi } },47346 .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ },
33773 .{ .type = .usize, .kind = .{ .reg = .rdi } },47347 } },
33774 .{ .type = .u32, .kind = .{ .reg = .ecx } },47348 }, .{
33775 .unused,47349 .required_features = .{ .fma, null, null, null },
33776 .unused,47350 .src_constraints = .{
33777 .unused,47351 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
33778 .unused,47352 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
33779 .unused,47353 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
33780 },47354 },
33781 .dst_temps = .{.mem},47355 .patterns = &.{
33782 .clobbers = .{ .eflags = true },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 }},
33783 .each = .{ .once = &.{47362 .each = .{ .once = &.{
33784 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47363 .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ },
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", ._, ._, ._ },
33799 } },47364 } },
33800 }, .{47365 }, .{
33801 .required_features = .{ .@"64bit", null, null, null },47366 .required_features = .{ .fma, null, null, null },
33802 .src_constraints = .{ .any_scalar_signed_int, .any },47367 .src_constraints = .{
33803 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }},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 },
33804 .patterns = &.{47388 .patterns = &.{
33805 .{ .src = .{ .to_mem, .none } },47389 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
33806 },47390 },
47391 .call_frame = .{ .alignment = .@"16" },
33807 .extra_temps = .{47392 .extra_temps = .{
33808 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
33809 .{ .type = .usize, .kind = .{ .reg = .rsi } },47394 .unused,
33810 .{ .type = .usize, .kind = .{ .reg = .rdi } },47395 .unused,
33811 .{ .type = .u32, .kind = .{ .reg = .ecx } },47396 .unused,
33812 .unused,47397 .unused,
33813 .unused,47398 .unused,
33814 .unused,47399 .unused,
33815 .unused,47400 .unused,
33816 .unused,47401 .unused,
33817 },47402 },
33818 .dst_temps = .{.mem},47403 .dst_temps = .{.{ .ref = .src0 }},
33819 .clobbers = .{ .eflags = true },47404 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33820 .each = .{ .once = &.{47405 .each = .{ .once = &.{
33821 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47406 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
33836 } },47407 } },
33837 }, .{47408 }, .{
33838 .required_features = .{ .@"64bit", .slow_incdec, null, null },47409 .required_features = .{ .fma, null, null, null },
33839 .src_constraints = .{ .any_scalar_signed_int, .any },47410 .src_constraints = .{
33840 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},47411 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47412 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47413 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47414 },
33841 .patterns = &.{47415 .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 } },
33843 },47420 },
33844 .extra_temps = .{47421 .dst_temps = .{.{ .ref = .src0 }},
33845 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47422 .each = .{ .once = &.{
33846 .{ .type = .usize, .kind = .{ .reg = .rsi } },47423 .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ },
33847 .{ .type = .usize, .kind = .{ .reg = .rdi } },47424 } },
33848 .{ .type = .u32, .kind = .{ .reg = .ecx } },47425 }, .{
33849 .{ .type = .u64, .kind = .{ .reg = .rax } },47426 .required_features = .{ .fma, null, null, null },
33850 .unused,47427 .src_constraints = .{
33851 .unused,47428 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
33852 .unused,47429 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
33853 .unused,47430 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
33854 },47431 },
33855 .dst_temps = .{.mem},47432 .patterns = &.{
33856 .clobbers = .{ .eflags = true },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 }},
33857 .each = .{ .once = &.{47439 .each = .{ .once = &.{
33858 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47440 .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ },
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", ._, ._, ._ },
33870 } },47441 } },
33871 }, .{47442 }, .{
33872 .required_features = .{ .@"64bit", null, null, null },47443 .required_features = .{ .fma, null, null, null },
33873 .src_constraints = .{ .any_scalar_signed_int, .any },47444 .src_constraints = .{
33874 .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }},47445 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47446 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47447 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
47448 },
33875 .patterns = &.{47449 .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 } },
33877 },47453 },
33878 .extra_temps = .{47454 .dst_temps = .{.{ .ref = .src2 }},
33879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47455 .each = .{ .once = &.{
33880 .{ .type = .usize, .kind = .{ .reg = .rsi } },47456 .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ },
33881 .{ .type = .usize, .kind = .{ .reg = .rdi } },47457 } },
33882 .{ .type = .u32, .kind = .{ .reg = .ecx } },47458 }, .{
33883 .{ .type = .u64, .kind = .{ .reg = .rax } },47459 .required_features = .{ .fma, null, null, null },
33884 .unused,47460 .src_constraints = .{
33885 .unused,47461 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
33886 .unused,47462 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
33887 .unused,47463 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
33888 },47464 },
33889 .dst_temps = .{.mem},47465 .patterns = &.{
33890 .clobbers = .{ .eflags = true },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 }},
33891 .each = .{ .once = &.{47472 .each = .{ .once = &.{
33892 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47473 .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ },
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", ._, ._, ._ },
33904 } },47474 } },
33905 }, .{47475 }, .{
33906 .required_features = .{ .@"64bit", .slow_incdec, null, null },47476 .required_features = .{ .fma, null, null, null },
33907 .src_constraints = .{ .any_scalar_unsigned_int, .any },47477 .src_constraints = .{
33908 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},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 },
33909 .patterns = &.{47515 .patterns = &.{
33910 .{ .src = .{ .to_mem, .none } },47516 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33911 },47517 },
33912 .extra_temps = .{47518 .extra_temps = .{
33913 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33914 .{ .type = .usize, .kind = .{ .reg = .rsi } },47520 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
33915 .{ .type = .usize, .kind = .{ .reg = .rdi } },47521 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
33916 .{ .type = .u64, .kind = .{ .reg = .rax } },47522 .unused,
33917 .{ .type = .u32, .kind = .{ .reg = .ecx } },47523 .unused,
33918 .unused,47524 .unused,
33919 .unused,47525 .unused,
33920 .unused,47526 .unused,
33921 .unused,47527 .unused,
33922 },47528 },
33923 .dst_temps = .{.mem},47529 .dst_temps = .{.mem},
33924 .clobbers = .{ .eflags = true },
33925 .each = .{ .once = &.{47530 .each = .{ .once = &.{
33926 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47531 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33927 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47532 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
33928 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47533 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
33929 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },47534 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
33930 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47535 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
33931 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47536 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
33932 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33933 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
33934 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
33935 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
33936 } },47538 } },
33937 }, .{47539 }, .{
33938 .required_features = .{ .@"64bit", null, null, null },47540 .required_features = .{ .avx, null, null, null },
33939 .src_constraints = .{ .any_scalar_unsigned_int, .any },47541 .src_constraints = .{
33940 .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},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 },
33941 .patterns = &.{47546 .patterns = &.{
33942 .{ .src = .{ .to_mem, .none } },47547 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33943 },47548 },
47549 .call_frame = .{ .alignment = .@"16" },
33944 .extra_temps = .{47550 .extra_temps = .{
33945 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33946 .{ .type = .usize, .kind = .{ .reg = .rsi } },47552 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33947 .{ .type = .usize, .kind = .{ .reg = .rdi } },47553 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
33948 .{ .type = .u64, .kind = .{ .reg = .rax } },47554 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
33949 .{ .type = .u32, .kind = .{ .reg = .ecx } },47555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
33950 .unused,47556 .unused,
33951 .unused,47557 .unused,
33952 .unused,47558 .unused,
33953 .unused,47559 .unused,
33954 },47560 },
33955 .dst_temps = .{.mem},47561 .dst_temps = .{.mem},
33956 .clobbers = .{ .eflags = true },47562 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33957 .each = .{ .once = &.{47563 .each = .{ .once = &.{
33958 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47564 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33959 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47565 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33960 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47566 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
33961 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },47567 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
33962 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47568 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
33963 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47569 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33964 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47570 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33965 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },47571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33966 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
33967 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
33968 } },47572 } },
33969 }, .{47573 }, .{
33970 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },47574 .required_features = .{ .sse2, null, null, null },
33971 .src_constraints = .{ .any_scalar_unsigned_int, .any },47575 .src_constraints = .{
33972 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},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 },
33973 .patterns = &.{47580 .patterns = &.{
33974 .{ .src = .{ .to_mem, .none } },47581 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
33975 },47582 },
47583 .call_frame = .{ .alignment = .@"16" },
33976 .extra_temps = .{47584 .extra_temps = .{
33977 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33978 .{ .type = .usize, .kind = .{ .reg = .rsi } },47586 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33979 .{ .type = .usize, .kind = .{ .reg = .rdi } },47587 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
33980 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47588 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
33981 .{ .type = .u32, .kind = .{ .reg = .ecx } },47589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
33982 .unused,47590 .unused,
33983 .unused,47591 .unused,
33984 .unused,47592 .unused,
33985 .unused,47593 .unused,
33986 },47594 },
33987 .dst_temps = .{.mem},47595 .dst_temps = .{.mem},
33988 .clobbers = .{ .eflags = true },47596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33989 .each = .{ .once = &.{47597 .each = .{ .once = &.{
33990 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47598 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33991 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47599 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
33992 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47600 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
33993 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },47601 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
33994 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },47602 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
33995 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47603 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33996 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },47604 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
33997 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },47605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
34003 } },47606 } },
34004 }, .{47607 }, .{
34005 .required_features = .{ .@"64bit", .bmi2, null, null },47608 .required_features = .{ .sse, null, null, null },
34006 .src_constraints = .{ .any_scalar_unsigned_int, .any },47609 .src_constraints = .{
34007 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},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 },
34008 .patterns = &.{47614 .patterns = &.{
34009 .{ .src = .{ .to_mem, .none } },47615 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34010 },47616 },
47617 .call_frame = .{ .alignment = .@"16" },
34011 .extra_temps = .{47618 .extra_temps = .{
34012 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47619 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34013 .{ .type = .usize, .kind = .{ .reg = .rsi } },47620 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34014 .{ .type = .usize, .kind = .{ .reg = .rdi } },47621 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
34015 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47622 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
34016 .{ .type = .u32, .kind = .{ .reg = .ecx } },47623 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
34017 .unused,47624 .unused,
34018 .unused,47625 .unused,
34019 .unused,47626 .unused,
34020 .unused,47627 .unused,
34021 },47628 },
34022 .dst_temps = .{.mem},47629 .dst_temps = .{.mem},
34023 .clobbers = .{ .eflags = true },47630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34024 .each = .{ .once = &.{47631 .each = .{ .once = &.{
34025 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34026 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47633 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
34027 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47634 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
34028 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },47635 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
34029 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },47636 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
34030 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47637 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
34031 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },47638 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
34032 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },47639 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
34033 .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ },47640 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34034 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },47641 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
34035 .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ },47642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34036 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34037 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34038 } },47643 } },
34039 }, .{47644 }, .{
34040 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },47645 .required_features = .{ .sse, .x87, null, null },
34041 .src_constraints = .{ .any_scalar_unsigned_int, .any },47646 .src_constraints = .{
34042 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},47647 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47648 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47649 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
47650 },
34043 .patterns = &.{47651 .patterns = &.{
34044 .{ .src = .{ .to_mem, .none } },47652 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34045 },47653 },
47654 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
34046 .extra_temps = .{47655 .extra_temps = .{
34047 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47656 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34048 .{ .type = .usize, .kind = .{ .reg = .rsi } },47657 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34049 .{ .type = .usize, .kind = .{ .reg = .rdi } },47658 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
34050 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47659 .unused,
34051 .{ .type = .u32, .kind = .{ .reg = .ecx } },47660 .unused,
34052 .{ .type = .u64, .kind = .{ .reg = .rax } },47661 .unused,
34053 .unused,47662 .unused,
34054 .unused,47663 .unused,
34055 .unused,47664 .unused,
34056 },47665 },
34057 .dst_temps = .{.mem},47666 .dst_temps = .{.{ .reg = .st0 }},
34058 .clobbers = .{ .eflags = true },47667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34059 .each = .{ .once = &.{47668 .each = .{ .once = &.{
34060 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47669 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },
34061 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47670 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },
34062 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47671 .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ },
34063 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },47672 .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ },
34064 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47673 .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ },
34065 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47674 .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ },
34066 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },47675 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
34067 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34068 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34069 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34070 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34071 } },47676 } },
34072 }, .{47677 }, .{
34073 .required_features = .{ .@"64bit", .bmi2, null, null },47678 .required_features = .{ .sse, .x87, null, null },
34074 .src_constraints = .{ .any_scalar_unsigned_int, .any },47679 .src_constraints = .{
34075 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},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 },
34076 .patterns = &.{47684 .patterns = &.{
34077 .{ .src = .{ .to_mem, .none } },47685 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34078 },47686 },
47687 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
34079 .extra_temps = .{47688 .extra_temps = .{
34080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34081 .{ .type = .usize, .kind = .{ .reg = .rsi } },47690 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
34082 .{ .type = .usize, .kind = .{ .reg = .rdi } },47691 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34083 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },47692 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
34084 .{ .type = .u32, .kind = .{ .reg = .ecx } },47693 .unused,
34085 .{ .type = .u64, .kind = .{ .reg = .rax } },47694 .unused,
34086 .unused,47695 .unused,
34087 .unused,47696 .unused,
34088 .unused,47697 .unused,
34089 },47698 },
34090 .dst_temps = .{.mem},47699 .dst_temps = .{.mem},
34091 .clobbers = .{ .eflags = true },47700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34092 .each = .{ .once = &.{47701 .each = .{ .once = &.{
34093 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47702 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34094 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47703 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34095 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47704 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
34096 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },47705 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
34097 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47706 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
34098 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47707 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
34099 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },47708 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
34100 .{ ._, ._sq, .sto, ._, ._, ._, ._ },47709 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
34101 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },47710 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
34102 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },47711 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34103 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },47712 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
47713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34104 } },47714 } },
34105 }, .{47715 }, .{
34106 .required_features = .{ .@"64bit", .slow_incdec, null, null },47716 .required_features = .{ .sse, null, null, null },
34107 .src_constraints = .{ .any_scalar_unsigned_int, .any },47717 .src_constraints = .{
34108 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},47718 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47719 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47720 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
47721 },
34109 .patterns = &.{47722 .patterns = &.{
34110 .{ .src = .{ .to_mem, .none } },47723 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
34111 },47724 },
47725 .call_frame = .{ .alignment = .@"16" },
34112 .extra_temps = .{47726 .extra_temps = .{
34113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
34114 .{ .type = .usize, .kind = .{ .reg = .rsi } },47728 .unused,
34115 .{ .type = .usize, .kind = .{ .reg = .rdi } },47729 .unused,
34116 .{ .type = .u32, .kind = .{ .reg = .ecx } },47730 .unused,
34117 .unused,47731 .unused,
34118 .unused,47732 .unused,
34119 .unused,47733 .unused,
34120 .unused,47734 .unused,
34121 .unused,47735 .unused,
34122 },47736 },
34123 .dst_temps = .{.mem},47737 .dst_temps = .{.{ .ref = .src0 }},
34124 .clobbers = .{ .eflags = true },47738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34125 .each = .{ .once = &.{47739 .each = .{ .once = &.{
34126 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
34139 } },47741 } },
34140 }, .{47742 }, .{
34141 .required_features = .{ .@"64bit", null, null, null },47743 .required_features = .{ .avx, null, null, null },
34142 .src_constraints = .{ .any_scalar_unsigned_int, .any },47744 .src_constraints = .{
34143 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }},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 },
34144 .patterns = &.{47749 .patterns = &.{
34145 .{ .src = .{ .to_mem, .none } },47750 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34146 },47751 },
47752 .call_frame = .{ .alignment = .@"16" },
34147 .extra_temps = .{47753 .extra_temps = .{
34148 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34149 .{ .type = .usize, .kind = .{ .reg = .rsi } },47755 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34150 .{ .type = .usize, .kind = .{ .reg = .rdi } },47756 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34151 .{ .type = .u32, .kind = .{ .reg = .ecx } },47757 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
34152 .unused,47758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
34153 .unused,47759 .unused,
34154 .unused,47760 .unused,
34155 .unused,47761 .unused,
34156 .unused,47762 .unused,
34157 },47763 },
34158 .dst_temps = .{.mem},47764 .dst_temps = .{.mem},
34159 .clobbers = .{ .eflags = true },47765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34160 .each = .{ .once = &.{47766 .each = .{ .once = &.{
34161 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47767 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34162 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47768 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34163 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47769 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
34164 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },47770 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
34165 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47771 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
34166 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },47772 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34167 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },47773 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34168 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },47774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
34174 } },47775 } },
34175 }, .{47776 }, .{
34176 .required_features = .{ .@"64bit", .slow_incdec, null, null },47777 .required_features = .{ .sse2, null, null, null },
34177 .src_constraints = .{ .any_scalar_unsigned_int, .any },47778 .src_constraints = .{
34178 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},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 },
34179 .patterns = &.{47783 .patterns = &.{
34180 .{ .src = .{ .to_mem, .none } },47784 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34181 },47785 },
47786 .call_frame = .{ .alignment = .@"16" },
34182 .extra_temps = .{47787 .extra_temps = .{
34183 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34184 .{ .type = .usize, .kind = .{ .reg = .rsi } },47789 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34185 .{ .type = .usize, .kind = .{ .reg = .rdi } },47790 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34186 .{ .type = .u64, .kind = .{ .reg = .rax } },47791 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
34187 .{ .type = .u32, .kind = .{ .reg = .ecx } },47792 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
34188 .unused,47793 .unused,
34189 .unused,47794 .unused,
34190 .unused,47795 .unused,
34191 .unused,47796 .unused,
34192 },47797 },
34193 .dst_temps = .{.mem},47798 .dst_temps = .{.mem},
34194 .clobbers = .{ .eflags = true },47799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34195 .each = .{ .once = &.{47800 .each = .{ .once = &.{
34196 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47801 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34197 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47802 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34198 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47803 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
34199 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },47804 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
34200 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47805 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
34201 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47806 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34202 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },47807 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34203 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },47808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34204 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34205 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34206 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
34207 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
34208 } },47809 } },
34209 }, .{47810 }, .{
34210 .required_features = .{ .@"64bit", null, null, null },47811 .required_features = .{ .sse, null, null, null },
34211 .src_constraints = .{ .any_scalar_unsigned_int, .any },47812 .src_constraints = .{
34212 .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }},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 },
34213 .patterns = &.{47817 .patterns = &.{
34214 .{ .src = .{ .to_mem, .none } },47818 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
34215 },47819 },
47820 .call_frame = .{ .alignment = .@"16" },
34216 .extra_temps = .{47821 .extra_temps = .{
34217 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },47822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34218 .{ .type = .usize, .kind = .{ .reg = .rsi } },47823 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34219 .{ .type = .usize, .kind = .{ .reg = .rdi } },47824 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34220 .{ .type = .u64, .kind = .{ .reg = .rax } },47825 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
34221 .{ .type = .u32, .kind = .{ .reg = .ecx } },47826 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
34222 .unused,47827 .unused,
34223 .unused,47828 .unused,
34224 .unused,47829 .unused,
34225 .unused,47830 .unused,
34226 },47831 },
34227 .dst_temps = .{.mem},47832 .dst_temps = .{.mem},
34228 .clobbers = .{ .eflags = true },47833 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34229 .each = .{ .once = &.{47834 .each = .{ .once = &.{
34230 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },47835 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34231 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },47836 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
34232 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },47837 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
34233 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },47838 .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
34234 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },47839 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
34235 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },47840 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
34236 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },47841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34237 .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ },47842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34238 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
34239 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
34240 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
34241 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
34242 } },47843 } },
34243 } }) catch |err| switch (err) {47844 } }) catch |err| switch (err) {
34244 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{47845 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
34245 @tagName(air_tag),47846 @tagName(air_tag),
34246 ty_op.ty.toType().fmt(pt),47847 cg.typeOf(bin_op.lhs).fmt(pt),
34247 cg.typeOf(ty_op.operand).fmt(pt),
34248 ops[0].tracking(cg),47848 ops[0].tracking(cg),
47849 ops[1].tracking(cg),
47850 ops[2].tracking(cg),
34249 }),47851 }),
34250 else => |e| return e,47852 else => |e| return e,
34251 };47853 };
34252 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);47854 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_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);
34631 },47855 },
34632 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {47856 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {
34633 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;47857 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...@@ -39565,7 +52789,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
39565 .param_types = &.{ty.toIntern()},52789 .param_types = &.{ty.toIntern()},
39566 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{52790 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
39567 floatLibcAbiPrefix(ty),52791 floatLibcAbiPrefix(ty),
39568 switch (mode.mode) {52792 switch (mode.direction) {
39569 .down => "floor",52793 .down => "floor",
39570 .up => "ceil",52794 .up => "ceil",
39571 .zero => "trunc",52795 .zero => "trunc",
...@@ -42209,7 +55433,7 @@ fn genBinOp(...@@ -42209,7 +55433,7 @@ fn genBinOp(
42209 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});55433 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
42210 },55434 },
42211 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{55435 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
42212 .mode = switch (air_tag) {55436 .direction = switch (air_tag) {
42213 .div_trunc => .zero,55437 .div_trunc => .zero,
42214 .div_floor => .down,55438 .div_floor => .down,
42215 else => unreachable,55439 else => unreachable,
...@@ -42667,7 +55891,7 @@ fn genBinOp(...@@ -42667,7 +55891,7 @@ fn genBinOp(
42667 dst_reg,55891 dst_reg,
42668 dst_reg,55892 dst_reg,
42669 bits.RoundMode.imm(.{55893 bits.RoundMode.imm(.{
42670 .mode = switch (air_tag) {55894 .direction = switch (air_tag) {
42671 .div_trunc => .zero,55895 .div_trunc => .zero,
42672 .div_floor => .down,55896 .div_floor => .down,
42673 else => unreachable,55897 else => unreachable,
...@@ -43469,7 +56693,7 @@ fn genBinOp(...@@ -43469,7 +56693,7 @@ fn genBinOp(
43469 switch (air_tag) {56693 switch (air_tag) {
43470 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},56694 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},
43471 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{56695 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{
43472 .mode = switch (air_tag) {56696 .direction = switch (air_tag) {
43473 .div_trunc => .zero,56697 .div_trunc => .zero,
43474 .div_floor => .down,56698 .div_floor => .down,
43475 else => unreachable,56699 else => unreachable,
...@@ -51237,10 +64461,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -51237,10 +64461,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
51237 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);64461 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
51238 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);64462 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);
51239 defer self.register_manager.unlockReg(acc_lock);64463 defer self.register_manager.unlockReg(acc_lock);
51240 var limb_offset: i31 = 0;64464 var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8);
51241 while (limb_offset < abi_size) : (limb_offset += 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) {
51242 try self.asmRegisterMemory(64473 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) {
51244 .Or => .@"or",64475 .Or => .@"or",
51245 .And => .@"and",64476 .And => .@"and",
51246 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),64477 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 {...@@ -51251,6 +64482,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
51251 .disp = limb_offset,64482 .disp = limb_offset,
51252 }),64483 }),
51253 );64484 );
64485 if (limb_offset == 0) break;
64486 first = false;
51254 }64487 }
51255 switch (reduce.operation) {64488 switch (reduce.operation) {
51256 .Or => {64489 .Or => {
...@@ -53741,11 +66974,11 @@ const Temp = struct {...@@ -53741,11 +66974,11 @@ const Temp = struct {
53741 };66974 };
53742 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);66975 if (commute) std.mem.swap(Temp, &ops[0], &ops[1]);
53743 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{66976 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 },
53745 .patterns = &.{66978 .patterns = &.{
53746 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },66979 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
53747 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },66980 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
53748 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },66981 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53749 },66982 },
53750 .dst_temps = .{.{ .cc = .g }},66983 .dst_temps = .{.{ .cc = .g }},
53751 .clobbers = .{ .eflags = true },66984 .clobbers = .{ .eflags = true },
...@@ -53753,12 +66986,12 @@ const Temp = struct {...@@ -53753,12 +66986,12 @@ const Temp = struct {
53753 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },66986 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
53754 } },66987 } },
53755 }, .{66988 }, .{
53756 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } },66989 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
53757 .patterns = &.{66990 .patterns = &.{
53758 .{ .src = .{ .mem, .imm8 } },66991 .{ .src = .{ .mem, .imm8, .none } },
53759 .{ .src = .{ .to_gpr, .imm8 } },66992 .{ .src = .{ .to_gpr, .imm8, .none } },
53760 .{ .src = .{ .to_gpr, .mem } },66993 .{ .src = .{ .to_gpr, .mem, .none } },
53761 .{ .src = .{ .to_gpr, .to_gpr } },66994 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53762 },66995 },
53763 .dst_temps = .{.{ .cc = .l }},66996 .dst_temps = .{.{ .cc = .l }},
53764 .clobbers = .{ .eflags = true },66997 .clobbers = .{ .eflags = true },
...@@ -53766,11 +66999,11 @@ const Temp = struct {...@@ -53766,11 +66999,11 @@ const Temp = struct {
53766 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },66999 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
53767 } },67000 } },
53768 }, .{67001 }, .{
53769 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },67002 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
53770 .patterns = &.{67003 .patterns = &.{
53771 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },67004 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
53772 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },67005 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
53773 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67006 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53774 },67007 },
53775 .dst_temps = .{.{ .cc = .a }},67008 .dst_temps = .{.{ .cc = .a }},
53776 .clobbers = .{ .eflags = true },67009 .clobbers = .{ .eflags = true },
...@@ -53778,12 +67011,12 @@ const Temp = struct {...@@ -53778,12 +67011,12 @@ const Temp = struct {
53778 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },67011 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
53779 } },67012 } },
53780 }, .{67013 }, .{
53781 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } },67014 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
53782 .patterns = &.{67015 .patterns = &.{
53783 .{ .src = .{ .mem, .imm8 } },67016 .{ .src = .{ .mem, .imm8, .none } },
53784 .{ .src = .{ .to_gpr, .imm8 } },67017 .{ .src = .{ .to_gpr, .imm8, .none } },
53785 .{ .src = .{ .to_gpr, .mem } },67018 .{ .src = .{ .to_gpr, .mem, .none } },
53786 .{ .src = .{ .to_gpr, .to_gpr } },67019 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53787 },67020 },
53788 .dst_temps = .{.{ .cc = .b }},67021 .dst_temps = .{.{ .cc = .b }},
53789 .clobbers = .{ .eflags = true },67022 .clobbers = .{ .eflags = true },
...@@ -53791,11 +67024,11 @@ const Temp = struct {...@@ -53791,11 +67024,11 @@ const Temp = struct {
53791 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },67024 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
53792 } },67025 } },
53793 }, .{67026 }, .{
53794 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },67027 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
53795 .patterns = &.{67028 .patterns = &.{
53796 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },67029 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
53797 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },67030 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
53798 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67031 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53799 },67032 },
53800 .dst_temps = .{.{ .cc = .g }},67033 .dst_temps = .{.{ .cc = .g }},
53801 .clobbers = .{ .eflags = true },67034 .clobbers = .{ .eflags = true },
...@@ -53803,12 +67036,12 @@ const Temp = struct {...@@ -53803,12 +67036,12 @@ const Temp = struct {
53803 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },67036 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
53804 } },67037 } },
53805 }, .{67038 }, .{
53806 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } },67039 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
53807 .patterns = &.{67040 .patterns = &.{
53808 .{ .src = .{ .mem, .imm16 } },67041 .{ .src = .{ .mem, .imm16, .none } },
53809 .{ .src = .{ .to_gpr, .imm16 } },67042 .{ .src = .{ .to_gpr, .imm16, .none } },
53810 .{ .src = .{ .to_gpr, .mem } },67043 .{ .src = .{ .to_gpr, .mem, .none } },
53811 .{ .src = .{ .to_gpr, .to_gpr } },67044 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53812 },67045 },
53813 .dst_temps = .{.{ .cc = .l }},67046 .dst_temps = .{.{ .cc = .l }},
53814 .clobbers = .{ .eflags = true },67047 .clobbers = .{ .eflags = true },
...@@ -53816,11 +67049,11 @@ const Temp = struct {...@@ -53816,11 +67049,11 @@ const Temp = struct {
53816 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },67049 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
53817 } },67050 } },
53818 }, .{67051 }, .{
53819 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },67052 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
53820 .patterns = &.{67053 .patterns = &.{
53821 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },67054 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
53822 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },67055 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
53823 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67056 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53824 },67057 },
53825 .dst_temps = .{.{ .cc = .a }},67058 .dst_temps = .{.{ .cc = .a }},
53826 .clobbers = .{ .eflags = true },67059 .clobbers = .{ .eflags = true },
...@@ -53828,12 +67061,12 @@ const Temp = struct {...@@ -53828,12 +67061,12 @@ const Temp = struct {
53828 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },67061 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
53829 } },67062 } },
53830 }, .{67063 }, .{
53831 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } },67064 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
53832 .patterns = &.{67065 .patterns = &.{
53833 .{ .src = .{ .mem, .imm16 } },67066 .{ .src = .{ .mem, .imm16, .none } },
53834 .{ .src = .{ .to_gpr, .imm16 } },67067 .{ .src = .{ .to_gpr, .imm16, .none } },
53835 .{ .src = .{ .to_gpr, .mem } },67068 .{ .src = .{ .to_gpr, .mem, .none } },
53836 .{ .src = .{ .to_gpr, .to_gpr } },67069 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53837 },67070 },
53838 .dst_temps = .{.{ .cc = .b }},67071 .dst_temps = .{.{ .cc = .b }},
53839 .clobbers = .{ .eflags = true },67072 .clobbers = .{ .eflags = true },
...@@ -53841,11 +67074,11 @@ const Temp = struct {...@@ -53841,11 +67074,11 @@ const Temp = struct {
53841 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },67074 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
53842 } },67075 } },
53843 }, .{67076 }, .{
53844 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },67077 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
53845 .patterns = &.{67078 .patterns = &.{
53846 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },67079 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
53847 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },67080 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
53848 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67081 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53849 },67082 },
53850 .dst_temps = .{.{ .cc = .g }},67083 .dst_temps = .{.{ .cc = .g }},
53851 .clobbers = .{ .eflags = true },67084 .clobbers = .{ .eflags = true },
...@@ -53853,12 +67086,12 @@ const Temp = struct {...@@ -53853,12 +67086,12 @@ const Temp = struct {
53853 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },67086 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
53854 } },67087 } },
53855 }, .{67088 }, .{
53856 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } },67089 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
53857 .patterns = &.{67090 .patterns = &.{
53858 .{ .src = .{ .mem, .imm32 } },67091 .{ .src = .{ .mem, .imm32, .none } },
53859 .{ .src = .{ .to_gpr, .imm32 } },67092 .{ .src = .{ .to_gpr, .imm32, .none } },
53860 .{ .src = .{ .to_gpr, .mem } },67093 .{ .src = .{ .to_gpr, .mem, .none } },
53861 .{ .src = .{ .to_gpr, .to_gpr } },67094 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53862 },67095 },
53863 .dst_temps = .{.{ .cc = .l }},67096 .dst_temps = .{.{ .cc = .l }},
53864 .clobbers = .{ .eflags = true },67097 .clobbers = .{ .eflags = true },
...@@ -53866,11 +67099,11 @@ const Temp = struct {...@@ -53866,11 +67099,11 @@ const Temp = struct {
53866 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },67099 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
53867 } },67100 } },
53868 }, .{67101 }, .{
53869 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },67102 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
53870 .patterns = &.{67103 .patterns = &.{
53871 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },67104 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
53872 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },67105 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
53873 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67106 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53874 },67107 },
53875 .dst_temps = .{.{ .cc = .a }},67108 .dst_temps = .{.{ .cc = .a }},
53876 .clobbers = .{ .eflags = true },67109 .clobbers = .{ .eflags = true },
...@@ -53878,12 +67111,12 @@ const Temp = struct {...@@ -53878,12 +67111,12 @@ const Temp = struct {
53878 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },67111 .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ },
53879 } },67112 } },
53880 }, .{67113 }, .{
53881 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } },67114 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
53882 .patterns = &.{67115 .patterns = &.{
53883 .{ .src = .{ .mem, .imm32 } },67116 .{ .src = .{ .mem, .imm32, .none } },
53884 .{ .src = .{ .to_gpr, .imm32 } },67117 .{ .src = .{ .to_gpr, .imm32, .none } },
53885 .{ .src = .{ .to_gpr, .mem } },67118 .{ .src = .{ .to_gpr, .mem, .none } },
53886 .{ .src = .{ .to_gpr, .to_gpr } },67119 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53887 },67120 },
53888 .dst_temps = .{.{ .cc = .b }},67121 .dst_temps = .{.{ .cc = .b }},
53889 .clobbers = .{ .eflags = true },67122 .clobbers = .{ .eflags = true },
...@@ -53892,11 +67125,11 @@ const Temp = struct {...@@ -53892,11 +67125,11 @@ const Temp = struct {
53892 } },67125 } },
53893 }, .{67126 }, .{
53894 .required_features = .{ .@"64bit", null, null, null },67127 .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 },
53896 .patterns = &.{67129 .patterns = &.{
53897 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },67130 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
53898 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },67131 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
53899 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67132 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53900 },67133 },
53901 .dst_temps = .{.{ .cc = .g }},67134 .dst_temps = .{.{ .cc = .g }},
53902 .clobbers = .{ .eflags = true },67135 .clobbers = .{ .eflags = true },
...@@ -53905,12 +67138,12 @@ const Temp = struct {...@@ -53905,12 +67138,12 @@ const Temp = struct {
53905 } },67138 } },
53906 }, .{67139 }, .{
53907 .required_features = .{ .@"64bit", null, null, null },67140 .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 },
53909 .patterns = &.{67142 .patterns = &.{
53910 .{ .src = .{ .mem, .simm32 } },67143 .{ .src = .{ .mem, .simm32, .none } },
53911 .{ .src = .{ .to_gpr, .simm32 } },67144 .{ .src = .{ .to_gpr, .simm32, .none } },
53912 .{ .src = .{ .to_gpr, .mem } },67145 .{ .src = .{ .to_gpr, .mem, .none } },
53913 .{ .src = .{ .to_gpr, .to_gpr } },67146 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53914 },67147 },
53915 .dst_temps = .{.{ .cc = .l }},67148 .dst_temps = .{.{ .cc = .l }},
53916 .clobbers = .{ .eflags = true },67149 .clobbers = .{ .eflags = true },
...@@ -53919,11 +67152,11 @@ const Temp = struct {...@@ -53919,11 +67152,11 @@ const Temp = struct {
53919 } },67152 } },
53920 }, .{67153 }, .{
53921 .required_features = .{ .@"64bit", null, null, null },67154 .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 },
53923 .patterns = &.{67156 .patterns = &.{
53924 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },67157 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
53925 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },67158 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
53926 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67159 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
53927 },67160 },
53928 .dst_temps = .{.{ .cc = .a }},67161 .dst_temps = .{.{ .cc = .a }},
53929 .clobbers = .{ .eflags = true },67162 .clobbers = .{ .eflags = true },
...@@ -53932,12 +67165,12 @@ const Temp = struct {...@@ -53932,12 +67165,12 @@ const Temp = struct {
53932 } },67165 } },
53933 }, .{67166 }, .{
53934 .required_features = .{ .@"64bit", null, null, null },67167 .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 },
53936 .patterns = &.{67169 .patterns = &.{
53937 .{ .src = .{ .mem, .simm32 } },67170 .{ .src = .{ .mem, .simm32, .none } },
53938 .{ .src = .{ .to_gpr, .simm32 } },67171 .{ .src = .{ .to_gpr, .simm32, .none } },
53939 .{ .src = .{ .to_gpr, .mem } },67172 .{ .src = .{ .to_gpr, .mem, .none } },
53940 .{ .src = .{ .to_gpr, .to_gpr } },67173 .{ .src = .{ .to_gpr, .to_gpr, .none } },
53941 },67174 },
53942 .dst_temps = .{.{ .cc = .b }},67175 .dst_temps = .{.{ .cc = .b }},
53943 .clobbers = .{ .eflags = true },67176 .clobbers = .{ .eflags = true },
...@@ -53949,9 +67182,10 @@ const Temp = struct {...@@ -53949,9 +67182,10 @@ const Temp = struct {
53949 .src_constraints = .{67182 .src_constraints = .{
53950 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },67183 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
53951 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },67184 .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } },
67185 .any,
53952 },67186 },
53953 .patterns = &.{67187 .patterns = &.{
53954 .{ .src = .{ .to_mem, .to_mem } },67188 .{ .src = .{ .to_mem, .to_mem, .none } },
53955 },67189 },
53956 .extra_temps = .{67190 .extra_temps = .{
53957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -53981,9 +67215,10 @@ const Temp = struct {...@@ -53981,9 +67215,10 @@ const Temp = struct {
53981 .src_constraints = .{67215 .src_constraints = .{
53982 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },67216 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
53983 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },67217 .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } },
67218 .any,
53984 },67219 },
53985 .patterns = &.{67220 .patterns = &.{
53986 .{ .src = .{ .to_mem, .to_mem } },67221 .{ .src = .{ .to_mem, .to_mem, .none } },
53987 },67222 },
53988 .extra_temps = .{67223 .extra_temps = .{
53989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54010,9 +67245,10 @@ const Temp = struct {...@@ -54010,9 +67245,10 @@ const Temp = struct {
54010 .src_constraints = .{67245 .src_constraints = .{
54011 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },67246 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
54012 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },67247 .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } },
67248 .any,
54013 },67249 },
54014 .patterns = &.{67250 .patterns = &.{
54015 .{ .src = .{ .to_mem, .to_mem } },67251 .{ .src = .{ .to_mem, .to_mem, .none } },
54016 },67252 },
54017 .extra_temps = .{67253 .extra_temps = .{
54018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54041,9 +67277,10 @@ const Temp = struct {...@@ -54041,9 +67277,10 @@ const Temp = struct {
54041 .src_constraints = .{67277 .src_constraints = .{
54042 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },67278 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
54043 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },67279 .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } },
67280 .any,
54044 },67281 },
54045 .patterns = &.{67282 .patterns = &.{
54046 .{ .src = .{ .to_mem, .to_mem } },67283 .{ .src = .{ .to_mem, .to_mem, .none } },
54047 },67284 },
54048 .extra_temps = .{67285 .extra_temps = .{
54049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67286 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54071,15 +67308,15 @@ const Temp = struct {...@@ -54071,15 +67308,15 @@ const Temp = struct {
54071 },67308 },
54072 .eq, .neq => {67309 .eq, .neq => {
54073 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{67310 try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{
54074 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } },67311 .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any },
54075 .patterns = &.{67312 .patterns = &.{
54076 .{ .src = .{ .mem, .imm8 } },67313 .{ .src = .{ .mem, .imm8, .none } },
54077 .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } },67314 .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } },
54078 .{ .src = .{ .to_gpr, .imm8 } },67315 .{ .src = .{ .to_gpr, .imm8, .none } },
54079 .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } },67316 .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } },
54080 .{ .src = .{ .to_gpr, .mem } },67317 .{ .src = .{ .to_gpr, .mem, .none } },
54081 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67318 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
54082 .{ .src = .{ .to_gpr, .to_gpr } },67319 .{ .src = .{ .to_gpr, .to_gpr, .none } },
54083 },67320 },
54084 .dst_temps = .{.{ .cc = .e }},67321 .dst_temps = .{.{ .cc = .e }},
54085 .clobbers = .{ .eflags = true },67322 .clobbers = .{ .eflags = true },
...@@ -54087,15 +67324,15 @@ const Temp = struct {...@@ -54087,15 +67324,15 @@ const Temp = struct {
54087 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },67324 .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ },
54088 } },67325 } },
54089 }, .{67326 }, .{
54090 .src_constraints = .{ .{ .int = .word }, .{ .int = .word } },67327 .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any },
54091 .patterns = &.{67328 .patterns = &.{
54092 .{ .src = .{ .mem, .imm16 } },67329 .{ .src = .{ .mem, .imm16, .none } },
54093 .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } },67330 .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
54094 .{ .src = .{ .to_gpr, .imm16 } },67331 .{ .src = .{ .to_gpr, .imm16, .none } },
54095 .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } },67332 .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
54096 .{ .src = .{ .to_gpr, .mem } },67333 .{ .src = .{ .to_gpr, .mem, .none } },
54097 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67334 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
54098 .{ .src = .{ .to_gpr, .to_gpr } },67335 .{ .src = .{ .to_gpr, .to_gpr, .none } },
54099 },67336 },
54100 .dst_temps = .{.{ .cc = .e }},67337 .dst_temps = .{.{ .cc = .e }},
54101 .clobbers = .{ .eflags = true },67338 .clobbers = .{ .eflags = true },
...@@ -54103,15 +67340,15 @@ const Temp = struct {...@@ -54103,15 +67340,15 @@ const Temp = struct {
54103 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },67340 .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ },
54104 } },67341 } },
54105 }, .{67342 }, .{
54106 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } },67343 .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any },
54107 .patterns = &.{67344 .patterns = &.{
54108 .{ .src = .{ .mem, .imm32 } },67345 .{ .src = .{ .mem, .imm32, .none } },
54109 .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } },67346 .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
54110 .{ .src = .{ .to_gpr, .imm32 } },67347 .{ .src = .{ .to_gpr, .imm32, .none } },
54111 .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } },67348 .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
54112 .{ .src = .{ .to_gpr, .mem } },67349 .{ .src = .{ .to_gpr, .mem, .none } },
54113 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67350 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
54114 .{ .src = .{ .to_gpr, .to_gpr } },67351 .{ .src = .{ .to_gpr, .to_gpr, .none } },
54115 },67352 },
54116 .dst_temps = .{.{ .cc = .e }},67353 .dst_temps = .{.{ .cc = .e }},
54117 .clobbers = .{ .eflags = true },67354 .clobbers = .{ .eflags = true },
...@@ -54120,15 +67357,15 @@ const Temp = struct {...@@ -54120,15 +67357,15 @@ const Temp = struct {
54120 } },67357 } },
54121 }, .{67358 }, .{
54122 .required_features = .{ .@"64bit", null, null, null },67359 .required_features = .{ .@"64bit", null, null, null },
54123 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },67360 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
54124 .patterns = &.{67361 .patterns = &.{
54125 .{ .src = .{ .mem, .simm32 } },67362 .{ .src = .{ .mem, .simm32, .none } },
54126 .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } },67363 .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
54127 .{ .src = .{ .to_gpr, .simm32 } },67364 .{ .src = .{ .to_gpr, .simm32, .none } },
54128 .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } },67365 .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
54129 .{ .src = .{ .to_gpr, .mem } },67366 .{ .src = .{ .to_gpr, .mem, .none } },
54130 .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } },67367 .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } },
54131 .{ .src = .{ .to_gpr, .to_gpr } },67368 .{ .src = .{ .to_gpr, .to_gpr, .none } },
54132 },67369 },
54133 .dst_temps = .{.{ .cc = .e }},67370 .dst_temps = .{.{ .cc = .e }},
54134 .clobbers = .{ .eflags = true },67371 .clobbers = .{ .eflags = true },
...@@ -54137,11 +67374,11 @@ const Temp = struct {...@@ -54137,11 +67374,11 @@ const Temp = struct {
54137 } },67374 } },
54138 }, .{67375 }, .{
54139 .required_features = .{ .sse, .mmx, null, null },67376 .required_features = .{ .sse, .mmx, null, null },
54140 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } },67377 .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any },
54141 .patterns = &.{67378 .patterns = &.{
54142 .{ .src = .{ .to_mut_mm, .mem } },67379 .{ .src = .{ .to_mut_mm, .mem, .none } },
54143 .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } },67380 .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } },
54144 .{ .src = .{ .to_mut_mm, .to_mm } },67381 .{ .src = .{ .to_mut_mm, .to_mm, .none } },
54145 },67382 },
54146 .extra_temps = .{67383 .extra_temps = .{
54147 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },67384 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -54165,11 +67402,11 @@ const Temp = struct {...@@ -54165,11 +67402,11 @@ const Temp = struct {
54165 } },67402 } },
54166 }, .{67403 }, .{
54167 .required_features = .{ .avx, null, null, null },67404 .required_features = .{ .avx, null, null, null },
54168 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },67405 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
54169 .patterns = &.{67406 .patterns = &.{
54170 .{ .src = .{ .to_xmm, .mem } },67407 .{ .src = .{ .to_xmm, .mem, .none } },
54171 .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } },67408 .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } },
54172 .{ .src = .{ .to_xmm, .to_xmm } },67409 .{ .src = .{ .to_xmm, .to_xmm, .none } },
54173 },67410 },
54174 .extra_temps = .{67411 .extra_temps = .{
54175 .{ .kind = .{ .rc = .sse } },67412 .{ .kind = .{ .rc = .sse } },
...@@ -54190,11 +67427,11 @@ const Temp = struct {...@@ -54190,11 +67427,11 @@ const Temp = struct {
54190 } },67427 } },
54191 }, .{67428 }, .{
54192 .required_features = .{ .sse4_1, null, null, null },67429 .required_features = .{ .sse4_1, null, null, null },
54193 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },67430 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
54194 .patterns = &.{67431 .patterns = &.{
54195 .{ .src = .{ .to_mut_xmm, .mem } },67432 .{ .src = .{ .to_mut_xmm, .mem, .none } },
54196 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },67433 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
54197 .{ .src = .{ .to_mut_xmm, .to_xmm } },67434 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
54198 },67435 },
54199 .dst_temps = .{.{ .cc = .z }},67436 .dst_temps = .{.{ .cc = .z }},
54200 .clobbers = .{ .eflags = true },67437 .clobbers = .{ .eflags = true },
...@@ -54204,11 +67441,11 @@ const Temp = struct {...@@ -54204,11 +67441,11 @@ const Temp = struct {
54204 } },67441 } },
54205 }, .{67442 }, .{
54206 .required_features = .{ .sse2, .fast_imm16, null, null },67443 .required_features = .{ .sse2, .fast_imm16, null, null },
54207 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },67444 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
54208 .patterns = &.{67445 .patterns = &.{
54209 .{ .src = .{ .to_mut_xmm, .mem } },67446 .{ .src = .{ .to_mut_xmm, .mem, .none } },
54210 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },67447 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
54211 .{ .src = .{ .to_mut_xmm, .to_xmm } },67448 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
54212 },67449 },
54213 .extra_temps = .{67450 .extra_temps = .{
54214 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },67451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -54232,11 +67469,11 @@ const Temp = struct {...@@ -54232,11 +67469,11 @@ const Temp = struct {
54232 } },67469 } },
54233 }, .{67470 }, .{
54234 .required_features = .{ .sse2, null, null, null },67471 .required_features = .{ .sse2, null, null, null },
54235 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } },67472 .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any },
54236 .patterns = &.{67473 .patterns = &.{
54237 .{ .src = .{ .to_mut_xmm, .mem } },67474 .{ .src = .{ .to_mut_xmm, .mem, .none } },
54238 .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } },67475 .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } },
54239 .{ .src = .{ .to_mut_xmm, .to_xmm } },67476 .{ .src = .{ .to_mut_xmm, .to_xmm, .none } },
54240 },67477 },
54241 .extra_temps = .{67478 .extra_temps = .{
54242 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },67479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -54260,11 +67497,11 @@ const Temp = struct {...@@ -54260,11 +67497,11 @@ const Temp = struct {
54260 } },67497 } },
54261 }, .{67498 }, .{
54262 .required_features = .{ .avx2, null, null, null },67499 .required_features = .{ .avx2, null, null, null },
54263 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },67500 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
54264 .patterns = &.{67501 .patterns = &.{
54265 .{ .src = .{ .to_ymm, .mem } },67502 .{ .src = .{ .to_ymm, .mem, .none } },
54266 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },67503 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
54267 .{ .src = .{ .to_ymm, .to_ymm } },67504 .{ .src = .{ .to_ymm, .to_ymm, .none } },
54268 },67505 },
54269 .extra_temps = .{67506 .extra_temps = .{
54270 .{ .kind = .{ .rc = .sse } },67507 .{ .kind = .{ .rc = .sse } },
...@@ -54285,11 +67522,11 @@ const Temp = struct {...@@ -54285,11 +67522,11 @@ const Temp = struct {
54285 } },67522 } },
54286 }, .{67523 }, .{
54287 .required_features = .{ .avx, null, null, null },67524 .required_features = .{ .avx, null, null, null },
54288 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } },67525 .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any },
54289 .patterns = &.{67526 .patterns = &.{
54290 .{ .src = .{ .to_ymm, .mem } },67527 .{ .src = .{ .to_ymm, .mem, .none } },
54291 .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } },67528 .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } },
54292 .{ .src = .{ .to_ymm, .to_ymm } },67529 .{ .src = .{ .to_ymm, .to_ymm, .none } },
54293 },67530 },
54294 .extra_temps = .{67531 .extra_temps = .{
54295 .{ .kind = .{ .rc = .sse } },67532 .{ .kind = .{ .rc = .sse } },
...@@ -54313,9 +67550,10 @@ const Temp = struct {...@@ -54313,9 +67550,10 @@ const Temp = struct {
54313 .src_constraints = .{67550 .src_constraints = .{
54314 .{ .remainder_int = .{ .of = .yword, .is = .xword } },67551 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
54315 .{ .remainder_int = .{ .of = .yword, .is = .xword } },67552 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
67553 .any,
54316 },67554 },
54317 .patterns = &.{67555 .patterns = &.{
54318 .{ .src = .{ .to_mem, .to_mem } },67556 .{ .src = .{ .to_mem, .to_mem, .none } },
54319 },67557 },
54320 .extra_temps = .{67558 .extra_temps = .{
54321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54347,9 +67585,10 @@ const Temp = struct {...@@ -54347,9 +67585,10 @@ const Temp = struct {
54347 .src_constraints = .{67585 .src_constraints = .{
54348 .{ .remainder_int = .{ .of = .yword, .is = .xword } },67586 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
54349 .{ .remainder_int = .{ .of = .yword, .is = .xword } },67587 .{ .remainder_int = .{ .of = .yword, .is = .xword } },
67588 .any,
54350 },67589 },
54351 .patterns = &.{67590 .patterns = &.{
54352 .{ .src = .{ .to_mem, .to_mem } },67591 .{ .src = .{ .to_mem, .to_mem, .none } },
54353 },67592 },
54354 .extra_temps = .{67593 .extra_temps = .{
54355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54381,9 +67620,10 @@ const Temp = struct {...@@ -54381,9 +67620,10 @@ const Temp = struct {
54381 .src_constraints = .{67620 .src_constraints = .{
54382 .{ .remainder_int = .{ .of = .yword, .is = .yword } },67621 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
54383 .{ .remainder_int = .{ .of = .yword, .is = .yword } },67622 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
67623 .any,
54384 },67624 },
54385 .patterns = &.{67625 .patterns = &.{
54386 .{ .src = .{ .to_mem, .to_mem } },67626 .{ .src = .{ .to_mem, .to_mem, .none } },
54387 },67627 },
54388 .extra_temps = .{67628 .extra_temps = .{
54389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54412,9 +67652,10 @@ const Temp = struct {...@@ -54412,9 +67652,10 @@ const Temp = struct {
54412 .src_constraints = .{67652 .src_constraints = .{
54413 .{ .remainder_int = .{ .of = .yword, .is = .yword } },67653 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
54414 .{ .remainder_int = .{ .of = .yword, .is = .yword } },67654 .{ .remainder_int = .{ .of = .yword, .is = .yword } },
67655 .any,
54415 },67656 },
54416 .patterns = &.{67657 .patterns = &.{
54417 .{ .src = .{ .to_mem, .to_mem } },67658 .{ .src = .{ .to_mem, .to_mem, .none } },
54418 },67659 },
54419 .extra_temps = .{67660 .extra_temps = .{
54420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54443,9 +67684,10 @@ const Temp = struct {...@@ -54443,9 +67684,10 @@ const Temp = struct {
54443 .src_constraints = .{67684 .src_constraints = .{
54444 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67685 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
54445 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67686 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67687 .any,
54446 },67688 },
54447 .patterns = &.{67689 .patterns = &.{
54448 .{ .src = .{ .to_mem, .to_mem } },67690 .{ .src = .{ .to_mem, .to_mem, .none } },
54449 },67691 },
54450 .extra_temps = .{67692 .extra_temps = .{
54451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54474,9 +67716,10 @@ const Temp = struct {...@@ -54474,9 +67716,10 @@ const Temp = struct {
54474 .src_constraints = .{67716 .src_constraints = .{
54475 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67717 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
54476 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67718 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67719 .any,
54477 },67720 },
54478 .patterns = &.{67721 .patterns = &.{
54479 .{ .src = .{ .to_mem, .to_mem } },67722 .{ .src = .{ .to_mem, .to_mem, .none } },
54480 },67723 },
54481 .extra_temps = .{67724 .extra_temps = .{
54482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54505,9 +67748,10 @@ const Temp = struct {...@@ -54505,9 +67748,10 @@ const Temp = struct {
54505 .src_constraints = .{67748 .src_constraints = .{
54506 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67749 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
54507 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67750 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67751 .any,
54508 },67752 },
54509 .patterns = &.{67753 .patterns = &.{
54510 .{ .src = .{ .to_mem, .to_mem } },67754 .{ .src = .{ .to_mem, .to_mem, .none } },
54511 },67755 },
54512 .extra_temps = .{67756 .extra_temps = .{
54513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54537,9 +67781,10 @@ const Temp = struct {...@@ -54537,9 +67781,10 @@ const Temp = struct {
54537 .src_constraints = .{67781 .src_constraints = .{
54538 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67782 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
54539 .{ .remainder_int = .{ .of = .xword, .is = .xword } },67783 .{ .remainder_int = .{ .of = .xword, .is = .xword } },
67784 .any,
54540 },67785 },
54541 .patterns = &.{67786 .patterns = &.{
54542 .{ .src = .{ .to_mem, .to_mem } },67787 .{ .src = .{ .to_mem, .to_mem, .none } },
54543 },67788 },
54544 .extra_temps = .{67789 .extra_temps = .{
54545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54569,9 +67814,10 @@ const Temp = struct {...@@ -54569,9 +67814,10 @@ const Temp = struct {
54569 .src_constraints = .{67814 .src_constraints = .{
54570 .{ .remainder_int = .{ .of = .qword, .is = .qword } },67815 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
54571 .{ .remainder_int = .{ .of = .qword, .is = .qword } },67816 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
67817 .any,
54572 },67818 },
54573 .patterns = &.{67819 .patterns = &.{
54574 .{ .src = .{ .to_mem, .to_mem } },67820 .{ .src = .{ .to_mem, .to_mem, .none } },
54575 },67821 },
54576 .extra_temps = .{67822 .extra_temps = .{
54577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54601,9 +67847,10 @@ const Temp = struct {...@@ -54601,9 +67847,10 @@ const Temp = struct {
54601 .src_constraints = .{67847 .src_constraints = .{
54602 .{ .remainder_int = .{ .of = .qword, .is = .qword } },67848 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
54603 .{ .remainder_int = .{ .of = .qword, .is = .qword } },67849 .{ .remainder_int = .{ .of = .qword, .is = .qword } },
67850 .any,
54604 },67851 },
54605 .patterns = &.{67852 .patterns = &.{
54606 .{ .src = .{ .to_mem, .to_mem } },67853 .{ .src = .{ .to_mem, .to_mem, .none } },
54607 },67854 },
54608 .extra_temps = .{67855 .extra_temps = .{
54609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -54630,9 +67877,10 @@ const Temp = struct {...@@ -54630,9 +67877,10 @@ const Temp = struct {
54630 .src_constraints = .{67877 .src_constraints = .{
54631 .{ .remainder_int = .{ .of = .dword, .is = .dword } },67878 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
54632 .{ .remainder_int = .{ .of = .dword, .is = .dword } },67879 .{ .remainder_int = .{ .of = .dword, .is = .dword } },
67880 .any,
54633 },67881 },
54634 .patterns = &.{67882 .patterns = &.{
54635 .{ .src = .{ .to_mem, .to_mem } },67883 .{ .src = .{ .to_mem, .to_mem, .none } },
54636 },67884 },
54637 .extra_temps = .{67885 .extra_temps = .{
54638 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },67886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
...@@ -55344,7 +68592,7 @@ const Select = struct {...@@ -55344,7 +68592,7 @@ const Select = struct {
55344 };68592 };
5534568593
55346 const Pattern = struct {68594 const Pattern = struct {
55347 src: [2]Src,68595 src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src,
55348 commute: struct { u8, u8 } = .{ 0, 0 },68596 commute: struct { u8, u8 } = .{ 0, 0 },
5534968597
55350 const Src = union(enum) {68598 const Src = union(enum) {
...@@ -55781,6 +69029,7 @@ const Select = struct {...@@ -55781,6 +69029,7 @@ const Select = struct {
55781 dst0,69029 dst0,
55782 src0,69030 src0,
55783 src1,69031 src1,
69032 src2,
55784 none,69033 none,
5578569034
55786 const Sized = packed struct(u8) {69035 const Sized = packed struct(u8) {
...@@ -55920,6 +69169,17 @@ const Select = struct {...@@ -55920,6 +69169,17 @@ const Select = struct {
55920 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };69169 const src1t: Sized = .{ .ref = .src1, .size = .tbyte };
55921 const src1x: Sized = .{ .ref = .src1, .size = .xword };69170 const src1x: Sized = .{ .ref = .src1, .size = .xword };
55922 const src1y: Sized = .{ .ref = .src1, .size = .yword };69171 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 };
55923 };69183 };
5592469184
55925 fn typeOf(ref: Ref, s: *const Select) Type {69185 fn typeOf(ref: Ref, s: *const Select) Type {
...@@ -56064,6 +69324,16 @@ const Select = struct {...@@ -56064,6 +69324,16 @@ const Select = struct {
56064 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };69324 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
56065 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };69325 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
56067 fn si(imm: i32) Select.Operand {69337 fn si(imm: i32) Select.Operand {
56068 return .{ .flags = .{ .tag = .simm }, .imm = imm };69338 return .{ .flags = .{ .tag = .simm }, .imm = imm };
56069 }69339 }
src/arch/x86_64/bits.zig+8-6
...@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {...@@ -177,7 +177,13 @@ pub const Condition = enum(u5) {
177177
178/// The immediate operand of vcvtps2ph.178/// The immediate operand of vcvtps2ph.
179pub const RoundMode = packed struct(u5) {179pub 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) {
181 /// Round to nearest (even)187 /// Round to nearest (even)
182 nearest = 0b0_00,188 nearest = 0b0_00,
183 /// Round down (toward -∞)189 /// Round down (toward -∞)
...@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {...@@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) {
188 zero = 0b0_11,194 zero = 0b0_11,
189 /// Use current rounding mode of MXCSR.RC195 /// Use current rounding mode of MXCSR.RC
190 mxcsr = 0b1_00,196 mxcsr = 0b1_00,
191 } = .mxcsr,197 };
192 precision: enum(u1) {
193 normal = 0b0,
194 inexact = 0b1,
195 } = .normal,
196198
197 pub fn imm(mode: RoundMode) Immediate {199 pub fn imm(mode: RoundMode) Immediate {
198 return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode)));200 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{...@@ -19,7 +19,7 @@ pub const table = [_]Entry{
19 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },19 .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" },
2020
21 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },21 .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" },
22 .{ .aam, .z, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },22 .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" },
2323
24 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },24 .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" },
2525
test/behavior/floatop.zig+18-15
...@@ -156,7 +156,13 @@ test "cmp f128" {...@@ -156,7 +156,13 @@ test "cmp f128" {
156}156}
157157
158test "cmp f80/c_longdouble" {158test "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
161 try testCmp(f80);167 try testCmp(f80);
162 try comptime testCmp(f80);168 try comptime testCmp(f80);
...@@ -453,7 +459,7 @@ test "@sin with vectors" {...@@ -453,7 +459,7 @@ test "@sin with vectors" {
453 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO461 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;
457 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;463 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
458464
459 try testSinWithVectors();465 try testSinWithVectors();
...@@ -526,7 +532,7 @@ test "@cos with vectors" {...@@ -526,7 +532,7 @@ test "@cos with vectors" {
526 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO532 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO533 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO534 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;
530 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531537
532 try testCosWithVectors();538 try testCosWithVectors();
...@@ -600,7 +606,7 @@ test "@tan with vectors" {...@@ -600,7 +606,7 @@ test "@tan with vectors" {
600 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO606 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO608 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;
604 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
605611
606 try testTanWithVectors();612 try testTanWithVectors();
...@@ -677,7 +683,7 @@ test "@exp with vectors" {...@@ -677,7 +683,7 @@ test "@exp with vectors" {
677 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO683 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
678 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO685 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;
681 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;687 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
682688
683 try testExpWithVectors();689 try testExpWithVectors();
...@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {...@@ -749,7 +755,7 @@ test "@exp2 with @vectors" {
749 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
750 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO757 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;
753 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
754760
755 try testExp2WithVectors();761 try testExp2WithVectors();
...@@ -822,7 +828,7 @@ test "@log with @vectors" {...@@ -822,7 +828,7 @@ test "@log with @vectors" {
822 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO830 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;
826 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;832 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
827833
828 {834 {
...@@ -896,7 +902,7 @@ test "@log2 with vectors" {...@@ -896,7 +902,7 @@ test "@log2 with vectors" {
896 if (builtin.zig_backend == .stage2_llvm and902 if (builtin.zig_backend == .stage2_llvm and
897 builtin.cpu.arch == .aarch64 and903 builtin.cpu.arch == .aarch64 and
898 builtin.os.tag == .windows) return error.SkipZigTest;904 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
901 try testLog2WithVectors();907 try testLog2WithVectors();
902 try comptime testLog2WithVectors();908 try comptime testLog2WithVectors();
...@@ -967,7 +973,7 @@ test "@log10 with vectors" {...@@ -967,7 +973,7 @@ test "@log10 with vectors" {
967 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO973 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
968 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO974 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO975 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;
971 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;977 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
972978
973 try testLog10WithVectors();979 try testLog10WithVectors();
...@@ -1188,8 +1194,7 @@ test "@floor with vectors" {...@@ -1188,8 +1194,7 @@ test "@floor with vectors" {
1188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1189 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1195 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1190 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1191 if (builtin.zig_backend == .stage2_x86_64 and1197 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1192 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
11931198
1194 try testFloorWithVectors();1199 try testFloorWithVectors();
1195 try comptime testFloorWithVectors();1200 try comptime testFloorWithVectors();
...@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {...@@ -1286,8 +1291,7 @@ test "@ceil with vectors" {
1286 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1287 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1292 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1288 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1293 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1289 if (builtin.zig_backend == .stage2_x86_64 and1294 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1290 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
12911295
1292 try testCeilWithVectors();1296 try testCeilWithVectors();
1293 try comptime testCeilWithVectors();1297 try comptime testCeilWithVectors();
...@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {...@@ -1384,8 +1388,7 @@ test "@trunc with vectors" {
1384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1385 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1389 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1386 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1390 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_x86_64 and1391 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1388 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
13891392
1390 try testTruncWithVectors();1393 try testTruncWithVectors();
1391 try comptime testTruncWithVectors();1394 try comptime testTruncWithVectors();
test/behavior/muladd.zig+9-13
...@@ -2,16 +2,12 @@ const std = @import("std");...@@ -2,16 +2,12 @@ const std = @import("std");
2const builtin = @import("builtin");2const builtin = @import("builtin");
3const expect = std.testing.expect;3const 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
8test "@mulAdd" {5test "@mulAdd" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 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
16 try comptime testMulAdd();12 try comptime testMulAdd();
17 try testMulAdd();13 try testMulAdd();
...@@ -110,10 +106,10 @@ fn vector16() !void {...@@ -110,10 +106,10 @@ fn vector16() !void {
110106
111test "vector f16" {107test "vector f16" {
112 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 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;
117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;113 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118114
119 try comptime vector16();115 try comptime vector16();
...@@ -135,11 +131,11 @@ fn vector32() !void {...@@ -135,11 +131,11 @@ fn vector32() !void {
135131
136test "vector f32" {132test "vector f32" {
137 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO133 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
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 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
144 try comptime vector32();140 try comptime vector32();
145 try vector32();141 try vector32();
...@@ -160,11 +156,11 @@ fn vector64() !void {...@@ -160,11 +156,11 @@ fn vector64() !void {
160156
161test "vector f64" {157test "vector f64" {
162 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO158 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
165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO161 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
169 try comptime vector64();165 try comptime vector64();
170 try vector64();166 try vector64();
...@@ -184,12 +180,12 @@ fn vector80() !void {...@@ -184,12 +180,12 @@ fn vector80() !void {
184180
185test "vector f80" {181test "vector f80" {
186 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;187 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;
193 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
194190
195 try comptime vector80();191 try comptime vector80();
...@@ -211,12 +207,12 @@ fn vector128() !void {...@@ -211,12 +207,12 @@ fn vector128() !void {
211207
212test "vector f128" {208test "vector f128" {
213 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;214 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;
220 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
221217
222 try comptime vector128();218 try comptime vector128();
test/behavior/vector.zig+1-1
...@@ -102,7 +102,7 @@ test "vector float operators" {...@@ -102,7 +102,7 @@ test "vector float operators" {
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;104 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; // TODO105 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
106106
107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
108 // Triggers an assertion with LLVM 18:108 // 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 {...@@ -37,6 +37,14 @@ inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
37 .vector => @splat(scalar),37 .vector => @splat(scalar),
38 };38 };
39}39}
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}
40fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {48fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
41 else => bool,49 else => bool,
42 .vector => |vector| @Vector(vector.len, bool),50 .vector => |vector| @Vector(vector.len, bool),
...@@ -84,65 +92,78 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {...@@ -84,65 +92,78 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
84 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));92 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));
85}93}
8694
95const Compare = enum { strict, relaxed, approx, approx_int };
87// noinline for a more helpful stack trace96// noinline for a more helpful stack trace
88noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime strict: bool) !void {97noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime compare: Compare) !void {
89 const info = @typeInfo(@TypeOf(expected));98 const Expected = @TypeOf(expected);
90 const unexpected = unexpected: switch (switch (info) {99 const unexpected = unexpected: switch (@typeInfo(Scalar(Expected))) {
91 else => info,
92 .vector => |vector| @typeInfo(vector.child),
93 }) {
94 else => expected != actual,100 else => expected != actual,
95 .float => {101 .float => switch (compare) {
96 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));102 .strict, .relaxed => {
97 break :unexpected switch (strict) {103 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
98 false => unequal,104 break :unexpected switch (compare) {
99 true => boolOr(unequal, sign(expected) != sign(actual)),105 .strict => boolOr(unequal, sign(expected) != sign(actual)),
100 };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 },
101 },122 },
102 };123 };
103 if (switch (info) {124 if (switch (@typeInfo(Expected)) {
104 else => unexpected,125 else => unexpected,
105 .vector => @reduce(.Or, unexpected),126 .vector => @reduce(.Or, unexpected),
106 }) return error.Unexpected;127 }) return error.Unexpected;
107}128}
108test checkExpected {129test checkExpected {
109 if (checkExpected(nan(f16), nan(f16), true) == error.Unexpected) return error.Unexpected;130 if (checkExpected(nan(f16), nan(f16), .strict) == error.Unexpected) return error.Unexpected;
110 if (checkExpected(nan(f16), -nan(f16), true) != error.Unexpected) return error.Unexpected;131 if (checkExpected(nan(f16), -nan(f16), .strict) != error.Unexpected) return error.Unexpected;
111 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), true) == error.Unexpected) return error.Unexpected;132 if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), .strict) == error.Unexpected) return error.Unexpected;
112 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), true) == error.Unexpected) return error.Unexpected;133 if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), .strict) == error.Unexpected) return error.Unexpected;
113 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), true) != error.Unexpected) return error.Unexpected;134 if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), .strict) != error.Unexpected) return error.Unexpected;
114 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), true) != error.Unexpected) return error.Unexpected;135 if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), .strict) != error.Unexpected) return error.Unexpected;
115136
116 if (checkExpected(nan(f32), nan(f32), true) == error.Unexpected) return error.Unexpected;137 if (checkExpected(nan(f32), nan(f32), .strict) == error.Unexpected) return error.Unexpected;
117 if (checkExpected(nan(f32), -nan(f32), true) != error.Unexpected) return error.Unexpected;138 if (checkExpected(nan(f32), -nan(f32), .strict) != error.Unexpected) return error.Unexpected;
118 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), true) == error.Unexpected) return error.Unexpected;139 if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), .strict) == error.Unexpected) return error.Unexpected;
119 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), true) == error.Unexpected) return error.Unexpected;140 if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), .strict) == error.Unexpected) return error.Unexpected;
120 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), true) != error.Unexpected) return error.Unexpected;141 if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), .strict) != error.Unexpected) return error.Unexpected;
121 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), true) != error.Unexpected) return error.Unexpected;142 if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), .strict) != error.Unexpected) return error.Unexpected;
122143
123 if (checkExpected(nan(f64), nan(f64), true) == error.Unexpected) return error.Unexpected;144 if (checkExpected(nan(f64), nan(f64), .strict) == error.Unexpected) return error.Unexpected;
124 if (checkExpected(nan(f64), -nan(f64), true) != error.Unexpected) return error.Unexpected;145 if (checkExpected(nan(f64), -nan(f64), .strict) != error.Unexpected) return error.Unexpected;
125 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), true) == error.Unexpected) return error.Unexpected;146 if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), .strict) == error.Unexpected) return error.Unexpected;
126 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), true) == error.Unexpected) return error.Unexpected;147 if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), .strict) == error.Unexpected) return error.Unexpected;
127 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), true) != error.Unexpected) return error.Unexpected;148 if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), .strict) != error.Unexpected) return error.Unexpected;
128 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), true) != error.Unexpected) return error.Unexpected;149 if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), .strict) != error.Unexpected) return error.Unexpected;
129150
130 if (checkExpected(nan(f80), nan(f80), true) == error.Unexpected) return error.Unexpected;151 if (checkExpected(nan(f80), nan(f80), .strict) == error.Unexpected) return error.Unexpected;
131 if (checkExpected(nan(f80), -nan(f80), true) != error.Unexpected) return error.Unexpected;152 if (checkExpected(nan(f80), -nan(f80), .strict) != error.Unexpected) return error.Unexpected;
132 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), true) == error.Unexpected) return error.Unexpected;153 if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), .strict) == error.Unexpected) return error.Unexpected;
133 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), true) == error.Unexpected) return error.Unexpected;154 if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), .strict) == error.Unexpected) return error.Unexpected;
134 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), true) != error.Unexpected) return error.Unexpected;155 if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), .strict) != error.Unexpected) return error.Unexpected;
135 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), true) != error.Unexpected) return error.Unexpected;156 if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), .strict) != error.Unexpected) return error.Unexpected;
136157
137 if (checkExpected(nan(f128), nan(f128), true) == error.Unexpected) return error.Unexpected;158 if (checkExpected(nan(f128), nan(f128), .strict) == error.Unexpected) return error.Unexpected;
138 if (checkExpected(nan(f128), -nan(f128), true) != error.Unexpected) return error.Unexpected;159 if (checkExpected(nan(f128), -nan(f128), .strict) != error.Unexpected) return error.Unexpected;
139 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), true) == error.Unexpected) return error.Unexpected;160 if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), .strict) == error.Unexpected) return error.Unexpected;
140 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), true) == error.Unexpected) return error.Unexpected;161 if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), .strict) == error.Unexpected) return error.Unexpected;
141 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), true) != error.Unexpected) return error.Unexpected;162 if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), .strict) != error.Unexpected) return error.Unexpected;
142 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), true) != error.Unexpected) return error.Unexpected;163 if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), .strict) != error.Unexpected) return error.Unexpected;
143}164}
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 {
146 return struct {167 return struct {
147 // noinline so that `mem_arg` is on the stack168 // noinline so that `mem_arg` is on the stack
148 noinline fn testArgKinds(169 noinline fn testArgKinds(
...@@ -169,9 +190,9 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -169,9 +190,9 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
169 const expected = comptime op(Type, imm_arg);190 const expected = comptime op(Type, imm_arg);
170 var reg_arg = mem_arg;191 var reg_arg = mem_arg;
171 _ = .{&reg_arg};192 _ = .{&reg_arg};
172 try checkExpected(expected, op(Type, reg_arg), opts.strict);193 try checkExpected(expected, op(Type, reg_arg), opts.compare);
173 try checkExpected(expected, op(Type, mem_arg), opts.strict);194 try checkExpected(expected, op(Type, mem_arg), opts.compare);
174 try checkExpected(expected, op(Type, imm_arg), opts.strict);195 try checkExpected(expected, op(Type, imm_arg), opts.compare);
175 }196 }
176 // noinline for a more helpful stack trace197 // noinline for a more helpful stack trace
177 noinline fn testArgs(comptime Type: type, comptime imm_arg: Type) !void {198 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...@@ -1628,7 +1649,7 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
1628 };1649 };
1629}1650}
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 {
1632 return struct {1653 return struct {
1633 // noinline so that `mem_arg` is on the stack1654 // noinline so that `mem_arg` is on the stack
1634 noinline fn testArgKinds(1655 noinline fn testArgKinds(
...@@ -1656,9 +1677,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty...@@ -1656,9 +1677,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
1656 const expected = comptime op(Result, Type, imm_arg, imm_arg);1677 const expected = comptime op(Result, Type, imm_arg, imm_arg);
1657 var reg_arg = mem_arg;1678 var reg_arg = mem_arg;
1658 _ = .{&reg_arg};1679 _ = .{&reg_arg};
1659 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict);1680 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.compare);
1660 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict);1681 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.compare);
1661 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict);1682 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.compare);
1662 }1683 }
1663 // noinline for a more helpful stack trace1684 // noinline for a more helpful stack trace
1664 noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {1685 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...@@ -8504,7 +8525,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty
8504 };8525 };
8505}8526}
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 {
8508 return struct {8529 return struct {
8509 // noinline so that `mem_lhs` and `mem_rhs` are on the stack8530 // noinline so that `mem_lhs` and `mem_rhs` are on the stack
8510 noinline fn testArgKinds(8531 noinline fn testArgKinds(
...@@ -8534,14 +8555,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -8534,14 +8555,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
8534 var reg_lhs = mem_lhs;8555 var reg_lhs = mem_lhs;
8535 var reg_rhs = mem_rhs;8556 var reg_rhs = mem_rhs;
8536 _ = .{ &reg_lhs, &reg_rhs };8557 _ = .{ &reg_lhs, &reg_rhs };
8537 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.strict);8558 try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.compare);
8538 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.strict);8559 try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.compare);
8539 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.strict);8560 try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.compare);
8540 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.strict);8561 try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.compare);
8541 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.strict);8562 try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.compare);
8542 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.strict);8563 try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.compare);
8543 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.strict);8564 try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.compare);
8544 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.strict);8565 try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.compare);
8545 }8566 }
8546 // noinline for a more helpful stack trace8567 // noinline for a more helpful stack trace
8547 noinline fn testArgs(comptime Type: type, comptime imm_lhs: Type, comptime imm_rhs: Type) !void {8568 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 })...@@ -11315,6 +11336,124 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
11315 };11336 };
11316}11337}
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
11318inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {11457inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {
11319 return ~rhs;11458 return ~rhs;
11320}11459}
...@@ -11324,24 +11463,150 @@ test bitNot {...@@ -11324,24 +11463,150 @@ test bitNot {
11324 try test_bit_not.testIntVectors();11463 try test_bit_not.testIntVectors();
11325}11464}
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
11327inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {11556inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {
11328 return @abs(rhs);11557 return @abs(rhs);
11329}11558}
11330test abs {11559test abs {
11331 const test_abs = unary(abs, .{ .strict = true });11560 const test_abs = unary(abs, .{ .compare = .strict });
11332 try test_abs.testInts();11561 try test_abs.testInts();
11333 try test_abs.testIntVectors();11562 try test_abs.testIntVectors();
11334 try test_abs.testFloats();11563 try test_abs.testFloats();
11335 try test_abs.testFloatVectors();11564 try test_abs.testFloatVectors();
11336}11565}
1133711566
11338inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {11567inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {
11339 return @clz(rhs);11568 return @floor(rhs);
11340}11569}
11341test clz {11570test floor {
11342 const test_clz = unary(clz, .{});11571 const test_floor = unary(floor, .{ .compare = .strict });
11343 try test_clz.testInts();11572 try test_floor.testFloats();
11344 try test_clz.testIntVectors();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();
11345}11610}
1134611611
11347inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {11612inline 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...@@ -11407,7 +11672,7 @@ inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, compt
11407 return @floatCast(rhs);11672 return @floatCast(rhs);
11408}11673}
11409test floatCast {11674test floatCast {
11410 const test_float_cast = cast(floatCast, .{ .strict = true });11675 const test_float_cast = cast(floatCast, .{ .compare = .strict });
11411 try test_float_cast.testFloats();11676 try test_float_cast.testFloats();
11412 try test_float_cast.testFloatVectors();11677 try test_float_cast.testFloatVectors();
11413}11678}
...@@ -11610,3 +11875,12 @@ test optionalsNotEqual {...@@ -11610,3 +11875,12 @@ test optionalsNotEqual {
11610 try test_optionals_not_equal.testInts();11875 try test_optionals_not_equal.testInts();
11611 try test_optionals_not_equal.testFloats();11876 try test_optionals_not_equal.testFloats();
11612}11877}
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}