| ... | ... | @@ -2393,7 +2393,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2393 | 2393 | } |
| 2394 | 2394 | |
| 2395 | 2395 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2396 | | @setEvalBranchQuota(1_800); |
| 2396 | @setEvalBranchQuota(2_700); |
| 2397 | 2397 | const pt = cg.pt; |
| 2398 | 2398 | const zcu = pt.zcu; |
| 2399 | 2399 | const ip = &zcu.intern_pool; |
| ... | ... | @@ -2984,6 +2984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2984 | 2984 | .unused, |
| 2985 | 2985 | .unused, |
| 2986 | 2986 | .unused, |
| 2987 | .unused, |
| 2988 | .unused, |
| 2989 | .unused, |
| 2987 | 2990 | }, |
| 2988 | 2991 | .dst_temps = .{.mem}, |
| 2989 | 2992 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3008,6 +3011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3008 | 3011 | .unused, |
| 3009 | 3012 | .unused, |
| 3010 | 3013 | .unused, |
| 3014 | .unused, |
| 3015 | .unused, |
| 3016 | .unused, |
| 3011 | 3017 | }, |
| 3012 | 3018 | .dst_temps = .{.mem}, |
| 3013 | 3019 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3032,6 +3038,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3032 | 3038 | .unused, |
| 3033 | 3039 | .unused, |
| 3034 | 3040 | .unused, |
| 3041 | .unused, |
| 3042 | .unused, |
| 3043 | .unused, |
| 3035 | 3044 | }, |
| 3036 | 3045 | .dst_temps = .{.mem}, |
| 3037 | 3046 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3056,6 +3065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3056 | 3065 | .unused, |
| 3057 | 3066 | .unused, |
| 3058 | 3067 | .unused, |
| 3068 | .unused, |
| 3069 | .unused, |
| 3070 | .unused, |
| 3059 | 3071 | }, |
| 3060 | 3072 | .dst_temps = .{.mem}, |
| 3061 | 3073 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3080,6 +3092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3080 | 3092 | .unused, |
| 3081 | 3093 | .unused, |
| 3082 | 3094 | .unused, |
| 3095 | .unused, |
| 3096 | .unused, |
| 3097 | .unused, |
| 3083 | 3098 | }, |
| 3084 | 3099 | .dst_temps = .{.mem}, |
| 3085 | 3100 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3104,6 +3119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3104 | 3119 | .unused, |
| 3105 | 3120 | .unused, |
| 3106 | 3121 | .unused, |
| 3122 | .unused, |
| 3123 | .unused, |
| 3124 | .unused, |
| 3107 | 3125 | }, |
| 3108 | 3126 | .dst_temps = .{.mem}, |
| 3109 | 3127 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3127,6 +3145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3127 | 3145 | .unused, |
| 3128 | 3146 | .unused, |
| 3129 | 3147 | .unused, |
| 3148 | .unused, |
| 3149 | .unused, |
| 3150 | .unused, |
| 3130 | 3151 | }, |
| 3131 | 3152 | .dst_temps = .{.mem}, |
| 3132 | 3153 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3265,6 +3286,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3265 | 3286 | .unused, |
| 3266 | 3287 | .unused, |
| 3267 | 3288 | .unused, |
| 3289 | .unused, |
| 3290 | .unused, |
| 3291 | .unused, |
| 3268 | 3292 | }, |
| 3269 | 3293 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3270 | 3294 | .each = .{ .once = &.{ |
| ... | ... | @@ -3296,6 +3320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3296 | 3320 | .unused, |
| 3297 | 3321 | .unused, |
| 3298 | 3322 | .unused, |
| 3323 | .unused, |
| 3324 | .unused, |
| 3325 | .unused, |
| 3299 | 3326 | }, |
| 3300 | 3327 | .dst_temps = .{.{ .rc = .sse }}, |
| 3301 | 3328 | .each = .{ .once = &.{ |
| ... | ... | @@ -3327,6 +3354,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3327 | 3354 | .unused, |
| 3328 | 3355 | .unused, |
| 3329 | 3356 | .unused, |
| 3357 | .unused, |
| 3358 | .unused, |
| 3359 | .unused, |
| 3330 | 3360 | }, |
| 3331 | 3361 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3332 | 3362 | .each = .{ .once = &.{ |
| ... | ... | @@ -3346,6 +3376,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3346 | 3376 | .unused, |
| 3347 | 3377 | .unused, |
| 3348 | 3378 | .unused, |
| 3379 | .unused, |
| 3380 | .unused, |
| 3381 | .unused, |
| 3349 | 3382 | }, |
| 3350 | 3383 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3351 | 3384 | .each = .{ .once = &.{ |
| ... | ... | @@ -3377,6 +3410,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3377 | 3410 | .unused, |
| 3378 | 3411 | .unused, |
| 3379 | 3412 | .unused, |
| 3413 | .unused, |
| 3414 | .unused, |
| 3415 | .unused, |
| 3380 | 3416 | }, |
| 3381 | 3417 | .dst_temps = .{.{ .rc = .sse }}, |
| 3382 | 3418 | .each = .{ .once = &.{ |
| ... | ... | @@ -3392,7 +3428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3392 | 3428 | }, |
| 3393 | 3429 | .dst_temps = .{.{ .rc = .sse }}, |
| 3394 | 3430 | .each = .{ .once = &.{ |
| 3395 | | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .si(0b01111) }, |
| 3431 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .ui(0b01111) }, |
| 3396 | 3432 | .{ ._, .v_pd, .xor, .dst0y, .dst0y, .src0y, ._ }, |
| 3397 | 3433 | } }, |
| 3398 | 3434 | }, .{ |
| ... | ... | @@ -3408,6 +3444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3408 | 3444 | .unused, |
| 3409 | 3445 | .unused, |
| 3410 | 3446 | .unused, |
| 3447 | .unused, |
| 3448 | .unused, |
| 3449 | .unused, |
| 3411 | 3450 | }, |
| 3412 | 3451 | .dst_temps = .{.{ .rc = .sse }}, |
| 3413 | 3452 | .each = .{ .once = &.{ |
| ... | ... | @@ -3427,6 +3466,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3427 | 3466 | .unused, |
| 3428 | 3467 | .unused, |
| 3429 | 3468 | .unused, |
| 3469 | .unused, |
| 3470 | .unused, |
| 3471 | .unused, |
| 3430 | 3472 | }, |
| 3431 | 3473 | .dst_temps = .{.mem}, |
| 3432 | 3474 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3453,6 +3495,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3453 | 3495 | .unused, |
| 3454 | 3496 | .unused, |
| 3455 | 3497 | .unused, |
| 3498 | .unused, |
| 3499 | .unused, |
| 3500 | .unused, |
| 3456 | 3501 | }, |
| 3457 | 3502 | .dst_temps = .{.mem}, |
| 3458 | 3503 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3477,12 +3522,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3477 | 3522 | .unused, |
| 3478 | 3523 | .unused, |
| 3479 | 3524 | .unused, |
| 3525 | .unused, |
| 3526 | .unused, |
| 3527 | .unused, |
| 3480 | 3528 | }, |
| 3481 | 3529 | .dst_temps = .{.mem}, |
| 3482 | 3530 | .clobbers = .{ .eflags = true }, |
| 3483 | 3531 | .each = .{ .once = &.{ |
| 3484 | 3532 | .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_size), ._, ._ }, |
| 3485 | | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .si(0b01111) }, |
| 3533 | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .ui(0b01111) }, |
| 3486 | 3534 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memiad(.src0y, .tmp0, .add_size, -16), ._ }, |
| 3487 | 3535 | .{ ._, .v_pd, .movu, .memiad(.dst0y, .tmp0, .add_size, -16), .tmp2y, ._, ._ }, |
| 3488 | 3536 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| ... | ... | @@ -3503,12 +3551,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3503 | 3551 | .unused, |
| 3504 | 3552 | .unused, |
| 3505 | 3553 | .unused, |
| 3554 | .unused, |
| 3555 | .unused, |
| 3556 | .unused, |
| 3506 | 3557 | }, |
| 3507 | 3558 | .dst_temps = .{.mem}, |
| 3508 | 3559 | .clobbers = .{ .eflags = true }, |
| 3509 | 3560 | .each = .{ .once = &.{ |
| 3510 | 3561 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 3511 | | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .si(0b01111) }, |
| 3562 | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .ui(0b01111) }, |
| 3512 | 3563 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 3513 | 3564 | .{ ._, .v_pd, .movu, .memia(.dst0y, .tmp0, .add_size), .tmp2y, ._, ._ }, |
| 3514 | 3565 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| ... | ... | @@ -3527,6 +3578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3527 | 3578 | .unused, |
| 3528 | 3579 | .unused, |
| 3529 | 3580 | .unused, |
| 3581 | .unused, |
| 3582 | .unused, |
| 3583 | .unused, |
| 3530 | 3584 | }, |
| 3531 | 3585 | .dst_temps = .{.mem}, |
| 3532 | 3586 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3551,6 +3605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3551 | 3605 | .unused, |
| 3552 | 3606 | .unused, |
| 3553 | 3607 | .unused, |
| 3608 | .unused, |
| 3609 | .unused, |
| 3610 | .unused, |
| 3554 | 3611 | }, |
| 3555 | 3612 | .dst_temps = .{.mem}, |
| 3556 | 3613 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3576,6 +3633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3576 | 3633 | .unused, |
| 3577 | 3634 | .unused, |
| 3578 | 3635 | .unused, |
| 3636 | .unused, |
| 3637 | .unused, |
| 3638 | .unused, |
| 3579 | 3639 | }, |
| 3580 | 3640 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3581 | 3641 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3599,6 +3659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3599 | 3659 | .unused, |
| 3600 | 3660 | .unused, |
| 3601 | 3661 | .unused, |
| 3662 | .unused, |
| 3663 | .unused, |
| 3664 | .unused, |
| 3602 | 3665 | }, |
| 3603 | 3666 | .dst_temps = .{.mem}, |
| 3604 | 3667 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3623,6 +3686,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3623 | 3686 | .unused, |
| 3624 | 3687 | .unused, |
| 3625 | 3688 | .unused, |
| 3689 | .unused, |
| 3690 | .unused, |
| 3691 | .unused, |
| 3626 | 3692 | }, |
| 3627 | 3693 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3628 | 3694 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3647,6 +3713,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3647 | 3713 | .unused, |
| 3648 | 3714 | .unused, |
| 3649 | 3715 | .unused, |
| 3716 | .unused, |
| 3717 | .unused, |
| 3718 | .unused, |
| 3650 | 3719 | }, |
| 3651 | 3720 | .dst_temps = .{.mem}, |
| 3652 | 3721 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3676,6 +3745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3676 | 3745 | .unused, |
| 3677 | 3746 | .unused, |
| 3678 | 3747 | .unused, |
| 3748 | .unused, |
| 3749 | .unused, |
| 3750 | .unused, |
| 3679 | 3751 | }, |
| 3680 | 3752 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3681 | 3753 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3700,6 +3772,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3700 | 3772 | .unused, |
| 3701 | 3773 | .unused, |
| 3702 | 3774 | .unused, |
| 3775 | .unused, |
| 3776 | .unused, |
| 3777 | .unused, |
| 3703 | 3778 | }, |
| 3704 | 3779 | .dst_temps = .{.mem}, |
| 3705 | 3780 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3725,6 +3800,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3725 | 3800 | .unused, |
| 3726 | 3801 | .unused, |
| 3727 | 3802 | .unused, |
| 3803 | .unused, |
| 3804 | .unused, |
| 3805 | .unused, |
| 3728 | 3806 | }, |
| 3729 | 3807 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3730 | 3808 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3748,6 +3826,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3748 | 3826 | .unused, |
| 3749 | 3827 | .unused, |
| 3750 | 3828 | .unused, |
| 3829 | .unused, |
| 3830 | .unused, |
| 3831 | .unused, |
| 3751 | 3832 | }, |
| 3752 | 3833 | .dst_temps = .{.mem}, |
| 3753 | 3834 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3776,6 +3857,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3776 | 3857 | .unused, |
| 3777 | 3858 | .unused, |
| 3778 | 3859 | .unused, |
| 3860 | .unused, |
| 3861 | .unused, |
| 3862 | .unused, |
| 3779 | 3863 | }, |
| 3780 | 3864 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3781 | 3865 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3800,6 +3884,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3800 | 3884 | .unused, |
| 3801 | 3885 | .unused, |
| 3802 | 3886 | .unused, |
| 3887 | .unused, |
| 3888 | .unused, |
| 3889 | .unused, |
| 3803 | 3890 | }, |
| 3804 | 3891 | .dst_temps = .{.mem}, |
| 3805 | 3892 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3829,6 +3916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3829 | 3916 | .unused, |
| 3830 | 3917 | .unused, |
| 3831 | 3918 | .unused, |
| 3919 | .unused, |
| 3920 | .unused, |
| 3921 | .unused, |
| 3832 | 3922 | }, |
| 3833 | 3923 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3834 | 3924 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3852,6 +3942,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3852 | 3942 | .unused, |
| 3853 | 3943 | .unused, |
| 3854 | 3944 | .unused, |
| 3945 | .unused, |
| 3946 | .unused, |
| 3947 | .unused, |
| 3855 | 3948 | }, |
| 3856 | 3949 | .dst_temps = .{.mem}, |
| 3857 | 3950 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3880,6 +3973,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3880 | 3973 | .unused, |
| 3881 | 3974 | .unused, |
| 3882 | 3975 | .unused, |
| 3976 | .unused, |
| 3977 | .unused, |
| 3978 | .unused, |
| 3883 | 3979 | }, |
| 3884 | 3980 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3885 | 3981 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3905,6 +4001,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3905 | 4001 | .unused, |
| 3906 | 4002 | .unused, |
| 3907 | 4003 | .unused, |
| 4004 | .unused, |
| 4005 | .unused, |
| 4006 | .unused, |
| 3908 | 4007 | }, |
| 3909 | 4008 | .dst_temps = .{.mem}, |
| 3910 | 4009 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3933,6 +4032,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3933 | 4032 | .unused, |
| 3934 | 4033 | .unused, |
| 3935 | 4034 | .unused, |
| 4035 | .unused, |
| 4036 | .unused, |
| 4037 | .unused, |
| 3936 | 4038 | }, |
| 3937 | 4039 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3938 | 4040 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3957,6 +4059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3957 | 4059 | .unused, |
| 3958 | 4060 | .unused, |
| 3959 | 4061 | .unused, |
| 4062 | .unused, |
| 4063 | .unused, |
| 4064 | .unused, |
| 3960 | 4065 | }, |
| 3961 | 4066 | .dst_temps = .{.mem}, |
| 3962 | 4067 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -3996,6 +4101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3996 | 4101 | .unused, |
| 3997 | 4102 | .unused, |
| 3998 | 4103 | .unused, |
| 4104 | .unused, |
| 4105 | .unused, |
| 4106 | .unused, |
| 3999 | 4107 | }, |
| 4000 | 4108 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4001 | 4109 | .each = .{ .once = &.{ |
| ... | ... | @@ -4027,6 +4135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4027 | 4135 | .unused, |
| 4028 | 4136 | .unused, |
| 4029 | 4137 | .unused, |
| 4138 | .unused, |
| 4139 | .unused, |
| 4140 | .unused, |
| 4030 | 4141 | }, |
| 4031 | 4142 | .dst_temps = .{.{ .rc = .sse }}, |
| 4032 | 4143 | .each = .{ .once = &.{ |
| ... | ... | @@ -4058,6 +4169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4058 | 4169 | .unused, |
| 4059 | 4170 | .unused, |
| 4060 | 4171 | .unused, |
| 4172 | .unused, |
| 4173 | .unused, |
| 4174 | .unused, |
| 4061 | 4175 | }, |
| 4062 | 4176 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4063 | 4177 | .each = .{ .once = &.{ |
| ... | ... | @@ -4077,6 +4191,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4077 | 4191 | .unused, |
| 4078 | 4192 | .unused, |
| 4079 | 4193 | .unused, |
| 4194 | .unused, |
| 4195 | .unused, |
| 4196 | .unused, |
| 4080 | 4197 | }, |
| 4081 | 4198 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4082 | 4199 | .each = .{ .once = &.{ |
| ... | ... | @@ -4108,6 +4225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4108 | 4225 | .unused, |
| 4109 | 4226 | .unused, |
| 4110 | 4227 | .unused, |
| 4228 | .unused, |
| 4229 | .unused, |
| 4230 | .unused, |
| 4111 | 4231 | }, |
| 4112 | 4232 | .dst_temps = .{.{ .rc = .sse }}, |
| 4113 | 4233 | .each = .{ .once = &.{ |
| ... | ... | @@ -4123,7 +4243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4123 | 4243 | }, |
| 4124 | 4244 | .dst_temps = .{.{ .rc = .sse }}, |
| 4125 | 4245 | .each = .{ .once = &.{ |
| 4126 | | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .si(0b01111) }, |
| 4246 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .ui(0b01111) }, |
| 4127 | 4247 | .{ ._, .v_pd, .xor, .dst0y, .dst0y, .src0y, ._ }, |
| 4128 | 4248 | } }, |
| 4129 | 4249 | }, .{ |
| ... | ... | @@ -4139,6 +4259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4139 | 4259 | .unused, |
| 4140 | 4260 | .unused, |
| 4141 | 4261 | .unused, |
| 4262 | .unused, |
| 4263 | .unused, |
| 4264 | .unused, |
| 4142 | 4265 | }, |
| 4143 | 4266 | .dst_temps = .{.{ .rc = .sse }}, |
| 4144 | 4267 | .each = .{ .once = &.{ |
| ... | ... | @@ -4157,6 +4280,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4157 | 4280 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, |
| 4158 | 4281 | .unused, |
| 4159 | 4282 | .unused, |
| 4283 | .unused, |
| 4284 | .unused, |
| 4285 | .unused, |
| 4160 | 4286 | }, |
| 4161 | 4287 | .dst_temps = .{.mem}, |
| 4162 | 4288 | .each = .{ .once = &.{ |
| ... | ... | @@ -4179,6 +4305,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4179 | 4305 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, |
| 4180 | 4306 | .unused, |
| 4181 | 4307 | .unused, |
| 4308 | .unused, |
| 4309 | .unused, |
| 4310 | .unused, |
| 4182 | 4311 | }, |
| 4183 | 4312 | .dst_temps = .{.mem}, |
| 4184 | 4313 | .each = .{ .once = &.{ |
| ... | ... | @@ -4517,6 +4646,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4517 | 4646 | .unused, |
| 4518 | 4647 | .unused, |
| 4519 | 4648 | .unused, |
| 4649 | .unused, |
| 4650 | .unused, |
| 4651 | .unused, |
| 4520 | 4652 | }, |
| 4521 | 4653 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4522 | 4654 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4541,6 +4673,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4541 | 4673 | .unused, |
| 4542 | 4674 | .unused, |
| 4543 | 4675 | .unused, |
| 4676 | .unused, |
| 4677 | .unused, |
| 4678 | .unused, |
| 4544 | 4679 | }, |
| 4545 | 4680 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4546 | 4681 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4566,6 +4701,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4566 | 4701 | .unused, |
| 4567 | 4702 | .unused, |
| 4568 | 4703 | .unused, |
| 4704 | .unused, |
| 4705 | .unused, |
| 4706 | .unused, |
| 4569 | 4707 | }, |
| 4570 | 4708 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4571 | 4709 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4592,6 +4730,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4592 | 4730 | .unused, |
| 4593 | 4731 | .unused, |
| 4594 | 4732 | .unused, |
| 4733 | .unused, |
| 4734 | .unused, |
| 4735 | .unused, |
| 4595 | 4736 | }, |
| 4596 | 4737 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4597 | 4738 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4650,6 +4791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4650 | 4791 | .unused, |
| 4651 | 4792 | .unused, |
| 4652 | 4793 | .unused, |
| 4794 | .unused, |
| 4795 | .unused, |
| 4796 | .unused, |
| 4653 | 4797 | }, |
| 4654 | 4798 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4655 | 4799 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4676,6 +4820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4676 | 4820 | .unused, |
| 4677 | 4821 | .unused, |
| 4678 | 4822 | .unused, |
| 4823 | .unused, |
| 4824 | .unused, |
| 4825 | .unused, |
| 4679 | 4826 | }, |
| 4680 | 4827 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4681 | 4828 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4700,6 +4847,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4700 | 4847 | .unused, |
| 4701 | 4848 | .unused, |
| 4702 | 4849 | .unused, |
| 4850 | .unused, |
| 4851 | .unused, |
| 4852 | .unused, |
| 4703 | 4853 | }, |
| 4704 | 4854 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4705 | 4855 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4722,6 +4872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4722 | 4872 | .unused, |
| 4723 | 4873 | .unused, |
| 4724 | 4874 | .unused, |
| 4875 | .unused, |
| 4876 | .unused, |
| 4877 | .unused, |
| 4725 | 4878 | }, |
| 4726 | 4879 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4727 | 4880 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4745,6 +4898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4745 | 4898 | .unused, |
| 4746 | 4899 | .unused, |
| 4747 | 4900 | .unused, |
| 4901 | .unused, |
| 4902 | .unused, |
| 4903 | .unused, |
| 4748 | 4904 | }, |
| 4749 | 4905 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4750 | 4906 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4769,6 +4925,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4769 | 4925 | .unused, |
| 4770 | 4926 | .unused, |
| 4771 | 4927 | .unused, |
| 4928 | .unused, |
| 4929 | .unused, |
| 4930 | .unused, |
| 4772 | 4931 | }, |
| 4773 | 4932 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4774 | 4933 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4894,6 +5053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4894 | 5053 | .unused, |
| 4895 | 5054 | .unused, |
| 4896 | 5055 | .unused, |
| 5056 | .unused, |
| 5057 | .unused, |
| 5058 | .unused, |
| 4897 | 5059 | }, |
| 4898 | 5060 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4899 | 5061 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -4917,6 +5079,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4917 | 5079 | .unused, |
| 4918 | 5080 | .unused, |
| 4919 | 5081 | .unused, |
| 5082 | .unused, |
| 5083 | .unused, |
| 5084 | .unused, |
| 4920 | 5085 | }, |
| 4921 | 5086 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4922 | 5087 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5041,6 +5206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5041 | 5206 | .unused, |
| 5042 | 5207 | .unused, |
| 5043 | 5208 | .unused, |
| 5209 | .unused, |
| 5210 | .unused, |
| 5211 | .unused, |
| 5044 | 5212 | }, |
| 5045 | 5213 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5046 | 5214 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5064,6 +5232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5064 | 5232 | .unused, |
| 5065 | 5233 | .unused, |
| 5066 | 5234 | .unused, |
| 5235 | .unused, |
| 5236 | .unused, |
| 5237 | .unused, |
| 5067 | 5238 | }, |
| 5068 | 5239 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5069 | 5240 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5101,6 +5272,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5101 | 5272 | .unused, |
| 5102 | 5273 | .unused, |
| 5103 | 5274 | .unused, |
| 5275 | .unused, |
| 5276 | .unused, |
| 5277 | .unused, |
| 5104 | 5278 | }, |
| 5105 | 5279 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5106 | 5280 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5156,6 +5330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5156 | 5330 | .unused, |
| 5157 | 5331 | .unused, |
| 5158 | 5332 | .unused, |
| 5333 | .unused, |
| 5334 | .unused, |
| 5335 | .unused, |
| 5159 | 5336 | }, |
| 5160 | 5337 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5161 | 5338 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5211,6 +5388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5211 | 5388 | .unused, |
| 5212 | 5389 | .unused, |
| 5213 | 5390 | .unused, |
| 5391 | .unused, |
| 5392 | .unused, |
| 5393 | .unused, |
| 5214 | 5394 | }, |
| 5215 | 5395 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5216 | 5396 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5236,6 +5416,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5236 | 5416 | .unused, |
| 5237 | 5417 | .unused, |
| 5238 | 5418 | .unused, |
| 5419 | .unused, |
| 5420 | .unused, |
| 5421 | .unused, |
| 5239 | 5422 | }, |
| 5240 | 5423 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5241 | 5424 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5258,6 +5441,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5258 | 5441 | .unused, |
| 5259 | 5442 | .unused, |
| 5260 | 5443 | .unused, |
| 5444 | .unused, |
| 5445 | .unused, |
| 5446 | .unused, |
| 5261 | 5447 | }, |
| 5262 | 5448 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5263 | 5449 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5285,6 +5471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5285 | 5471 | .unused, |
| 5286 | 5472 | .unused, |
| 5287 | 5473 | .unused, |
| 5474 | .unused, |
| 5475 | .unused, |
| 5476 | .unused, |
| 5288 | 5477 | }, |
| 5289 | 5478 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5290 | 5479 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5311,6 +5500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5311 | 5500 | .unused, |
| 5312 | 5501 | .unused, |
| 5313 | 5502 | .unused, |
| 5503 | .unused, |
| 5504 | .unused, |
| 5505 | .unused, |
| 5314 | 5506 | }, |
| 5315 | 5507 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5316 | 5508 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5339,6 +5531,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5339 | 5531 | .unused, |
| 5340 | 5532 | .unused, |
| 5341 | 5533 | .unused, |
| 5534 | .unused, |
| 5535 | .unused, |
| 5536 | .unused, |
| 5342 | 5537 | }, |
| 5343 | 5538 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5344 | 5539 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5366,6 +5561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5366 | 5561 | .unused, |
| 5367 | 5562 | .unused, |
| 5368 | 5563 | .unused, |
| 5564 | .unused, |
| 5565 | .unused, |
| 5566 | .unused, |
| 5369 | 5567 | }, |
| 5370 | 5568 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5371 | 5569 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5393,6 +5591,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5393 | 5591 | .unused, |
| 5394 | 5592 | .unused, |
| 5395 | 5593 | .unused, |
| 5594 | .unused, |
| 5595 | .unused, |
| 5596 | .unused, |
| 5396 | 5597 | }, |
| 5397 | 5598 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5398 | 5599 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5419,6 +5620,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5419 | 5620 | .unused, |
| 5420 | 5621 | .unused, |
| 5421 | 5622 | .unused, |
| 5623 | .unused, |
| 5624 | .unused, |
| 5625 | .unused, |
| 5422 | 5626 | }, |
| 5423 | 5627 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5424 | 5628 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5447,6 +5651,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5447 | 5651 | .unused, |
| 5448 | 5652 | .unused, |
| 5449 | 5653 | .unused, |
| 5654 | .unused, |
| 5655 | .unused, |
| 5656 | .unused, |
| 5450 | 5657 | }, |
| 5451 | 5658 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5452 | 5659 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5474,6 +5681,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5474 | 5681 | .unused, |
| 5475 | 5682 | .unused, |
| 5476 | 5683 | .unused, |
| 5684 | .unused, |
| 5685 | .unused, |
| 5686 | .unused, |
| 5477 | 5687 | }, |
| 5478 | 5688 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5479 | 5689 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5504,6 +5714,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5504 | 5714 | .unused, |
| 5505 | 5715 | .unused, |
| 5506 | 5716 | .unused, |
| 5717 | .unused, |
| 5718 | .unused, |
| 5719 | .unused, |
| 5507 | 5720 | }, |
| 5508 | 5721 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5509 | 5722 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5533,6 +5746,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5533 | 5746 | .unused, |
| 5534 | 5747 | .unused, |
| 5535 | 5748 | .unused, |
| 5749 | .unused, |
| 5750 | .unused, |
| 5751 | .unused, |
| 5536 | 5752 | }, |
| 5537 | 5753 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5538 | 5754 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5562,6 +5778,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5562 | 5778 | .unused, |
| 5563 | 5779 | .unused, |
| 5564 | 5780 | .unused, |
| 5781 | .unused, |
| 5782 | .unused, |
| 5783 | .unused, |
| 5565 | 5784 | }, |
| 5566 | 5785 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5567 | 5786 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5592,6 +5811,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5592 | 5811 | .unused, |
| 5593 | 5812 | .unused, |
| 5594 | 5813 | .unused, |
| 5814 | .unused, |
| 5815 | .unused, |
| 5816 | .unused, |
| 5595 | 5817 | }, |
| 5596 | 5818 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5597 | 5819 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5621,6 +5843,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5621 | 5843 | .unused, |
| 5622 | 5844 | .unused, |
| 5623 | 5845 | .unused, |
| 5846 | .unused, |
| 5847 | .unused, |
| 5848 | .unused, |
| 5624 | 5849 | }, |
| 5625 | 5850 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5626 | 5851 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5650,6 +5875,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5650 | 5875 | .unused, |
| 5651 | 5876 | .unused, |
| 5652 | 5877 | .unused, |
| 5878 | .unused, |
| 5879 | .unused, |
| 5880 | .unused, |
| 5653 | 5881 | }, |
| 5654 | 5882 | .dst_temps = .{.mem}, |
| 5655 | 5883 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5676,6 +5904,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5676 | 5904 | .unused, |
| 5677 | 5905 | .unused, |
| 5678 | 5906 | .unused, |
| 5907 | .unused, |
| 5908 | .unused, |
| 5909 | .unused, |
| 5679 | 5910 | }, |
| 5680 | 5911 | .dst_temps = .{.mem}, |
| 5681 | 5912 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5702,6 +5933,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5702 | 5933 | .unused, |
| 5703 | 5934 | .unused, |
| 5704 | 5935 | .unused, |
| 5936 | .unused, |
| 5937 | .unused, |
| 5938 | .unused, |
| 5705 | 5939 | }, |
| 5706 | 5940 | .dst_temps = .{.mem}, |
| 5707 | 5941 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5728,6 +5962,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5728 | 5962 | .unused, |
| 5729 | 5963 | .unused, |
| 5730 | 5964 | .unused, |
| 5965 | .unused, |
| 5966 | .unused, |
| 5967 | .unused, |
| 5731 | 5968 | }, |
| 5732 | 5969 | .dst_temps = .{.mem}, |
| 5733 | 5970 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5754,6 +5991,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5754 | 5991 | .unused, |
| 5755 | 5992 | .unused, |
| 5756 | 5993 | .unused, |
| 5994 | .unused, |
| 5995 | .unused, |
| 5996 | .unused, |
| 5757 | 5997 | }, |
| 5758 | 5998 | .dst_temps = .{.mem}, |
| 5759 | 5999 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5780,6 +6020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5780 | 6020 | .unused, |
| 5781 | 6021 | .unused, |
| 5782 | 6022 | .unused, |
| 6023 | .unused, |
| 6024 | .unused, |
| 6025 | .unused, |
| 5783 | 6026 | }, |
| 5784 | 6027 | .dst_temps = .{.mem}, |
| 5785 | 6028 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5806,6 +6049,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5806 | 6049 | .unused, |
| 5807 | 6050 | .unused, |
| 5808 | 6051 | .unused, |
| 6052 | .unused, |
| 6053 | .unused, |
| 6054 | .unused, |
| 5809 | 6055 | }, |
| 5810 | 6056 | .dst_temps = .{.mem}, |
| 5811 | 6057 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5832,6 +6078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5832 | 6078 | .unused, |
| 5833 | 6079 | .unused, |
| 5834 | 6080 | .unused, |
| 6081 | .unused, |
| 6082 | .unused, |
| 6083 | .unused, |
| 5835 | 6084 | }, |
| 5836 | 6085 | .dst_temps = .{.mem}, |
| 5837 | 6086 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5858,6 +6107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5858 | 6107 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 5859 | 6108 | .unused, |
| 5860 | 6109 | .unused, |
| 6110 | .unused, |
| 6111 | .unused, |
| 6112 | .unused, |
| 5861 | 6113 | }, |
| 5862 | 6114 | .dst_temps = .{.mem}, |
| 5863 | 6115 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5887,6 +6139,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5887 | 6139 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 5888 | 6140 | .unused, |
| 5889 | 6141 | .unused, |
| 6142 | .unused, |
| 6143 | .unused, |
| 6144 | .unused, |
| 5890 | 6145 | }, |
| 5891 | 6146 | .dst_temps = .{.mem}, |
| 5892 | 6147 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5916,7 +6171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5916 | 6171 | .unused, |
| 5917 | 6172 | .unused, |
| 5918 | 6173 | .unused, |
| 5919 | | }, |
| 6174 | .unused, |
| 6175 | .unused, |
| 6176 | .unused, |
| 6177 | }, |
| 5920 | 6178 | .dst_temps = .{.mem}, |
| 5921 | 6179 | .clobbers = .{ .eflags = true }, |
| 5922 | 6180 | .each = .{ .once = &.{ |
| ... | ... | @@ -5945,6 +6203,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5945 | 6203 | .unused, |
| 5946 | 6204 | .unused, |
| 5947 | 6205 | .unused, |
| 6206 | .unused, |
| 6207 | .unused, |
| 6208 | .unused, |
| 5948 | 6209 | }, |
| 5949 | 6210 | .dst_temps = .{.mem}, |
| 5950 | 6211 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -5974,6 +6235,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5974 | 6235 | .unused, |
| 5975 | 6236 | .unused, |
| 5976 | 6237 | .unused, |
| 6238 | .unused, |
| 6239 | .unused, |
| 6240 | .unused, |
| 5977 | 6241 | }, |
| 5978 | 6242 | .dst_temps = .{.mem}, |
| 5979 | 6243 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6001,6 +6265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6001 | 6265 | .unused, |
| 6002 | 6266 | .unused, |
| 6003 | 6267 | .unused, |
| 6268 | .unused, |
| 6269 | .unused, |
| 6270 | .unused, |
| 6004 | 6271 | }, |
| 6005 | 6272 | .dst_temps = .{.mem}, |
| 6006 | 6273 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6029,6 +6296,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6029 | 6296 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6030 | 6297 | .unused, |
| 6031 | 6298 | .unused, |
| 6299 | .unused, |
| 6300 | .unused, |
| 6301 | .unused, |
| 6032 | 6302 | }, |
| 6033 | 6303 | .dst_temps = .{.mem}, |
| 6034 | 6304 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6058,6 +6328,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6058 | 6328 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6059 | 6329 | .unused, |
| 6060 | 6330 | .unused, |
| 6331 | .unused, |
| 6332 | .unused, |
| 6333 | .unused, |
| 6061 | 6334 | }, |
| 6062 | 6335 | .dst_temps = .{.mem}, |
| 6063 | 6336 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6087,6 +6360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6087 | 6360 | .unused, |
| 6088 | 6361 | .unused, |
| 6089 | 6362 | .unused, |
| 6363 | .unused, |
| 6364 | .unused, |
| 6365 | .unused, |
| 6090 | 6366 | }, |
| 6091 | 6367 | .dst_temps = .{.mem}, |
| 6092 | 6368 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6116,6 +6392,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6116 | 6392 | .unused, |
| 6117 | 6393 | .unused, |
| 6118 | 6394 | .unused, |
| 6395 | .unused, |
| 6396 | .unused, |
| 6397 | .unused, |
| 6119 | 6398 | }, |
| 6120 | 6399 | .dst_temps = .{.mem}, |
| 6121 | 6400 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6145,6 +6424,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6145 | 6424 | .unused, |
| 6146 | 6425 | .unused, |
| 6147 | 6426 | .unused, |
| 6427 | .unused, |
| 6428 | .unused, |
| 6429 | .unused, |
| 6148 | 6430 | }, |
| 6149 | 6431 | .dst_temps = .{.mem}, |
| 6150 | 6432 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6172,6 +6454,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6172 | 6454 | .unused, |
| 6173 | 6455 | .unused, |
| 6174 | 6456 | .unused, |
| 6457 | .unused, |
| 6458 | .unused, |
| 6459 | .unused, |
| 6175 | 6460 | }, |
| 6176 | 6461 | .dst_temps = .{.mem}, |
| 6177 | 6462 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6200,6 +6485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6200 | 6485 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6201 | 6486 | .unused, |
| 6202 | 6487 | .unused, |
| 6488 | .unused, |
| 6489 | .unused, |
| 6490 | .unused, |
| 6203 | 6491 | }, |
| 6204 | 6492 | .dst_temps = .{.mem}, |
| 6205 | 6493 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6229,6 +6517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6229 | 6517 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6230 | 6518 | .unused, |
| 6231 | 6519 | .unused, |
| 6520 | .unused, |
| 6521 | .unused, |
| 6522 | .unused, |
| 6232 | 6523 | }, |
| 6233 | 6524 | .dst_temps = .{.mem}, |
| 6234 | 6525 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6258,6 +6549,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6258 | 6549 | .unused, |
| 6259 | 6550 | .unused, |
| 6260 | 6551 | .unused, |
| 6552 | .unused, |
| 6553 | .unused, |
| 6554 | .unused, |
| 6261 | 6555 | }, |
| 6262 | 6556 | .dst_temps = .{.mem}, |
| 6263 | 6557 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6287,6 +6581,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6287 | 6581 | .unused, |
| 6288 | 6582 | .unused, |
| 6289 | 6583 | .unused, |
| 6584 | .unused, |
| 6585 | .unused, |
| 6586 | .unused, |
| 6290 | 6587 | }, |
| 6291 | 6588 | .dst_temps = .{.mem}, |
| 6292 | 6589 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6316,6 +6613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6316 | 6613 | .unused, |
| 6317 | 6614 | .unused, |
| 6318 | 6615 | .unused, |
| 6616 | .unused, |
| 6617 | .unused, |
| 6618 | .unused, |
| 6319 | 6619 | }, |
| 6320 | 6620 | .dst_temps = .{.mem}, |
| 6321 | 6621 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6343,6 +6643,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6343 | 6643 | .unused, |
| 6344 | 6644 | .unused, |
| 6345 | 6645 | .unused, |
| 6646 | .unused, |
| 6647 | .unused, |
| 6648 | .unused, |
| 6346 | 6649 | }, |
| 6347 | 6650 | .dst_temps = .{.mem}, |
| 6348 | 6651 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6371,6 +6674,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6371 | 6674 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6372 | 6675 | .unused, |
| 6373 | 6676 | .unused, |
| 6677 | .unused, |
| 6678 | .unused, |
| 6679 | .unused, |
| 6374 | 6680 | }, |
| 6375 | 6681 | .dst_temps = .{.mem}, |
| 6376 | 6682 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6400,6 +6706,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6400 | 6706 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6401 | 6707 | .unused, |
| 6402 | 6708 | .unused, |
| 6709 | .unused, |
| 6710 | .unused, |
| 6711 | .unused, |
| 6403 | 6712 | }, |
| 6404 | 6713 | .dst_temps = .{.mem}, |
| 6405 | 6714 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6429,6 +6738,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6429 | 6738 | .unused, |
| 6430 | 6739 | .unused, |
| 6431 | 6740 | .unused, |
| 6741 | .unused, |
| 6742 | .unused, |
| 6743 | .unused, |
| 6432 | 6744 | }, |
| 6433 | 6745 | .dst_temps = .{.mem}, |
| 6434 | 6746 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6458,6 +6770,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6458 | 6770 | .unused, |
| 6459 | 6771 | .unused, |
| 6460 | 6772 | .unused, |
| 6773 | .unused, |
| 6774 | .unused, |
| 6775 | .unused, |
| 6461 | 6776 | }, |
| 6462 | 6777 | .dst_temps = .{.mem}, |
| 6463 | 6778 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6487,6 +6802,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6487 | 6802 | .unused, |
| 6488 | 6803 | .unused, |
| 6489 | 6804 | .unused, |
| 6805 | .unused, |
| 6806 | .unused, |
| 6807 | .unused, |
| 6490 | 6808 | }, |
| 6491 | 6809 | .dst_temps = .{.mem}, |
| 6492 | 6810 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6515,6 +6833,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6515 | 6833 | .unused, |
| 6516 | 6834 | .unused, |
| 6517 | 6835 | .unused, |
| 6836 | .unused, |
| 6837 | .unused, |
| 6838 | .unused, |
| 6518 | 6839 | }, |
| 6519 | 6840 | .dst_temps = .{.mem}, |
| 6520 | 6841 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6544,6 +6865,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6544 | 6865 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6545 | 6866 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6546 | 6867 | .unused, |
| 6868 | .unused, |
| 6869 | .unused, |
| 6870 | .unused, |
| 6547 | 6871 | }, |
| 6548 | 6872 | .dst_temps = .{.mem}, |
| 6549 | 6873 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6581,6 +6905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6581 | 6905 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6582 | 6906 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6583 | 6907 | .unused, |
| 6908 | .unused, |
| 6909 | .unused, |
| 6910 | .unused, |
| 6584 | 6911 | }, |
| 6585 | 6912 | .dst_temps = .{.mem}, |
| 6586 | 6913 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6617,6 +6944,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6617 | 6944 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6618 | 6945 | .unused, |
| 6619 | 6946 | .unused, |
| 6947 | .unused, |
| 6948 | .unused, |
| 6949 | .unused, |
| 6620 | 6950 | }, |
| 6621 | 6951 | .dst_temps = .{.mem}, |
| 6622 | 6952 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6653,6 +6983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6653 | 6983 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6654 | 6984 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6655 | 6985 | .unused, |
| 6986 | .unused, |
| 6987 | .unused, |
| 6988 | .unused, |
| 6656 | 6989 | }, |
| 6657 | 6990 | .dst_temps = .{.mem}, |
| 6658 | 6991 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6690,6 +7023,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6690 | 7023 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6691 | 7024 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6692 | 7025 | .unused, |
| 7026 | .unused, |
| 7027 | .unused, |
| 7028 | .unused, |
| 6693 | 7029 | }, |
| 6694 | 7030 | .dst_temps = .{.mem}, |
| 6695 | 7031 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6726,6 +7062,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6726 | 7062 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6727 | 7063 | .unused, |
| 6728 | 7064 | .unused, |
| 7065 | .unused, |
| 7066 | .unused, |
| 7067 | .unused, |
| 6729 | 7068 | }, |
| 6730 | 7069 | .dst_temps = .{.mem}, |
| 6731 | 7070 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6762,6 +7101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6762 | 7101 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6763 | 7102 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6764 | 7103 | .unused, |
| 7104 | .unused, |
| 7105 | .unused, |
| 7106 | .unused, |
| 6765 | 7107 | }, |
| 6766 | 7108 | .dst_temps = .{.mem}, |
| 6767 | 7109 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6799,6 +7141,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6799 | 7141 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6800 | 7142 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6801 | 7143 | .unused, |
| 7144 | .unused, |
| 7145 | .unused, |
| 7146 | .unused, |
| 6802 | 7147 | }, |
| 6803 | 7148 | .dst_temps = .{.mem}, |
| 6804 | 7149 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6835,6 +7180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6835 | 7180 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6836 | 7181 | .unused, |
| 6837 | 7182 | .unused, |
| 7183 | .unused, |
| 7184 | .unused, |
| 7185 | .unused, |
| 6838 | 7186 | }, |
| 6839 | 7187 | .dst_temps = .{.mem}, |
| 6840 | 7188 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6871,6 +7219,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6871 | 7219 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6872 | 7220 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6873 | 7221 | .unused, |
| 7222 | .unused, |
| 7223 | .unused, |
| 7224 | .unused, |
| 6874 | 7225 | }, |
| 6875 | 7226 | .dst_temps = .{.mem}, |
| 6876 | 7227 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6908,6 +7259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6908 | 7259 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6909 | 7260 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6910 | 7261 | .unused, |
| 7262 | .unused, |
| 7263 | .unused, |
| 7264 | .unused, |
| 6911 | 7265 | }, |
| 6912 | 7266 | .dst_temps = .{.mem}, |
| 6913 | 7267 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6944,6 +7298,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6944 | 7298 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6945 | 7299 | .unused, |
| 6946 | 7300 | .unused, |
| 7301 | .unused, |
| 7302 | .unused, |
| 7303 | .unused, |
| 6947 | 7304 | }, |
| 6948 | 7305 | .dst_temps = .{.mem}, |
| 6949 | 7306 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -6981,8 +7338,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6981 | 7338 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| 6982 | 7339 | const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; |
| 6983 | 7340 | switch (extra.compareOperator()) { |
| 6984 | | .eq, .neq => if (cg.typeOf(extra.lhs).scalarType(zcu).isRuntimeFloat()) |
| 6985 | | break :fallback try cg.airCmpVector(inst), |
| 7341 | .eq, .neq => {}, |
| 6986 | 7342 | else => break :fallback try cg.airCmpVector(inst), |
| 6987 | 7343 | } |
| 6988 | 7344 | var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs }); |
| ... | ... | @@ -7004,7 +7360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7004 | 7360 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7005 | 7361 | .{ .src = .{ .to_ymm, .to_ymm } }, |
| 7006 | 7362 | }, |
| 7007 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7363 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7008 | 7364 | .kind = .all, |
| 7009 | 7365 | .inverted = switch (cc) { |
| 7010 | 7366 | else => unreachable, |
| ... | ... | @@ -7024,7 +7380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7024 | 7380 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7025 | 7381 | .{ .src = .{ .to_ymm, .to_ymm } }, |
| 7026 | 7382 | }, |
| 7027 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7383 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7028 | 7384 | .kind = .all, |
| 7029 | 7385 | .inverted = switch (cc) { |
| 7030 | 7386 | else => unreachable, |
| ... | ... | @@ -7044,7 +7400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7044 | 7400 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7045 | 7401 | .{ .src = .{ .to_ymm, .to_ymm } }, |
| 7046 | 7402 | }, |
| 7047 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7403 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7048 | 7404 | .kind = .all, |
| 7049 | 7405 | .inverted = switch (cc) { |
| 7050 | 7406 | else => unreachable, |
| ... | ... | @@ -7064,7 +7420,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7064 | 7420 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7065 | 7421 | .{ .src = .{ .to_ymm, .to_ymm } }, |
| 7066 | 7422 | }, |
| 7067 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7423 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7068 | 7424 | .kind = .all, |
| 7069 | 7425 | .inverted = switch (cc) { |
| 7070 | 7426 | else => unreachable, |
| ... | ... | @@ -7084,7 +7440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7084 | 7440 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7085 | 7441 | .{ .src = .{ .to_xmm, .to_xmm } }, |
| 7086 | 7442 | }, |
| 7087 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7443 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7088 | 7444 | .kind = .all, |
| 7089 | 7445 | .inverted = switch (cc) { |
| 7090 | 7446 | else => unreachable, |
| ... | ... | @@ -7104,7 +7460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7104 | 7460 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7105 | 7461 | .{ .src = .{ .to_xmm, .to_xmm } }, |
| 7106 | 7462 | }, |
| 7107 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7463 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7108 | 7464 | .kind = .all, |
| 7109 | 7465 | .inverted = switch (cc) { |
| 7110 | 7466 | else => unreachable, |
| ... | ... | @@ -7124,7 +7480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7124 | 7480 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7125 | 7481 | .{ .src = .{ .to_xmm, .to_xmm } }, |
| 7126 | 7482 | }, |
| 7127 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7483 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7128 | 7484 | .kind = .all, |
| 7129 | 7485 | .inverted = switch (cc) { |
| 7130 | 7486 | else => unreachable, |
| ... | ... | @@ -7144,7 +7500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7144 | 7500 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7145 | 7501 | .{ .src = .{ .to_xmm, .to_xmm } }, |
| 7146 | 7502 | }, |
| 7147 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 7503 | .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 7148 | 7504 | .kind = .all, |
| 7149 | 7505 | .inverted = switch (cc) { |
| 7150 | 7506 | else => unreachable, |
| ... | ... | @@ -7409,6 +7765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7409 | 7765 | .unused, |
| 7410 | 7766 | .unused, |
| 7411 | 7767 | .unused, |
| 7768 | .unused, |
| 7769 | .unused, |
| 7770 | .unused, |
| 7412 | 7771 | }, |
| 7413 | 7772 | .dst_temps = .{.mem}, |
| 7414 | 7773 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7445,6 +7804,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7445 | 7804 | .{ .kind = .{ .rc = .sse } }, |
| 7446 | 7805 | .unused, |
| 7447 | 7806 | .unused, |
| 7807 | .unused, |
| 7808 | .unused, |
| 7809 | .unused, |
| 7448 | 7810 | }, |
| 7449 | 7811 | .dst_temps = .{.mem}, |
| 7450 | 7812 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7487,6 +7849,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7487 | 7849 | .{ .kind = .{ .rc = .sse } }, |
| 7488 | 7850 | .unused, |
| 7489 | 7851 | .unused, |
| 7852 | .unused, |
| 7853 | .unused, |
| 7854 | .unused, |
| 7490 | 7855 | }, |
| 7491 | 7856 | .dst_temps = .{.mem}, |
| 7492 | 7857 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7531,6 +7896,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7531 | 7896 | .{ .kind = .{ .rc = .sse } }, |
| 7532 | 7897 | .unused, |
| 7533 | 7898 | .unused, |
| 7899 | .unused, |
| 7900 | .unused, |
| 7901 | .unused, |
| 7534 | 7902 | }, |
| 7535 | 7903 | .dst_temps = .{.mem}, |
| 7536 | 7904 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7573,6 +7941,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7573 | 7941 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7574 | 7942 | .{ .kind = .{ .rc = .sse } }, |
| 7575 | 7943 | .unused, |
| 7944 | .unused, |
| 7945 | .unused, |
| 7946 | .unused, |
| 7576 | 7947 | }, |
| 7577 | 7948 | .dst_temps = .{.mem}, |
| 7578 | 7949 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7641,6 +8012,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7641 | 8012 | .{ .kind = .{ .rc = .sse } }, |
| 7642 | 8013 | .unused, |
| 7643 | 8014 | .unused, |
| 8015 | .unused, |
| 8016 | .unused, |
| 8017 | .unused, |
| 7644 | 8018 | }, |
| 7645 | 8019 | .dst_temps = .{.mem}, |
| 7646 | 8020 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7683,6 +8057,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7683 | 8057 | .{ .kind = .{ .rc = .sse } }, |
| 7684 | 8058 | .unused, |
| 7685 | 8059 | .unused, |
| 8060 | .unused, |
| 8061 | .unused, |
| 8062 | .unused, |
| 7686 | 8063 | }, |
| 7687 | 8064 | .dst_temps = .{.mem}, |
| 7688 | 8065 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7727,6 +8104,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7727 | 8104 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7728 | 8105 | .{ .kind = .{ .rc = .sse } }, |
| 7729 | 8106 | .unused, |
| 8107 | .unused, |
| 8108 | .unused, |
| 8109 | .unused, |
| 7730 | 8110 | }, |
| 7731 | 8111 | .dst_temps = .{.mem}, |
| 7732 | 8112 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7795,6 +8175,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7795 | 8175 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7796 | 8176 | .{ .kind = .{ .rc = .sse } }, |
| 7797 | 8177 | .unused, |
| 8178 | .unused, |
| 8179 | .unused, |
| 8180 | .unused, |
| 7798 | 8181 | }, |
| 7799 | 8182 | .dst_temps = .{.mem}, |
| 7800 | 8183 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7863,6 +8246,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7863 | 8246 | .{ .kind = .{ .rc = .sse } }, |
| 7864 | 8247 | .unused, |
| 7865 | 8248 | .unused, |
| 8249 | .unused, |
| 8250 | .unused, |
| 8251 | .unused, |
| 7866 | 8252 | }, |
| 7867 | 8253 | .dst_temps = .{.mem}, |
| 7868 | 8254 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7905,6 +8291,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7905 | 8291 | .{ .kind = .{ .rc = .sse } }, |
| 7906 | 8292 | .unused, |
| 7907 | 8293 | .unused, |
| 8294 | .unused, |
| 8295 | .unused, |
| 8296 | .unused, |
| 7908 | 8297 | }, |
| 7909 | 8298 | .dst_temps = .{.mem}, |
| 7910 | 8299 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -7949,6 +8338,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7949 | 8338 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7950 | 8339 | .{ .kind = .{ .rc = .sse } }, |
| 7951 | 8340 | .unused, |
| 8341 | .unused, |
| 8342 | .unused, |
| 8343 | .unused, |
| 7952 | 8344 | }, |
| 7953 | 8345 | .dst_temps = .{.mem}, |
| 7954 | 8346 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8017,6 +8409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8017 | 8409 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8018 | 8410 | .{ .kind = .{ .rc = .sse } }, |
| 8019 | 8411 | .unused, |
| 8412 | .unused, |
| 8413 | .unused, |
| 8414 | .unused, |
| 8020 | 8415 | }, |
| 8021 | 8416 | .dst_temps = .{.mem}, |
| 8022 | 8417 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8085,6 +8480,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8085 | 8480 | .{ .kind = .{ .rc = .mmx } }, |
| 8086 | 8481 | .unused, |
| 8087 | 8482 | .unused, |
| 8483 | .unused, |
| 8484 | .unused, |
| 8485 | .unused, |
| 8088 | 8486 | }, |
| 8089 | 8487 | .dst_temps = .{.mem}, |
| 8090 | 8488 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8127,6 +8525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8127 | 8525 | .{ .kind = .{ .rc = .mmx } }, |
| 8128 | 8526 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8129 | 8527 | .{ .kind = .{ .rc = .mmx } }, |
| 8528 | .unused, |
| 8529 | .unused, |
| 8530 | .unused, |
| 8130 | 8531 | }, |
| 8131 | 8532 | .dst_temps = .{.mem}, |
| 8132 | 8533 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8199,6 +8600,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8199 | 8600 | .{ .kind = .{ .rc = .mmx } }, |
| 8200 | 8601 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8201 | 8602 | .{ .kind = .{ .rc = .mmx } }, |
| 8603 | .unused, |
| 8604 | .unused, |
| 8605 | .unused, |
| 8202 | 8606 | }, |
| 8203 | 8607 | .dst_temps = .{.mem}, |
| 8204 | 8608 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8273,6 +8677,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8273 | 8677 | .unused, |
| 8274 | 8678 | .unused, |
| 8275 | 8679 | .unused, |
| 8680 | .unused, |
| 8681 | .unused, |
| 8682 | .unused, |
| 8276 | 8683 | }, |
| 8277 | 8684 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8278 | 8685 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8302,6 +8709,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8302 | 8709 | .unused, |
| 8303 | 8710 | .unused, |
| 8304 | 8711 | .unused, |
| 8712 | .unused, |
| 8713 | .unused, |
| 8714 | .unused, |
| 8305 | 8715 | }, |
| 8306 | 8716 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8307 | 8717 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8331,6 +8741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8331 | 8741 | .unused, |
| 8332 | 8742 | .unused, |
| 8333 | 8743 | .unused, |
| 8744 | .unused, |
| 8745 | .unused, |
| 8746 | .unused, |
| 8334 | 8747 | }, |
| 8335 | 8748 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8336 | 8749 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8361,6 +8774,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8361 | 8774 | .unused, |
| 8362 | 8775 | .unused, |
| 8363 | 8776 | .unused, |
| 8777 | .unused, |
| 8778 | .unused, |
| 8779 | .unused, |
| 8364 | 8780 | }, |
| 8365 | 8781 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8366 | 8782 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8390,6 +8806,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8390 | 8806 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8391 | 8807 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8392 | 8808 | .unused, |
| 8809 | .unused, |
| 8810 | .unused, |
| 8811 | .unused, |
| 8393 | 8812 | }, |
| 8394 | 8813 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8395 | 8814 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8426,6 +8845,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8426 | 8845 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8427 | 8846 | .unused, |
| 8428 | 8847 | .unused, |
| 8848 | .unused, |
| 8849 | .unused, |
| 8850 | .unused, |
| 8429 | 8851 | }, |
| 8430 | 8852 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8431 | 8853 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8456,6 +8878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8456 | 8878 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 8457 | 8879 | .unused, |
| 8458 | 8880 | .unused, |
| 8881 | .unused, |
| 8882 | .unused, |
| 8883 | .unused, |
| 8459 | 8884 | }, |
| 8460 | 8885 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8461 | 8886 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8486,6 +8911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8486 | 8911 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 8487 | 8912 | .unused, |
| 8488 | 8913 | .unused, |
| 8914 | .unused, |
| 8915 | .unused, |
| 8916 | .unused, |
| 8489 | 8917 | }, |
| 8490 | 8918 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8491 | 8919 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8517,6 +8945,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8517 | 8945 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 8518 | 8946 | .unused, |
| 8519 | 8947 | .unused, |
| 8948 | .unused, |
| 8949 | .unused, |
| 8950 | .unused, |
| 8520 | 8951 | }, |
| 8521 | 8952 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8522 | 8953 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8547,6 +8978,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8547 | 8978 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8548 | 8979 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8549 | 8980 | .unused, |
| 8981 | .unused, |
| 8982 | .unused, |
| 8983 | .unused, |
| 8550 | 8984 | }, |
| 8551 | 8985 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8552 | 8986 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8585,6 +9019,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8585 | 9019 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8586 | 9020 | .unused, |
| 8587 | 9021 | .unused, |
| 9022 | .unused, |
| 9023 | .unused, |
| 9024 | .unused, |
| 8588 | 9025 | }, |
| 8589 | 9026 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8590 | 9027 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8616,6 +9053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8616 | 9053 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 8617 | 9054 | .unused, |
| 8618 | 9055 | .unused, |
| 9056 | .unused, |
| 9057 | .unused, |
| 9058 | .unused, |
| 8619 | 9059 | }, |
| 8620 | 9060 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8621 | 9061 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8646,6 +9086,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8646 | 9086 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 8647 | 9087 | .unused, |
| 8648 | 9088 | .unused, |
| 9089 | .unused, |
| 9090 | .unused, |
| 9091 | .unused, |
| 8649 | 9092 | }, |
| 8650 | 9093 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8651 | 9094 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8677,6 +9120,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8677 | 9120 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 8678 | 9121 | .unused, |
| 8679 | 9122 | .unused, |
| 9123 | .unused, |
| 9124 | .unused, |
| 9125 | .unused, |
| 8680 | 9126 | }, |
| 8681 | 9127 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8682 | 9128 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8708,6 +9154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8708 | 9154 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8709 | 9155 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8710 | 9156 | .unused, |
| 9157 | .unused, |
| 9158 | .unused, |
| 9159 | .unused, |
| 8711 | 9160 | }, |
| 8712 | 9161 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8713 | 9162 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8744,6 +9193,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8744 | 9193 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8745 | 9194 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8746 | 9195 | .unused, |
| 9196 | .unused, |
| 9197 | .unused, |
| 9198 | .unused, |
| 8747 | 9199 | }, |
| 8748 | 9200 | .dst_temps = .{.mem}, |
| 8749 | 9201 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -8775,8 +9227,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8775 | 9227 | }, .{ |
| 8776 | 9228 | .required_features = .{ .f16c, null, null, null }, |
| 8777 | 9229 | .src_constraints = .{ |
| 8778 | | .{ .scalar_exact_float = .{ .of = .qword, .is = .word } }, |
| 8779 | | .{ .scalar_exact_float = .{ .of = .qword, .is = .word } }, |
| 9230 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 9231 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 9232 | }, |
| 9233 | .patterns = &.{ |
| 9234 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9235 | }, |
| 9236 | .extra_temps = .{ |
| 9237 | .{ .kind = .{ .rc = .sse } }, |
| 9238 | .unused, |
| 9239 | .unused, |
| 9240 | .unused, |
| 9241 | .unused, |
| 9242 | .unused, |
| 9243 | .unused, |
| 9244 | .unused, |
| 9245 | .unused, |
| 9246 | }, |
| 9247 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9248 | .ref = .src0, |
| 9249 | .rc = .sse, |
| 9250 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9251 | } }}, |
| 9252 | .each = .{ .once = &.{ |
| 9253 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0x, ._, ._ }, |
| 9254 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1x, ._, ._ }, |
| 9255 | .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0x, .ui(switch (cc) { |
| 9256 | else => unreachable, |
| 9257 | .e => 0b00000, |
| 9258 | .ne => 0b00100, |
| 9259 | }) }, |
| 9260 | } }, |
| 9261 | }, .{ |
| 9262 | .required_features = .{ .f16c, null, null, null }, |
| 9263 | .src_constraints = .{ |
| 9264 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 9265 | .{ .scalar_float = .{ .of = .qword, .is = .word } }, |
| 8780 | 9266 | }, |
| 8781 | 9267 | .patterns = &.{ |
| 8782 | 9268 | .{ .src = .{ .mem, .mem } }, |
| ... | ... | @@ -8791,15 +9277,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8791 | 9277 | .unused, |
| 8792 | 9278 | .unused, |
| 8793 | 9279 | .unused, |
| 9280 | .unused, |
| 9281 | .unused, |
| 9282 | .unused, |
| 8794 | 9283 | }, |
| 8795 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 8796 | | .kind = .all, |
| 8797 | | .scalar = .dword, |
| 8798 | | } } }}, |
| 9284 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9285 | .ref = .src0, |
| 9286 | .rc = .sse, |
| 9287 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9288 | } }}, |
| 8799 | 9289 | .each = .{ .once = &.{ |
| 8800 | 9290 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 8801 | 9291 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, |
| 8802 | | .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .si(switch (cc) { |
| 9292 | .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .ui(switch (cc) { |
| 8803 | 9293 | else => unreachable, |
| 8804 | 9294 | .e => 0b00000, |
| 8805 | 9295 | .ne => 0b00100, |
| ... | ... | @@ -8808,8 +9298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8808 | 9298 | }, .{ |
| 8809 | 9299 | .required_features = .{ .f16c, null, null, null }, |
| 8810 | 9300 | .src_constraints = .{ |
| 8811 | | .{ .scalar_exact_float = .{ .of = .xword, .is = .word } }, |
| 8812 | | .{ .scalar_exact_float = .{ .of = .xword, .is = .word } }, |
| 9301 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 9302 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 8813 | 9303 | }, |
| 8814 | 9304 | .patterns = &.{ |
| 8815 | 9305 | .{ .src = .{ .mem, .mem } }, |
| ... | ... | @@ -8824,44 +9314,2313 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8824 | 9314 | .unused, |
| 8825 | 9315 | .unused, |
| 8826 | 9316 | .unused, |
| 9317 | .unused, |
| 9318 | .unused, |
| 9319 | .unused, |
| 8827 | 9320 | }, |
| 8828 | | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ |
| 8829 | | .kind = .all, |
| 8830 | | .scalar = .dword, |
| 8831 | | } } }}, |
| 9321 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9322 | .ref = .src0, |
| 9323 | .rc = .sse, |
| 9324 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9325 | } }}, |
| 8832 | 9326 | .each = .{ .once = &.{ |
| 8833 | 9327 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 8834 | 9328 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, |
| 8835 | | .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .si(switch (cc) { |
| 9329 | .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .ui(switch (cc) { |
| 8836 | 9330 | else => unreachable, |
| 8837 | 9331 | .e => 0b00000, |
| 8838 | 9332 | .ne => 0b00100, |
| 8839 | 9333 | }) }, |
| 8840 | 9334 | } }, |
| 8841 | | } }, |
| 8842 | | }) catch |err| switch (err) { |
| 8843 | | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 8844 | | @tagName(air_tag), |
| 8845 | | cg.typeOf(extra.lhs).fmt(pt), |
| 8846 | | ops[0].tracking(cg), |
| 8847 | | ops[1].tracking(cg), |
| 8848 | | }), |
| 8849 | | else => |e| return e, |
| 8850 | | }, |
| 8851 | | .gte => unreachable, |
| 8852 | | .gt => unreachable, |
| 8853 | | } |
| 8854 | | try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); |
| 8855 | | }, |
| 8856 | | |
| 8857 | | .abs => |air_tag| if (use_old) try cg.airAbs(inst) else fallback: { |
| 8858 | | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| 8859 | | if (ty_op.ty.toType().isVector(zcu) and ty_op.ty.toType().childType(zcu).isRuntimeFloat()) break :fallback try cg.airAbs(inst); |
| 8860 | | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| 8861 | | var res: [1]Temp = undefined; |
| 8862 | | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| 8863 | | .required_features = .{ .cmov, null, null, null }, |
| 8864 | | .src_constraints = .{ .{ .int = .byte }, .any }, |
| 9335 | }, .{ |
| 9336 | .required_features = .{ .avx, null, null, null }, |
| 9337 | .src_constraints = .{ |
| 9338 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9339 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9340 | }, |
| 9341 | .patterns = &.{ |
| 9342 | .{ .src = .{ .to_sse, .mem } }, |
| 9343 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9344 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9345 | }, |
| 9346 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9347 | .ref = .src0, |
| 9348 | .rc = .sse, |
| 9349 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9350 | } }}, |
| 9351 | .each = .{ .once = &.{ |
| 9352 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .ui(switch (cc) { |
| 9353 | else => unreachable, |
| 9354 | .e => 0b00000, |
| 9355 | .ne => 0b00100, |
| 9356 | }) }, |
| 9357 | } }, |
| 9358 | }, .{ |
| 9359 | .required_features = .{ .sse, null, null, null }, |
| 9360 | .src_constraints = .{ |
| 9361 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9362 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 9363 | }, |
| 9364 | .patterns = &.{ |
| 9365 | .{ .src = .{ .to_mut_sse, .mem } }, |
| 9366 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| 9367 | .{ .src = .{ .to_mut_sse, .to_sse } }, |
| 9368 | }, |
| 9369 | .dst_temps = .{.{ .ref_mask = .{ |
| 9370 | .ref = .src0, |
| 9371 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9372 | } }}, |
| 9373 | .each = .{ .once = &.{ |
| 9374 | .{ ._, ._ss, .cmp, .dst0x, .src1x, .ui(switch (cc) { |
| 9375 | else => unreachable, |
| 9376 | .e => 0b00000, |
| 9377 | .ne => 0b00100, |
| 9378 | }), ._ }, |
| 9379 | } }, |
| 9380 | }, .{ |
| 9381 | .required_features = .{ .avx, null, null, null }, |
| 9382 | .src_constraints = .{ |
| 9383 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9384 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9385 | }, |
| 9386 | .patterns = &.{ |
| 9387 | .{ .src = .{ .to_sse, .mem } }, |
| 9388 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9389 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9390 | }, |
| 9391 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9392 | .ref = .src0, |
| 9393 | .rc = .sse, |
| 9394 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9395 | } }}, |
| 9396 | .each = .{ .once = &.{ |
| 9397 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .ui(switch (cc) { |
| 9398 | else => unreachable, |
| 9399 | .e => 0b00000, |
| 9400 | .ne => 0b00100, |
| 9401 | }) }, |
| 9402 | } }, |
| 9403 | }, .{ |
| 9404 | .required_features = .{ .sse, null, null, null }, |
| 9405 | .src_constraints = .{ |
| 9406 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9407 | .{ .scalar_float = .{ .of = .xword, .is = .dword } }, |
| 9408 | }, |
| 9409 | .patterns = &.{ |
| 9410 | .{ .src = .{ .to_mut_sse, .mem } }, |
| 9411 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| 9412 | .{ .src = .{ .to_mut_sse, .to_sse } }, |
| 9413 | }, |
| 9414 | .dst_temps = .{.{ .ref_mask = .{ |
| 9415 | .ref = .src0, |
| 9416 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9417 | } }}, |
| 9418 | .each = .{ .once = &.{ |
| 9419 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .ui(switch (cc) { |
| 9420 | else => unreachable, |
| 9421 | .e => 0b00000, |
| 9422 | .ne => 0b00100, |
| 9423 | }), ._ }, |
| 9424 | } }, |
| 9425 | }, .{ |
| 9426 | .required_features = .{ .avx, null, null, null }, |
| 9427 | .src_constraints = .{ |
| 9428 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 9429 | .{ .scalar_float = .{ .of = .yword, .is = .dword } }, |
| 9430 | }, |
| 9431 | .patterns = &.{ |
| 9432 | .{ .src = .{ .to_sse, .mem } }, |
| 9433 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9434 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9435 | }, |
| 9436 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9437 | .ref = .src0, |
| 9438 | .rc = .sse, |
| 9439 | .info = .{ .kind = .all, .scalar = .dword }, |
| 9440 | } }}, |
| 9441 | .each = .{ .once = &.{ |
| 9442 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .ui(switch (cc) { |
| 9443 | else => unreachable, |
| 9444 | .e => 0b00000, |
| 9445 | .ne => 0b00100, |
| 9446 | }) }, |
| 9447 | } }, |
| 9448 | }, .{ |
| 9449 | .required_features = .{ .avx, null, null, null }, |
| 9450 | .src_constraints = .{ |
| 9451 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9452 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9453 | }, |
| 9454 | .patterns = &.{ |
| 9455 | .{ .src = .{ .to_sse, .mem } }, |
| 9456 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9457 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9458 | }, |
| 9459 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9460 | .ref = .src0, |
| 9461 | .rc = .sse, |
| 9462 | .info = .{ .kind = .all, .scalar = .qword }, |
| 9463 | } }}, |
| 9464 | .each = .{ .once = &.{ |
| 9465 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .ui(switch (cc) { |
| 9466 | else => unreachable, |
| 9467 | .e => 0b00000, |
| 9468 | .ne => 0b00100, |
| 9469 | }) }, |
| 9470 | } }, |
| 9471 | }, .{ |
| 9472 | .required_features = .{ .sse2, null, null, null }, |
| 9473 | .src_constraints = .{ |
| 9474 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9475 | .{ .scalar_float = .{ .of = .qword, .is = .qword } }, |
| 9476 | }, |
| 9477 | .patterns = &.{ |
| 9478 | .{ .src = .{ .to_mut_sse, .mem } }, |
| 9479 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| 9480 | .{ .src = .{ .to_mut_sse, .to_sse } }, |
| 9481 | }, |
| 9482 | .dst_temps = .{.{ .ref_mask = .{ |
| 9483 | .ref = .src0, |
| 9484 | .info = .{ .kind = .all, .scalar = .qword }, |
| 9485 | } }}, |
| 9486 | .each = .{ .once = &.{ |
| 9487 | .{ ._, ._sd, .cmp, .dst0x, .src1x, .ui(switch (cc) { |
| 9488 | else => unreachable, |
| 9489 | .e => 0b00000, |
| 9490 | .ne => 0b00100, |
| 9491 | }), ._ }, |
| 9492 | } }, |
| 9493 | }, .{ |
| 9494 | .required_features = .{ .avx, null, null, null }, |
| 9495 | .src_constraints = .{ |
| 9496 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9497 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9498 | }, |
| 9499 | .patterns = &.{ |
| 9500 | .{ .src = .{ .to_sse, .mem } }, |
| 9501 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9502 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9503 | }, |
| 9504 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9505 | .ref = .src0, |
| 9506 | .rc = .sse, |
| 9507 | .info = .{ .kind = .all, .scalar = .qword }, |
| 9508 | } }}, |
| 9509 | .each = .{ .once = &.{ |
| 9510 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .ui(switch (cc) { |
| 9511 | else => unreachable, |
| 9512 | .e => 0b00000, |
| 9513 | .ne => 0b00100, |
| 9514 | }) }, |
| 9515 | } }, |
| 9516 | }, .{ |
| 9517 | .required_features = .{ .sse2, null, null, null }, |
| 9518 | .src_constraints = .{ |
| 9519 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9520 | .{ .scalar_float = .{ .of = .xword, .is = .qword } }, |
| 9521 | }, |
| 9522 | .patterns = &.{ |
| 9523 | .{ .src = .{ .to_mut_sse, .mem } }, |
| 9524 | .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, |
| 9525 | .{ .src = .{ .to_mut_sse, .to_sse } }, |
| 9526 | }, |
| 9527 | .dst_temps = .{.{ .ref_mask = .{ |
| 9528 | .ref = .src0, |
| 9529 | .info = .{ .kind = .all, .scalar = .qword }, |
| 9530 | } }}, |
| 9531 | .each = .{ .once = &.{ |
| 9532 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .ui(switch (cc) { |
| 9533 | else => unreachable, |
| 9534 | .e => 0b00000, |
| 9535 | .ne => 0b00100, |
| 9536 | }), ._ }, |
| 9537 | } }, |
| 9538 | }, .{ |
| 9539 | .required_features = .{ .avx, null, null, null }, |
| 9540 | .src_constraints = .{ |
| 9541 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 9542 | .{ .scalar_float = .{ .of = .yword, .is = .qword } }, |
| 9543 | }, |
| 9544 | .patterns = &.{ |
| 9545 | .{ .src = .{ .to_sse, .mem } }, |
| 9546 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 9547 | .{ .src = .{ .to_sse, .to_sse } }, |
| 9548 | }, |
| 9549 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 9550 | .ref = .src0, |
| 9551 | .rc = .sse, |
| 9552 | .info = .{ .kind = .all, .scalar = .qword }, |
| 9553 | } }}, |
| 9554 | .each = .{ .once = &.{ |
| 9555 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .ui(switch (cc) { |
| 9556 | else => unreachable, |
| 9557 | .e => 0b00000, |
| 9558 | .ne => 0b00100, |
| 9559 | }) }, |
| 9560 | } }, |
| 9561 | }, .{ |
| 9562 | .required_features = .{ .f16c, .slow_incdec, null, null }, |
| 9563 | .src_constraints = .{ |
| 9564 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 9565 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 9566 | }, |
| 9567 | .patterns = &.{ |
| 9568 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9569 | }, |
| 9570 | .extra_temps = .{ |
| 9571 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9572 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9573 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, |
| 9574 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, |
| 9575 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 9576 | .unused, |
| 9577 | .unused, |
| 9578 | .unused, |
| 9579 | .unused, |
| 9580 | }, |
| 9581 | .dst_temps = .{.mem}, |
| 9582 | .clobbers = .{ .eflags = true }, |
| 9583 | .each = .{ .once = &.{ |
| 9584 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9585 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 9586 | .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9587 | .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9588 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .ui(switch (cc) { |
| 9589 | else => unreachable, |
| 9590 | .e => 0b00000, |
| 9591 | .ne => 0b00100, |
| 9592 | }) }, |
| 9593 | .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| 9594 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ }, |
| 9595 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 9596 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9597 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9598 | } }, |
| 9599 | }, .{ |
| 9600 | .required_features = .{ .f16c, null, null, null }, |
| 9601 | .src_constraints = .{ |
| 9602 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 9603 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, |
| 9604 | }, |
| 9605 | .patterns = &.{ |
| 9606 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9607 | }, |
| 9608 | .extra_temps = .{ |
| 9609 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9610 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9611 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, |
| 9612 | .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, |
| 9613 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 9614 | .unused, |
| 9615 | .unused, |
| 9616 | .unused, |
| 9617 | .unused, |
| 9618 | }, |
| 9619 | .dst_temps = .{.mem}, |
| 9620 | .clobbers = .{ .eflags = true }, |
| 9621 | .each = .{ .once = &.{ |
| 9622 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9623 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 9624 | .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9625 | .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9626 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .ui(switch (cc) { |
| 9627 | else => unreachable, |
| 9628 | .e => 0b00000, |
| 9629 | .ne => 0b00100, |
| 9630 | }) }, |
| 9631 | .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| 9632 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ }, |
| 9633 | .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, |
| 9634 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9635 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9636 | } }, |
| 9637 | }, .{ |
| 9638 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| 9639 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9640 | .src_constraints = .{ |
| 9641 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9642 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9643 | }, |
| 9644 | .patterns = &.{ |
| 9645 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9646 | }, |
| 9647 | .call_frame = .{ .alignment = .@"16" }, |
| 9648 | .extra_temps = .{ |
| 9649 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9650 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9651 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9652 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9653 | else => unreachable, |
| 9654 | .e => "__eqhf2", |
| 9655 | .ne => "__nehf2", |
| 9656 | } } } }, |
| 9657 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9658 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9659 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9660 | .unused, |
| 9661 | .unused, |
| 9662 | }, |
| 9663 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9664 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9665 | .each = .{ .once = &.{ |
| 9666 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9667 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9668 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 9669 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| 9670 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| 9671 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9672 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9673 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9674 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9675 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9676 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9677 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9678 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| 9679 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9680 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9681 | } }, |
| 9682 | }, .{ |
| 9683 | .required_features = .{ .avx, null, null, null }, |
| 9684 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9685 | .src_constraints = .{ |
| 9686 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9687 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9688 | }, |
| 9689 | .patterns = &.{ |
| 9690 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9691 | }, |
| 9692 | .call_frame = .{ .alignment = .@"16" }, |
| 9693 | .extra_temps = .{ |
| 9694 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9695 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9696 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9697 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9698 | else => unreachable, |
| 9699 | .e => "__eqhf2", |
| 9700 | .ne => "__nehf2", |
| 9701 | } } } }, |
| 9702 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9703 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9704 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9705 | .unused, |
| 9706 | .unused, |
| 9707 | }, |
| 9708 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9709 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9710 | .each = .{ .once = &.{ |
| 9711 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9712 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9713 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 9714 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| 9715 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| 9716 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9717 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9718 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9719 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9720 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9721 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9722 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9723 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 9724 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9725 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9726 | } }, |
| 9727 | }, .{ |
| 9728 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| 9729 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9730 | .src_constraints = .{ |
| 9731 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9732 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9733 | }, |
| 9734 | .patterns = &.{ |
| 9735 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9736 | }, |
| 9737 | .call_frame = .{ .alignment = .@"16" }, |
| 9738 | .extra_temps = .{ |
| 9739 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9740 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9741 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9742 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9743 | else => unreachable, |
| 9744 | .e => "__eqhf2", |
| 9745 | .ne => "__nehf2", |
| 9746 | } } } }, |
| 9747 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9748 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9749 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9750 | .unused, |
| 9751 | .unused, |
| 9752 | }, |
| 9753 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9754 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9755 | .each = .{ .once = &.{ |
| 9756 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9757 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9758 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9759 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9760 | .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| 9761 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| 9762 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9763 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9764 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9765 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9766 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9767 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9768 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9769 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| 9770 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9771 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9772 | } }, |
| 9773 | }, .{ |
| 9774 | .required_features = .{ .sse2, null, null, null }, |
| 9775 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9776 | .src_constraints = .{ |
| 9777 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9778 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9779 | }, |
| 9780 | .patterns = &.{ |
| 9781 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9782 | }, |
| 9783 | .call_frame = .{ .alignment = .@"16" }, |
| 9784 | .extra_temps = .{ |
| 9785 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9786 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9787 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9788 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9789 | else => unreachable, |
| 9790 | .e => "__eqhf2", |
| 9791 | .ne => "__nehf2", |
| 9792 | } } } }, |
| 9793 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9794 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9795 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9796 | .unused, |
| 9797 | .unused, |
| 9798 | }, |
| 9799 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9800 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9801 | .each = .{ .once = &.{ |
| 9802 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9803 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9804 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9805 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9806 | .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| 9807 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| 9808 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9809 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9810 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9811 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9812 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9813 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9814 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9815 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 9816 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9817 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9818 | } }, |
| 9819 | }, .{ |
| 9820 | .required_features = .{ .sse, .slow_incdec, null, null }, |
| 9821 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9822 | .src_constraints = .{ |
| 9823 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9824 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9825 | }, |
| 9826 | .patterns = &.{ |
| 9827 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9828 | }, |
| 9829 | .call_frame = .{ .alignment = .@"16" }, |
| 9830 | .extra_temps = .{ |
| 9831 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9832 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9833 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9834 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9835 | else => unreachable, |
| 9836 | .e => "__eqhf2", |
| 9837 | .ne => "__nehf2", |
| 9838 | } } } }, |
| 9839 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9840 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9841 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9842 | .{ .type = .vector_8_f16, .kind = .mem }, |
| 9843 | .unused, |
| 9844 | }, |
| 9845 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9846 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9847 | .each = .{ .once = &.{ |
| 9848 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9849 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9850 | .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| 9851 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| 9852 | .{ ._, ._ps, .mova, .tmp1x, .mem(.tmp7x), ._, ._ }, |
| 9853 | .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| 9854 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| 9855 | .{ ._, ._ps, .mova, .tmp2x, .mem(.tmp7x), ._, ._ }, |
| 9856 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9857 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9858 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9859 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9860 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9861 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9862 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9863 | .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, |
| 9864 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9865 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9866 | } }, |
| 9867 | }, .{ |
| 9868 | .required_features = .{ .sse, null, null, null }, |
| 9869 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 9870 | .src_constraints = .{ |
| 9871 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9872 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9873 | }, |
| 9874 | .patterns = &.{ |
| 9875 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9876 | }, |
| 9877 | .call_frame = .{ .alignment = .@"16" }, |
| 9878 | .extra_temps = .{ |
| 9879 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9880 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9881 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9882 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9883 | else => unreachable, |
| 9884 | .e => "__eqhf2", |
| 9885 | .ne => "__nehf2", |
| 9886 | } } } }, |
| 9887 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9888 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9889 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 9890 | .{ .type = .vector_8_f16, .kind = .mem }, |
| 9891 | .unused, |
| 9892 | }, |
| 9893 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 9894 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9895 | .each = .{ .once = &.{ |
| 9896 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 9897 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9898 | .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| 9899 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| 9900 | .{ ._, ._ps, .mova, .tmp1x, .mem(.tmp7x), ._, ._ }, |
| 9901 | .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| 9902 | .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, |
| 9903 | .{ ._, ._ps, .mova, .tmp2x, .mem(.tmp7x), ._, ._ }, |
| 9904 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9905 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| 9906 | .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, |
| 9907 | .{ ._, .fromCondition(cc), .set, .tmp6b, ._, ._, ._ }, |
| 9908 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9909 | .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, |
| 9910 | .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, |
| 9911 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 9912 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9913 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9914 | } }, |
| 9915 | }, .{ |
| 9916 | .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, |
| 9917 | .src_constraints = .{ |
| 9918 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9919 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9920 | }, |
| 9921 | .patterns = &.{ |
| 9922 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9923 | }, |
| 9924 | .call_frame = .{ .alignment = .@"16" }, |
| 9925 | .extra_temps = .{ |
| 9926 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9927 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 9928 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9929 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9930 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9931 | else => unreachable, |
| 9932 | .e => "__eqhf2", |
| 9933 | .ne => "__nehf2", |
| 9934 | } } } }, |
| 9935 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9936 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9937 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 9938 | .unused, |
| 9939 | }, |
| 9940 | .dst_temps = .{.mem}, |
| 9941 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9942 | .each = .{ .once = &.{ |
| 9943 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9944 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 9945 | .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| 9946 | .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| 9947 | .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| 9948 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 9949 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 9950 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 9951 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 9952 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 9953 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 9954 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 9955 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ }, |
| 9956 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 9957 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 9958 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9959 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 9960 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 9961 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 9962 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 9963 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9964 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 9965 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 9966 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 9967 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 9968 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 9969 | } }, |
| 9970 | }, .{ |
| 9971 | .required_features = .{ .@"64bit", .avx, null, null }, |
| 9972 | .src_constraints = .{ |
| 9973 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9974 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 9975 | }, |
| 9976 | .patterns = &.{ |
| 9977 | .{ .src = .{ .to_mem, .to_mem } }, |
| 9978 | }, |
| 9979 | .call_frame = .{ .alignment = .@"16" }, |
| 9980 | .extra_temps = .{ |
| 9981 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 9982 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 9983 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9984 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 9985 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 9986 | else => unreachable, |
| 9987 | .e => "__eqhf2", |
| 9988 | .ne => "__nehf2", |
| 9989 | } } } }, |
| 9990 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 9991 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 9992 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 9993 | .unused, |
| 9994 | }, |
| 9995 | .dst_temps = .{.mem}, |
| 9996 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9997 | .each = .{ .once = &.{ |
| 9998 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 9999 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10000 | .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| 10001 | .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, |
| 10002 | .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, |
| 10003 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 10004 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 10005 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 10006 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 10007 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 10008 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 10009 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 10010 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 10011 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10012 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10013 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10014 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 10015 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 10016 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10017 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 10018 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 10019 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10020 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10021 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10022 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 10023 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 10024 | } }, |
| 10025 | }, .{ |
| 10026 | .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, |
| 10027 | .src_constraints = .{ |
| 10028 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10029 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10030 | }, |
| 10031 | .patterns = &.{ |
| 10032 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10033 | }, |
| 10034 | .call_frame = .{ .alignment = .@"16" }, |
| 10035 | .extra_temps = .{ |
| 10036 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10037 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 10038 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 10039 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 10040 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10041 | else => unreachable, |
| 10042 | .e => "__eqhf2", |
| 10043 | .ne => "__nehf2", |
| 10044 | } } } }, |
| 10045 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 10046 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 10047 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 10048 | .unused, |
| 10049 | }, |
| 10050 | .dst_temps = .{.mem}, |
| 10051 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10052 | .each = .{ .once = &.{ |
| 10053 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 10054 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10055 | .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 10056 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| 10057 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| 10058 | .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| 10059 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 10060 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 10061 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 10062 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 10063 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 10064 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 10065 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 10066 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ }, |
| 10067 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10068 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10069 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10070 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 10071 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 10072 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10073 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 10074 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 10075 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10076 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10077 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10078 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 10079 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 10080 | } }, |
| 10081 | }, .{ |
| 10082 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| 10083 | .src_constraints = .{ |
| 10084 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10085 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10086 | }, |
| 10087 | .patterns = &.{ |
| 10088 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10089 | }, |
| 10090 | .call_frame = .{ .alignment = .@"16" }, |
| 10091 | .extra_temps = .{ |
| 10092 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10093 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 10094 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 10095 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 10096 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10097 | else => unreachable, |
| 10098 | .e => "__eqhf2", |
| 10099 | .ne => "__nehf2", |
| 10100 | } } } }, |
| 10101 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 10102 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 10103 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 10104 | .unused, |
| 10105 | }, |
| 10106 | .dst_temps = .{.mem}, |
| 10107 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10108 | .each = .{ .once = &.{ |
| 10109 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 10110 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10111 | .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 10112 | .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, |
| 10113 | .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, |
| 10114 | .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, |
| 10115 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 10116 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 10117 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 10118 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 10119 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 10120 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 10121 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 10122 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 10123 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10124 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10125 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10126 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 10127 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 10128 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10129 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 10130 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 10131 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10132 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10133 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10134 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 10135 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 10136 | } }, |
| 10137 | }, .{ |
| 10138 | .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, |
| 10139 | .src_constraints = .{ |
| 10140 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10141 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10142 | }, |
| 10143 | .patterns = &.{ |
| 10144 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10145 | }, |
| 10146 | .call_frame = .{ .alignment = .@"16" }, |
| 10147 | .extra_temps = .{ |
| 10148 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10149 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 10150 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 10151 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 10152 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10153 | else => unreachable, |
| 10154 | .e => "__eqhf2", |
| 10155 | .ne => "__nehf2", |
| 10156 | } } } }, |
| 10157 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 10158 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 10159 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 10160 | .{ .type = .vector_8_f16, .kind = .mem }, |
| 10161 | }, |
| 10162 | .dst_temps = .{.mem}, |
| 10163 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10164 | .each = .{ .once = &.{ |
| 10165 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 10166 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10167 | .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| 10168 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| 10169 | .{ ._, ._ps, .mova, .tmp2x, .mem(.tmp8x), ._, ._ }, |
| 10170 | .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| 10171 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| 10172 | .{ ._, ._ps, .mova, .tmp3x, .mem(.tmp8x), ._, ._ }, |
| 10173 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 10174 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 10175 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 10176 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 10177 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 10178 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 10179 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 10180 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ }, |
| 10181 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10182 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10183 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10184 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 10185 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 10186 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10187 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 10188 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 10189 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10190 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10191 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10192 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 10193 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 10194 | } }, |
| 10195 | }, .{ |
| 10196 | .required_features = .{ .@"64bit", .sse, null, null }, |
| 10197 | .src_constraints = .{ |
| 10198 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10199 | .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, |
| 10200 | }, |
| 10201 | .patterns = &.{ |
| 10202 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10203 | }, |
| 10204 | .call_frame = .{ .alignment = .@"16" }, |
| 10205 | .extra_temps = .{ |
| 10206 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10207 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 10208 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 10209 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| 10210 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10211 | else => unreachable, |
| 10212 | .e => "__eqhf2", |
| 10213 | .ne => "__nehf2", |
| 10214 | } } } }, |
| 10215 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 10216 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 10217 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 10218 | .{ .type = .vector_8_f16, .kind = .mem }, |
| 10219 | }, |
| 10220 | .dst_temps = .{.mem}, |
| 10221 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10222 | .each = .{ .once = &.{ |
| 10223 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 10224 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10225 | .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, |
| 10226 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| 10227 | .{ ._, ._ps, .mova, .tmp2x, .mem(.tmp8x), ._, ._ }, |
| 10228 | .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, |
| 10229 | .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, |
| 10230 | .{ ._, ._ps, .mova, .tmp3x, .mem(.tmp8x), ._, ._ }, |
| 10231 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 10232 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 10233 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 10234 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 10235 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 10236 | .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, |
| 10237 | .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, |
| 10238 | .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, |
| 10239 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10240 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10241 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10242 | .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, |
| 10243 | .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, |
| 10244 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10245 | .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, |
| 10246 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 10247 | .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, |
| 10248 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10249 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 10250 | .{ ._, ._r, .sh, .tmp5d, .si(9), ._, ._ }, |
| 10251 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp5), .tmp1q, ._, ._ }, |
| 10252 | } }, |
| 10253 | }, .{ |
| 10254 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| 10255 | .src_constraints = .{ |
| 10256 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10257 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10258 | }, |
| 10259 | .patterns = &.{ |
| 10260 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10261 | }, |
| 10262 | .extra_temps = .{ |
| 10263 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10264 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10265 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 10266 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10267 | .unused, |
| 10268 | .unused, |
| 10269 | .unused, |
| 10270 | .unused, |
| 10271 | .unused, |
| 10272 | }, |
| 10273 | .dst_temps = .{.mem}, |
| 10274 | .clobbers = .{ .eflags = true }, |
| 10275 | .each = .{ .once = &.{ |
| 10276 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10277 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10278 | .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10279 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .ui(switch (cc) { |
| 10280 | else => unreachable, |
| 10281 | .e => 0b00000, |
| 10282 | .ne => 0b00100, |
| 10283 | }) }, |
| 10284 | .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, |
| 10285 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ }, |
| 10286 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10287 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10288 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10289 | } }, |
| 10290 | }, .{ |
| 10291 | .required_features = .{ .avx, null, null, null }, |
| 10292 | .src_constraints = .{ |
| 10293 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10294 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10295 | }, |
| 10296 | .patterns = &.{ |
| 10297 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10298 | }, |
| 10299 | .extra_temps = .{ |
| 10300 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10301 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10302 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| 10303 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10304 | .unused, |
| 10305 | .unused, |
| 10306 | .unused, |
| 10307 | .unused, |
| 10308 | .unused, |
| 10309 | }, |
| 10310 | .dst_temps = .{.mem}, |
| 10311 | .clobbers = .{ .eflags = true }, |
| 10312 | .each = .{ .once = &.{ |
| 10313 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10314 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10315 | .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10316 | .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .ui(switch (cc) { |
| 10317 | else => unreachable, |
| 10318 | .e => 0b00000, |
| 10319 | .ne => 0b00100, |
| 10320 | }) }, |
| 10321 | .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, |
| 10322 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ }, |
| 10323 | .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, |
| 10324 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10325 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10326 | } }, |
| 10327 | }, .{ |
| 10328 | .required_features = .{ .sse2, null, null, null }, |
| 10329 | .src_constraints = .{ |
| 10330 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10331 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10332 | }, |
| 10333 | .patterns = &.{ |
| 10334 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10335 | }, |
| 10336 | .extra_temps = .{ |
| 10337 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10338 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10339 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 10340 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 10341 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10342 | .unused, |
| 10343 | .unused, |
| 10344 | .unused, |
| 10345 | .unused, |
| 10346 | }, |
| 10347 | .dst_temps = .{.mem}, |
| 10348 | .clobbers = .{ .eflags = true }, |
| 10349 | .each = .{ .once = &.{ |
| 10350 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10351 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10352 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10353 | .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| 10354 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .ui(switch (cc) { |
| 10355 | else => unreachable, |
| 10356 | .e => 0b00000, |
| 10357 | .ne => 0b00100, |
| 10358 | }), ._ }, |
| 10359 | .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .ui(switch (cc) { |
| 10360 | else => unreachable, |
| 10361 | .e => 0b00000, |
| 10362 | .ne => 0b00100, |
| 10363 | }), ._ }, |
| 10364 | .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ }, |
| 10365 | .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ }, |
| 10366 | .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| 10367 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ }, |
| 10368 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10369 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10370 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10371 | } }, |
| 10372 | }, .{ |
| 10373 | .required_features = .{ .sse, null, null, null }, |
| 10374 | .src_constraints = .{ |
| 10375 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10376 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, |
| 10377 | }, |
| 10378 | .patterns = &.{ |
| 10379 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10380 | }, |
| 10381 | .extra_temps = .{ |
| 10382 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10383 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10384 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 10385 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10386 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10387 | .unused, |
| 10388 | .unused, |
| 10389 | .unused, |
| 10390 | .unused, |
| 10391 | }, |
| 10392 | .dst_temps = .{.mem}, |
| 10393 | .clobbers = .{ .eflags = true }, |
| 10394 | .each = .{ .once = &.{ |
| 10395 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10396 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10397 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10398 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .ui(switch (cc) { |
| 10399 | else => unreachable, |
| 10400 | .e => 0b00000, |
| 10401 | .ne => 0b00100, |
| 10402 | }), ._ }, |
| 10403 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, |
| 10404 | .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, |
| 10405 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .ui(switch (cc) { |
| 10406 | else => unreachable, |
| 10407 | .e => 0b00000, |
| 10408 | .ne => 0b00100, |
| 10409 | }), ._ }, |
| 10410 | .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| 10411 | .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, |
| 10412 | .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, |
| 10413 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ }, |
| 10414 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10415 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10416 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10417 | } }, |
| 10418 | }, .{ |
| 10419 | .required_features = .{ .sse, null, null, null }, |
| 10420 | .src_constraints = .{ |
| 10421 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 10422 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, |
| 10423 | }, |
| 10424 | .patterns = &.{ |
| 10425 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10426 | }, |
| 10427 | .extra_temps = .{ |
| 10428 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10429 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10430 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| 10431 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10432 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10433 | .unused, |
| 10434 | .unused, |
| 10435 | .unused, |
| 10436 | .unused, |
| 10437 | }, |
| 10438 | .dst_temps = .{.mem}, |
| 10439 | .clobbers = .{ .eflags = true }, |
| 10440 | .each = .{ .once = &.{ |
| 10441 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10442 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10443 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 10444 | .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, |
| 10445 | .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .ui(switch (cc) { |
| 10446 | else => unreachable, |
| 10447 | .e => 0b00000, |
| 10448 | .ne => 0b00100, |
| 10449 | }), ._ }, |
| 10450 | .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, |
| 10451 | .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, |
| 10452 | .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, |
| 10453 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ }, |
| 10454 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10455 | .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10456 | .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .ui(switch (cc) { |
| 10457 | else => unreachable, |
| 10458 | .e => 0b00000, |
| 10459 | .ne => 0b00100, |
| 10460 | }), ._ }, |
| 10461 | .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, |
| 10462 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10463 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10464 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ }, |
| 10465 | } }, |
| 10466 | }, .{ |
| 10467 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| 10468 | .src_constraints = .{ |
| 10469 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 10470 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 10471 | }, |
| 10472 | .patterns = &.{ |
| 10473 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10474 | }, |
| 10475 | .extra_temps = .{ |
| 10476 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10477 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10478 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 10479 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 10480 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10481 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10482 | .unused, |
| 10483 | .unused, |
| 10484 | .unused, |
| 10485 | }, |
| 10486 | .dst_temps = .{.mem}, |
| 10487 | .clobbers = .{ .eflags = true }, |
| 10488 | .each = .{ .once = &.{ |
| 10489 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10490 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10491 | .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10492 | .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, |
| 10493 | .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .ui(switch (cc) { |
| 10494 | else => unreachable, |
| 10495 | .e => 0b00000, |
| 10496 | .ne => 0b00100, |
| 10497 | }) }, |
| 10498 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .ui(switch (cc) { |
| 10499 | else => unreachable, |
| 10500 | .e => 0b00000, |
| 10501 | .ne => 0b00100, |
| 10502 | }) }, |
| 10503 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| 10504 | .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, |
| 10505 | .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, |
| 10506 | .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, |
| 10507 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ }, |
| 10508 | .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10509 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10510 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10511 | } }, |
| 10512 | }, .{ |
| 10513 | .required_features = .{ .avx, null, null, null }, |
| 10514 | .src_constraints = .{ |
| 10515 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 10516 | .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, |
| 10517 | }, |
| 10518 | .patterns = &.{ |
| 10519 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10520 | }, |
| 10521 | .extra_temps = .{ |
| 10522 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10523 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10524 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 10525 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 10526 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10527 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10528 | .unused, |
| 10529 | .unused, |
| 10530 | .unused, |
| 10531 | }, |
| 10532 | .dst_temps = .{.mem}, |
| 10533 | .clobbers = .{ .eflags = true }, |
| 10534 | .each = .{ .once = &.{ |
| 10535 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10536 | .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, |
| 10537 | .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10538 | .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, |
| 10539 | .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .ui(switch (cc) { |
| 10540 | else => unreachable, |
| 10541 | .e => 0b00000, |
| 10542 | .ne => 0b00100, |
| 10543 | }) }, |
| 10544 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .ui(switch (cc) { |
| 10545 | else => unreachable, |
| 10546 | .e => 0b00000, |
| 10547 | .ne => 0b00100, |
| 10548 | }) }, |
| 10549 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, |
| 10550 | .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, |
| 10551 | .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, |
| 10552 | .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, |
| 10553 | .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ }, |
| 10554 | .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, |
| 10555 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10556 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10557 | } }, |
| 10558 | }, .{ |
| 10559 | .required_features = .{ .avx, null, null, null }, |
| 10560 | .src_constraints = .{ |
| 10561 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 10562 | .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, |
| 10563 | }, |
| 10564 | .patterns = &.{ |
| 10565 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10566 | }, |
| 10567 | .extra_temps = .{ |
| 10568 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10569 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10570 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10571 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| 10572 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10573 | .unused, |
| 10574 | .unused, |
| 10575 | .unused, |
| 10576 | .unused, |
| 10577 | }, |
| 10578 | .dst_temps = .{.mem}, |
| 10579 | .clobbers = .{ .eflags = true }, |
| 10580 | .each = .{ .once = &.{ |
| 10581 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10582 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10583 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10584 | .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10585 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .ui(switch (cc) { |
| 10586 | else => unreachable, |
| 10587 | .e => 0b00000, |
| 10588 | .ne => 0b00100, |
| 10589 | }) }, |
| 10590 | .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ }, |
| 10591 | .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, |
| 10592 | .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, |
| 10593 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ }, |
| 10594 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10595 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10596 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| 10597 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| 10598 | .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, |
| 10599 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10600 | .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10601 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10602 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10603 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10604 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| 10605 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| 10606 | .{ ._, ._, .mov, .memi(.dst0b, .tmp4), .tmp2b, ._, ._ }, |
| 10607 | } }, |
| 10608 | }, .{ |
| 10609 | .required_features = .{ .sse2, null, null, null }, |
| 10610 | .src_constraints = .{ |
| 10611 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 10612 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, |
| 10613 | }, |
| 10614 | .patterns = &.{ |
| 10615 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10616 | }, |
| 10617 | .extra_temps = .{ |
| 10618 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10619 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10620 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10621 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| 10622 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10623 | .unused, |
| 10624 | .unused, |
| 10625 | .unused, |
| 10626 | .unused, |
| 10627 | }, |
| 10628 | .dst_temps = .{.mem}, |
| 10629 | .clobbers = .{ .eflags = true }, |
| 10630 | .each = .{ .once = &.{ |
| 10631 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10632 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10633 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10634 | .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10635 | .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .ui(switch (cc) { |
| 10636 | else => unreachable, |
| 10637 | .e => 0b00000, |
| 10638 | .ne => 0b00100, |
| 10639 | }), ._ }, |
| 10640 | .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ }, |
| 10641 | .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, |
| 10642 | .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, |
| 10643 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ }, |
| 10644 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10645 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10646 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| 10647 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| 10648 | .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, |
| 10649 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10650 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10651 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10652 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10653 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10654 | .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, |
| 10655 | .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, |
| 10656 | .{ ._, ._, .mov, .memi(.dst0b, .tmp4), .tmp2b, ._, ._ }, |
| 10657 | } }, |
| 10658 | }, .{ |
| 10659 | .required_features = .{ .x87, .cmov, .slow_incdec, null }, |
| 10660 | .src_constraints = .{ |
| 10661 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10662 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10663 | }, |
| 10664 | .patterns = &.{ |
| 10665 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10666 | }, |
| 10667 | .extra_temps = .{ |
| 10668 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10669 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10670 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10671 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10672 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10673 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10674 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10675 | .unused, |
| 10676 | .unused, |
| 10677 | }, |
| 10678 | .dst_temps = .{.mem}, |
| 10679 | .clobbers = .{ .eflags = true }, |
| 10680 | .each = .{ .once = &.{ |
| 10681 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10682 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10683 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10684 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10685 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 10686 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| 10687 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| 10688 | .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ }, |
| 10689 | .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ }, |
| 10690 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10691 | .{ ._, switch (cc) { |
| 10692 | else => unreachable, |
| 10693 | .e => ._np, |
| 10694 | .ne => ._p, |
| 10695 | }, .set, .tmp4b, ._, ._, ._ }, |
| 10696 | .{ ._, ._, switch (cc) { |
| 10697 | else => unreachable, |
| 10698 | .e => .@"and", |
| 10699 | .ne => .@"or", |
| 10700 | }, .tmp3b, .tmp4b, ._, ._ }, |
| 10701 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10702 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10703 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10704 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10705 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10706 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10707 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10708 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10709 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10710 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 10711 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10712 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10713 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10714 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10715 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10716 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10717 | } }, |
| 10718 | }, .{ |
| 10719 | .required_features = .{ .x87, .cmov, null, null }, |
| 10720 | .src_constraints = .{ |
| 10721 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10722 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10723 | }, |
| 10724 | .patterns = &.{ |
| 10725 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10726 | }, |
| 10727 | .extra_temps = .{ |
| 10728 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10729 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10730 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10731 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10732 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10733 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10734 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10735 | .unused, |
| 10736 | .unused, |
| 10737 | }, |
| 10738 | .dst_temps = .{.mem}, |
| 10739 | .clobbers = .{ .eflags = true }, |
| 10740 | .each = .{ .once = &.{ |
| 10741 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10742 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10743 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10744 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10745 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 10746 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| 10747 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| 10748 | .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ }, |
| 10749 | .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ }, |
| 10750 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10751 | .{ ._, switch (cc) { |
| 10752 | else => unreachable, |
| 10753 | .e => ._np, |
| 10754 | .ne => ._p, |
| 10755 | }, .set, .tmp4b, ._, ._, ._ }, |
| 10756 | .{ ._, ._, switch (cc) { |
| 10757 | else => unreachable, |
| 10758 | .e => .@"and", |
| 10759 | .ne => .@"or", |
| 10760 | }, .tmp3b, .tmp4b, ._, ._ }, |
| 10761 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10762 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10763 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 10764 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10765 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10766 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10767 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10768 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10769 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10770 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 10771 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10772 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10773 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10774 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10775 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10776 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10777 | } }, |
| 10778 | }, .{ |
| 10779 | .required_features = .{ .x87, null, null, null }, |
| 10780 | .src_constraints = .{ |
| 10781 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10782 | .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, |
| 10783 | }, |
| 10784 | .patterns = &.{ |
| 10785 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10786 | }, |
| 10787 | .extra_temps = .{ |
| 10788 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10789 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10790 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10791 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10792 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10793 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10794 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 10795 | .unused, |
| 10796 | .unused, |
| 10797 | }, |
| 10798 | .dst_temps = .{.mem}, |
| 10799 | .clobbers = .{ .eflags = true }, |
| 10800 | .each = .{ .once = &.{ |
| 10801 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10802 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10803 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10804 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10805 | .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, |
| 10806 | .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, |
| 10807 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| 10808 | .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, |
| 10809 | .{ ._, ._, .xor, .tmp6b, .si(0b0_1_000_000), ._, ._ }, |
| 10810 | .{ ._, ._, .@"test", .tmp6b, .si(0b0_1_000_100), ._, ._ }, |
| 10811 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10812 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10813 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10814 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 10815 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10816 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10817 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10818 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10819 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10820 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10821 | .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 10822 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10823 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10824 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10825 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10826 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10827 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10828 | } }, |
| 10829 | }, .{ |
| 10830 | .required_features = .{ .x87, .cmov, .slow_incdec, null }, |
| 10831 | .src_constraints = .{ |
| 10832 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10833 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10834 | }, |
| 10835 | .patterns = &.{ |
| 10836 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10837 | }, |
| 10838 | .extra_temps = .{ |
| 10839 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10840 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10841 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10842 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10843 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10844 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10845 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10846 | .unused, |
| 10847 | .unused, |
| 10848 | }, |
| 10849 | .dst_temps = .{.mem}, |
| 10850 | .clobbers = .{ .eflags = true }, |
| 10851 | .each = .{ .once = &.{ |
| 10852 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10853 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10854 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10855 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10856 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 10857 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| 10858 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| 10859 | .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ }, |
| 10860 | .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ }, |
| 10861 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10862 | .{ ._, switch (cc) { |
| 10863 | else => unreachable, |
| 10864 | .e => ._np, |
| 10865 | .ne => ._p, |
| 10866 | }, .set, .tmp4b, ._, ._, ._ }, |
| 10867 | .{ ._, ._, switch (cc) { |
| 10868 | else => unreachable, |
| 10869 | .e => .@"and", |
| 10870 | .ne => .@"or", |
| 10871 | }, .tmp3b, .tmp4b, ._, ._ }, |
| 10872 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10873 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10874 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 10875 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10876 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10877 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10878 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10879 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10880 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10881 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10882 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10883 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10884 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10885 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10886 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10887 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10888 | } }, |
| 10889 | }, .{ |
| 10890 | .required_features = .{ .x87, .cmov, null, null }, |
| 10891 | .src_constraints = .{ |
| 10892 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10893 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10894 | }, |
| 10895 | .patterns = &.{ |
| 10896 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10897 | }, |
| 10898 | .extra_temps = .{ |
| 10899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10900 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10901 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10902 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10903 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10904 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10905 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10906 | .unused, |
| 10907 | .unused, |
| 10908 | }, |
| 10909 | .dst_temps = .{.mem}, |
| 10910 | .clobbers = .{ .eflags = true }, |
| 10911 | .each = .{ .once = &.{ |
| 10912 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10913 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10914 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10915 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10916 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 10917 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| 10918 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| 10919 | .{ ._, .f_p, .ucomi, .tmp5t, .tmp6t, ._, ._ }, |
| 10920 | .{ ._, .f_p, .st, .tmp6t, ._, ._, ._ }, |
| 10921 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10922 | .{ ._, switch (cc) { |
| 10923 | else => unreachable, |
| 10924 | .e => ._np, |
| 10925 | .ne => ._p, |
| 10926 | }, .set, .tmp4b, ._, ._, ._ }, |
| 10927 | .{ ._, ._, switch (cc) { |
| 10928 | else => unreachable, |
| 10929 | .e => .@"and", |
| 10930 | .ne => .@"or", |
| 10931 | }, .tmp3b, .tmp4b, ._, ._ }, |
| 10932 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10933 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10934 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 10935 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10936 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10937 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10938 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10939 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10940 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10941 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10942 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10943 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10944 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10945 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10946 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10947 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10948 | } }, |
| 10949 | }, .{ |
| 10950 | .required_features = .{ .x87, null, null, null }, |
| 10951 | .src_constraints = .{ |
| 10952 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10953 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, |
| 10954 | }, |
| 10955 | .patterns = &.{ |
| 10956 | .{ .src = .{ .to_mem, .to_mem } }, |
| 10957 | }, |
| 10958 | .extra_temps = .{ |
| 10959 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10960 | .{ .type = .u32, .kind = .{ .reg = .rcx } }, |
| 10961 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 10962 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 10963 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10964 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10965 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 10966 | .unused, |
| 10967 | .unused, |
| 10968 | }, |
| 10969 | .dst_temps = .{.mem}, |
| 10970 | .clobbers = .{ .eflags = true }, |
| 10971 | .each = .{ .once = &.{ |
| 10972 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10973 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 10974 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10975 | .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 10976 | .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, |
| 10977 | .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, |
| 10978 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| 10979 | .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, |
| 10980 | .{ ._, ._, .xor, .tmp6b, .si(0b0_1_000_000), ._, ._ }, |
| 10981 | .{ ._, ._, .@"test", .tmp6b, .si(0b0_1_000_100), ._, ._ }, |
| 10982 | .{ ._, .fromCondition(cc), .set, .tmp3b, ._, ._, ._ }, |
| 10983 | .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, |
| 10984 | .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, |
| 10985 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 10986 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10987 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 10988 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10989 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10990 | .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, |
| 10991 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 10992 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10993 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10994 | .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, |
| 10995 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 10996 | .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, |
| 10997 | .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, |
| 10998 | .{ ._, ._, .mov, .memi(.dst0b, .tmp3), .tmp2b, ._, ._ }, |
| 10999 | } }, |
| 11000 | }, .{ |
| 11001 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| 11002 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11003 | .src_constraints = .{ |
| 11004 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11005 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11006 | }, |
| 11007 | .patterns = &.{ |
| 11008 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11009 | }, |
| 11010 | .call_frame = .{ .alignment = .@"16" }, |
| 11011 | .extra_temps = .{ |
| 11012 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11013 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11014 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11015 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11016 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11017 | else => unreachable, |
| 11018 | .e => "__eqtf2", |
| 11019 | .ne => "__netf2", |
| 11020 | } } } }, |
| 11021 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11022 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11023 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11024 | .unused, |
| 11025 | }, |
| 11026 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11027 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11028 | .each = .{ .once = &.{ |
| 11029 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11030 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11031 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11032 | .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11033 | .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11034 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11035 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11036 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11037 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11038 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11039 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11040 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11041 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11042 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11043 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11044 | } }, |
| 11045 | }, .{ |
| 11046 | .required_features = .{ .avx, .slow_incdec, null, null }, |
| 11047 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11048 | .src_constraints = .{ |
| 11049 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11050 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11051 | }, |
| 11052 | .patterns = &.{ |
| 11053 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11054 | }, |
| 11055 | .call_frame = .{ .alignment = .@"16" }, |
| 11056 | .extra_temps = .{ |
| 11057 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11058 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11059 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11060 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11061 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11062 | else => unreachable, |
| 11063 | .e => "__eqtf2", |
| 11064 | .ne => "__netf2", |
| 11065 | } } } }, |
| 11066 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11067 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11068 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11069 | .unused, |
| 11070 | }, |
| 11071 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11072 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11073 | .each = .{ .once = &.{ |
| 11074 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11075 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11076 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11077 | .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11078 | .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11079 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11080 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11081 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11082 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11083 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11084 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11085 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11086 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11087 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11088 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11089 | } }, |
| 11090 | }, .{ |
| 11091 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| 11092 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11093 | .src_constraints = .{ |
| 11094 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11095 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11096 | }, |
| 11097 | .patterns = &.{ |
| 11098 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11099 | }, |
| 11100 | .call_frame = .{ .alignment = .@"16" }, |
| 11101 | .extra_temps = .{ |
| 11102 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11103 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11104 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11105 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11106 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11107 | else => unreachable, |
| 11108 | .e => "__eqtf2", |
| 11109 | .ne => "__netf2", |
| 11110 | } } } }, |
| 11111 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11112 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11113 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11114 | .unused, |
| 11115 | }, |
| 11116 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11117 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11118 | .each = .{ .once = &.{ |
| 11119 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11120 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11121 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11122 | .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11123 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11124 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11125 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11126 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11127 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11128 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11129 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11130 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11131 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11132 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11133 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11134 | } }, |
| 11135 | }, .{ |
| 11136 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| 11137 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11138 | .src_constraints = .{ |
| 11139 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11140 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11141 | }, |
| 11142 | .patterns = &.{ |
| 11143 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11144 | }, |
| 11145 | .call_frame = .{ .alignment = .@"16" }, |
| 11146 | .extra_temps = .{ |
| 11147 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11148 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11149 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11150 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11151 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11152 | else => unreachable, |
| 11153 | .e => "__eqtf2", |
| 11154 | .ne => "__netf2", |
| 11155 | } } } }, |
| 11156 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11157 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11158 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11159 | .unused, |
| 11160 | }, |
| 11161 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11162 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11163 | .each = .{ .once = &.{ |
| 11164 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11165 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11166 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11167 | .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11168 | .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11169 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11170 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11171 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11172 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11173 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11174 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11175 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11176 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11177 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11178 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11179 | } }, |
| 11180 | }, .{ |
| 11181 | .required_features = .{ .sse, .slow_incdec, null, null }, |
| 11182 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11183 | .src_constraints = .{ |
| 11184 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11185 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11186 | }, |
| 11187 | .patterns = &.{ |
| 11188 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11189 | }, |
| 11190 | .call_frame = .{ .alignment = .@"16" }, |
| 11191 | .extra_temps = .{ |
| 11192 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11193 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11194 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11195 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11196 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11197 | else => unreachable, |
| 11198 | .e => "__eqtf2", |
| 11199 | .ne => "__netf2", |
| 11200 | } } } }, |
| 11201 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11202 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11203 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11204 | .unused, |
| 11205 | }, |
| 11206 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11207 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11208 | .each = .{ .once = &.{ |
| 11209 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11210 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11211 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11212 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11213 | .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11214 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11215 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11216 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11217 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11218 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11219 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11220 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11221 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11222 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11223 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11224 | } }, |
| 11225 | }, .{ |
| 11226 | .required_features = .{ .sse2, .slow_incdec, null, null }, |
| 11227 | .dst_constraints = .{.{ .bool_vec = .dword }}, |
| 11228 | .src_constraints = .{ |
| 11229 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11230 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11231 | }, |
| 11232 | .patterns = &.{ |
| 11233 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11234 | }, |
| 11235 | .call_frame = .{ .alignment = .@"16" }, |
| 11236 | .extra_temps = .{ |
| 11237 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11238 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11239 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11240 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11241 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11242 | else => unreachable, |
| 11243 | .e => "__eqtf2", |
| 11244 | .ne => "__netf2", |
| 11245 | } } } }, |
| 11246 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11247 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11248 | .{ .type = .u32, .kind = .{ .reg = .edx } }, |
| 11249 | .unused, |
| 11250 | }, |
| 11251 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 11252 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11253 | .each = .{ .once = &.{ |
| 11254 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 11255 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11256 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11257 | .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11258 | .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11259 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| 11260 | .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, |
| 11261 | .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, |
| 11262 | .{ ._, .fromCondition(cc), .set, .tmp7b, ._, ._, ._ }, |
| 11263 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11264 | .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, |
| 11265 | .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, |
| 11266 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11267 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11268 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11269 | } }, |
| 11270 | }, .{ |
| 11271 | .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, |
| 11272 | .src_constraints = .{ |
| 11273 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11274 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11275 | }, |
| 11276 | .patterns = &.{ |
| 11277 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11278 | }, |
| 11279 | .call_frame = .{ .alignment = .@"16" }, |
| 11280 | .extra_temps = .{ |
| 11281 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11282 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11283 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11284 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11285 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11286 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11287 | else => unreachable, |
| 11288 | .e => "__eqtf2", |
| 11289 | .ne => "__netf2", |
| 11290 | } } } }, |
| 11291 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11292 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11293 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11294 | }, |
| 11295 | .dst_temps = .{.mem}, |
| 11296 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11297 | .each = .{ .once = &.{ |
| 11298 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11299 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11300 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11301 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11302 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11303 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11304 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11305 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11306 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11307 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11308 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11309 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11310 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11311 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11312 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11313 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11314 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11315 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11316 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11317 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11318 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11319 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11320 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11321 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11322 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11323 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11324 | } }, |
| 11325 | }, .{ |
| 11326 | .required_features = .{ .@"64bit", .avx, null, null }, |
| 11327 | .src_constraints = .{ |
| 11328 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11329 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11330 | }, |
| 11331 | .patterns = &.{ |
| 11332 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11333 | }, |
| 11334 | .call_frame = .{ .alignment = .@"16" }, |
| 11335 | .extra_temps = .{ |
| 11336 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11337 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11338 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11339 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11340 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11341 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11342 | else => unreachable, |
| 11343 | .e => "__eqtf2", |
| 11344 | .ne => "__netf2", |
| 11345 | } } } }, |
| 11346 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11347 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11348 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11349 | }, |
| 11350 | .dst_temps = .{.mem}, |
| 11351 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11352 | .each = .{ .once = &.{ |
| 11353 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11354 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11355 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11356 | .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11357 | .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11358 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11359 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11360 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11361 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11362 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11363 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11364 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11365 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11366 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11367 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11368 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11369 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11370 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11371 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11372 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11373 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11374 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11375 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11376 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11377 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11378 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11379 | } }, |
| 11380 | }, .{ |
| 11381 | .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, |
| 11382 | .src_constraints = .{ |
| 11383 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11384 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11385 | }, |
| 11386 | .patterns = &.{ |
| 11387 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11388 | }, |
| 11389 | .call_frame = .{ .alignment = .@"16" }, |
| 11390 | .extra_temps = .{ |
| 11391 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11392 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11393 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11394 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11395 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11396 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11397 | else => unreachable, |
| 11398 | .e => "__eqtf2", |
| 11399 | .ne => "__netf2", |
| 11400 | } } } }, |
| 11401 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11402 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11403 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11404 | }, |
| 11405 | .dst_temps = .{.mem}, |
| 11406 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11407 | .each = .{ .once = &.{ |
| 11408 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11409 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11410 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11411 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11412 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11413 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11414 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11415 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11416 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11417 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11418 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11419 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11420 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11421 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11422 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11423 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11424 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11425 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11426 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11427 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11428 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11429 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11430 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11431 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11432 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11433 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11434 | } }, |
| 11435 | }, .{ |
| 11436 | .required_features = .{ .@"64bit", .sse2, null, null }, |
| 11437 | .src_constraints = .{ |
| 11438 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11439 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11440 | }, |
| 11441 | .patterns = &.{ |
| 11442 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11443 | }, |
| 11444 | .call_frame = .{ .alignment = .@"16" }, |
| 11445 | .extra_temps = .{ |
| 11446 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11447 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11448 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11449 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11450 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11451 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11452 | else => unreachable, |
| 11453 | .e => "__eqtf2", |
| 11454 | .ne => "__netf2", |
| 11455 | } } } }, |
| 11456 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11457 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11458 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11459 | }, |
| 11460 | .dst_temps = .{.mem}, |
| 11461 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11462 | .each = .{ .once = &.{ |
| 11463 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11464 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11465 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11466 | .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11467 | .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11468 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11469 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11470 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11471 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11472 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11473 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11474 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11475 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11476 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11477 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11478 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11479 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11480 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11481 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11482 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11483 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11484 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11485 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11486 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11487 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11488 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11489 | } }, |
| 11490 | }, .{ |
| 11491 | .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, |
| 11492 | .src_constraints = .{ |
| 11493 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11494 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11495 | }, |
| 11496 | .patterns = &.{ |
| 11497 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11498 | }, |
| 11499 | .call_frame = .{ .alignment = .@"16" }, |
| 11500 | .extra_temps = .{ |
| 11501 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11502 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11503 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11504 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11505 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11506 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11507 | else => unreachable, |
| 11508 | .e => "__eqtf2", |
| 11509 | .ne => "__netf2", |
| 11510 | } } } }, |
| 11511 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11512 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11513 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11514 | }, |
| 11515 | .dst_temps = .{.mem}, |
| 11516 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11517 | .each = .{ .once = &.{ |
| 11518 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11519 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11520 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11521 | .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11522 | .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11523 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11524 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11525 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11526 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11527 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11528 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11529 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11530 | .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ }, |
| 11531 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11532 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11533 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11534 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11535 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11536 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11537 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11538 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11539 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11540 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11541 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11542 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11543 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11544 | } }, |
| 11545 | }, .{ |
| 11546 | .required_features = .{ .@"64bit", .sse, null, null }, |
| 11547 | .src_constraints = .{ |
| 11548 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11549 | .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, |
| 11550 | }, |
| 11551 | .patterns = &.{ |
| 11552 | .{ .src = .{ .to_mem, .to_mem } }, |
| 11553 | }, |
| 11554 | .call_frame = .{ .alignment = .@"16" }, |
| 11555 | .extra_temps = .{ |
| 11556 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 11557 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 11558 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 11559 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| 11560 | .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, |
| 11561 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11562 | else => unreachable, |
| 11563 | .e => "__eqtf2", |
| 11564 | .ne => "__netf2", |
| 11565 | } } } }, |
| 11566 | .{ .type = .i32, .kind = .{ .reg = .eax } }, |
| 11567 | .{ .type = .u8, .kind = .{ .reg = .cl } }, |
| 11568 | .{ .type = .u64, .kind = .{ .reg = .rdx } }, |
| 11569 | }, |
| 11570 | .dst_temps = .{.mem}, |
| 11571 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11572 | .each = .{ .once = &.{ |
| 11573 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 11574 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 11575 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11576 | .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 11577 | .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 11578 | .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, |
| 11579 | .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, |
| 11580 | .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, |
| 11581 | .{ ._, .fromCondition(cc), .set, .tmp8b, ._, ._, ._ }, |
| 11582 | .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, |
| 11583 | .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, |
| 11584 | .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, |
| 11585 | .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, |
| 11586 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11587 | .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, |
| 11588 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11589 | .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, |
| 11590 | .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, |
| 11591 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 11592 | .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 11593 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11594 | .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, |
| 11595 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 11596 | .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, |
| 11597 | .{ ._, ._r, .sh, .tmp6d, .si(9), ._, ._ }, |
| 11598 | .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp6), .tmp2q, ._, ._ }, |
| 11599 | } }, |
| 11600 | } }, |
| 11601 | }) catch |err| switch (err) { |
| 11602 | error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{ |
| 11603 | @tagName(air_tag), |
| 11604 | @tagName(extra.compareOperator()), |
| 11605 | cg.typeOf(extra.lhs).fmt(pt), |
| 11606 | ops[0].tracking(cg), |
| 11607 | ops[1].tracking(cg), |
| 11608 | }), |
| 11609 | else => |e| return e, |
| 11610 | }, |
| 11611 | .gte => unreachable, |
| 11612 | .gt => unreachable, |
| 11613 | } |
| 11614 | try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); |
| 11615 | }, |
| 11616 | |
| 11617 | .abs => |air_tag| if (use_old) try cg.airAbs(inst) else { |
| 11618 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; |
| 11619 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| 11620 | var res: [1]Temp = undefined; |
| 11621 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| 11622 | .required_features = .{ .cmov, null, null, null }, |
| 11623 | .src_constraints = .{ .{ .int = .byte }, .any }, |
| 8865 | 11624 | .patterns = &.{ |
| 8866 | 11625 | .{ .src = .{ .to_gpr, .none } }, |
| 8867 | 11626 | }, |
| ... | ... | @@ -9037,6 +11796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9037 | 11796 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 9038 | 11797 | .unused, |
| 9039 | 11798 | .unused, |
| 11799 | .unused, |
| 11800 | .unused, |
| 11801 | .unused, |
| 9040 | 11802 | }, |
| 9041 | 11803 | .dst_temps = .{.mem}, |
| 9042 | 11804 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9061,7 +11823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9061 | 11823 | .{ .src = .{ .mem, .none } }, |
| 9062 | 11824 | .{ .src = .{ .to_mm, .none } }, |
| 9063 | 11825 | }, |
| 9064 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .mmx } }}, |
| 11826 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 9065 | 11827 | .each = .{ .once = &.{ |
| 9066 | 11828 | .{ ._, .p_b, .abs, .dst0q, .src0q, ._, ._ }, |
| 9067 | 11829 | } }, |
| ... | ... | @@ -9072,7 +11834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9072 | 11834 | .{ .src = .{ .mem, .none } }, |
| 9073 | 11835 | .{ .src = .{ .to_mm, .none } }, |
| 9074 | 11836 | }, |
| 9075 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .mmx } }}, |
| 11837 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 9076 | 11838 | .each = .{ .once = &.{ |
| 9077 | 11839 | .{ ._, .p_w, .abs, .dst0q, .src0q, ._, ._ }, |
| 9078 | 11840 | } }, |
| ... | ... | @@ -9083,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9083 | 11845 | .{ .src = .{ .mem, .none } }, |
| 9084 | 11846 | .{ .src = .{ .to_mm, .none } }, |
| 9085 | 11847 | }, |
| 9086 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .mmx } }}, |
| 11848 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, |
| 9087 | 11849 | .each = .{ .once = &.{ |
| 9088 | 11850 | .{ ._, .p_d, .abs, .dst0q, .src0q, ._, ._ }, |
| 9089 | 11851 | } }, |
| ... | ... | @@ -9094,7 +11856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9094 | 11856 | .{ .src = .{ .mem, .none } }, |
| 9095 | 11857 | .{ .src = .{ .to_sse, .none } }, |
| 9096 | 11858 | }, |
| 9097 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11859 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9098 | 11860 | .each = .{ .once = &.{ |
| 9099 | 11861 | .{ ._, .p_b, .abs, .dst0x, .src0x, ._, ._ }, |
| 9100 | 11862 | } }, |
| ... | ... | @@ -9105,7 +11867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9105 | 11867 | .{ .src = .{ .mem, .none } }, |
| 9106 | 11868 | .{ .src = .{ .to_sse, .none } }, |
| 9107 | 11869 | }, |
| 9108 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11870 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9109 | 11871 | .each = .{ .once = &.{ |
| 9110 | 11872 | .{ ._, .p_w, .abs, .dst0x, .src0x, ._, ._ }, |
| 9111 | 11873 | } }, |
| ... | ... | @@ -9116,7 +11878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9116 | 11878 | .{ .src = .{ .mem, .none } }, |
| 9117 | 11879 | .{ .src = .{ .to_sse, .none } }, |
| 9118 | 11880 | }, |
| 9119 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11881 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9120 | 11882 | .each = .{ .once = &.{ |
| 9121 | 11883 | .{ ._, .p_d, .abs, .dst0x, .src0x, ._, ._ }, |
| 9122 | 11884 | } }, |
| ... | ... | @@ -9127,7 +11889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9127 | 11889 | .{ .src = .{ .mem, .none } }, |
| 9128 | 11890 | .{ .src = .{ .to_sse, .none } }, |
| 9129 | 11891 | }, |
| 9130 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11892 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9131 | 11893 | .each = .{ .once = &.{ |
| 9132 | 11894 | .{ ._, .vp_b, .abs, .dst0x, .src0x, ._, ._ }, |
| 9133 | 11895 | } }, |
| ... | ... | @@ -9138,7 +11900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9138 | 11900 | .{ .src = .{ .mem, .none } }, |
| 9139 | 11901 | .{ .src = .{ .to_sse, .none } }, |
| 9140 | 11902 | }, |
| 9141 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11903 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9142 | 11904 | .each = .{ .once = &.{ |
| 9143 | 11905 | .{ ._, .vp_w, .abs, .dst0x, .src0x, ._, ._ }, |
| 9144 | 11906 | } }, |
| ... | ... | @@ -9149,7 +11911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9149 | 11911 | .{ .src = .{ .mem, .none } }, |
| 9150 | 11912 | .{ .src = .{ .to_sse, .none } }, |
| 9151 | 11913 | }, |
| 9152 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11914 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9153 | 11915 | .each = .{ .once = &.{ |
| 9154 | 11916 | .{ ._, .vp_d, .abs, .dst0x, .src0x, ._, ._ }, |
| 9155 | 11917 | } }, |
| ... | ... | @@ -9160,7 +11922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9160 | 11922 | .{ .src = .{ .mem, .none } }, |
| 9161 | 11923 | .{ .src = .{ .to_sse, .none } }, |
| 9162 | 11924 | }, |
| 9163 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11925 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9164 | 11926 | .each = .{ .once = &.{ |
| 9165 | 11927 | .{ ._, .vp_b, .abs, .dst0y, .src0y, ._, ._ }, |
| 9166 | 11928 | } }, |
| ... | ... | @@ -9171,7 +11933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9171 | 11933 | .{ .src = .{ .mem, .none } }, |
| 9172 | 11934 | .{ .src = .{ .to_sse, .none } }, |
| 9173 | 11935 | }, |
| 9174 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11936 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9175 | 11937 | .each = .{ .once = &.{ |
| 9176 | 11938 | .{ ._, .vp_w, .abs, .dst0y, .src0y, ._, ._ }, |
| 9177 | 11939 | } }, |
| ... | ... | @@ -9182,7 +11944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9182 | 11944 | .{ .src = .{ .mem, .none } }, |
| 9183 | 11945 | .{ .src = .{ .to_sse, .none } }, |
| 9184 | 11946 | }, |
| 9185 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 11947 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9186 | 11948 | .each = .{ .once = &.{ |
| 9187 | 11949 | .{ ._, .vp_d, .abs, .dst0y, .src0y, ._, ._ }, |
| 9188 | 11950 | } }, |
| ... | ... | @@ -9199,6 +11961,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9199 | 11961 | .unused, |
| 9200 | 11962 | .unused, |
| 9201 | 11963 | .unused, |
| 11964 | .unused, |
| 11965 | .unused, |
| 11966 | .unused, |
| 9202 | 11967 | }, |
| 9203 | 11968 | .dst_temps = .{.mem}, |
| 9204 | 11969 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9222,6 +11987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9222 | 11987 | .unused, |
| 9223 | 11988 | .unused, |
| 9224 | 11989 | .unused, |
| 11990 | .unused, |
| 11991 | .unused, |
| 11992 | .unused, |
| 9225 | 11993 | }, |
| 9226 | 11994 | .dst_temps = .{.mem}, |
| 9227 | 11995 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9245,6 +12013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9245 | 12013 | .unused, |
| 9246 | 12014 | .unused, |
| 9247 | 12015 | .unused, |
| 12016 | .unused, |
| 12017 | .unused, |
| 12018 | .unused, |
| 9248 | 12019 | }, |
| 9249 | 12020 | .dst_temps = .{.mem}, |
| 9250 | 12021 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9268,6 +12039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9268 | 12039 | .unused, |
| 9269 | 12040 | .unused, |
| 9270 | 12041 | .unused, |
| 12042 | .unused, |
| 12043 | .unused, |
| 12044 | .unused, |
| 9271 | 12045 | }, |
| 9272 | 12046 | .dst_temps = .{.mem}, |
| 9273 | 12047 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9291,6 +12065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9291 | 12065 | .unused, |
| 9292 | 12066 | .unused, |
| 9293 | 12067 | .unused, |
| 12068 | .unused, |
| 12069 | .unused, |
| 12070 | .unused, |
| 9294 | 12071 | }, |
| 9295 | 12072 | .dst_temps = .{.mem}, |
| 9296 | 12073 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9314,6 +12091,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9314 | 12091 | .unused, |
| 9315 | 12092 | .unused, |
| 9316 | 12093 | .unused, |
| 12094 | .unused, |
| 12095 | .unused, |
| 12096 | .unused, |
| 9317 | 12097 | }, |
| 9318 | 12098 | .dst_temps = .{.mem}, |
| 9319 | 12099 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9337,6 +12117,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9337 | 12117 | .unused, |
| 9338 | 12118 | .unused, |
| 9339 | 12119 | .unused, |
| 12120 | .unused, |
| 12121 | .unused, |
| 12122 | .unused, |
| 9340 | 12123 | }, |
| 9341 | 12124 | .dst_temps = .{.mem}, |
| 9342 | 12125 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9360,6 +12143,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9360 | 12143 | .unused, |
| 9361 | 12144 | .unused, |
| 9362 | 12145 | .unused, |
| 12146 | .unused, |
| 12147 | .unused, |
| 12148 | .unused, |
| 9363 | 12149 | }, |
| 9364 | 12150 | .dst_temps = .{.mem}, |
| 9365 | 12151 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9383,6 +12169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9383 | 12169 | .unused, |
| 9384 | 12170 | .unused, |
| 9385 | 12171 | .unused, |
| 12172 | .unused, |
| 12173 | .unused, |
| 12174 | .unused, |
| 9386 | 12175 | }, |
| 9387 | 12176 | .dst_temps = .{.mem}, |
| 9388 | 12177 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9406,6 +12195,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9406 | 12195 | .unused, |
| 9407 | 12196 | .unused, |
| 9408 | 12197 | .unused, |
| 12198 | .unused, |
| 12199 | .unused, |
| 12200 | .unused, |
| 9409 | 12201 | }, |
| 9410 | 12202 | .dst_temps = .{.mem}, |
| 9411 | 12203 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9429,6 +12221,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9429 | 12221 | .unused, |
| 9430 | 12222 | .unused, |
| 9431 | 12223 | .unused, |
| 12224 | .unused, |
| 12225 | .unused, |
| 12226 | .unused, |
| 9432 | 12227 | }, |
| 9433 | 12228 | .dst_temps = .{.mem}, |
| 9434 | 12229 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9452,6 +12247,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9452 | 12247 | .unused, |
| 9453 | 12248 | .unused, |
| 9454 | 12249 | .unused, |
| 12250 | .unused, |
| 12251 | .unused, |
| 12252 | .unused, |
| 9455 | 12253 | }, |
| 9456 | 12254 | .dst_temps = .{.mem}, |
| 9457 | 12255 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9475,6 +12273,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9475 | 12273 | .unused, |
| 9476 | 12274 | .unused, |
| 9477 | 12275 | .unused, |
| 12276 | .unused, |
| 12277 | .unused, |
| 12278 | .unused, |
| 9478 | 12279 | }, |
| 9479 | 12280 | .dst_temps = .{.mem}, |
| 9480 | 12281 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9501,6 +12302,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9501 | 12302 | .unused, |
| 9502 | 12303 | .unused, |
| 9503 | 12304 | .unused, |
| 12305 | .unused, |
| 12306 | .unused, |
| 12307 | .unused, |
| 9504 | 12308 | }, |
| 9505 | 12309 | .dst_temps = .{.mem}, |
| 9506 | 12310 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9527,6 +12331,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9527 | 12331 | .unused, |
| 9528 | 12332 | .unused, |
| 9529 | 12333 | .unused, |
| 12334 | .unused, |
| 12335 | .unused, |
| 12336 | .unused, |
| 9530 | 12337 | }, |
| 9531 | 12338 | .dst_temps = .{.mem}, |
| 9532 | 12339 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9552,6 +12359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9552 | 12359 | .unused, |
| 9553 | 12360 | .unused, |
| 9554 | 12361 | .unused, |
| 12362 | .unused, |
| 12363 | .unused, |
| 12364 | .unused, |
| 9555 | 12365 | }, |
| 9556 | 12366 | .dst_temps = .{.mem}, |
| 9557 | 12367 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9578,6 +12388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9578 | 12388 | .unused, |
| 9579 | 12389 | .unused, |
| 9580 | 12390 | .unused, |
| 12391 | .unused, |
| 12392 | .unused, |
| 12393 | .unused, |
| 9581 | 12394 | }, |
| 9582 | 12395 | .dst_temps = .{.mem}, |
| 9583 | 12396 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9602,6 +12415,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9602 | 12415 | .unused, |
| 9603 | 12416 | .unused, |
| 9604 | 12417 | .unused, |
| 12418 | .unused, |
| 12419 | .unused, |
| 12420 | .unused, |
| 9605 | 12421 | }, |
| 9606 | 12422 | .dst_temps = .{.mem}, |
| 9607 | 12423 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9628,6 +12444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9628 | 12444 | .unused, |
| 9629 | 12445 | .unused, |
| 9630 | 12446 | .unused, |
| 12447 | .unused, |
| 12448 | .unused, |
| 12449 | .unused, |
| 9631 | 12450 | }, |
| 9632 | 12451 | .dst_temps = .{.mem}, |
| 9633 | 12452 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9652,6 +12471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9652 | 12471 | .unused, |
| 9653 | 12472 | .unused, |
| 9654 | 12473 | .unused, |
| 12474 | .unused, |
| 12475 | .unused, |
| 12476 | .unused, |
| 9655 | 12477 | }, |
| 9656 | 12478 | .dst_temps = .{.mem}, |
| 9657 | 12479 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9678,6 +12500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9678 | 12500 | .unused, |
| 9679 | 12501 | .unused, |
| 9680 | 12502 | .unused, |
| 12503 | .unused, |
| 12504 | .unused, |
| 12505 | .unused, |
| 9681 | 12506 | }, |
| 9682 | 12507 | .dst_temps = .{.mem}, |
| 9683 | 12508 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9703,6 +12528,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9703 | 12528 | .unused, |
| 9704 | 12529 | .unused, |
| 9705 | 12530 | .unused, |
| 12531 | .unused, |
| 12532 | .unused, |
| 12533 | .unused, |
| 9706 | 12534 | }, |
| 9707 | 12535 | .dst_temps = .{.mem}, |
| 9708 | 12536 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9729,6 +12557,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9729 | 12557 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 9730 | 12558 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 9731 | 12559 | .unused, |
| 12560 | .unused, |
| 12561 | .unused, |
| 12562 | .unused, |
| 9732 | 12563 | }, |
| 9733 | 12564 | .dst_temps = .{.mem}, |
| 9734 | 12565 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -9750,15 +12581,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9750 | 12581 | .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ }, |
| 9751 | 12582 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 9752 | 12583 | } }, |
| 12584 | }, .{ |
| 12585 | .required_features = .{ .avx, null, null, null }, |
| 12586 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, |
| 12587 | .patterns = &.{ |
| 12588 | .{ .src = .{ .to_sse, .none } }, |
| 12589 | }, |
| 12590 | .extra_temps = .{ |
| 12591 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 12592 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12593 | .unused, |
| 12594 | .unused, |
| 12595 | .unused, |
| 12596 | .unused, |
| 12597 | .unused, |
| 12598 | .unused, |
| 12599 | .unused, |
| 12600 | }, |
| 12601 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 12602 | .each = .{ .once = &.{ |
| 12603 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12604 | .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12605 | } }, |
| 9753 | 12606 | }, .{ |
| 9754 | 12607 | .required_features = .{ .sse, null, null, null }, |
| 9755 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .dword } }, .any }, |
| 12608 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, |
| 9756 | 12609 | .patterns = &.{ |
| 9757 | 12610 | .{ .src = .{ .to_mut_sse, .none } }, |
| 9758 | 12611 | }, |
| 9759 | 12612 | .extra_temps = .{ |
| 9760 | 12613 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9761 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12614 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12615 | .unused, |
| 12616 | .unused, |
| 12617 | .unused, |
| 9762 | 12618 | .unused, |
| 9763 | 12619 | .unused, |
| 9764 | 12620 | .unused, |
| ... | ... | @@ -9770,33 +12626,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9770 | 12626 | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 9771 | 12627 | } }, |
| 9772 | 12628 | }, .{ |
| 9773 | | .required_features = .{ .sse2, null, null, null }, |
| 9774 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 12629 | .required_features = .{ .avx, null, null, null }, |
| 12630 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, |
| 9775 | 12631 | .patterns = &.{ |
| 9776 | | .{ .src = .{ .to_mut_sse, .none } }, |
| 12632 | .{ .src = .{ .to_sse, .none } }, |
| 9777 | 12633 | }, |
| 9778 | 12634 | .extra_temps = .{ |
| 9779 | 12635 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9780 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12636 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12637 | .unused, |
| 12638 | .unused, |
| 12639 | .unused, |
| 9781 | 12640 | .unused, |
| 9782 | 12641 | .unused, |
| 9783 | 12642 | .unused, |
| 9784 | 12643 | .unused, |
| 9785 | 12644 | }, |
| 9786 | | .dst_temps = .{.{ .ref = .src0 }}, |
| 12645 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9787 | 12646 | .each = .{ .once = &.{ |
| 9788 | 12647 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9789 | | .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 12648 | .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 9790 | 12649 | } }, |
| 9791 | 12650 | }, .{ |
| 9792 | | .required_features = .{ .sse, null, null, null }, |
| 9793 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 12651 | .required_features = .{ .avx, null, null, null }, |
| 12652 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 12653 | .patterns = &.{ |
| 12654 | .{ .src = .{ .to_sse, .none } }, |
| 12655 | }, |
| 12656 | .extra_temps = .{ |
| 12657 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 12658 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12659 | .unused, |
| 12660 | .unused, |
| 12661 | .unused, |
| 12662 | .unused, |
| 12663 | .unused, |
| 12664 | .unused, |
| 12665 | .unused, |
| 12666 | }, |
| 12667 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 12668 | .each = .{ .once = &.{ |
| 12669 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12670 | .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12671 | } }, |
| 12672 | }, .{ |
| 12673 | .required_features = .{ .sse2, null, null, null }, |
| 12674 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 9794 | 12675 | .patterns = &.{ |
| 9795 | 12676 | .{ .src = .{ .to_mut_sse, .none } }, |
| 9796 | 12677 | }, |
| 9797 | 12678 | .extra_temps = .{ |
| 9798 | 12679 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9799 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12680 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12681 | .unused, |
| 12682 | .unused, |
| 12683 | .unused, |
| 9800 | 12684 | .unused, |
| 9801 | 12685 | .unused, |
| 9802 | 12686 | .unused, |
| ... | ... | @@ -9805,218 +12689,383 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9805 | 12689 | .dst_temps = .{.{ .ref = .src0 }}, |
| 9806 | 12690 | .each = .{ .once = &.{ |
| 9807 | 12691 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9808 | | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 12692 | .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 9809 | 12693 | } }, |
| 9810 | 12694 | }, .{ |
| 9811 | 12695 | .required_features = .{ .avx, null, null, null }, |
| 9812 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .dword } }, .any }, |
| 12696 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any }, |
| 9813 | 12697 | .patterns = &.{ |
| 9814 | 12698 | .{ .src = .{ .to_sse, .none } }, |
| 9815 | 12699 | }, |
| 9816 | 12700 | .extra_temps = .{ |
| 9817 | 12701 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9818 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12702 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12703 | .unused, |
| 12704 | .unused, |
| 12705 | .unused, |
| 9819 | 12706 | .unused, |
| 9820 | 12707 | .unused, |
| 9821 | 12708 | .unused, |
| 9822 | 12709 | .unused, |
| 9823 | 12710 | }, |
| 9824 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12711 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9825 | 12712 | .each = .{ .once = &.{ |
| 9826 | 12713 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9827 | | .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12714 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 12715 | } }, |
| 12716 | }, .{ |
| 12717 | .required_features = .{ .x87, null, null, null }, |
| 12718 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 12719 | .patterns = &.{ |
| 12720 | .{ .src = .{ .mem, .none } }, |
| 12721 | .{ .src = .{ .to_x87, .none } }, |
| 12722 | }, |
| 12723 | .extra_temps = .{ |
| 12724 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 12725 | .unused, |
| 12726 | .unused, |
| 12727 | .unused, |
| 12728 | .unused, |
| 12729 | .unused, |
| 12730 | .unused, |
| 12731 | .unused, |
| 12732 | .unused, |
| 12733 | }, |
| 12734 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, |
| 12735 | .each = .{ .once = &.{ |
| 12736 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 12737 | .{ ._, .f_, .abs, ._, ._, ._, ._ }, |
| 12738 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 9828 | 12739 | } }, |
| 9829 | 12740 | }, .{ |
| 9830 | 12741 | .required_features = .{ .avx, null, null, null }, |
| 9831 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 12742 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, |
| 9832 | 12743 | .patterns = &.{ |
| 9833 | 12744 | .{ .src = .{ .to_sse, .none } }, |
| 9834 | 12745 | }, |
| 9835 | 12746 | .extra_temps = .{ |
| 9836 | 12747 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9837 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12748 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12749 | .unused, |
| 12750 | .unused, |
| 12751 | .unused, |
| 9838 | 12752 | .unused, |
| 9839 | 12753 | .unused, |
| 9840 | 12754 | .unused, |
| 9841 | 12755 | .unused, |
| 9842 | 12756 | }, |
| 9843 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12757 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9844 | 12758 | .each = .{ .once = &.{ |
| 9845 | 12759 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9846 | | .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12760 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 9847 | 12761 | } }, |
| 9848 | 12762 | }, .{ |
| 9849 | | .required_features = .{ .avx, null, null, null }, |
| 9850 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .yword, .is = .dword } }, .any }, |
| 12763 | .required_features = .{ .sse2, null, null, null }, |
| 12764 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, |
| 12765 | .patterns = &.{ |
| 12766 | .{ .src = .{ .to_mut_sse, .none } }, |
| 12767 | }, |
| 12768 | .extra_temps = .{ |
| 12769 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 12770 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12771 | .unused, |
| 12772 | .unused, |
| 12773 | .unused, |
| 12774 | .unused, |
| 12775 | .unused, |
| 12776 | .unused, |
| 12777 | .unused, |
| 12778 | }, |
| 12779 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12780 | .each = .{ .once = &.{ |
| 12781 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12782 | .{ ._, .p_, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 12783 | } }, |
| 12784 | }, .{ |
| 12785 | .required_features = .{ .sse, null, null, null }, |
| 12786 | .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, |
| 12787 | .patterns = &.{ |
| 12788 | .{ .src = .{ .to_mut_sse, .none } }, |
| 12789 | }, |
| 12790 | .extra_temps = .{ |
| 12791 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 12792 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12793 | .unused, |
| 12794 | .unused, |
| 12795 | .unused, |
| 12796 | .unused, |
| 12797 | .unused, |
| 12798 | .unused, |
| 12799 | .unused, |
| 12800 | }, |
| 12801 | .dst_temps = .{.{ .ref = .src0 }}, |
| 12802 | .each = .{ .once = &.{ |
| 12803 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12804 | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 12805 | } }, |
| 12806 | }, .{ |
| 12807 | .required_features = .{ .avx2, null, null, null }, |
| 12808 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, |
| 9851 | 12809 | .patterns = &.{ |
| 9852 | 12810 | .{ .src = .{ .to_sse, .none } }, |
| 9853 | 12811 | }, |
| 9854 | 12812 | .extra_temps = .{ |
| 9855 | 12813 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9856 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12814 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12815 | .unused, |
| 12816 | .unused, |
| 12817 | .unused, |
| 9857 | 12818 | .unused, |
| 9858 | 12819 | .unused, |
| 9859 | 12820 | .unused, |
| 9860 | 12821 | .unused, |
| 9861 | 12822 | }, |
| 9862 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12823 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9863 | 12824 | .each = .{ .once = &.{ |
| 9864 | 12825 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9865 | | .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 12826 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 9866 | 12827 | } }, |
| 9867 | 12828 | }, .{ |
| 9868 | 12829 | .required_features = .{ .avx, null, null, null }, |
| 9869 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .yword, .is = .qword } }, .any }, |
| 12830 | .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, |
| 9870 | 12831 | .patterns = &.{ |
| 9871 | 12832 | .{ .src = .{ .to_sse, .none } }, |
| 9872 | 12833 | }, |
| 9873 | 12834 | .extra_temps = .{ |
| 9874 | 12835 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9875 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12836 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12837 | .unused, |
| 12838 | .unused, |
| 12839 | .unused, |
| 9876 | 12840 | .unused, |
| 9877 | 12841 | .unused, |
| 9878 | 12842 | .unused, |
| 9879 | 12843 | .unused, |
| 9880 | 12844 | }, |
| 9881 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12845 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9882 | 12846 | .each = .{ .once = &.{ |
| 9883 | 12847 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9884 | 12848 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 9885 | 12849 | } }, |
| 9886 | 12850 | }, .{ |
| 9887 | | .required_features = .{ .x87, null, null, null }, |
| 9888 | | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 12851 | .required_features = .{ .avx, null, null, null }, |
| 12852 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, |
| 9889 | 12853 | .patterns = &.{ |
| 9890 | | .{ .src = .{ .mem, .none } }, |
| 9891 | | .{ .src = .{ .to_x87, .none } }, |
| 12854 | .{ .src = .{ .to_mem, .none } }, |
| 9892 | 12855 | }, |
| 9893 | 12856 | .extra_temps = .{ |
| 9894 | | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 12857 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12858 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12859 | .{ .kind = .{ .rc = .sse } }, |
| 12860 | .{ .kind = .{ .rc = .sse } }, |
| 9895 | 12861 | .unused, |
| 9896 | 12862 | .unused, |
| 9897 | 12863 | .unused, |
| 9898 | 12864 | .unused, |
| 9899 | 12865 | .unused, |
| 9900 | 12866 | }, |
| 9901 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .x87 } }}, |
| 12867 | .dst_temps = .{.mem}, |
| 9902 | 12868 | .each = .{ .once = &.{ |
| 9903 | | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 9904 | | .{ ._, .f_, .abs, ._, ._, ._, ._ }, |
| 9905 | | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 12869 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12870 | .{ ._, .v_ps, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ }, |
| 12871 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 12872 | .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 12873 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 12874 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 12875 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 12876 | } }, |
| 12877 | }, .{ |
| 12878 | .required_features = .{ .sse, null, null, null }, |
| 12879 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, |
| 12880 | .patterns = &.{ |
| 12881 | .{ .src = .{ .to_mem, .none } }, |
| 12882 | }, |
| 12883 | .extra_temps = .{ |
| 12884 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12885 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12886 | .{ .kind = .{ .rc = .sse } }, |
| 12887 | .{ .kind = .{ .rc = .sse } }, |
| 12888 | .unused, |
| 12889 | .unused, |
| 12890 | .unused, |
| 12891 | .unused, |
| 12892 | .unused, |
| 12893 | }, |
| 12894 | .dst_temps = .{.mem}, |
| 12895 | .each = .{ .once = &.{ |
| 12896 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 12897 | .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ }, |
| 12898 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 12899 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 12900 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 12901 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 12902 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 12903 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9906 | 12904 | } }, |
| 9907 | 12905 | }, .{ |
| 9908 | | .required_features = .{ .avx2, null, null, null }, |
| 9909 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| 12906 | .required_features = .{ .avx, null, null, null }, |
| 12907 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, |
| 9910 | 12908 | .patterns = &.{ |
| 9911 | | .{ .src = .{ .to_sse, .none } }, |
| 12909 | .{ .src = .{ .to_mem, .none } }, |
| 9912 | 12910 | }, |
| 9913 | 12911 | .extra_temps = .{ |
| 9914 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9915 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12912 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12913 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12914 | .{ .kind = .{ .rc = .sse } }, |
| 12915 | .{ .kind = .{ .rc = .sse } }, |
| 12916 | .unused, |
| 9916 | 12917 | .unused, |
| 9917 | 12918 | .unused, |
| 9918 | 12919 | .unused, |
| 9919 | 12920 | .unused, |
| 9920 | 12921 | }, |
| 9921 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12922 | .dst_temps = .{.mem}, |
| 9922 | 12923 | .each = .{ .once = &.{ |
| 9923 | 12924 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9924 | | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12925 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ }, |
| 12926 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 12927 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 12928 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 12929 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 12930 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9925 | 12931 | } }, |
| 9926 | 12932 | }, .{ |
| 9927 | | .required_features = .{ .avx, null, null, null }, |
| 9928 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| 12933 | .required_features = .{ .sse2, null, null, null }, |
| 12934 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 9929 | 12935 | .patterns = &.{ |
| 9930 | | .{ .src = .{ .to_sse, .none } }, |
| 12936 | .{ .src = .{ .to_mem, .none } }, |
| 9931 | 12937 | }, |
| 9932 | 12938 | .extra_temps = .{ |
| 9933 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9934 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12939 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12940 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 12941 | .{ .kind = .{ .rc = .sse } }, |
| 12942 | .{ .kind = .{ .rc = .sse } }, |
| 12943 | .unused, |
| 9935 | 12944 | .unused, |
| 9936 | 12945 | .unused, |
| 9937 | 12946 | .unused, |
| 9938 | 12947 | .unused, |
| 9939 | 12948 | }, |
| 9940 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 12949 | .dst_temps = .{.mem}, |
| 9941 | 12950 | .each = .{ .once = &.{ |
| 9942 | 12951 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9943 | | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ }, |
| 12952 | .{ ._, ._pd, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ }, |
| 12953 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 12954 | .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 12955 | .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 12956 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 12957 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 12958 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9944 | 12959 | } }, |
| 9945 | 12960 | }, .{ |
| 9946 | | .required_features = .{ .sse2, null, null, null }, |
| 9947 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| 12961 | .required_features = .{ .avx2, null, null, null }, |
| 12962 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, |
| 9948 | 12963 | .patterns = &.{ |
| 9949 | | .{ .src = .{ .to_mut_sse, .none } }, |
| 12964 | .{ .src = .{ .to_mem, .none } }, |
| 9950 | 12965 | }, |
| 9951 | 12966 | .extra_temps = .{ |
| 9952 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9953 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12967 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12968 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12969 | .{ .kind = .{ .rc = .sse } }, |
| 12970 | .{ .kind = .{ .rc = .sse } }, |
| 12971 | .unused, |
| 9954 | 12972 | .unused, |
| 9955 | 12973 | .unused, |
| 9956 | 12974 | .unused, |
| 9957 | 12975 | .unused, |
| 9958 | 12976 | }, |
| 9959 | | .dst_temps = .{.{ .ref = .src0 }}, |
| 12977 | .dst_temps = .{.mem}, |
| 9960 | 12978 | .each = .{ .once = &.{ |
| 9961 | 12979 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9962 | | .{ ._, .p_, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 12980 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.yword, .tmp0), ._, ._ }, |
| 12981 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 12982 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 12983 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 12984 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 12985 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9963 | 12986 | } }, |
| 9964 | 12987 | }, .{ |
| 9965 | | .required_features = .{ .sse, null, null, null }, |
| 9966 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| 12988 | .required_features = .{ .avx, null, null, null }, |
| 12989 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, |
| 9967 | 12990 | .patterns = &.{ |
| 9968 | | .{ .src = .{ .to_mut_sse, .none } }, |
| 12991 | .{ .src = .{ .to_mem, .none } }, |
| 9969 | 12992 | }, |
| 9970 | 12993 | .extra_temps = .{ |
| 9971 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9972 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 12994 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 12995 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| 12996 | .{ .kind = .{ .rc = .sse } }, |
| 12997 | .{ .kind = .{ .rc = .sse } }, |
| 12998 | .unused, |
| 9973 | 12999 | .unused, |
| 9974 | 13000 | .unused, |
| 9975 | 13001 | .unused, |
| 9976 | 13002 | .unused, |
| 9977 | 13003 | }, |
| 9978 | | .dst_temps = .{.{ .ref = .src0 }}, |
| 13004 | .dst_temps = .{.mem}, |
| 9979 | 13005 | .each = .{ .once = &.{ |
| 9980 | 13006 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9981 | | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 13007 | .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ }, |
| 13008 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 13009 | .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 13010 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, |
| 13011 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 13012 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9982 | 13013 | } }, |
| 9983 | 13014 | }, .{ |
| 9984 | | .required_features = .{ .avx2, null, null, null }, |
| 9985 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .xword } }, .any }, |
| 13015 | .required_features = .{ .sse2, null, null, null }, |
| 13016 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, |
| 9986 | 13017 | .patterns = &.{ |
| 9987 | | .{ .src = .{ .to_sse, .none } }, |
| 13018 | .{ .src = .{ .to_mem, .none } }, |
| 9988 | 13019 | }, |
| 9989 | 13020 | .extra_temps = .{ |
| 9990 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 9991 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 13021 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 13022 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 13023 | .{ .kind = .{ .rc = .sse } }, |
| 13024 | .{ .kind = .{ .rc = .sse } }, |
| 13025 | .unused, |
| 9992 | 13026 | .unused, |
| 9993 | 13027 | .unused, |
| 9994 | 13028 | .unused, |
| 9995 | 13029 | .unused, |
| 9996 | 13030 | }, |
| 9997 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 13031 | .dst_temps = .{.mem}, |
| 9998 | 13032 | .each = .{ .once = &.{ |
| 9999 | 13033 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 10000 | | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 13034 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ }, |
| 13035 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 13036 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, |
| 13037 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 13038 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 13039 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 13040 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10001 | 13041 | } }, |
| 10002 | 13042 | }, .{ |
| 10003 | | .required_features = .{ .avx, null, null, null }, |
| 10004 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .xword } }, .any }, |
| 13043 | .required_features = .{ .sse, null, null, null }, |
| 13044 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, |
| 10005 | 13045 | .patterns = &.{ |
| 10006 | | .{ .src = .{ .to_sse, .none } }, |
| 13046 | .{ .src = .{ .to_mem, .none } }, |
| 10007 | 13047 | }, |
| 10008 | 13048 | .extra_temps = .{ |
| 10009 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 10010 | | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, |
| 13049 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 13050 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| 13051 | .{ .kind = .{ .rc = .sse } }, |
| 13052 | .{ .kind = .{ .rc = .sse } }, |
| 13053 | .unused, |
| 10011 | 13054 | .unused, |
| 10012 | 13055 | .unused, |
| 10013 | 13056 | .unused, |
| 10014 | 13057 | .unused, |
| 10015 | 13058 | }, |
| 10016 | | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, |
| 13059 | .dst_temps = .{.mem}, |
| 10017 | 13060 | .each = .{ .once = &.{ |
| 10018 | 13061 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 10019 | | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 13062 | .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ }, |
| 13063 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 13064 | .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| 13065 | .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 13066 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 13067 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 13068 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10020 | 13069 | } }, |
| 10021 | 13070 | } }) catch |err| switch (err) { |
| 10022 | 13071 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| ... | ... | @@ -10194,6 +13243,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10194 | 13243 | .unused, |
| 10195 | 13244 | .unused, |
| 10196 | 13245 | .unused, |
| 13246 | .unused, |
| 13247 | .unused, |
| 13248 | .unused, |
| 10197 | 13249 | }, |
| 10198 | 13250 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 10199 | 13251 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10328,6 +13380,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10328 | 13380 | .unused, |
| 10329 | 13381 | .unused, |
| 10330 | 13382 | .unused, |
| 13383 | .unused, |
| 13384 | .unused, |
| 13385 | .unused, |
| 10331 | 13386 | }, |
| 10332 | 13387 | .dst_temps = .{.{ .cc = cc }}, |
| 10333 | 13388 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10353,6 +13408,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10353 | 13408 | .unused, |
| 10354 | 13409 | .unused, |
| 10355 | 13410 | .unused, |
| 13411 | .unused, |
| 13412 | .unused, |
| 13413 | .unused, |
| 10356 | 13414 | }, |
| 10357 | 13415 | .dst_temps = .{.{ .cc = cc }}, |
| 10358 | 13416 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10389,6 +13447,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10389 | 13447 | .unused, |
| 10390 | 13448 | .unused, |
| 10391 | 13449 | .unused, |
| 13450 | .unused, |
| 13451 | .unused, |
| 13452 | .unused, |
| 10392 | 13453 | }, |
| 10393 | 13454 | .dst_temps = .{.{ .cc = cc }}, |
| 10394 | 13455 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10414,6 +13475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10414 | 13475 | .unused, |
| 10415 | 13476 | .unused, |
| 10416 | 13477 | .unused, |
| 13478 | .unused, |
| 13479 | .unused, |
| 13480 | .unused, |
| 10417 | 13481 | }, |
| 10418 | 13482 | .dst_temps = .{.{ .cc = cc }}, |
| 10419 | 13483 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10436,6 +13500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10436 | 13500 | .unused, |
| 10437 | 13501 | .unused, |
| 10438 | 13502 | .unused, |
| 13503 | .unused, |
| 13504 | .unused, |
| 13505 | .unused, |
| 10439 | 13506 | }, |
| 10440 | 13507 | .dst_temps = .{.{ .cc = cc }}, |
| 10441 | 13508 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10459,6 +13526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10459 | 13526 | .unused, |
| 10460 | 13527 | .unused, |
| 10461 | 13528 | .unused, |
| 13529 | .unused, |
| 13530 | .unused, |
| 13531 | .unused, |
| 10462 | 13532 | }, |
| 10463 | 13533 | .dst_temps = .{.{ .cc = cc }}, |
| 10464 | 13534 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10491,6 +13561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10491 | 13561 | .unused, |
| 10492 | 13562 | .unused, |
| 10493 | 13563 | .unused, |
| 13564 | .unused, |
| 13565 | .unused, |
| 13566 | .unused, |
| 10494 | 13567 | }, |
| 10495 | 13568 | .dst_temps = .{.{ .cc = cc }}, |
| 10496 | 13569 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10520,6 +13593,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10520 | 13593 | .unused, |
| 10521 | 13594 | .unused, |
| 10522 | 13595 | .unused, |
| 13596 | .unused, |
| 13597 | .unused, |
| 13598 | .unused, |
| 10523 | 13599 | }, |
| 10524 | 13600 | .dst_temps = .{.{ .cc = cc }}, |
| 10525 | 13601 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10552,6 +13628,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10552 | 13628 | .unused, |
| 10553 | 13629 | .unused, |
| 10554 | 13630 | .unused, |
| 13631 | .unused, |
| 13632 | .unused, |
| 13633 | .unused, |
| 10555 | 13634 | }, |
| 10556 | 13635 | .dst_temps = .{.{ .cc = cc }}, |
| 10557 | 13636 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10581,6 +13660,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10581 | 13660 | .unused, |
| 10582 | 13661 | .unused, |
| 10583 | 13662 | .unused, |
| 13663 | .unused, |
| 13664 | .unused, |
| 13665 | .unused, |
| 10584 | 13666 | }, |
| 10585 | 13667 | .dst_temps = .{.{ .cc = cc }}, |
| 10586 | 13668 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10610,6 +13692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10610 | 13692 | .unused, |
| 10611 | 13693 | .unused, |
| 10612 | 13694 | .unused, |
| 13695 | .unused, |
| 13696 | .unused, |
| 13697 | .unused, |
| 10613 | 13698 | }, |
| 10614 | 13699 | .dst_temps = .{.{ .cc = cc }}, |
| 10615 | 13700 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10639,6 +13724,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10639 | 13724 | .unused, |
| 10640 | 13725 | .unused, |
| 10641 | 13726 | .unused, |
| 13727 | .unused, |
| 13728 | .unused, |
| 13729 | .unused, |
| 10642 | 13730 | }, |
| 10643 | 13731 | .dst_temps = .{.{ .cc = cc }}, |
| 10644 | 13732 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10671,6 +13759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10671 | 13759 | .unused, |
| 10672 | 13760 | .unused, |
| 10673 | 13761 | .unused, |
| 13762 | .unused, |
| 13763 | .unused, |
| 13764 | .unused, |
| 10674 | 13765 | }, |
| 10675 | 13766 | .dst_temps = .{.{ .cc = cc }}, |
| 10676 | 13767 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10702,6 +13793,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10702 | 13793 | .unused, |
| 10703 | 13794 | .unused, |
| 10704 | 13795 | .unused, |
| 13796 | .unused, |
| 13797 | .unused, |
| 13798 | .unused, |
| 10705 | 13799 | }, |
| 10706 | 13800 | .dst_temps = .{.{ .cc = cc }}, |
| 10707 | 13801 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -10728,6 +13822,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10728 | 13822 | .unused, |
| 10729 | 13823 | .unused, |
| 10730 | 13824 | .unused, |
| 13825 | .unused, |
| 13826 | .unused, |
| 13827 | .unused, |
| 10731 | 13828 | }, |
| 10732 | 13829 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10733 | 13830 | else => unreachable, |
| ... | ... | @@ -10747,7 +13844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10747 | 13844 | .patterns = &.{ |
| 10748 | 13845 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10749 | 13846 | }, |
| 10750 | | .call_frame = .{ .size = 0, .alignment = .@"16" }, |
| 13847 | .call_frame = .{ .alignment = .@"16" }, |
| 10751 | 13848 | .extra_temps = .{ |
| 10752 | 13849 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10753 | 13850 | else => unreachable, |
| ... | ... | @@ -10759,11 +13856,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10759 | 13856 | .unused, |
| 10760 | 13857 | .unused, |
| 10761 | 13858 | .unused, |
| 13859 | .unused, |
| 13860 | .unused, |
| 13861 | .unused, |
| 10762 | 13862 | }, |
| 10763 | 13863 | .dst_temps = .{.{ .cc = cc }}, |
| 10764 | 13864 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10765 | 13865 | .each = .{ .once = &.{ |
| 10766 | | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, |
| 13866 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10767 | 13867 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10768 | 13868 | } }, |
| 10769 | 13869 | }, .{ |
| ... | ... | @@ -10781,6 +13881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10781 | 13881 | .unused, |
| 10782 | 13882 | .unused, |
| 10783 | 13883 | .unused, |
| 13884 | .unused, |
| 13885 | .unused, |
| 13886 | .unused, |
| 10784 | 13887 | }, |
| 10785 | 13888 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10786 | 13889 | else => unreachable, |
| ... | ... | @@ -10806,6 +13909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10806 | 13909 | .unused, |
| 10807 | 13910 | .unused, |
| 10808 | 13911 | .unused, |
| 13912 | .unused, |
| 13913 | .unused, |
| 13914 | .unused, |
| 10809 | 13915 | }, |
| 10810 | 13916 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10811 | 13917 | else => unreachable, |
| ... | ... | @@ -10822,7 +13928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10822 | 13928 | .patterns = &.{ |
| 10823 | 13929 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10824 | 13930 | }, |
| 10825 | | .call_frame = .{ .size = 0, .alignment = .@"16" }, |
| 13931 | .call_frame = .{ .alignment = .@"16" }, |
| 10826 | 13932 | .extra_temps = .{ |
| 10827 | 13933 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10828 | 13934 | else => unreachable, |
| ... | ... | @@ -10834,11 +13940,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10834 | 13940 | .unused, |
| 10835 | 13941 | .unused, |
| 10836 | 13942 | .unused, |
| 13943 | .unused, |
| 13944 | .unused, |
| 13945 | .unused, |
| 10837 | 13946 | }, |
| 10838 | 13947 | .dst_temps = .{.{ .cc = cc }}, |
| 10839 | 13948 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10840 | 13949 | .each = .{ .once = &.{ |
| 10841 | | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, |
| 13950 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10842 | 13951 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10843 | 13952 | } }, |
| 10844 | 13953 | }, .{ |
| ... | ... | @@ -10856,6 +13965,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10856 | 13965 | .unused, |
| 10857 | 13966 | .unused, |
| 10858 | 13967 | .unused, |
| 13968 | .unused, |
| 13969 | .unused, |
| 13970 | .unused, |
| 10859 | 13971 | }, |
| 10860 | 13972 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10861 | 13973 | else => unreachable, |
| ... | ... | @@ -10881,6 +13993,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10881 | 13993 | .unused, |
| 10882 | 13994 | .unused, |
| 10883 | 13995 | .unused, |
| 13996 | .unused, |
| 13997 | .unused, |
| 13998 | .unused, |
| 10884 | 13999 | }, |
| 10885 | 14000 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10886 | 14001 | else => unreachable, |
| ... | ... | @@ -10897,7 +14012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10897 | 14012 | .patterns = &.{ |
| 10898 | 14013 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10899 | 14014 | }, |
| 10900 | | .call_frame = .{ .size = 0, .alignment = .@"16" }, |
| 14015 | .call_frame = .{ .alignment = .@"16" }, |
| 10901 | 14016 | .extra_temps = .{ |
| 10902 | 14017 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10903 | 14018 | else => unreachable, |
| ... | ... | @@ -10909,11 +14024,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10909 | 14024 | .unused, |
| 10910 | 14025 | .unused, |
| 10911 | 14026 | .unused, |
| 14027 | .unused, |
| 14028 | .unused, |
| 14029 | .unused, |
| 10912 | 14030 | }, |
| 10913 | 14031 | .dst_temps = .{.{ .cc = cc }}, |
| 10914 | 14032 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10915 | 14033 | .each = .{ .once = &.{ |
| 10916 | | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, |
| 14034 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10917 | 14035 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10918 | 14036 | } }, |
| 10919 | 14037 | }, .{ |
| ... | ... | @@ -10929,6 +14047,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10929 | 14047 | .unused, |
| 10930 | 14048 | .unused, |
| 10931 | 14049 | .unused, |
| 14050 | .unused, |
| 14051 | .unused, |
| 14052 | .unused, |
| 10932 | 14053 | }, |
| 10933 | 14054 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10934 | 14055 | else => unreachable, |
| ... | ... | @@ -10957,6 +14078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10957 | 14078 | .unused, |
| 10958 | 14079 | .unused, |
| 10959 | 14080 | .unused, |
| 14081 | .unused, |
| 14082 | .unused, |
| 14083 | .unused, |
| 10960 | 14084 | }, |
| 10961 | 14085 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10962 | 14086 | else => unreachable, |
| ... | ... | @@ -10977,7 +14101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10977 | 14101 | .extra_temps = .{ |
| 10978 | 14102 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10979 | 14103 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 10980 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 14104 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 14105 | .unused, |
| 14106 | .unused, |
| 14107 | .unused, |
| 10981 | 14108 | .unused, |
| 10982 | 14109 | .unused, |
| 10983 | 14110 | .unused, |
| ... | ... | @@ -11004,10 +14131,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11004 | 14131 | .extra_temps = .{ |
| 11005 | 14132 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11006 | 14133 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11007 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 11008 | 14134 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 11009 | 14135 | .unused, |
| 11010 | 14136 | .unused, |
| 14137 | .unused, |
| 14138 | .unused, |
| 14139 | .unused, |
| 14140 | .unused, |
| 11011 | 14141 | }, |
| 11012 | 14142 | .dst_temps = .{.{ .cc = cc }}, |
| 11013 | 14143 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -11016,8 +14146,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11016 | 14146 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 11017 | 14147 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| 11018 | 14148 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, |
| 11019 | | .{ ._, ._, .xor, .tmp3b, .si(0b0_1_000_000), ._, ._ }, |
| 11020 | | .{ ._, ._, .@"test", .tmp3b, .si(0b0_1_000_100), ._, ._ }, |
| 14149 | .{ ._, ._, .xor, .tmp2b, .si(0b0_1_000_000), ._, ._ }, |
| 14150 | .{ ._, ._, .@"test", .tmp2b, .si(0b0_1_000_100), ._, ._ }, |
| 11021 | 14151 | } }, |
| 11022 | 14152 | }, .{ |
| 11023 | 14153 | .required_features = .{ .x87, null, null, null }, |
| ... | ... | @@ -11028,7 +14158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11028 | 14158 | .extra_temps = .{ |
| 11029 | 14159 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11030 | 14160 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11031 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 14161 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 14162 | .unused, |
| 14163 | .unused, |
| 14164 | .unused, |
| 11032 | 14165 | .unused, |
| 11033 | 14166 | .unused, |
| 11034 | 14167 | .unused, |
| ... | ... | @@ -11057,7 +14190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11057 | 14190 | .extra_temps = .{ |
| 11058 | 14191 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11059 | 14192 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11060 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 14193 | .{ .type = .u16, .kind = .{ .reg = .ah } }, |
| 14194 | .unused, |
| 14195 | .unused, |
| 14196 | .unused, |
| 11061 | 14197 | .unused, |
| 11062 | 14198 | .unused, |
| 11063 | 14199 | .unused, |
| ... | ... | @@ -11085,10 +14221,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11085 | 14221 | .extra_temps = .{ |
| 11086 | 14222 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11087 | 14223 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11088 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 11089 | 14224 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 11090 | 14225 | .unused, |
| 11091 | 14226 | .unused, |
| 14227 | .unused, |
| 14228 | .unused, |
| 14229 | .unused, |
| 14230 | .unused, |
| 11092 | 14231 | }, |
| 11093 | 14232 | .dst_temps = .{.{ .cc = cc }}, |
| 11094 | 14233 | .clobbers = .{ .eflags = true }, |
| ... | ... | @@ -11096,8 +14235,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11096 | 14235 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 11097 | 14236 | .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ }, |
| 11098 | 14237 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, |
| 11099 | | .{ ._, ._, .xor, .tmp3b, .si(0b0_1_000_000), ._, ._ }, |
| 11100 | | .{ ._, ._, .@"test", .tmp3b, .si(0b0_1_000_100), ._, ._ }, |
| 14238 | .{ ._, ._, .xor, .tmp2b, .si(0b0_1_000_000), ._, ._ }, |
| 14239 | .{ ._, ._, .@"test", .tmp2b, .si(0b0_1_000_100), ._, ._ }, |
| 11101 | 14240 | } }, |
| 11102 | 14241 | }, .{ |
| 11103 | 14242 | .required_features = .{ .x87, null, null, null }, |
| ... | ... | @@ -11110,7 +14249,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11110 | 14249 | .extra_temps = .{ |
| 11111 | 14250 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11112 | 14251 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11113 | | .{ .type = .u16, .kind = .{ .reg = .ax } }, |
| 14252 | .{ .type = .u16, .kind = .{ .reg = .ah } }, |
| 14253 | .unused, |
| 14254 | .unused, |
| 14255 | .unused, |
| 11114 | 14256 | .unused, |
| 11115 | 14257 | .unused, |
| 11116 | 14258 | .unused, |
| ... | ... | @@ -11133,7 +14275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11133 | 14275 | .patterns = &.{ |
| 11134 | 14276 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 11135 | 14277 | }, |
| 11136 | | .call_frame = .{ .size = 0, .alignment = .@"16" }, |
| 14278 | .call_frame = .{ .alignment = .@"16" }, |
| 11137 | 14279 | .extra_temps = .{ |
| 11138 | 14280 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11139 | 14281 | else => unreachable, |
| ... | ... | @@ -11145,11 +14287,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11145 | 14287 | .unused, |
| 11146 | 14288 | .unused, |
| 11147 | 14289 | .unused, |
| 14290 | .unused, |
| 14291 | .unused, |
| 14292 | .unused, |
| 11148 | 14293 | }, |
| 11149 | 14294 | .dst_temps = .{.{ .cc = cc }}, |
| 11150 | 14295 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11151 | 14296 | .each = .{ .once = &.{ |
| 11152 | | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, |
| 14297 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 11153 | 14298 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 11154 | 14299 | } }, |
| 11155 | 14300 | } }, |
| ... | ... | @@ -11753,7 +14898,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11753 | 14898 | |
| 11754 | 14899 | .err_return_trace => { |
| 11755 | 14900 | const ert: Temp = .{ .index = err_ret_trace_index }; |
| 11756 | | try ert.moveTo(inst, cg); |
| 14901 | try ert.finish(inst, &.{}, &.{}, cg); |
| 11757 | 14902 | }, |
| 11758 | 14903 | .set_err_return_trace => { |
| 11759 | 14904 | const un_op = air_datas[@intFromEnum(inst)].un_op; |
| ... | ... | @@ -11788,7 +14933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11788 | 14933 | var ert: Temp = .{ .index = err_ret_trace_index }; |
| 11789 | 14934 | var res = try ert.load(.usize, .{ .disp = @intCast(agg_ty.structFieldOffset(ty_pl.payload, zcu)) }, cg); |
| 11790 | 14935 | try ert.die(cg); |
| 11791 | | try res.moveTo(inst, cg); |
| 14936 | try res.finish(inst, &.{}, &.{}, cg); |
| 11792 | 14937 | }, |
| 11793 | 14938 | |
| 11794 | 14939 | .vector_store_elem => return cg.fail("TODO implement vector_store_elem", .{}), |
| ... | ... | @@ -23113,7 +26258,11 @@ fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index |
| 23113 | 26258 | .resurrect = true, |
| 23114 | 26259 | .close_scope = true, |
| 23115 | 26260 | }); |
| 23116 | | for (block_data.value.relocs.items) |reloc| self.performReloc(reloc); |
| 26261 | const block_relocs_last_index = block_data.value.relocs.items.len - 1; |
| 26262 | for (if (block_data.value.relocs.items[block_relocs_last_index] == self.mir_instructions.len - 1) block_relocs: { |
| 26263 | _ = self.mir_instructions.pop(); |
| 26264 | break :block_relocs block_data.value.relocs.items[0..block_relocs_last_index]; |
| 26265 | } else block_data.value.relocs.items) |block_reloc| self.performReloc(block_reloc); |
| 23117 | 26266 | } |
| 23118 | 26267 | |
| 23119 | 26268 | if (std.debug.runtime_safety) assert(self.inst_tracking.getIndex(inst).? == inst_tracking_i); |
| ... | ... | @@ -24623,13 +27772,15 @@ fn moveStrategy(self: *CodeGen, ty: Type, class: Register.Class, aligned: bool) |
| 24623 | 27772 | 64 => switch (ty.vectorLen(zcu)) { |
| 24624 | 27773 | 1...2 => return .{ .move = if (self.hasFeature(.avx)) |
| 24625 | 27774 | .{ .v_pd, if (aligned) .mova else .movu } |
| 27775 | else if (self.hasFeature(.sse2)) |
| 27776 | .{ ._pd, if (aligned) .mova else .movu } |
| 24626 | 27777 | else |
| 24627 | | .{ ._pd, if (aligned) .mova else .movu } }, |
| 27778 | .{ ._ps, if (aligned) .mova else .movu } }, |
| 24628 | 27779 | 3...4 => if (self.hasFeature(.avx)) |
| 24629 | 27780 | return .{ .move = .{ .v_pd, if (aligned) .mova else .movu } }, |
| 24630 | 27781 | else => {}, |
| 24631 | 27782 | }, |
| 24632 | | 128 => switch (ty.vectorLen(zcu)) { |
| 27783 | 80, 128 => switch (ty.vectorLen(zcu)) { |
| 24633 | 27784 | 1 => return .{ .move = if (self.hasFeature(.avx)) |
| 24634 | 27785 | .{ if (aligned) .v_dqa else .v_dqu, .mov } |
| 24635 | 27786 | else if (self.hasFeature(.sse2)) |
| ... | ... | @@ -24958,7 +28109,7 @@ fn genSetReg( |
| 24958 | 28109 | }, |
| 24959 | 28110 | .mmx => unreachable, |
| 24960 | 28111 | .sse => switch (src_reg.class()) { |
| 24961 | | .general_purpose => try self.asmRegisterRegister( |
| 28112 | .general_purpose => if (self.hasFeature(.sse2)) try self.asmRegisterRegister( |
| 24962 | 28113 | switch (abi_size) { |
| 24963 | 28114 | 1...4 => if (self.hasFeature(.avx)) .{ .v_d, .mov } else .{ ._d, .mov }, |
| 24964 | 28115 | 5...8 => if (self.hasFeature(.avx)) .{ .v_q, .mov } else .{ ._q, .mov }, |
| ... | ... | @@ -24966,7 +28117,26 @@ fn genSetReg( |
| 24966 | 28117 | }, |
| 24967 | 28118 | dst_reg.to128(), |
| 24968 | 28119 | registerAlias(src_reg, @max(abi_size, 4)), |
| 24969 | | ), |
| 28120 | ) else { |
| 28121 | const frame_size = std.math.ceilPowerOfTwoAssert(u32, @max(abi_size, 4)); |
| 28122 | const frame_index = try self.allocFrameIndex(.init(.{ |
| 28123 | .size = frame_size, |
| 28124 | .alignment = .fromNonzeroByteUnits(frame_size), |
| 28125 | })); |
| 28126 | try self.asmMemoryRegister(.{ ._, .mov }, .{ |
| 28127 | .base = .{ .frame = frame_index }, |
| 28128 | .mod = .{ .rm = .{ .size = .fromSize(abi_size) } }, |
| 28129 | }, registerAlias(src_reg, abi_size)); |
| 28130 | try self.asmRegisterMemory(switch (frame_size) { |
| 28131 | 4 => .{ ._ss, .mov }, |
| 28132 | 8 => .{ ._ps, .movl }, |
| 28133 | 16 => .{ ._ps, .mov }, |
| 28134 | else => unreachable, |
| 28135 | }, dst_reg.to128(), .{ |
| 28136 | .base = .{ .frame = frame_index }, |
| 28137 | .mod = .{ .rm = .{ .size = .fromSize(frame_size) } }, |
| 28138 | }); |
| 28139 | }, |
| 24970 | 28140 | .segment => try self.genSetReg( |
| 24971 | 28141 | dst_reg, |
| 24972 | 28142 | ty, |
| ... | ... | @@ -24977,7 +28147,12 @@ fn genSetReg( |
| 24977 | 28147 | .sse => try self.asmRegisterRegister( |
| 24978 | 28148 | @as(?Mir.Inst.FixedTag, switch (ty.scalarType(zcu).zigTypeTag(zcu)) { |
| 24979 | 28149 | else => switch (abi_size) { |
| 24980 | | 1...16 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else .{ ._dqa, .mov }, |
| 28150 | 1...16 => if (self.hasFeature(.avx)) |
| 28151 | .{ .v_dqa, .mov } |
| 28152 | else if (self.hasFeature(.sse2)) |
| 28153 | .{ ._dqa, .mov } |
| 28154 | else |
| 28155 | .{ ._ps, .mova }, |
| 24981 | 28156 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, |
| 24982 | 28157 | else => null, |
| 24983 | 28158 | }, |
| ... | ... | @@ -24985,13 +28160,20 @@ fn genSetReg( |
| 24985 | 28160 | 16, 128 => switch (abi_size) { |
| 24986 | 28161 | 2...16 => if (self.hasFeature(.avx)) |
| 24987 | 28162 | .{ .v_dqa, .mov } |
| 28163 | else if (self.hasFeature(.sse2)) |
| 28164 | .{ ._dqa, .mov } |
| 24988 | 28165 | else |
| 24989 | | .{ ._dqa, .mov }, |
| 28166 | .{ ._ps, .mova }, |
| 24990 | 28167 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, |
| 24991 | 28168 | else => null, |
| 24992 | 28169 | }, |
| 24993 | 28170 | 32 => if (self.hasFeature(.avx)) .{ .v_ps, .mova } else .{ ._ps, .mova }, |
| 24994 | | 64 => if (self.hasFeature(.avx)) .{ .v_pd, .mova } else .{ ._pd, .mova }, |
| 28171 | 64 => if (self.hasFeature(.avx)) |
| 28172 | .{ .v_pd, .mova } |
| 28173 | else if (self.hasFeature(.sse2)) |
| 28174 | .{ ._pd, .mova } |
| 28175 | else |
| 28176 | .{ ._ps, .mova }, |
| 24995 | 28177 | 80 => null, |
| 24996 | 28178 | else => unreachable, |
| 24997 | 28179 | }, |
| ... | ... | @@ -25688,15 +28870,19 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void { |
| 25688 | 28870 | const src_lock = if (src_mcv.getReg()) |src_reg| self.register_manager.lockReg(src_reg) else null; |
| 25689 | 28871 | defer if (src_lock) |lock| self.register_manager.unlockReg(lock); |
| 25690 | 28872 | |
| 25691 | | const dst_mcv = if ((if (src_mcv.getReg()) |src_reg| src_reg.class() == .general_purpose else true) and |
| 28873 | const dst_mcv = if (src_mcv != .register_mask and |
| 28874 | (if (src_mcv.getReg()) |src_reg| src_reg.class() == .general_purpose else true) and |
| 25692 | 28875 | dst_rc.supersetOf(src_rc) and dst_ty.abiSize(zcu) <= src_ty.abiSize(zcu) and |
| 25693 | 28876 | dst_ty.abiAlignment(zcu).order(src_ty.abiAlignment(zcu)).compare(.lte) and |
| 25694 | 28877 | self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) src_mcv else dst: { |
| 25695 | 28878 | const dst_mcv = try self.allocRegOrMem(inst, true); |
| 25696 | | try self.genCopy(switch (std.math.order(dst_ty.abiSize(zcu), src_ty.abiSize(zcu))) { |
| 25697 | | .lt => dst_ty, |
| 25698 | | .eq => if (!dst_mcv.isBase() or src_mcv.isBase()) dst_ty else src_ty, |
| 25699 | | .gt => src_ty, |
| 28879 | try self.genCopy(switch (src_mcv) { |
| 28880 | else => switch (std.math.order(dst_ty.abiSize(zcu), src_ty.abiSize(zcu))) { |
| 28881 | .lt => dst_ty, |
| 28882 | .eq => if (!dst_mcv.isBase() or src_mcv.isBase()) dst_ty else src_ty, |
| 28883 | .gt => src_ty, |
| 28884 | }, |
| 28885 | .register_mask => src_ty, |
| 25700 | 28886 | }, dst_mcv, src_mcv, .{}); |
| 25701 | 28887 | break :dst dst_mcv; |
| 25702 | 28888 | }; |
| ... | ... | @@ -31173,7 +34359,7 @@ const Select = struct { |
| 31173 | 34359 | dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any), |
| 31174 | 34360 | src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any), |
| 31175 | 34361 | patterns: []const Select.Pattern, |
| 31176 | | call_frame: packed struct(u16) { size: u10, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none }, |
| 34362 | call_frame: packed struct(u16) { size: u10 = 0, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none }, |
| 31177 | 34363 | extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused), |
| 31178 | 34364 | dst_temps: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]TempSpec.Kind = @splat(.unused), |
| 31179 | 34365 | clobbers: packed struct { |
| ... | ... | @@ -31202,14 +34388,16 @@ const Select = struct { |
| 31202 | 34388 | multiple_size: Memory.Size, |
| 31203 | 34389 | int: Memory.Size, |
| 31204 | 34390 | scalar_int_is: Memory.Size, |
| 31205 | | scalar_int: struct { of: Memory.Size, is: Memory.Size }, |
| 34391 | scalar_int: OfIsSizes, |
| 31206 | 34392 | scalar_signed_int: Memory.Size, |
| 31207 | 34393 | scalar_unsigned_int: Memory.Size, |
| 31208 | | scalar_remainder_int: struct { of: Memory.Size, is: Memory.Size }, |
| 34394 | multiple_scalar_int: OfIsSizes, |
| 34395 | scalar_remainder_int: OfIsSizes, |
| 31209 | 34396 | float: Memory.Size, |
| 31210 | | scalar_float: struct { of: Memory.Size, is: Memory.Size }, |
| 31211 | | scalar_exact_float: struct { of: Memory.Size, is: Memory.Size }, |
| 31212 | | multiple_scalar_int: struct { of: Memory.Size, is: Memory.Size }, |
| 34397 | scalar_any_float: Memory.Size, |
| 34398 | scalar_float: OfIsSizes, |
| 34399 | multiple_scalar_any_float: Memory.Size, |
| 34400 | multiple_scalar_float: OfIsSizes, |
| 31213 | 34401 | exact_int: u16, |
| 31214 | 34402 | exact_signed_int: u16, |
| 31215 | 34403 | exact_unsigned_int: u16, |
| ... | ... | @@ -31218,16 +34406,18 @@ const Select = struct { |
| 31218 | 34406 | po2_int: Memory.Size, |
| 31219 | 34407 | signed_po2_int: Memory.Size, |
| 31220 | 34408 | unsigned_po2_or_exact_int: Memory.Size, |
| 31221 | | remainder_int: struct { of: Memory.Size, is: Memory.Size }, |
| 31222 | | exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, |
| 31223 | | signed_or_exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, |
| 31224 | | unsigned_or_exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, |
| 34409 | remainder_int: OfIsSizes, |
| 34410 | exact_remainder_int: OfIsSizes, |
| 34411 | signed_or_exact_remainder_int: OfIsSizes, |
| 34412 | unsigned_or_exact_remainder_int: OfIsSizes, |
| 31225 | 34413 | signed_int: Memory.Size, |
| 31226 | 34414 | unsigned_int: Memory.Size, |
| 31227 | 34415 | elem_size_is: u8, |
| 31228 | 34416 | po2_elem_size, |
| 31229 | 34417 | elem_int: Memory.Size, |
| 31230 | 34418 | |
| 34419 | const OfIsSizes = struct { of: Memory.Size, is: Memory.Size }; |
| 34420 | |
| 31231 | 34421 | fn accepts(constraint: Constraint, ty: Type, cg: *CodeGen) bool { |
| 31232 | 34422 | const zcu = cg.pt.zcu; |
| 31233 | 34423 | return switch (constraint) { |
| ... | ... | @@ -31258,7 +34448,7 @@ const Select = struct { |
| 31258 | 34448 | size.bitSize(cg.target) >= int_info.bits |
| 31259 | 34449 | else |
| 31260 | 34450 | false, |
| 31261 | | .scalar_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 34451 | .scalar_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 31262 | 34452 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 31263 | 34453 | .scalar_signed_int => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info| switch (int_info.signedness) { |
| 31264 | 34454 | .signed => size.bitSize(cg.target) >= int_info.bits, |
| ... | ... | @@ -31275,9 +34465,13 @@ const Select = struct { |
| 31275 | 34465 | else |
| 31276 | 34466 | false, |
| 31277 | 34467 | .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false, |
| 31278 | | .scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 31279 | | if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) >= float_bits else false, |
| 31280 | | .scalar_exact_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 34468 | .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 34469 | cg.floatBits(ty.scalarType(zcu)) != null, |
| 34470 | .scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 34471 | if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false, |
| 34472 | .multiple_scalar_any_float => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0 and |
| 34473 | cg.floatBits(ty.scalarType(zcu)) != null, |
| 34474 | .multiple_scalar_float => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 31281 | 34475 | if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false, |
| 31282 | 34476 | .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false, |
| 31283 | 34477 | .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { |
| ... | ... | @@ -31505,48 +34699,81 @@ const Select = struct { |
| 31505 | 34699 | unused, |
| 31506 | 34700 | any, |
| 31507 | 34701 | cc: Condition, |
| 34702 | ref: Select.Operand.Ref, |
| 31508 | 34703 | reg: Register, |
| 31509 | 34704 | rc: Register.Class, |
| 34705 | mut_rc: struct { ref: Select.Operand.Ref, rc: Register.Class }, |
| 34706 | ref_mask: struct { ref: Select.Operand.Ref, info: MaskInfo }, |
| 31510 | 34707 | rc_mask: struct { rc: Register.Class, info: MaskInfo }, |
| 34708 | mut_rc_mask: struct { ref: Select.Operand.Ref, rc: Register.Class, info: MaskInfo }, |
| 31511 | 34709 | mem, |
| 31512 | 34710 | smin_mem: ConstInfo, |
| 31513 | 34711 | smax_mem: ConstInfo, |
| 31514 | 34712 | umin_mem: ConstInfo, |
| 31515 | 34713 | umax_mem: ConstInfo, |
| 31516 | | ref: Select.Operand.Ref, |
| 31517 | | ref_mask: struct { ref: Select.Operand.Ref, info: MaskInfo }, |
| 31518 | | mut_reg: struct { ref: Select.Operand.Ref, rc: Register.Class }, |
| 31519 | 34714 | symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, |
| 31520 | 34715 | |
| 31521 | | const ConstInfo = struct { ref: Select.Operand.Ref, vectorize: bool = false }; |
| 34716 | const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: Memory.Size = .none }; |
| 31522 | 34717 | |
| 31523 | 34718 | fn finish(kind: Kind, temp: Temp, s: *const Select) void { |
| 31524 | 34719 | switch (kind) { |
| 31525 | 34720 | else => {}, |
| 31526 | | inline .rc_mask, .ref_mask => |mask| temp.asMask(mask.info, s.cg), |
| 34721 | inline .rc_mask, .mut_rc_mask, .ref_mask => |mask| temp.asMask(mask.info, s.cg), |
| 31527 | 34722 | } |
| 31528 | 34723 | } |
| 31529 | 34724 | }; |
| 31530 | 34725 | |
| 31531 | | fn create(spec: TempSpec, s: *Select) !?Temp { |
| 34726 | fn pass(spec: TempSpec) u2 { |
| 34727 | return switch (spec.kind) { |
| 34728 | .unused => 0, |
| 34729 | .reg => 1, |
| 34730 | else => 2, |
| 34731 | }; |
| 34732 | } |
| 34733 | |
| 34734 | fn create(spec: TempSpec, s: *Select) !Temp { |
| 31532 | 34735 | const cg = s.cg; |
| 31533 | 34736 | return switch (spec.kind) { |
| 31534 | | .unused => null, |
| 34737 | .unused => unreachable, |
| 31535 | 34738 | .any => try cg.tempAlloc(spec.type), |
| 31536 | 34739 | .cc => |cc| try cg.tempInit(spec.type, .{ .eflags = cc }), |
| 34740 | .ref => |ref| ref.deref(s), |
| 31537 | 34741 | .reg => |reg| try cg.tempInit(spec.type, .{ .register = reg }), |
| 31538 | 34742 | .rc => |rc| try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), |
| 34743 | .mut_rc => |ref_rc| { |
| 34744 | const temp = ref_rc.ref.deref(s); |
| 34745 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { |
| 34746 | .register => |reg| if (reg.class() == ref_rc.rc) return temp, |
| 34747 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return temp, |
| 34748 | else => {}, |
| 34749 | }; |
| 34750 | return try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)); |
| 34751 | }, |
| 34752 | .ref_mask => |ref_mask| ref_mask.ref.deref(s), |
| 31539 | 34753 | .rc_mask => |rc_mask| try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), |
| 34754 | .mut_rc_mask => |ref_rc_mask| { |
| 34755 | const temp = ref_rc_mask.ref.deref(s); |
| 34756 | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { |
| 34757 | .register => |reg| if (reg.class() == ref_rc_mask.rc) return temp, |
| 34758 | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return temp, |
| 34759 | else => {}, |
| 34760 | }; |
| 34761 | return try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc_mask.rc)); |
| 34762 | }, |
| 31540 | 34763 | .mem => try cg.tempAllocMem(spec.type), |
| 31541 | 34764 | .smin_mem, .smax_mem, .umin_mem, .umax_mem => |const_info| { |
| 31542 | 34765 | const pt = cg.pt; |
| 31543 | 34766 | const zcu = pt.zcu; |
| 31544 | 34767 | const ip = &zcu.intern_pool; |
| 31545 | | const ty = const_info.ref.deref(s).typeOf(s.cg); |
| 31546 | | const vector_len: ?u32, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { |
| 31547 | | else => .{ if (const_info.vectorize) 1 else null, ty }, |
| 34768 | const ty = const_info.ref.deref(s).typeOf(cg); |
| 34769 | const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { |
| 34770 | else => .{ null, ty }, |
| 31548 | 34771 | .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) }, |
| 31549 | 34772 | }; |
| 34773 | const res_vector_len: ?u32 = if (const_info.vectorize_to != .none) |
| 34774 | @intCast(@divExact(@divExact(const_info.vectorize_to.bitSize(cg.target), 8), scalar_ty.abiSize(pt.zcu))) |
| 34775 | else |
| 34776 | vector_len; |
| 31550 | 34777 | const res_scalar_ty, const res_scalar_val: Value = res_scalar: switch (scalar_ty.toIntern()) { |
| 31551 | 34778 | .bool_type => .{ |
| 31552 | 34779 | scalar_ty, |
| ... | ... | @@ -31591,7 +34818,7 @@ const Select = struct { |
| 31591 | 34818 | break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) }; |
| 31592 | 34819 | }, |
| 31593 | 34820 | }; |
| 31594 | | const res_val: Value = if (vector_len) |len| .fromInterned(try pt.intern(.{ .aggregate = .{ |
| 34821 | const res_val: Value = if (res_vector_len) |len| .fromInterned(try pt.intern(.{ .aggregate = .{ |
| 31595 | 34822 | .ty = (try pt.vectorType(.{ |
| 31596 | 34823 | .len = len, |
| 31597 | 34824 | .child = res_scalar_ty.toIntern(), |
| ... | ... | @@ -31600,17 +34827,6 @@ const Select = struct { |
| 31600 | 34827 | } })) else res_scalar_val; |
| 31601 | 34828 | return try cg.tempFromValue(res_val); |
| 31602 | 34829 | }, |
| 31603 | | .ref => |ref| ref.deref(s), |
| 31604 | | .ref_mask => |ref_mask| ref_mask.ref.deref(s), |
| 31605 | | .mut_reg => |ref_rc| { |
| 31606 | | const temp = ref_rc.ref.deref(s); |
| 31607 | | if (temp.isMut(cg)) switch (temp.tracking(cg).short) { |
| 31608 | | .register => |reg| if (reg.class() == ref_rc.rc) return temp, |
| 31609 | | .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return temp, |
| 31610 | | else => {}, |
| 31611 | | }; |
| 31612 | | return try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)); |
| 31613 | | }, |
| 31614 | 34830 | .symbol => |symbol| if (cg.bin_file.cast(.elf)) |elf_file| try cg.tempInit(spec.type, .{ .lea_symbol = .{ |
| 31615 | 34831 | .sym_index = try elf_file.getGlobalSymbol(symbol.name, symbol.lib), |
| 31616 | 34832 | } }) else if (cg.bin_file.cast(.macho)) |macho_file| try cg.tempInit(spec.type, .{ .lea_symbol = .{ |
| ... | ... | @@ -31707,6 +34923,9 @@ const Select = struct { |
| 31707 | 34923 | tmp3, |
| 31708 | 34924 | tmp4, |
| 31709 | 34925 | tmp5, |
| 34926 | tmp6, |
| 34927 | tmp7, |
| 34928 | tmp8, |
| 31710 | 34929 | dst0, |
| 31711 | 34930 | src0, |
| 31712 | 34931 | src1, |
| ... | ... | @@ -31778,6 +34997,36 @@ const Select = struct { |
| 31778 | 34997 | const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; |
| 31779 | 34998 | const tmp5y: Sized = .{ .ref = .tmp5, .size = .yword }; |
| 31780 | 34999 | |
| 35000 | const tmp6: Sized = .{ .ref = .tmp6, .size = .none }; |
| 35001 | const tmp6b: Sized = .{ .ref = .tmp6, .size = .byte }; |
| 35002 | const tmp6w: Sized = .{ .ref = .tmp6, .size = .word }; |
| 35003 | const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword }; |
| 35004 | const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr }; |
| 35005 | const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword }; |
| 35006 | const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte }; |
| 35007 | const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword }; |
| 35008 | const tmp6y: Sized = .{ .ref = .tmp6, .size = .yword }; |
| 35009 | |
| 35010 | const tmp7: Sized = .{ .ref = .tmp7, .size = .none }; |
| 35011 | const tmp7b: Sized = .{ .ref = .tmp7, .size = .byte }; |
| 35012 | const tmp7w: Sized = .{ .ref = .tmp7, .size = .word }; |
| 35013 | const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword }; |
| 35014 | const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr }; |
| 35015 | const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword }; |
| 35016 | const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte }; |
| 35017 | const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword }; |
| 35018 | const tmp7y: Sized = .{ .ref = .tmp7, .size = .yword }; |
| 35019 | |
| 35020 | const tmp8: Sized = .{ .ref = .tmp8, .size = .none }; |
| 35021 | const tmp8b: Sized = .{ .ref = .tmp8, .size = .byte }; |
| 35022 | const tmp8w: Sized = .{ .ref = .tmp8, .size = .word }; |
| 35023 | const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword }; |
| 35024 | const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr }; |
| 35025 | const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword }; |
| 35026 | const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte }; |
| 35027 | const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword }; |
| 35028 | const tmp8y: Sized = .{ .ref = .tmp8, .size = .yword }; |
| 35029 | |
| 31781 | 35030 | const dst0: Sized = .{ .ref = .dst0, .size = .none }; |
| 31782 | 35031 | const dst0b: Sized = .{ .ref = .dst0, .size = .byte }; |
| 31783 | 35032 | const dst0w: Sized = .{ .ref = .dst0, .size = .word }; |
| ... | ... | @@ -31875,6 +35124,33 @@ const Select = struct { |
| 31875 | 35124 | const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x }; |
| 31876 | 35125 | const tmp5y: Select.Operand = .{ .tag = .ref, .base = .tmp5y }; |
| 31877 | 35126 | |
| 35127 | const tmp6b: Select.Operand = .{ .tag = .ref, .base = .tmp6b }; |
| 35128 | const tmp6w: Select.Operand = .{ .tag = .ref, .base = .tmp6w }; |
| 35129 | const tmp6d: Select.Operand = .{ .tag = .ref, .base = .tmp6d }; |
| 35130 | const tmp6p: Select.Operand = .{ .tag = .ref, .base = .tmp6p }; |
| 35131 | const tmp6q: Select.Operand = .{ .tag = .ref, .base = .tmp6q }; |
| 35132 | const tmp6t: Select.Operand = .{ .tag = .ref, .base = .tmp6t }; |
| 35133 | const tmp6x: Select.Operand = .{ .tag = .ref, .base = .tmp6x }; |
| 35134 | const tmp6y: Select.Operand = .{ .tag = .ref, .base = .tmp6y }; |
| 35135 | |
| 35136 | const tmp7b: Select.Operand = .{ .tag = .ref, .base = .tmp7b }; |
| 35137 | const tmp7w: Select.Operand = .{ .tag = .ref, .base = .tmp7w }; |
| 35138 | const tmp7d: Select.Operand = .{ .tag = .ref, .base = .tmp7d }; |
| 35139 | const tmp7p: Select.Operand = .{ .tag = .ref, .base = .tmp7p }; |
| 35140 | const tmp7q: Select.Operand = .{ .tag = .ref, .base = .tmp7q }; |
| 35141 | const tmp7t: Select.Operand = .{ .tag = .ref, .base = .tmp7t }; |
| 35142 | const tmp7x: Select.Operand = .{ .tag = .ref, .base = .tmp7x }; |
| 35143 | const tmp7y: Select.Operand = .{ .tag = .ref, .base = .tmp7y }; |
| 35144 | |
| 35145 | const tmp8b: Select.Operand = .{ .tag = .ref, .base = .tmp8b }; |
| 35146 | const tmp8w: Select.Operand = .{ .tag = .ref, .base = .tmp8w }; |
| 35147 | const tmp8d: Select.Operand = .{ .tag = .ref, .base = .tmp8d }; |
| 35148 | const tmp8p: Select.Operand = .{ .tag = .ref, .base = .tmp8p }; |
| 35149 | const tmp8q: Select.Operand = .{ .tag = .ref, .base = .tmp8q }; |
| 35150 | const tmp8t: Select.Operand = .{ .tag = .ref, .base = .tmp8t }; |
| 35151 | const tmp8x: Select.Operand = .{ .tag = .ref, .base = .tmp8x }; |
| 35152 | const tmp8y: Select.Operand = .{ .tag = .ref, .base = .tmp8y }; |
| 35153 | |
| 31878 | 35154 | const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b }; |
| 31879 | 35155 | const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w }; |
| 31880 | 35156 | const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d }; |
| ... | ... | @@ -32204,14 +35480,20 @@ fn select( |
| 32204 | 35480 | const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; |
| 32205 | 35481 | |
| 32206 | 35482 | caller_preserved: { |
| 32207 | | switch (switch (case.clobbers.caller_preserved) { |
| 35483 | const cc = switch (case.clobbers.caller_preserved) { |
| 32208 | 35484 | .none => break :caller_preserved, |
| 32209 | 35485 | .ccc => cg.target.cCallingConvention().?, |
| 32210 | 35486 | .zigcc => .auto, |
| 32211 | | }) { |
| 35487 | }; |
| 35488 | const err_ret_trace_reg = if (cc == .auto and cg.pt.zcu.comp.config.any_error_tracing) err_ret_trace_reg: { |
| 35489 | const param_gpr = abi.getCAbiIntParamRegs(.auto); |
| 35490 | break :err_ret_trace_reg param_gpr[param_gpr.len - 1]; |
| 35491 | } else .none; |
| 35492 | switch (cc) { |
| 32212 | 35493 | else => unreachable, |
| 32213 | | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| { |
| 32214 | | const tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse continue; |
| 35494 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| skip: { |
| 35495 | if (reg == err_ret_trace_reg) break :skip; |
| 35496 | const tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse break :skip; |
| 32215 | 35497 | try cg.register_manager.getRegIndex(tracked_index, null); |
| 32216 | 35498 | assert(cg.register_manager.lockRegIndexAssumeUnused(tracked_index).tracked_index == tracked_index); |
| 32217 | 35499 | }, |
| ... | ... | @@ -32220,7 +35502,9 @@ fn select( |
| 32220 | 35502 | |
| 32221 | 35503 | @memcpy(src_slots[0..src_temps.len], src_temps); |
| 32222 | 35504 | std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); |
| 32223 | | for (tmp_slots, case.extra_temps) |*slot, spec| slot.* = try spec.create(&s) orelse continue; |
| 35505 | for (1..3) |pass| for (tmp_slots, case.extra_temps) |*slot, spec| if (pass == spec.pass()) { |
| 35506 | slot.* = try spec.create(&s); |
| 35507 | }; |
| 32224 | 35508 | |
| 32225 | 35509 | while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { |
| 32226 | 35510 | if (try src_pattern.convert(src_temp, cg)) break; |
| ... | ... | @@ -32231,7 +35515,7 @@ fn select( |
| 32231 | 35515 | if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); |
| 32232 | 35516 | |
| 32233 | 35517 | for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| |
| 32234 | | dst_temp.* = (try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s)).?; |
| 35518 | dst_temp.* = (try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s)); |
| 32235 | 35519 | @memcpy(dst_slots[0..dst_temps.len], dst_temps); |
| 32236 | 35520 | |
| 32237 | 35521 | switch (case.each) { |
| ... | ... | @@ -32243,16 +35527,20 @@ fn select( |
| 32243 | 35527 | assert(s.top == 0); |
| 32244 | 35528 | |
| 32245 | 35529 | caller_preserved: { |
| 32246 | | switch (switch (case.clobbers.caller_preserved) { |
| 35530 | const cc = switch (case.clobbers.caller_preserved) { |
| 32247 | 35531 | .none => break :caller_preserved, |
| 32248 | 35532 | .ccc => cg.target.cCallingConvention().?, |
| 32249 | 35533 | .zigcc => .auto, |
| 32250 | | }) { |
| 35534 | }; |
| 35535 | const err_ret_trace_reg = if (cc == .auto and cg.pt.zcu.comp.config.any_error_tracing) err_ret_trace_reg: { |
| 35536 | const param_gpr = abi.getCAbiIntParamRegs(.auto); |
| 35537 | break :err_ret_trace_reg param_gpr[param_gpr.len - 1]; |
| 35538 | } else .none; |
| 35539 | switch (cc) { |
| 32251 | 35540 | else => unreachable, |
| 32252 | | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| { |
| 32253 | | cg.register_manager.unlockReg(.{ |
| 32254 | | .tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse continue, |
| 32255 | | }); |
| 35541 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| skip: { |
| 35542 | if (reg == err_ret_trace_reg) break :skip; |
| 35543 | cg.register_manager.unlockReg(.{ .tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse break :skip }); |
| 32256 | 35544 | }, |
| 32257 | 35545 | } |
| 32258 | 35546 | } |