| ... | @@ -2393,7 +2393,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2393,7 +2393,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2393 | } | 2393 | } |
| 2394 | | 2394 | |
| 2395 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | 2395 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2396 | @setEvalBranchQuota(1_800); | 2396 | @setEvalBranchQuota(2_700); |
| 2397 | const pt = cg.pt; | 2397 | const pt = cg.pt; |
| 2398 | const zcu = pt.zcu; | 2398 | const zcu = pt.zcu; |
| 2399 | const ip = &zcu.intern_pool; | 2399 | const ip = &zcu.intern_pool; |
| ... | @@ -2984,6 +2984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2984,6 +2984,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2984 | .unused, | 2984 | .unused, |
| 2985 | .unused, | 2985 | .unused, |
| 2986 | .unused, | 2986 | .unused, |
| | 2987 | .unused, |
| | 2988 | .unused, |
| | 2989 | .unused, |
| 2987 | }, | 2990 | }, |
| 2988 | .dst_temps = .{.mem}, | 2991 | .dst_temps = .{.mem}, |
| 2989 | .clobbers = .{ .eflags = true }, | 2992 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3008,6 +3011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3008,6 +3011,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3008 | .unused, | 3011 | .unused, |
| 3009 | .unused, | 3012 | .unused, |
| 3010 | .unused, | 3013 | .unused, |
| | 3014 | .unused, |
| | 3015 | .unused, |
| | 3016 | .unused, |
| 3011 | }, | 3017 | }, |
| 3012 | .dst_temps = .{.mem}, | 3018 | .dst_temps = .{.mem}, |
| 3013 | .clobbers = .{ .eflags = true }, | 3019 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3032,6 +3038,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3032,6 +3038,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3032 | .unused, | 3038 | .unused, |
| 3033 | .unused, | 3039 | .unused, |
| 3034 | .unused, | 3040 | .unused, |
| | 3041 | .unused, |
| | 3042 | .unused, |
| | 3043 | .unused, |
| 3035 | }, | 3044 | }, |
| 3036 | .dst_temps = .{.mem}, | 3045 | .dst_temps = .{.mem}, |
| 3037 | .clobbers = .{ .eflags = true }, | 3046 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3056,6 +3065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3056,6 +3065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3056 | .unused, | 3065 | .unused, |
| 3057 | .unused, | 3066 | .unused, |
| 3058 | .unused, | 3067 | .unused, |
| | 3068 | .unused, |
| | 3069 | .unused, |
| | 3070 | .unused, |
| 3059 | }, | 3071 | }, |
| 3060 | .dst_temps = .{.mem}, | 3072 | .dst_temps = .{.mem}, |
| 3061 | .clobbers = .{ .eflags = true }, | 3073 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3080,6 +3092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3080,6 +3092,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3080 | .unused, | 3092 | .unused, |
| 3081 | .unused, | 3093 | .unused, |
| 3082 | .unused, | 3094 | .unused, |
| | 3095 | .unused, |
| | 3096 | .unused, |
| | 3097 | .unused, |
| 3083 | }, | 3098 | }, |
| 3084 | .dst_temps = .{.mem}, | 3099 | .dst_temps = .{.mem}, |
| 3085 | .clobbers = .{ .eflags = true }, | 3100 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3104,6 +3119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3104,6 +3119,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3104 | .unused, | 3119 | .unused, |
| 3105 | .unused, | 3120 | .unused, |
| 3106 | .unused, | 3121 | .unused, |
| | 3122 | .unused, |
| | 3123 | .unused, |
| | 3124 | .unused, |
| 3107 | }, | 3125 | }, |
| 3108 | .dst_temps = .{.mem}, | 3126 | .dst_temps = .{.mem}, |
| 3109 | .clobbers = .{ .eflags = true }, | 3127 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3127,6 +3145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3127,6 +3145,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3127 | .unused, | 3145 | .unused, |
| 3128 | .unused, | 3146 | .unused, |
| 3129 | .unused, | 3147 | .unused, |
| | 3148 | .unused, |
| | 3149 | .unused, |
| | 3150 | .unused, |
| 3130 | }, | 3151 | }, |
| 3131 | .dst_temps = .{.mem}, | 3152 | .dst_temps = .{.mem}, |
| 3132 | .clobbers = .{ .eflags = true }, | 3153 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3265,6 +3286,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3265,6 +3286,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3265 | .unused, | 3286 | .unused, |
| 3266 | .unused, | 3287 | .unused, |
| 3267 | .unused, | 3288 | .unused, |
| | 3289 | .unused, |
| | 3290 | .unused, |
| | 3291 | .unused, |
| 3268 | }, | 3292 | }, |
| 3269 | .dst_temps = .{.{ .ref = .src0 }}, | 3293 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3270 | .each = .{ .once = &.{ | 3294 | .each = .{ .once = &.{ |
| ... | @@ -3296,6 +3320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3296,6 +3320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3296 | .unused, | 3320 | .unused, |
| 3297 | .unused, | 3321 | .unused, |
| 3298 | .unused, | 3322 | .unused, |
| | 3323 | .unused, |
| | 3324 | .unused, |
| | 3325 | .unused, |
| 3299 | }, | 3326 | }, |
| 3300 | .dst_temps = .{.{ .rc = .sse }}, | 3327 | .dst_temps = .{.{ .rc = .sse }}, |
| 3301 | .each = .{ .once = &.{ | 3328 | .each = .{ .once = &.{ |
| ... | @@ -3327,6 +3354,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3327,6 +3354,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3327 | .unused, | 3354 | .unused, |
| 3328 | .unused, | 3355 | .unused, |
| 3329 | .unused, | 3356 | .unused, |
| | 3357 | .unused, |
| | 3358 | .unused, |
| | 3359 | .unused, |
| 3330 | }, | 3360 | }, |
| 3331 | .dst_temps = .{.{ .ref = .src0 }}, | 3361 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3332 | .each = .{ .once = &.{ | 3362 | .each = .{ .once = &.{ |
| ... | @@ -3346,6 +3376,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3346,6 +3376,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3346 | .unused, | 3376 | .unused, |
| 3347 | .unused, | 3377 | .unused, |
| 3348 | .unused, | 3378 | .unused, |
| | 3379 | .unused, |
| | 3380 | .unused, |
| | 3381 | .unused, |
| 3349 | }, | 3382 | }, |
| 3350 | .dst_temps = .{.{ .ref = .src0 }}, | 3383 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3351 | .each = .{ .once = &.{ | 3384 | .each = .{ .once = &.{ |
| ... | @@ -3377,6 +3410,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3377,6 +3410,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3377 | .unused, | 3410 | .unused, |
| 3378 | .unused, | 3411 | .unused, |
| 3379 | .unused, | 3412 | .unused, |
| | 3413 | .unused, |
| | 3414 | .unused, |
| | 3415 | .unused, |
| 3380 | }, | 3416 | }, |
| 3381 | .dst_temps = .{.{ .rc = .sse }}, | 3417 | .dst_temps = .{.{ .rc = .sse }}, |
| 3382 | .each = .{ .once = &.{ | 3418 | .each = .{ .once = &.{ |
| ... | @@ -3392,7 +3428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3392,7 +3428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3392 | }, | 3428 | }, |
| 3393 | .dst_temps = .{.{ .rc = .sse }}, | 3429 | .dst_temps = .{.{ .rc = .sse }}, |
| 3394 | .each = .{ .once = &.{ | 3430 | .each = .{ .once = &.{ |
| 3395 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .si(0b01111) }, | 3431 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .ui(0b01111) }, |
| 3396 | .{ ._, .v_pd, .xor, .dst0y, .dst0y, .src0y, ._ }, | 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,6 +3444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3408 | .unused, | 3444 | .unused, |
| 3409 | .unused, | 3445 | .unused, |
| 3410 | .unused, | 3446 | .unused, |
| | 3447 | .unused, |
| | 3448 | .unused, |
| | 3449 | .unused, |
| 3411 | }, | 3450 | }, |
| 3412 | .dst_temps = .{.{ .rc = .sse }}, | 3451 | .dst_temps = .{.{ .rc = .sse }}, |
| 3413 | .each = .{ .once = &.{ | 3452 | .each = .{ .once = &.{ |
| ... | @@ -3427,6 +3466,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3427,6 +3466,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3427 | .unused, | 3466 | .unused, |
| 3428 | .unused, | 3467 | .unused, |
| 3429 | .unused, | 3468 | .unused, |
| | 3469 | .unused, |
| | 3470 | .unused, |
| | 3471 | .unused, |
| 3430 | }, | 3472 | }, |
| 3431 | .dst_temps = .{.mem}, | 3473 | .dst_temps = .{.mem}, |
| 3432 | .clobbers = .{ .eflags = true }, | 3474 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3453,6 +3495,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3453,6 +3495,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3453 | .unused, | 3495 | .unused, |
| 3454 | .unused, | 3496 | .unused, |
| 3455 | .unused, | 3497 | .unused, |
| | 3498 | .unused, |
| | 3499 | .unused, |
| | 3500 | .unused, |
| 3456 | }, | 3501 | }, |
| 3457 | .dst_temps = .{.mem}, | 3502 | .dst_temps = .{.mem}, |
| 3458 | .clobbers = .{ .eflags = true }, | 3503 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3477,12 +3522,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3477,12 +3522,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3477 | .unused, | 3522 | .unused, |
| 3478 | .unused, | 3523 | .unused, |
| 3479 | .unused, | 3524 | .unused, |
| | 3525 | .unused, |
| | 3526 | .unused, |
| | 3527 | .unused, |
| 3480 | }, | 3528 | }, |
| 3481 | .dst_temps = .{.mem}, | 3529 | .dst_temps = .{.mem}, |
| 3482 | .clobbers = .{ .eflags = true }, | 3530 | .clobbers = .{ .eflags = true }, |
| 3483 | .each = .{ .once = &.{ | 3531 | .each = .{ .once = &.{ |
| 3484 | .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_size), ._, ._ }, | 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 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memiad(.src0y, .tmp0, .add_size, -16), ._ }, | 3534 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memiad(.src0y, .tmp0, .add_size, -16), ._ }, |
| 3487 | .{ ._, .v_pd, .movu, .memiad(.dst0y, .tmp0, .add_size, -16), .tmp2y, ._, ._ }, | 3535 | .{ ._, .v_pd, .movu, .memiad(.dst0y, .tmp0, .add_size, -16), .tmp2y, ._, ._ }, |
| 3488 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 3536 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| ... | @@ -3503,12 +3551,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3503,12 +3551,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3503 | .unused, | 3551 | .unused, |
| 3504 | .unused, | 3552 | .unused, |
| 3505 | .unused, | 3553 | .unused, |
| | 3554 | .unused, |
| | 3555 | .unused, |
| | 3556 | .unused, |
| 3506 | }, | 3557 | }, |
| 3507 | .dst_temps = .{.mem}, | 3558 | .dst_temps = .{.mem}, |
| 3508 | .clobbers = .{ .eflags = true }, | 3559 | .clobbers = .{ .eflags = true }, |
| 3509 | .each = .{ .once = &.{ | 3560 | .each = .{ .once = &.{ |
| 3510 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 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 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._ }, | 3563 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| 3513 | .{ ._, .v_pd, .movu, .memia(.dst0y, .tmp0, .add_size), .tmp2y, ._, ._ }, | 3564 | .{ ._, .v_pd, .movu, .memia(.dst0y, .tmp0, .add_size), .tmp2y, ._, ._ }, |
| 3514 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 3565 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| ... | @@ -3527,6 +3578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3527,6 +3578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3527 | .unused, | 3578 | .unused, |
| 3528 | .unused, | 3579 | .unused, |
| 3529 | .unused, | 3580 | .unused, |
| | 3581 | .unused, |
| | 3582 | .unused, |
| | 3583 | .unused, |
| 3530 | }, | 3584 | }, |
| 3531 | .dst_temps = .{.mem}, | 3585 | .dst_temps = .{.mem}, |
| 3532 | .clobbers = .{ .eflags = true }, | 3586 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3551,6 +3605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3551,6 +3605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3551 | .unused, | 3605 | .unused, |
| 3552 | .unused, | 3606 | .unused, |
| 3553 | .unused, | 3607 | .unused, |
| | 3608 | .unused, |
| | 3609 | .unused, |
| | 3610 | .unused, |
| 3554 | }, | 3611 | }, |
| 3555 | .dst_temps = .{.mem}, | 3612 | .dst_temps = .{.mem}, |
| 3556 | .clobbers = .{ .eflags = true }, | 3613 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3576,6 +3633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3576,6 +3633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3576 | .unused, | 3633 | .unused, |
| 3577 | .unused, | 3634 | .unused, |
| 3578 | .unused, | 3635 | .unused, |
| | 3636 | .unused, |
| | 3637 | .unused, |
| | 3638 | .unused, |
| 3579 | }, | 3639 | }, |
| 3580 | .dst_temps = .{.{ .ref = .src0 }}, | 3640 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3581 | .clobbers = .{ .eflags = true }, | 3641 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3599,6 +3659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3599,6 +3659,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3599 | .unused, | 3659 | .unused, |
| 3600 | .unused, | 3660 | .unused, |
| 3601 | .unused, | 3661 | .unused, |
| | 3662 | .unused, |
| | 3663 | .unused, |
| | 3664 | .unused, |
| 3602 | }, | 3665 | }, |
| 3603 | .dst_temps = .{.mem}, | 3666 | .dst_temps = .{.mem}, |
| 3604 | .clobbers = .{ .eflags = true }, | 3667 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3623,6 +3686,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3623,6 +3686,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3623 | .unused, | 3686 | .unused, |
| 3624 | .unused, | 3687 | .unused, |
| 3625 | .unused, | 3688 | .unused, |
| | 3689 | .unused, |
| | 3690 | .unused, |
| | 3691 | .unused, |
| 3626 | }, | 3692 | }, |
| 3627 | .dst_temps = .{.{ .ref = .src0 }}, | 3693 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3628 | .clobbers = .{ .eflags = true }, | 3694 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3647,6 +3713,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3647,6 +3713,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3647 | .unused, | 3713 | .unused, |
| 3648 | .unused, | 3714 | .unused, |
| 3649 | .unused, | 3715 | .unused, |
| | 3716 | .unused, |
| | 3717 | .unused, |
| | 3718 | .unused, |
| 3650 | }, | 3719 | }, |
| 3651 | .dst_temps = .{.mem}, | 3720 | .dst_temps = .{.mem}, |
| 3652 | .clobbers = .{ .eflags = true }, | 3721 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3676,6 +3745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3676,6 +3745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3676 | .unused, | 3745 | .unused, |
| 3677 | .unused, | 3746 | .unused, |
| 3678 | .unused, | 3747 | .unused, |
| | 3748 | .unused, |
| | 3749 | .unused, |
| | 3750 | .unused, |
| 3679 | }, | 3751 | }, |
| 3680 | .dst_temps = .{.{ .ref = .src0 }}, | 3752 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3681 | .clobbers = .{ .eflags = true }, | 3753 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3700,6 +3772,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3700,6 +3772,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3700 | .unused, | 3772 | .unused, |
| 3701 | .unused, | 3773 | .unused, |
| 3702 | .unused, | 3774 | .unused, |
| | 3775 | .unused, |
| | 3776 | .unused, |
| | 3777 | .unused, |
| 3703 | }, | 3778 | }, |
| 3704 | .dst_temps = .{.mem}, | 3779 | .dst_temps = .{.mem}, |
| 3705 | .clobbers = .{ .eflags = true }, | 3780 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3725,6 +3800,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3725,6 +3800,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3725 | .unused, | 3800 | .unused, |
| 3726 | .unused, | 3801 | .unused, |
| 3727 | .unused, | 3802 | .unused, |
| | 3803 | .unused, |
| | 3804 | .unused, |
| | 3805 | .unused, |
| 3728 | }, | 3806 | }, |
| 3729 | .dst_temps = .{.{ .ref = .src0 }}, | 3807 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3730 | .clobbers = .{ .eflags = true }, | 3808 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3748,6 +3826,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3748,6 +3826,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3748 | .unused, | 3826 | .unused, |
| 3749 | .unused, | 3827 | .unused, |
| 3750 | .unused, | 3828 | .unused, |
| | 3829 | .unused, |
| | 3830 | .unused, |
| | 3831 | .unused, |
| 3751 | }, | 3832 | }, |
| 3752 | .dst_temps = .{.mem}, | 3833 | .dst_temps = .{.mem}, |
| 3753 | .clobbers = .{ .eflags = true }, | 3834 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3776,6 +3857,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3776,6 +3857,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3776 | .unused, | 3857 | .unused, |
| 3777 | .unused, | 3858 | .unused, |
| 3778 | .unused, | 3859 | .unused, |
| | 3860 | .unused, |
| | 3861 | .unused, |
| | 3862 | .unused, |
| 3779 | }, | 3863 | }, |
| 3780 | .dst_temps = .{.{ .ref = .src0 }}, | 3864 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3781 | .clobbers = .{ .eflags = true }, | 3865 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3800,6 +3884,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3800,6 +3884,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3800 | .unused, | 3884 | .unused, |
| 3801 | .unused, | 3885 | .unused, |
| 3802 | .unused, | 3886 | .unused, |
| | 3887 | .unused, |
| | 3888 | .unused, |
| | 3889 | .unused, |
| 3803 | }, | 3890 | }, |
| 3804 | .dst_temps = .{.mem}, | 3891 | .dst_temps = .{.mem}, |
| 3805 | .clobbers = .{ .eflags = true }, | 3892 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3829,6 +3916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3829,6 +3916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3829 | .unused, | 3916 | .unused, |
| 3830 | .unused, | 3917 | .unused, |
| 3831 | .unused, | 3918 | .unused, |
| | 3919 | .unused, |
| | 3920 | .unused, |
| | 3921 | .unused, |
| 3832 | }, | 3922 | }, |
| 3833 | .dst_temps = .{.{ .ref = .src0 }}, | 3923 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3834 | .clobbers = .{ .eflags = true }, | 3924 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3852,6 +3942,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3852,6 +3942,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3852 | .unused, | 3942 | .unused, |
| 3853 | .unused, | 3943 | .unused, |
| 3854 | .unused, | 3944 | .unused, |
| | 3945 | .unused, |
| | 3946 | .unused, |
| | 3947 | .unused, |
| 3855 | }, | 3948 | }, |
| 3856 | .dst_temps = .{.mem}, | 3949 | .dst_temps = .{.mem}, |
| 3857 | .clobbers = .{ .eflags = true }, | 3950 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3880,6 +3973,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3880,6 +3973,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3880 | .unused, | 3973 | .unused, |
| 3881 | .unused, | 3974 | .unused, |
| 3882 | .unused, | 3975 | .unused, |
| | 3976 | .unused, |
| | 3977 | .unused, |
| | 3978 | .unused, |
| 3883 | }, | 3979 | }, |
| 3884 | .dst_temps = .{.{ .ref = .src0 }}, | 3980 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3885 | .clobbers = .{ .eflags = true }, | 3981 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3905,6 +4001,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3905,6 +4001,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3905 | .unused, | 4001 | .unused, |
| 3906 | .unused, | 4002 | .unused, |
| 3907 | .unused, | 4003 | .unused, |
| | 4004 | .unused, |
| | 4005 | .unused, |
| | 4006 | .unused, |
| 3908 | }, | 4007 | }, |
| 3909 | .dst_temps = .{.mem}, | 4008 | .dst_temps = .{.mem}, |
| 3910 | .clobbers = .{ .eflags = true }, | 4009 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3933,6 +4032,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3933,6 +4032,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3933 | .unused, | 4032 | .unused, |
| 3934 | .unused, | 4033 | .unused, |
| 3935 | .unused, | 4034 | .unused, |
| | 4035 | .unused, |
| | 4036 | .unused, |
| | 4037 | .unused, |
| 3936 | }, | 4038 | }, |
| 3937 | .dst_temps = .{.{ .ref = .src0 }}, | 4039 | .dst_temps = .{.{ .ref = .src0 }}, |
| 3938 | .clobbers = .{ .eflags = true }, | 4040 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3957,6 +4059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3957,6 +4059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3957 | .unused, | 4059 | .unused, |
| 3958 | .unused, | 4060 | .unused, |
| 3959 | .unused, | 4061 | .unused, |
| | 4062 | .unused, |
| | 4063 | .unused, |
| | 4064 | .unused, |
| 3960 | }, | 4065 | }, |
| 3961 | .dst_temps = .{.mem}, | 4066 | .dst_temps = .{.mem}, |
| 3962 | .clobbers = .{ .eflags = true }, | 4067 | .clobbers = .{ .eflags = true }, |
| ... | @@ -3996,6 +4101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -3996,6 +4101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3996 | .unused, | 4101 | .unused, |
| 3997 | .unused, | 4102 | .unused, |
| 3998 | .unused, | 4103 | .unused, |
| | 4104 | .unused, |
| | 4105 | .unused, |
| | 4106 | .unused, |
| 3999 | }, | 4107 | }, |
| 4000 | .dst_temps = .{.{ .ref = .src0 }}, | 4108 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4001 | .each = .{ .once = &.{ | 4109 | .each = .{ .once = &.{ |
| ... | @@ -4027,6 +4135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4027,6 +4135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4027 | .unused, | 4135 | .unused, |
| 4028 | .unused, | 4136 | .unused, |
| 4029 | .unused, | 4137 | .unused, |
| | 4138 | .unused, |
| | 4139 | .unused, |
| | 4140 | .unused, |
| 4030 | }, | 4141 | }, |
| 4031 | .dst_temps = .{.{ .rc = .sse }}, | 4142 | .dst_temps = .{.{ .rc = .sse }}, |
| 4032 | .each = .{ .once = &.{ | 4143 | .each = .{ .once = &.{ |
| ... | @@ -4058,6 +4169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4058,6 +4169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4058 | .unused, | 4169 | .unused, |
| 4059 | .unused, | 4170 | .unused, |
| 4060 | .unused, | 4171 | .unused, |
| | 4172 | .unused, |
| | 4173 | .unused, |
| | 4174 | .unused, |
| 4061 | }, | 4175 | }, |
| 4062 | .dst_temps = .{.{ .ref = .src0 }}, | 4176 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4063 | .each = .{ .once = &.{ | 4177 | .each = .{ .once = &.{ |
| ... | @@ -4077,6 +4191,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4077,6 +4191,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4077 | .unused, | 4191 | .unused, |
| 4078 | .unused, | 4192 | .unused, |
| 4079 | .unused, | 4193 | .unused, |
| | 4194 | .unused, |
| | 4195 | .unused, |
| | 4196 | .unused, |
| 4080 | }, | 4197 | }, |
| 4081 | .dst_temps = .{.{ .ref = .src0 }}, | 4198 | .dst_temps = .{.{ .ref = .src0 }}, |
| 4082 | .each = .{ .once = &.{ | 4199 | .each = .{ .once = &.{ |
| ... | @@ -4108,6 +4225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4108,6 +4225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4108 | .unused, | 4225 | .unused, |
| 4109 | .unused, | 4226 | .unused, |
| 4110 | .unused, | 4227 | .unused, |
| | 4228 | .unused, |
| | 4229 | .unused, |
| | 4230 | .unused, |
| 4111 | }, | 4231 | }, |
| 4112 | .dst_temps = .{.{ .rc = .sse }}, | 4232 | .dst_temps = .{.{ .rc = .sse }}, |
| 4113 | .each = .{ .once = &.{ | 4233 | .each = .{ .once = &.{ |
| ... | @@ -4123,7 +4243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4123,7 +4243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4123 | }, | 4243 | }, |
| 4124 | .dst_temps = .{.{ .rc = .sse }}, | 4244 | .dst_temps = .{.{ .rc = .sse }}, |
| 4125 | .each = .{ .once = &.{ | 4245 | .each = .{ .once = &.{ |
| 4126 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .si(0b01111) }, | 4246 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .ui(0b01111) }, |
| 4127 | .{ ._, .v_pd, .xor, .dst0y, .dst0y, .src0y, ._ }, | 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,6 +4259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4139 | .unused, | 4259 | .unused, |
| 4140 | .unused, | 4260 | .unused, |
| 4141 | .unused, | 4261 | .unused, |
| | 4262 | .unused, |
| | 4263 | .unused, |
| | 4264 | .unused, |
| 4142 | }, | 4265 | }, |
| 4143 | .dst_temps = .{.{ .rc = .sse }}, | 4266 | .dst_temps = .{.{ .rc = .sse }}, |
| 4144 | .each = .{ .once = &.{ | 4267 | .each = .{ .once = &.{ |
| ... | @@ -4157,6 +4280,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4157,6 +4280,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4157 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, | 4280 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, |
| 4158 | .unused, | 4281 | .unused, |
| 4159 | .unused, | 4282 | .unused, |
| | 4283 | .unused, |
| | 4284 | .unused, |
| | 4285 | .unused, |
| 4160 | }, | 4286 | }, |
| 4161 | .dst_temps = .{.mem}, | 4287 | .dst_temps = .{.mem}, |
| 4162 | .each = .{ .once = &.{ | 4288 | .each = .{ .once = &.{ |
| ... | @@ -4179,6 +4305,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4179,6 +4305,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4179 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, | 4305 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, |
| 4180 | .unused, | 4306 | .unused, |
| 4181 | .unused, | 4307 | .unused, |
| | 4308 | .unused, |
| | 4309 | .unused, |
| | 4310 | .unused, |
| 4182 | }, | 4311 | }, |
| 4183 | .dst_temps = .{.mem}, | 4312 | .dst_temps = .{.mem}, |
| 4184 | .each = .{ .once = &.{ | 4313 | .each = .{ .once = &.{ |
| ... | @@ -4517,6 +4646,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4517,6 +4646,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4517 | .unused, | 4646 | .unused, |
| 4518 | .unused, | 4647 | .unused, |
| 4519 | .unused, | 4648 | .unused, |
| | 4649 | .unused, |
| | 4650 | .unused, |
| | 4651 | .unused, |
| 4520 | }, | 4652 | }, |
| 4521 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4653 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4522 | .clobbers = .{ .eflags = true }, | 4654 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4541,6 +4673,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4541,6 +4673,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4541 | .unused, | 4673 | .unused, |
| 4542 | .unused, | 4674 | .unused, |
| 4543 | .unused, | 4675 | .unused, |
| | 4676 | .unused, |
| | 4677 | .unused, |
| | 4678 | .unused, |
| 4544 | }, | 4679 | }, |
| 4545 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4680 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4546 | .clobbers = .{ .eflags = true }, | 4681 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4566,6 +4701,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4566,6 +4701,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4566 | .unused, | 4701 | .unused, |
| 4567 | .unused, | 4702 | .unused, |
| 4568 | .unused, | 4703 | .unused, |
| | 4704 | .unused, |
| | 4705 | .unused, |
| | 4706 | .unused, |
| 4569 | }, | 4707 | }, |
| 4570 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4708 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4571 | .clobbers = .{ .eflags = true }, | 4709 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4592,6 +4730,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4592,6 +4730,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4592 | .unused, | 4730 | .unused, |
| 4593 | .unused, | 4731 | .unused, |
| 4594 | .unused, | 4732 | .unused, |
| | 4733 | .unused, |
| | 4734 | .unused, |
| | 4735 | .unused, |
| 4595 | }, | 4736 | }, |
| 4596 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4737 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4597 | .clobbers = .{ .eflags = true }, | 4738 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4650,6 +4791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4650,6 +4791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4650 | .unused, | 4791 | .unused, |
| 4651 | .unused, | 4792 | .unused, |
| 4652 | .unused, | 4793 | .unused, |
| | 4794 | .unused, |
| | 4795 | .unused, |
| | 4796 | .unused, |
| 4653 | }, | 4797 | }, |
| 4654 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4798 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4655 | .clobbers = .{ .eflags = true }, | 4799 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4676,6 +4820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4676,6 +4820,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4676 | .unused, | 4820 | .unused, |
| 4677 | .unused, | 4821 | .unused, |
| 4678 | .unused, | 4822 | .unused, |
| | 4823 | .unused, |
| | 4824 | .unused, |
| | 4825 | .unused, |
| 4679 | }, | 4826 | }, |
| 4680 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4827 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4681 | .clobbers = .{ .eflags = true }, | 4828 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4700,6 +4847,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4700,6 +4847,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4700 | .unused, | 4847 | .unused, |
| 4701 | .unused, | 4848 | .unused, |
| 4702 | .unused, | 4849 | .unused, |
| | 4850 | .unused, |
| | 4851 | .unused, |
| | 4852 | .unused, |
| 4703 | }, | 4853 | }, |
| 4704 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4854 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4705 | .clobbers = .{ .eflags = true }, | 4855 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4722,6 +4872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4722,6 +4872,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4722 | .unused, | 4872 | .unused, |
| 4723 | .unused, | 4873 | .unused, |
| 4724 | .unused, | 4874 | .unused, |
| | 4875 | .unused, |
| | 4876 | .unused, |
| | 4877 | .unused, |
| 4725 | }, | 4878 | }, |
| 4726 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4879 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4727 | .clobbers = .{ .eflags = true }, | 4880 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4745,6 +4898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4745,6 +4898,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4745 | .unused, | 4898 | .unused, |
| 4746 | .unused, | 4899 | .unused, |
| 4747 | .unused, | 4900 | .unused, |
| | 4901 | .unused, |
| | 4902 | .unused, |
| | 4903 | .unused, |
| 4748 | }, | 4904 | }, |
| 4749 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4905 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4750 | .clobbers = .{ .eflags = true }, | 4906 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4769,6 +4925,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4769,6 +4925,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4769 | .unused, | 4925 | .unused, |
| 4770 | .unused, | 4926 | .unused, |
| 4771 | .unused, | 4927 | .unused, |
| | 4928 | .unused, |
| | 4929 | .unused, |
| | 4930 | .unused, |
| 4772 | }, | 4931 | }, |
| 4773 | .dst_temps = .{.{ .rc = .general_purpose }}, | 4932 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4774 | .clobbers = .{ .eflags = true }, | 4933 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4894,6 +5053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4894,6 +5053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4894 | .unused, | 5053 | .unused, |
| 4895 | .unused, | 5054 | .unused, |
| 4896 | .unused, | 5055 | .unused, |
| | 5056 | .unused, |
| | 5057 | .unused, |
| | 5058 | .unused, |
| 4897 | }, | 5059 | }, |
| 4898 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5060 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4899 | .clobbers = .{ .eflags = true }, | 5061 | .clobbers = .{ .eflags = true }, |
| ... | @@ -4917,6 +5079,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -4917,6 +5079,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4917 | .unused, | 5079 | .unused, |
| 4918 | .unused, | 5080 | .unused, |
| 4919 | .unused, | 5081 | .unused, |
| | 5082 | .unused, |
| | 5083 | .unused, |
| | 5084 | .unused, |
| 4920 | }, | 5085 | }, |
| 4921 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5086 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 4922 | .clobbers = .{ .eflags = true }, | 5087 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5041,6 +5206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5041,6 +5206,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5041 | .unused, | 5206 | .unused, |
| 5042 | .unused, | 5207 | .unused, |
| 5043 | .unused, | 5208 | .unused, |
| | 5209 | .unused, |
| | 5210 | .unused, |
| | 5211 | .unused, |
| 5044 | }, | 5212 | }, |
| 5045 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5213 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5046 | .clobbers = .{ .eflags = true }, | 5214 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5064,6 +5232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5064,6 +5232,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5064 | .unused, | 5232 | .unused, |
| 5065 | .unused, | 5233 | .unused, |
| 5066 | .unused, | 5234 | .unused, |
| | 5235 | .unused, |
| | 5236 | .unused, |
| | 5237 | .unused, |
| 5067 | }, | 5238 | }, |
| 5068 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5239 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5069 | .clobbers = .{ .eflags = true }, | 5240 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5101,6 +5272,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5101,6 +5272,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5101 | .unused, | 5272 | .unused, |
| 5102 | .unused, | 5273 | .unused, |
| 5103 | .unused, | 5274 | .unused, |
| | 5275 | .unused, |
| | 5276 | .unused, |
| | 5277 | .unused, |
| 5104 | }, | 5278 | }, |
| 5105 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5279 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5106 | .clobbers = .{ .eflags = true }, | 5280 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5156,6 +5330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5156,6 +5330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5156 | .unused, | 5330 | .unused, |
| 5157 | .unused, | 5331 | .unused, |
| 5158 | .unused, | 5332 | .unused, |
| | 5333 | .unused, |
| | 5334 | .unused, |
| | 5335 | .unused, |
| 5159 | }, | 5336 | }, |
| 5160 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5337 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5161 | .clobbers = .{ .eflags = true }, | 5338 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5211,6 +5388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5211,6 +5388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5211 | .unused, | 5388 | .unused, |
| 5212 | .unused, | 5389 | .unused, |
| 5213 | .unused, | 5390 | .unused, |
| | 5391 | .unused, |
| | 5392 | .unused, |
| | 5393 | .unused, |
| 5214 | }, | 5394 | }, |
| 5215 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5395 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5216 | .clobbers = .{ .eflags = true }, | 5396 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5236,6 +5416,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5236,6 +5416,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5236 | .unused, | 5416 | .unused, |
| 5237 | .unused, | 5417 | .unused, |
| 5238 | .unused, | 5418 | .unused, |
| | 5419 | .unused, |
| | 5420 | .unused, |
| | 5421 | .unused, |
| 5239 | }, | 5422 | }, |
| 5240 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5423 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5241 | .clobbers = .{ .eflags = true }, | 5424 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5258,6 +5441,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5258,6 +5441,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5258 | .unused, | 5441 | .unused, |
| 5259 | .unused, | 5442 | .unused, |
| 5260 | .unused, | 5443 | .unused, |
| | 5444 | .unused, |
| | 5445 | .unused, |
| | 5446 | .unused, |
| 5261 | }, | 5447 | }, |
| 5262 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5448 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5263 | .clobbers = .{ .eflags = true }, | 5449 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5285,6 +5471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5285,6 +5471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5285 | .unused, | 5471 | .unused, |
| 5286 | .unused, | 5472 | .unused, |
| 5287 | .unused, | 5473 | .unused, |
| | 5474 | .unused, |
| | 5475 | .unused, |
| | 5476 | .unused, |
| 5288 | }, | 5477 | }, |
| 5289 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5478 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5290 | .clobbers = .{ .eflags = true }, | 5479 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5311,6 +5500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5311,6 +5500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5311 | .unused, | 5500 | .unused, |
| 5312 | .unused, | 5501 | .unused, |
| 5313 | .unused, | 5502 | .unused, |
| | 5503 | .unused, |
| | 5504 | .unused, |
| | 5505 | .unused, |
| 5314 | }, | 5506 | }, |
| 5315 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5507 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5316 | .clobbers = .{ .eflags = true }, | 5508 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5339,6 +5531,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5339,6 +5531,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5339 | .unused, | 5531 | .unused, |
| 5340 | .unused, | 5532 | .unused, |
| 5341 | .unused, | 5533 | .unused, |
| | 5534 | .unused, |
| | 5535 | .unused, |
| | 5536 | .unused, |
| 5342 | }, | 5537 | }, |
| 5343 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5538 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5344 | .clobbers = .{ .eflags = true }, | 5539 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5366,6 +5561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5366,6 +5561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5366 | .unused, | 5561 | .unused, |
| 5367 | .unused, | 5562 | .unused, |
| 5368 | .unused, | 5563 | .unused, |
| | 5564 | .unused, |
| | 5565 | .unused, |
| | 5566 | .unused, |
| 5369 | }, | 5567 | }, |
| 5370 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5568 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5371 | .clobbers = .{ .eflags = true }, | 5569 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5393,6 +5591,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5393,6 +5591,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5393 | .unused, | 5591 | .unused, |
| 5394 | .unused, | 5592 | .unused, |
| 5395 | .unused, | 5593 | .unused, |
| | 5594 | .unused, |
| | 5595 | .unused, |
| | 5596 | .unused, |
| 5396 | }, | 5597 | }, |
| 5397 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5598 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5398 | .clobbers = .{ .eflags = true }, | 5599 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5419,6 +5620,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5419,6 +5620,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5419 | .unused, | 5620 | .unused, |
| 5420 | .unused, | 5621 | .unused, |
| 5421 | .unused, | 5622 | .unused, |
| | 5623 | .unused, |
| | 5624 | .unused, |
| | 5625 | .unused, |
| 5422 | }, | 5626 | }, |
| 5423 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5627 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5424 | .clobbers = .{ .eflags = true }, | 5628 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5447,6 +5651,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5447,6 +5651,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5447 | .unused, | 5651 | .unused, |
| 5448 | .unused, | 5652 | .unused, |
| 5449 | .unused, | 5653 | .unused, |
| | 5654 | .unused, |
| | 5655 | .unused, |
| | 5656 | .unused, |
| 5450 | }, | 5657 | }, |
| 5451 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5658 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5452 | .clobbers = .{ .eflags = true }, | 5659 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5474,6 +5681,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5474,6 +5681,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5474 | .unused, | 5681 | .unused, |
| 5475 | .unused, | 5682 | .unused, |
| 5476 | .unused, | 5683 | .unused, |
| | 5684 | .unused, |
| | 5685 | .unused, |
| | 5686 | .unused, |
| 5477 | }, | 5687 | }, |
| 5478 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5688 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5479 | .clobbers = .{ .eflags = true }, | 5689 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5504,6 +5714,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5504,6 +5714,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5504 | .unused, | 5714 | .unused, |
| 5505 | .unused, | 5715 | .unused, |
| 5506 | .unused, | 5716 | .unused, |
| | 5717 | .unused, |
| | 5718 | .unused, |
| | 5719 | .unused, |
| 5507 | }, | 5720 | }, |
| 5508 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5721 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5509 | .clobbers = .{ .eflags = true }, | 5722 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5533,6 +5746,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5533,6 +5746,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5533 | .unused, | 5746 | .unused, |
| 5534 | .unused, | 5747 | .unused, |
| 5535 | .unused, | 5748 | .unused, |
| | 5749 | .unused, |
| | 5750 | .unused, |
| | 5751 | .unused, |
| 5536 | }, | 5752 | }, |
| 5537 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5753 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5538 | .clobbers = .{ .eflags = true }, | 5754 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5562,6 +5778,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5562,6 +5778,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5562 | .unused, | 5778 | .unused, |
| 5563 | .unused, | 5779 | .unused, |
| 5564 | .unused, | 5780 | .unused, |
| | 5781 | .unused, |
| | 5782 | .unused, |
| | 5783 | .unused, |
| 5565 | }, | 5784 | }, |
| 5566 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5785 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5567 | .clobbers = .{ .eflags = true }, | 5786 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5592,6 +5811,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5592,6 +5811,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5592 | .unused, | 5811 | .unused, |
| 5593 | .unused, | 5812 | .unused, |
| 5594 | .unused, | 5813 | .unused, |
| | 5814 | .unused, |
| | 5815 | .unused, |
| | 5816 | .unused, |
| 5595 | }, | 5817 | }, |
| 5596 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5818 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5597 | .clobbers = .{ .eflags = true }, | 5819 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5621,6 +5843,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5621,6 +5843,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5621 | .unused, | 5843 | .unused, |
| 5622 | .unused, | 5844 | .unused, |
| 5623 | .unused, | 5845 | .unused, |
| | 5846 | .unused, |
| | 5847 | .unused, |
| | 5848 | .unused, |
| 5624 | }, | 5849 | }, |
| 5625 | .dst_temps = .{.{ .rc = .general_purpose }}, | 5850 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 5626 | .clobbers = .{ .eflags = true }, | 5851 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5650,6 +5875,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5650,6 +5875,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5650 | .unused, | 5875 | .unused, |
| 5651 | .unused, | 5876 | .unused, |
| 5652 | .unused, | 5877 | .unused, |
| | 5878 | .unused, |
| | 5879 | .unused, |
| | 5880 | .unused, |
| 5653 | }, | 5881 | }, |
| 5654 | .dst_temps = .{.mem}, | 5882 | .dst_temps = .{.mem}, |
| 5655 | .clobbers = .{ .eflags = true }, | 5883 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5676,6 +5904,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5676,6 +5904,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5676 | .unused, | 5904 | .unused, |
| 5677 | .unused, | 5905 | .unused, |
| 5678 | .unused, | 5906 | .unused, |
| | 5907 | .unused, |
| | 5908 | .unused, |
| | 5909 | .unused, |
| 5679 | }, | 5910 | }, |
| 5680 | .dst_temps = .{.mem}, | 5911 | .dst_temps = .{.mem}, |
| 5681 | .clobbers = .{ .eflags = true }, | 5912 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5702,6 +5933,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5702,6 +5933,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5702 | .unused, | 5933 | .unused, |
| 5703 | .unused, | 5934 | .unused, |
| 5704 | .unused, | 5935 | .unused, |
| | 5936 | .unused, |
| | 5937 | .unused, |
| | 5938 | .unused, |
| 5705 | }, | 5939 | }, |
| 5706 | .dst_temps = .{.mem}, | 5940 | .dst_temps = .{.mem}, |
| 5707 | .clobbers = .{ .eflags = true }, | 5941 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5728,6 +5962,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5728,6 +5962,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5728 | .unused, | 5962 | .unused, |
| 5729 | .unused, | 5963 | .unused, |
| 5730 | .unused, | 5964 | .unused, |
| | 5965 | .unused, |
| | 5966 | .unused, |
| | 5967 | .unused, |
| 5731 | }, | 5968 | }, |
| 5732 | .dst_temps = .{.mem}, | 5969 | .dst_temps = .{.mem}, |
| 5733 | .clobbers = .{ .eflags = true }, | 5970 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5754,6 +5991,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5754,6 +5991,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5754 | .unused, | 5991 | .unused, |
| 5755 | .unused, | 5992 | .unused, |
| 5756 | .unused, | 5993 | .unused, |
| | 5994 | .unused, |
| | 5995 | .unused, |
| | 5996 | .unused, |
| 5757 | }, | 5997 | }, |
| 5758 | .dst_temps = .{.mem}, | 5998 | .dst_temps = .{.mem}, |
| 5759 | .clobbers = .{ .eflags = true }, | 5999 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5780,6 +6020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5780,6 +6020,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5780 | .unused, | 6020 | .unused, |
| 5781 | .unused, | 6021 | .unused, |
| 5782 | .unused, | 6022 | .unused, |
| | 6023 | .unused, |
| | 6024 | .unused, |
| | 6025 | .unused, |
| 5783 | }, | 6026 | }, |
| 5784 | .dst_temps = .{.mem}, | 6027 | .dst_temps = .{.mem}, |
| 5785 | .clobbers = .{ .eflags = true }, | 6028 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5806,6 +6049,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5806,6 +6049,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5806 | .unused, | 6049 | .unused, |
| 5807 | .unused, | 6050 | .unused, |
| 5808 | .unused, | 6051 | .unused, |
| | 6052 | .unused, |
| | 6053 | .unused, |
| | 6054 | .unused, |
| 5809 | }, | 6055 | }, |
| 5810 | .dst_temps = .{.mem}, | 6056 | .dst_temps = .{.mem}, |
| 5811 | .clobbers = .{ .eflags = true }, | 6057 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5832,6 +6078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5832,6 +6078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5832 | .unused, | 6078 | .unused, |
| 5833 | .unused, | 6079 | .unused, |
| 5834 | .unused, | 6080 | .unused, |
| | 6081 | .unused, |
| | 6082 | .unused, |
| | 6083 | .unused, |
| 5835 | }, | 6084 | }, |
| 5836 | .dst_temps = .{.mem}, | 6085 | .dst_temps = .{.mem}, |
| 5837 | .clobbers = .{ .eflags = true }, | 6086 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5858,6 +6107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5858,6 +6107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5858 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6107 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 5859 | .unused, | 6108 | .unused, |
| 5860 | .unused, | 6109 | .unused, |
| | 6110 | .unused, |
| | 6111 | .unused, |
| | 6112 | .unused, |
| 5861 | }, | 6113 | }, |
| 5862 | .dst_temps = .{.mem}, | 6114 | .dst_temps = .{.mem}, |
| 5863 | .clobbers = .{ .eflags = true }, | 6115 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5887,6 +6139,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5887,6 +6139,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5887 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6139 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 5888 | .unused, | 6140 | .unused, |
| 5889 | .unused, | 6141 | .unused, |
| | 6142 | .unused, |
| | 6143 | .unused, |
| | 6144 | .unused, |
| 5890 | }, | 6145 | }, |
| 5891 | .dst_temps = .{.mem}, | 6146 | .dst_temps = .{.mem}, |
| 5892 | .clobbers = .{ .eflags = true }, | 6147 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5916,7 +6171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5916,7 +6171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5916 | .unused, | 6171 | .unused, |
| 5917 | .unused, | 6172 | .unused, |
| 5918 | .unused, | 6173 | .unused, |
| 5919 | }, | 6174 | .unused, |
| | 6175 | .unused, |
| | 6176 | .unused, |
| | 6177 | }, |
| 5920 | .dst_temps = .{.mem}, | 6178 | .dst_temps = .{.mem}, |
| 5921 | .clobbers = .{ .eflags = true }, | 6179 | .clobbers = .{ .eflags = true }, |
| 5922 | .each = .{ .once = &.{ | 6180 | .each = .{ .once = &.{ |
| ... | @@ -5945,6 +6203,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5945,6 +6203,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5945 | .unused, | 6203 | .unused, |
| 5946 | .unused, | 6204 | .unused, |
| 5947 | .unused, | 6205 | .unused, |
| | 6206 | .unused, |
| | 6207 | .unused, |
| | 6208 | .unused, |
| 5948 | }, | 6209 | }, |
| 5949 | .dst_temps = .{.mem}, | 6210 | .dst_temps = .{.mem}, |
| 5950 | .clobbers = .{ .eflags = true }, | 6211 | .clobbers = .{ .eflags = true }, |
| ... | @@ -5974,6 +6235,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5974,6 +6235,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5974 | .unused, | 6235 | .unused, |
| 5975 | .unused, | 6236 | .unused, |
| 5976 | .unused, | 6237 | .unused, |
| | 6238 | .unused, |
| | 6239 | .unused, |
| | 6240 | .unused, |
| 5977 | }, | 6241 | }, |
| 5978 | .dst_temps = .{.mem}, | 6242 | .dst_temps = .{.mem}, |
| 5979 | .clobbers = .{ .eflags = true }, | 6243 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6001,6 +6265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6001,6 +6265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6001 | .unused, | 6265 | .unused, |
| 6002 | .unused, | 6266 | .unused, |
| 6003 | .unused, | 6267 | .unused, |
| | 6268 | .unused, |
| | 6269 | .unused, |
| | 6270 | .unused, |
| 6004 | }, | 6271 | }, |
| 6005 | .dst_temps = .{.mem}, | 6272 | .dst_temps = .{.mem}, |
| 6006 | .clobbers = .{ .eflags = true }, | 6273 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6029,6 +6296,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6029,6 +6296,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6029 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6296 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6030 | .unused, | 6297 | .unused, |
| 6031 | .unused, | 6298 | .unused, |
| | 6299 | .unused, |
| | 6300 | .unused, |
| | 6301 | .unused, |
| 6032 | }, | 6302 | }, |
| 6033 | .dst_temps = .{.mem}, | 6303 | .dst_temps = .{.mem}, |
| 6034 | .clobbers = .{ .eflags = true }, | 6304 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6058,6 +6328,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6058,6 +6328,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6058 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6328 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6059 | .unused, | 6329 | .unused, |
| 6060 | .unused, | 6330 | .unused, |
| | 6331 | .unused, |
| | 6332 | .unused, |
| | 6333 | .unused, |
| 6061 | }, | 6334 | }, |
| 6062 | .dst_temps = .{.mem}, | 6335 | .dst_temps = .{.mem}, |
| 6063 | .clobbers = .{ .eflags = true }, | 6336 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6087,6 +6360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6087,6 +6360,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6087 | .unused, | 6360 | .unused, |
| 6088 | .unused, | 6361 | .unused, |
| 6089 | .unused, | 6362 | .unused, |
| | 6363 | .unused, |
| | 6364 | .unused, |
| | 6365 | .unused, |
| 6090 | }, | 6366 | }, |
| 6091 | .dst_temps = .{.mem}, | 6367 | .dst_temps = .{.mem}, |
| 6092 | .clobbers = .{ .eflags = true }, | 6368 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6116,6 +6392,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6116,6 +6392,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6116 | .unused, | 6392 | .unused, |
| 6117 | .unused, | 6393 | .unused, |
| 6118 | .unused, | 6394 | .unused, |
| | 6395 | .unused, |
| | 6396 | .unused, |
| | 6397 | .unused, |
| 6119 | }, | 6398 | }, |
| 6120 | .dst_temps = .{.mem}, | 6399 | .dst_temps = .{.mem}, |
| 6121 | .clobbers = .{ .eflags = true }, | 6400 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6145,6 +6424,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6145,6 +6424,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6145 | .unused, | 6424 | .unused, |
| 6146 | .unused, | 6425 | .unused, |
| 6147 | .unused, | 6426 | .unused, |
| | 6427 | .unused, |
| | 6428 | .unused, |
| | 6429 | .unused, |
| 6148 | }, | 6430 | }, |
| 6149 | .dst_temps = .{.mem}, | 6431 | .dst_temps = .{.mem}, |
| 6150 | .clobbers = .{ .eflags = true }, | 6432 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6172,6 +6454,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6172,6 +6454,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6172 | .unused, | 6454 | .unused, |
| 6173 | .unused, | 6455 | .unused, |
| 6174 | .unused, | 6456 | .unused, |
| | 6457 | .unused, |
| | 6458 | .unused, |
| | 6459 | .unused, |
| 6175 | }, | 6460 | }, |
| 6176 | .dst_temps = .{.mem}, | 6461 | .dst_temps = .{.mem}, |
| 6177 | .clobbers = .{ .eflags = true }, | 6462 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6200,6 +6485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6200,6 +6485,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6200 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6485 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6201 | .unused, | 6486 | .unused, |
| 6202 | .unused, | 6487 | .unused, |
| | 6488 | .unused, |
| | 6489 | .unused, |
| | 6490 | .unused, |
| 6203 | }, | 6491 | }, |
| 6204 | .dst_temps = .{.mem}, | 6492 | .dst_temps = .{.mem}, |
| 6205 | .clobbers = .{ .eflags = true }, | 6493 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6229,6 +6517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6229,6 +6517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6229 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6517 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6230 | .unused, | 6518 | .unused, |
| 6231 | .unused, | 6519 | .unused, |
| | 6520 | .unused, |
| | 6521 | .unused, |
| | 6522 | .unused, |
| 6232 | }, | 6523 | }, |
| 6233 | .dst_temps = .{.mem}, | 6524 | .dst_temps = .{.mem}, |
| 6234 | .clobbers = .{ .eflags = true }, | 6525 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6258,6 +6549,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6258,6 +6549,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6258 | .unused, | 6549 | .unused, |
| 6259 | .unused, | 6550 | .unused, |
| 6260 | .unused, | 6551 | .unused, |
| | 6552 | .unused, |
| | 6553 | .unused, |
| | 6554 | .unused, |
| 6261 | }, | 6555 | }, |
| 6262 | .dst_temps = .{.mem}, | 6556 | .dst_temps = .{.mem}, |
| 6263 | .clobbers = .{ .eflags = true }, | 6557 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6287,6 +6581,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6287,6 +6581,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6287 | .unused, | 6581 | .unused, |
| 6288 | .unused, | 6582 | .unused, |
| 6289 | .unused, | 6583 | .unused, |
| | 6584 | .unused, |
| | 6585 | .unused, |
| | 6586 | .unused, |
| 6290 | }, | 6587 | }, |
| 6291 | .dst_temps = .{.mem}, | 6588 | .dst_temps = .{.mem}, |
| 6292 | .clobbers = .{ .eflags = true }, | 6589 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6316,6 +6613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6316,6 +6613,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6316 | .unused, | 6613 | .unused, |
| 6317 | .unused, | 6614 | .unused, |
| 6318 | .unused, | 6615 | .unused, |
| | 6616 | .unused, |
| | 6617 | .unused, |
| | 6618 | .unused, |
| 6319 | }, | 6619 | }, |
| 6320 | .dst_temps = .{.mem}, | 6620 | .dst_temps = .{.mem}, |
| 6321 | .clobbers = .{ .eflags = true }, | 6621 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6343,6 +6643,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6343,6 +6643,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6343 | .unused, | 6643 | .unused, |
| 6344 | .unused, | 6644 | .unused, |
| 6345 | .unused, | 6645 | .unused, |
| | 6646 | .unused, |
| | 6647 | .unused, |
| | 6648 | .unused, |
| 6346 | }, | 6649 | }, |
| 6347 | .dst_temps = .{.mem}, | 6650 | .dst_temps = .{.mem}, |
| 6348 | .clobbers = .{ .eflags = true }, | 6651 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6371,6 +6674,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6371,6 +6674,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6371 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6674 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6372 | .unused, | 6675 | .unused, |
| 6373 | .unused, | 6676 | .unused, |
| | 6677 | .unused, |
| | 6678 | .unused, |
| | 6679 | .unused, |
| 6374 | }, | 6680 | }, |
| 6375 | .dst_temps = .{.mem}, | 6681 | .dst_temps = .{.mem}, |
| 6376 | .clobbers = .{ .eflags = true }, | 6682 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6400,6 +6706,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6400,6 +6706,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6400 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 6706 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 6401 | .unused, | 6707 | .unused, |
| 6402 | .unused, | 6708 | .unused, |
| | 6709 | .unused, |
| | 6710 | .unused, |
| | 6711 | .unused, |
| 6403 | }, | 6712 | }, |
| 6404 | .dst_temps = .{.mem}, | 6713 | .dst_temps = .{.mem}, |
| 6405 | .clobbers = .{ .eflags = true }, | 6714 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6429,6 +6738,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6429,6 +6738,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6429 | .unused, | 6738 | .unused, |
| 6430 | .unused, | 6739 | .unused, |
| 6431 | .unused, | 6740 | .unused, |
| | 6741 | .unused, |
| | 6742 | .unused, |
| | 6743 | .unused, |
| 6432 | }, | 6744 | }, |
| 6433 | .dst_temps = .{.mem}, | 6745 | .dst_temps = .{.mem}, |
| 6434 | .clobbers = .{ .eflags = true }, | 6746 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6458,6 +6770,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6458,6 +6770,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6458 | .unused, | 6770 | .unused, |
| 6459 | .unused, | 6771 | .unused, |
| 6460 | .unused, | 6772 | .unused, |
| | 6773 | .unused, |
| | 6774 | .unused, |
| | 6775 | .unused, |
| 6461 | }, | 6776 | }, |
| 6462 | .dst_temps = .{.mem}, | 6777 | .dst_temps = .{.mem}, |
| 6463 | .clobbers = .{ .eflags = true }, | 6778 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6487,6 +6802,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6487,6 +6802,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6487 | .unused, | 6802 | .unused, |
| 6488 | .unused, | 6803 | .unused, |
| 6489 | .unused, | 6804 | .unused, |
| | 6805 | .unused, |
| | 6806 | .unused, |
| | 6807 | .unused, |
| 6490 | }, | 6808 | }, |
| 6491 | .dst_temps = .{.mem}, | 6809 | .dst_temps = .{.mem}, |
| 6492 | .clobbers = .{ .eflags = true }, | 6810 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6515,6 +6833,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6515,6 +6833,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6515 | .unused, | 6833 | .unused, |
| 6516 | .unused, | 6834 | .unused, |
| 6517 | .unused, | 6835 | .unused, |
| | 6836 | .unused, |
| | 6837 | .unused, |
| | 6838 | .unused, |
| 6518 | }, | 6839 | }, |
| 6519 | .dst_temps = .{.mem}, | 6840 | .dst_temps = .{.mem}, |
| 6520 | .clobbers = .{ .eflags = true }, | 6841 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6544,6 +6865,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6544,6 +6865,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6544 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6865 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6545 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6866 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6546 | .unused, | 6867 | .unused, |
| | 6868 | .unused, |
| | 6869 | .unused, |
| | 6870 | .unused, |
| 6547 | }, | 6871 | }, |
| 6548 | .dst_temps = .{.mem}, | 6872 | .dst_temps = .{.mem}, |
| 6549 | .clobbers = .{ .eflags = true }, | 6873 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6581,6 +6905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6581,6 +6905,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6581 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6905 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6582 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6906 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6583 | .unused, | 6907 | .unused, |
| | 6908 | .unused, |
| | 6909 | .unused, |
| | 6910 | .unused, |
| 6584 | }, | 6911 | }, |
| 6585 | .dst_temps = .{.mem}, | 6912 | .dst_temps = .{.mem}, |
| 6586 | .clobbers = .{ .eflags = true }, | 6913 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6617,6 +6944,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6617,6 +6944,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6617 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6944 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6618 | .unused, | 6945 | .unused, |
| 6619 | .unused, | 6946 | .unused, |
| | 6947 | .unused, |
| | 6948 | .unused, |
| | 6949 | .unused, |
| 6620 | }, | 6950 | }, |
| 6621 | .dst_temps = .{.mem}, | 6951 | .dst_temps = .{.mem}, |
| 6622 | .clobbers = .{ .eflags = true }, | 6952 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6653,6 +6983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6653,6 +6983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6653 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6983 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6654 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 6984 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6655 | .unused, | 6985 | .unused, |
| | 6986 | .unused, |
| | 6987 | .unused, |
| | 6988 | .unused, |
| 6656 | }, | 6989 | }, |
| 6657 | .dst_temps = .{.mem}, | 6990 | .dst_temps = .{.mem}, |
| 6658 | .clobbers = .{ .eflags = true }, | 6991 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6690,6 +7023,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6690,6 +7023,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6690 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7023 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6691 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7024 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6692 | .unused, | 7025 | .unused, |
| | 7026 | .unused, |
| | 7027 | .unused, |
| | 7028 | .unused, |
| 6693 | }, | 7029 | }, |
| 6694 | .dst_temps = .{.mem}, | 7030 | .dst_temps = .{.mem}, |
| 6695 | .clobbers = .{ .eflags = true }, | 7031 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6726,6 +7062,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6726,6 +7062,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6726 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7062 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6727 | .unused, | 7063 | .unused, |
| 6728 | .unused, | 7064 | .unused, |
| | 7065 | .unused, |
| | 7066 | .unused, |
| | 7067 | .unused, |
| 6729 | }, | 7068 | }, |
| 6730 | .dst_temps = .{.mem}, | 7069 | .dst_temps = .{.mem}, |
| 6731 | .clobbers = .{ .eflags = true }, | 7070 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6762,6 +7101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6762,6 +7101,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6762 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7101 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6763 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7102 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6764 | .unused, | 7103 | .unused, |
| | 7104 | .unused, |
| | 7105 | .unused, |
| | 7106 | .unused, |
| 6765 | }, | 7107 | }, |
| 6766 | .dst_temps = .{.mem}, | 7108 | .dst_temps = .{.mem}, |
| 6767 | .clobbers = .{ .eflags = true }, | 7109 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6799,6 +7141,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6799,6 +7141,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6799 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7141 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6800 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7142 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6801 | .unused, | 7143 | .unused, |
| | 7144 | .unused, |
| | 7145 | .unused, |
| | 7146 | .unused, |
| 6802 | }, | 7147 | }, |
| 6803 | .dst_temps = .{.mem}, | 7148 | .dst_temps = .{.mem}, |
| 6804 | .clobbers = .{ .eflags = true }, | 7149 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6835,6 +7180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6835,6 +7180,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6835 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7180 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6836 | .unused, | 7181 | .unused, |
| 6837 | .unused, | 7182 | .unused, |
| | 7183 | .unused, |
| | 7184 | .unused, |
| | 7185 | .unused, |
| 6838 | }, | 7186 | }, |
| 6839 | .dst_temps = .{.mem}, | 7187 | .dst_temps = .{.mem}, |
| 6840 | .clobbers = .{ .eflags = true }, | 7188 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6871,6 +7219,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6871,6 +7219,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6871 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7219 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6872 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7220 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6873 | .unused, | 7221 | .unused, |
| | 7222 | .unused, |
| | 7223 | .unused, |
| | 7224 | .unused, |
| 6874 | }, | 7225 | }, |
| 6875 | .dst_temps = .{.mem}, | 7226 | .dst_temps = .{.mem}, |
| 6876 | .clobbers = .{ .eflags = true }, | 7227 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6908,6 +7259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6908,6 +7259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6908 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7259 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6909 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7260 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6910 | .unused, | 7261 | .unused, |
| | 7262 | .unused, |
| | 7263 | .unused, |
| | 7264 | .unused, |
| 6911 | }, | 7265 | }, |
| 6912 | .dst_temps = .{.mem}, | 7266 | .dst_temps = .{.mem}, |
| 6913 | .clobbers = .{ .eflags = true }, | 7267 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6944,6 +7298,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6944,6 +7298,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6944 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 7298 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 6945 | .unused, | 7299 | .unused, |
| 6946 | .unused, | 7300 | .unused, |
| | 7301 | .unused, |
| | 7302 | .unused, |
| | 7303 | .unused, |
| 6947 | }, | 7304 | }, |
| 6948 | .dst_temps = .{.mem}, | 7305 | .dst_temps = .{.mem}, |
| 6949 | .clobbers = .{ .eflags = true }, | 7306 | .clobbers = .{ .eflags = true }, |
| ... | @@ -6981,8 +7338,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6981,8 +7338,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6981 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; | 7338 | const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; |
| 6982 | const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; | 7339 | const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; |
| 6983 | switch (extra.compareOperator()) { | 7340 | switch (extra.compareOperator()) { |
| 6984 | .eq, .neq => if (cg.typeOf(extra.lhs).scalarType(zcu).isRuntimeFloat()) | 7341 | .eq, .neq => {}, |
| 6985 | break :fallback try cg.airCmpVector(inst), | | |
| 6986 | else => break :fallback try cg.airCmpVector(inst), | 7342 | else => break :fallback try cg.airCmpVector(inst), |
| 6987 | } | 7343 | } |
| 6988 | var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs }); | 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,7 +7360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7004 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 7360 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7005 | .{ .src = .{ .to_ymm, .to_ymm } }, | 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 | .kind = .all, | 7364 | .kind = .all, |
| 7009 | .inverted = switch (cc) { | 7365 | .inverted = switch (cc) { |
| 7010 | else => unreachable, | 7366 | else => unreachable, |
| ... | @@ -7024,7 +7380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7024,7 +7380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7024 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 7380 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7025 | .{ .src = .{ .to_ymm, .to_ymm } }, | 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 | .kind = .all, | 7384 | .kind = .all, |
| 7029 | .inverted = switch (cc) { | 7385 | .inverted = switch (cc) { |
| 7030 | else => unreachable, | 7386 | else => unreachable, |
| ... | @@ -7044,7 +7400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7044,7 +7400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7044 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 7400 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7045 | .{ .src = .{ .to_ymm, .to_ymm } }, | 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 | .kind = .all, | 7404 | .kind = .all, |
| 7049 | .inverted = switch (cc) { | 7405 | .inverted = switch (cc) { |
| 7050 | else => unreachable, | 7406 | else => unreachable, |
| ... | @@ -7064,7 +7420,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7064,7 +7420,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7064 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, | 7420 | .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, |
| 7065 | .{ .src = .{ .to_ymm, .to_ymm } }, | 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 | .kind = .all, | 7424 | .kind = .all, |
| 7069 | .inverted = switch (cc) { | 7425 | .inverted = switch (cc) { |
| 7070 | else => unreachable, | 7426 | else => unreachable, |
| ... | @@ -7084,7 +7440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7084,7 +7440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7084 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 7440 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7085 | .{ .src = .{ .to_xmm, .to_xmm } }, | 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 | .kind = .all, | 7444 | .kind = .all, |
| 7089 | .inverted = switch (cc) { | 7445 | .inverted = switch (cc) { |
| 7090 | else => unreachable, | 7446 | else => unreachable, |
| ... | @@ -7104,7 +7460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7104,7 +7460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7104 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 7460 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7105 | .{ .src = .{ .to_xmm, .to_xmm } }, | 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 | .kind = .all, | 7464 | .kind = .all, |
| 7109 | .inverted = switch (cc) { | 7465 | .inverted = switch (cc) { |
| 7110 | else => unreachable, | 7466 | else => unreachable, |
| ... | @@ -7124,7 +7480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7124,7 +7480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7124 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 7480 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7125 | .{ .src = .{ .to_xmm, .to_xmm } }, | 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 | .kind = .all, | 7484 | .kind = .all, |
| 7129 | .inverted = switch (cc) { | 7485 | .inverted = switch (cc) { |
| 7130 | else => unreachable, | 7486 | else => unreachable, |
| ... | @@ -7144,7 +7500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7144,7 +7500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7144 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, | 7500 | .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, |
| 7145 | .{ .src = .{ .to_xmm, .to_xmm } }, | 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 | .kind = .all, | 7504 | .kind = .all, |
| 7149 | .inverted = switch (cc) { | 7505 | .inverted = switch (cc) { |
| 7150 | else => unreachable, | 7506 | else => unreachable, |
| ... | @@ -7409,6 +7765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7409,6 +7765,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7409 | .unused, | 7765 | .unused, |
| 7410 | .unused, | 7766 | .unused, |
| 7411 | .unused, | 7767 | .unused, |
| | 7768 | .unused, |
| | 7769 | .unused, |
| | 7770 | .unused, |
| 7412 | }, | 7771 | }, |
| 7413 | .dst_temps = .{.mem}, | 7772 | .dst_temps = .{.mem}, |
| 7414 | .clobbers = .{ .eflags = true }, | 7773 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7445,6 +7804,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7445,6 +7804,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7445 | .{ .kind = .{ .rc = .sse } }, | 7804 | .{ .kind = .{ .rc = .sse } }, |
| 7446 | .unused, | 7805 | .unused, |
| 7447 | .unused, | 7806 | .unused, |
| | 7807 | .unused, |
| | 7808 | .unused, |
| | 7809 | .unused, |
| 7448 | }, | 7810 | }, |
| 7449 | .dst_temps = .{.mem}, | 7811 | .dst_temps = .{.mem}, |
| 7450 | .clobbers = .{ .eflags = true }, | 7812 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7487,6 +7849,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7487,6 +7849,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7487 | .{ .kind = .{ .rc = .sse } }, | 7849 | .{ .kind = .{ .rc = .sse } }, |
| 7488 | .unused, | 7850 | .unused, |
| 7489 | .unused, | 7851 | .unused, |
| | 7852 | .unused, |
| | 7853 | .unused, |
| | 7854 | .unused, |
| 7490 | }, | 7855 | }, |
| 7491 | .dst_temps = .{.mem}, | 7856 | .dst_temps = .{.mem}, |
| 7492 | .clobbers = .{ .eflags = true }, | 7857 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7531,6 +7896,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7531,6 +7896,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7531 | .{ .kind = .{ .rc = .sse } }, | 7896 | .{ .kind = .{ .rc = .sse } }, |
| 7532 | .unused, | 7897 | .unused, |
| 7533 | .unused, | 7898 | .unused, |
| | 7899 | .unused, |
| | 7900 | .unused, |
| | 7901 | .unused, |
| 7534 | }, | 7902 | }, |
| 7535 | .dst_temps = .{.mem}, | 7903 | .dst_temps = .{.mem}, |
| 7536 | .clobbers = .{ .eflags = true }, | 7904 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7573,6 +7941,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7573,6 +7941,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7573 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 7941 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7574 | .{ .kind = .{ .rc = .sse } }, | 7942 | .{ .kind = .{ .rc = .sse } }, |
| 7575 | .unused, | 7943 | .unused, |
| | 7944 | .unused, |
| | 7945 | .unused, |
| | 7946 | .unused, |
| 7576 | }, | 7947 | }, |
| 7577 | .dst_temps = .{.mem}, | 7948 | .dst_temps = .{.mem}, |
| 7578 | .clobbers = .{ .eflags = true }, | 7949 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7641,6 +8012,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7641,6 +8012,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7641 | .{ .kind = .{ .rc = .sse } }, | 8012 | .{ .kind = .{ .rc = .sse } }, |
| 7642 | .unused, | 8013 | .unused, |
| 7643 | .unused, | 8014 | .unused, |
| | 8015 | .unused, |
| | 8016 | .unused, |
| | 8017 | .unused, |
| 7644 | }, | 8018 | }, |
| 7645 | .dst_temps = .{.mem}, | 8019 | .dst_temps = .{.mem}, |
| 7646 | .clobbers = .{ .eflags = true }, | 8020 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7683,6 +8057,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7683,6 +8057,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7683 | .{ .kind = .{ .rc = .sse } }, | 8057 | .{ .kind = .{ .rc = .sse } }, |
| 7684 | .unused, | 8058 | .unused, |
| 7685 | .unused, | 8059 | .unused, |
| | 8060 | .unused, |
| | 8061 | .unused, |
| | 8062 | .unused, |
| 7686 | }, | 8063 | }, |
| 7687 | .dst_temps = .{.mem}, | 8064 | .dst_temps = .{.mem}, |
| 7688 | .clobbers = .{ .eflags = true }, | 8065 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7727,6 +8104,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7727,6 +8104,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7727 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8104 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7728 | .{ .kind = .{ .rc = .sse } }, | 8105 | .{ .kind = .{ .rc = .sse } }, |
| 7729 | .unused, | 8106 | .unused, |
| | 8107 | .unused, |
| | 8108 | .unused, |
| | 8109 | .unused, |
| 7730 | }, | 8110 | }, |
| 7731 | .dst_temps = .{.mem}, | 8111 | .dst_temps = .{.mem}, |
| 7732 | .clobbers = .{ .eflags = true }, | 8112 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7795,6 +8175,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7795,6 +8175,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7795 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8175 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7796 | .{ .kind = .{ .rc = .sse } }, | 8176 | .{ .kind = .{ .rc = .sse } }, |
| 7797 | .unused, | 8177 | .unused, |
| | 8178 | .unused, |
| | 8179 | .unused, |
| | 8180 | .unused, |
| 7798 | }, | 8181 | }, |
| 7799 | .dst_temps = .{.mem}, | 8182 | .dst_temps = .{.mem}, |
| 7800 | .clobbers = .{ .eflags = true }, | 8183 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7863,6 +8246,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7863,6 +8246,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7863 | .{ .kind = .{ .rc = .sse } }, | 8246 | .{ .kind = .{ .rc = .sse } }, |
| 7864 | .unused, | 8247 | .unused, |
| 7865 | .unused, | 8248 | .unused, |
| | 8249 | .unused, |
| | 8250 | .unused, |
| | 8251 | .unused, |
| 7866 | }, | 8252 | }, |
| 7867 | .dst_temps = .{.mem}, | 8253 | .dst_temps = .{.mem}, |
| 7868 | .clobbers = .{ .eflags = true }, | 8254 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7905,6 +8291,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7905,6 +8291,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7905 | .{ .kind = .{ .rc = .sse } }, | 8291 | .{ .kind = .{ .rc = .sse } }, |
| 7906 | .unused, | 8292 | .unused, |
| 7907 | .unused, | 8293 | .unused, |
| | 8294 | .unused, |
| | 8295 | .unused, |
| | 8296 | .unused, |
| 7908 | }, | 8297 | }, |
| 7909 | .dst_temps = .{.mem}, | 8298 | .dst_temps = .{.mem}, |
| 7910 | .clobbers = .{ .eflags = true }, | 8299 | .clobbers = .{ .eflags = true }, |
| ... | @@ -7949,6 +8338,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -7949,6 +8338,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 7949 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8338 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 7950 | .{ .kind = .{ .rc = .sse } }, | 8339 | .{ .kind = .{ .rc = .sse } }, |
| 7951 | .unused, | 8340 | .unused, |
| | 8341 | .unused, |
| | 8342 | .unused, |
| | 8343 | .unused, |
| 7952 | }, | 8344 | }, |
| 7953 | .dst_temps = .{.mem}, | 8345 | .dst_temps = .{.mem}, |
| 7954 | .clobbers = .{ .eflags = true }, | 8346 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8017,6 +8409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8017,6 +8409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8017 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8409 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8018 | .{ .kind = .{ .rc = .sse } }, | 8410 | .{ .kind = .{ .rc = .sse } }, |
| 8019 | .unused, | 8411 | .unused, |
| | 8412 | .unused, |
| | 8413 | .unused, |
| | 8414 | .unused, |
| 8020 | }, | 8415 | }, |
| 8021 | .dst_temps = .{.mem}, | 8416 | .dst_temps = .{.mem}, |
| 8022 | .clobbers = .{ .eflags = true }, | 8417 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8085,6 +8480,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8085,6 +8480,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8085 | .{ .kind = .{ .rc = .mmx } }, | 8480 | .{ .kind = .{ .rc = .mmx } }, |
| 8086 | .unused, | 8481 | .unused, |
| 8087 | .unused, | 8482 | .unused, |
| | 8483 | .unused, |
| | 8484 | .unused, |
| | 8485 | .unused, |
| 8088 | }, | 8486 | }, |
| 8089 | .dst_temps = .{.mem}, | 8487 | .dst_temps = .{.mem}, |
| 8090 | .clobbers = .{ .eflags = true }, | 8488 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8127,6 +8525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8127,6 +8525,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8127 | .{ .kind = .{ .rc = .mmx } }, | 8525 | .{ .kind = .{ .rc = .mmx } }, |
| 8128 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8526 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8129 | .{ .kind = .{ .rc = .mmx } }, | 8527 | .{ .kind = .{ .rc = .mmx } }, |
| | 8528 | .unused, |
| | 8529 | .unused, |
| | 8530 | .unused, |
| 8130 | }, | 8531 | }, |
| 8131 | .dst_temps = .{.mem}, | 8532 | .dst_temps = .{.mem}, |
| 8132 | .clobbers = .{ .eflags = true }, | 8533 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8199,6 +8600,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8199,6 +8600,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8199 | .{ .kind = .{ .rc = .mmx } }, | 8600 | .{ .kind = .{ .rc = .mmx } }, |
| 8200 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8601 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8201 | .{ .kind = .{ .rc = .mmx } }, | 8602 | .{ .kind = .{ .rc = .mmx } }, |
| | 8603 | .unused, |
| | 8604 | .unused, |
| | 8605 | .unused, |
| 8202 | }, | 8606 | }, |
| 8203 | .dst_temps = .{.mem}, | 8607 | .dst_temps = .{.mem}, |
| 8204 | .clobbers = .{ .eflags = true }, | 8608 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8273,6 +8677,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8273,6 +8677,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8273 | .unused, | 8677 | .unused, |
| 8274 | .unused, | 8678 | .unused, |
| 8275 | .unused, | 8679 | .unused, |
| | 8680 | .unused, |
| | 8681 | .unused, |
| | 8682 | .unused, |
| 8276 | }, | 8683 | }, |
| 8277 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8684 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8278 | .clobbers = .{ .eflags = true }, | 8685 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8302,6 +8709,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8302,6 +8709,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8302 | .unused, | 8709 | .unused, |
| 8303 | .unused, | 8710 | .unused, |
| 8304 | .unused, | 8711 | .unused, |
| | 8712 | .unused, |
| | 8713 | .unused, |
| | 8714 | .unused, |
| 8305 | }, | 8715 | }, |
| 8306 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8716 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8307 | .clobbers = .{ .eflags = true }, | 8717 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8331,6 +8741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8331,6 +8741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8331 | .unused, | 8741 | .unused, |
| 8332 | .unused, | 8742 | .unused, |
| 8333 | .unused, | 8743 | .unused, |
| | 8744 | .unused, |
| | 8745 | .unused, |
| | 8746 | .unused, |
| 8334 | }, | 8747 | }, |
| 8335 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8748 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8336 | .clobbers = .{ .eflags = true }, | 8749 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8361,6 +8774,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8361,6 +8774,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8361 | .unused, | 8774 | .unused, |
| 8362 | .unused, | 8775 | .unused, |
| 8363 | .unused, | 8776 | .unused, |
| | 8777 | .unused, |
| | 8778 | .unused, |
| | 8779 | .unused, |
| 8364 | }, | 8780 | }, |
| 8365 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8781 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8366 | .clobbers = .{ .eflags = true }, | 8782 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8390,6 +8806,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8390,6 +8806,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8390 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 8806 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8391 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 8807 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8392 | .unused, | 8808 | .unused, |
| | 8809 | .unused, |
| | 8810 | .unused, |
| | 8811 | .unused, |
| 8393 | }, | 8812 | }, |
| 8394 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8813 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8395 | .clobbers = .{ .eflags = true }, | 8814 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8426,6 +8845,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8426,6 +8845,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8426 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 8845 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8427 | .unused, | 8846 | .unused, |
| 8428 | .unused, | 8847 | .unused, |
| | 8848 | .unused, |
| | 8849 | .unused, |
| | 8850 | .unused, |
| 8429 | }, | 8851 | }, |
| 8430 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8852 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8431 | .clobbers = .{ .eflags = true }, | 8853 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8456,6 +8878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8456,6 +8878,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8456 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 8878 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 8457 | .unused, | 8879 | .unused, |
| 8458 | .unused, | 8880 | .unused, |
| | 8881 | .unused, |
| | 8882 | .unused, |
| | 8883 | .unused, |
| 8459 | }, | 8884 | }, |
| 8460 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8885 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8461 | .clobbers = .{ .eflags = true }, | 8886 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8486,6 +8911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8486,6 +8911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8486 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 8911 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 8487 | .unused, | 8912 | .unused, |
| 8488 | .unused, | 8913 | .unused, |
| | 8914 | .unused, |
| | 8915 | .unused, |
| | 8916 | .unused, |
| 8489 | }, | 8917 | }, |
| 8490 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8918 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8491 | .clobbers = .{ .eflags = true }, | 8919 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8517,6 +8945,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8517,6 +8945,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8517 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 8945 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 8518 | .unused, | 8946 | .unused, |
| 8519 | .unused, | 8947 | .unused, |
| | 8948 | .unused, |
| | 8949 | .unused, |
| | 8950 | .unused, |
| 8520 | }, | 8951 | }, |
| 8521 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8952 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8522 | .clobbers = .{ .eflags = true }, | 8953 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8547,6 +8978,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8547,6 +8978,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8547 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 8978 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8548 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 8979 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8549 | .unused, | 8980 | .unused, |
| | 8981 | .unused, |
| | 8982 | .unused, |
| | 8983 | .unused, |
| 8550 | }, | 8984 | }, |
| 8551 | .dst_temps = .{.{ .rc = .general_purpose }}, | 8985 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8552 | .clobbers = .{ .eflags = true }, | 8986 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8585,6 +9019,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8585,6 +9019,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8585 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 9019 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8586 | .unused, | 9020 | .unused, |
| 8587 | .unused, | 9021 | .unused, |
| | 9022 | .unused, |
| | 9023 | .unused, |
| | 9024 | .unused, |
| 8588 | }, | 9025 | }, |
| 8589 | .dst_temps = .{.{ .rc = .general_purpose }}, | 9026 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8590 | .clobbers = .{ .eflags = true }, | 9027 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8616,6 +9053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8616,6 +9053,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8616 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, | 9053 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 8617 | .unused, | 9054 | .unused, |
| 8618 | .unused, | 9055 | .unused, |
| | 9056 | .unused, |
| | 9057 | .unused, |
| | 9058 | .unused, |
| 8619 | }, | 9059 | }, |
| 8620 | .dst_temps = .{.{ .rc = .general_purpose }}, | 9060 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8621 | .clobbers = .{ .eflags = true }, | 9061 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8646,6 +9086,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8646,6 +9086,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8646 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 9086 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 8647 | .unused, | 9087 | .unused, |
| 8648 | .unused, | 9088 | .unused, |
| | 9089 | .unused, |
| | 9090 | .unused, |
| | 9091 | .unused, |
| 8649 | }, | 9092 | }, |
| 8650 | .dst_temps = .{.{ .rc = .general_purpose }}, | 9093 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8651 | .clobbers = .{ .eflags = true }, | 9094 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8677,6 +9120,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8677,6 +9120,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8677 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 9120 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 8678 | .unused, | 9121 | .unused, |
| 8679 | .unused, | 9122 | .unused, |
| | 9123 | .unused, |
| | 9124 | .unused, |
| | 9125 | .unused, |
| 8680 | }, | 9126 | }, |
| 8681 | .dst_temps = .{.{ .rc = .general_purpose }}, | 9127 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8682 | .clobbers = .{ .eflags = true }, | 9128 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8708,6 +9154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8708,6 +9154,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8708 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 9154 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8709 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 9155 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8710 | .unused, | 9156 | .unused, |
| | 9157 | .unused, |
| | 9158 | .unused, |
| | 9159 | .unused, |
| 8711 | }, | 9160 | }, |
| 8712 | .dst_temps = .{.{ .rc = .general_purpose }}, | 9161 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 8713 | .clobbers = .{ .eflags = true }, | 9162 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8744,6 +9193,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8744,6 +9193,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8744 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 9193 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 8745 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 9194 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 8746 | .unused, | 9195 | .unused, |
| | 9196 | .unused, |
| | 9197 | .unused, |
| | 9198 | .unused, |
| 8747 | }, | 9199 | }, |
| 8748 | .dst_temps = .{.mem}, | 9200 | .dst_temps = .{.mem}, |
| 8749 | .clobbers = .{ .eflags = true }, | 9201 | .clobbers = .{ .eflags = true }, |
| ... | @@ -8775,8 +9227,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8775,8 +9227,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8775 | }, .{ | 9227 | }, .{ |
| 8776 | .required_features = .{ .f16c, null, null, null }, | 9228 | .required_features = .{ .f16c, null, null, null }, |
| 8777 | .src_constraints = .{ | 9229 | .src_constraints = .{ |
| 8778 | .{ .scalar_exact_float = .{ .of = .qword, .is = .word } }, | 9230 | .{ .scalar_float = .{ .of = .word, .is = .word } }, |
| 8779 | .{ .scalar_exact_float = .{ .of = .qword, .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 | .patterns = &.{ | 9267 | .patterns = &.{ |
| 8782 | .{ .src = .{ .mem, .mem } }, | 9268 | .{ .src = .{ .mem, .mem } }, |
| ... | @@ -8791,15 +9277,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8791,15 +9277,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8791 | .unused, | 9277 | .unused, |
| 8792 | .unused, | 9278 | .unused, |
| 8793 | .unused, | 9279 | .unused, |
| | 9280 | .unused, |
| | 9281 | .unused, |
| | 9282 | .unused, |
| 8794 | }, | 9283 | }, |
| 8795 | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ | 9284 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 8796 | .kind = .all, | 9285 | .ref = .src0, |
| 8797 | .scalar = .dword, | 9286 | .rc = .sse, |
| 8798 | } } }}, | 9287 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 9288 | } }}, |
| 8799 | .each = .{ .once = &.{ | 9289 | .each = .{ .once = &.{ |
| 8800 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 9290 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 8801 | .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, | 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 | else => unreachable, | 9293 | else => unreachable, |
| 8804 | .e => 0b00000, | 9294 | .e => 0b00000, |
| 8805 | .ne => 0b00100, | 9295 | .ne => 0b00100, |
| ... | @@ -8808,8 +9298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8808,8 +9298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8808 | }, .{ | 9298 | }, .{ |
| 8809 | .required_features = .{ .f16c, null, null, null }, | 9299 | .required_features = .{ .f16c, null, null, null }, |
| 8810 | .src_constraints = .{ | 9300 | .src_constraints = .{ |
| 8811 | .{ .scalar_exact_float = .{ .of = .xword, .is = .word } }, | 9301 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 8812 | .{ .scalar_exact_float = .{ .of = .xword, .is = .word } }, | 9302 | .{ .scalar_float = .{ .of = .xword, .is = .word } }, |
| 8813 | }, | 9303 | }, |
| 8814 | .patterns = &.{ | 9304 | .patterns = &.{ |
| 8815 | .{ .src = .{ .mem, .mem } }, | 9305 | .{ .src = .{ .mem, .mem } }, |
| ... | @@ -8824,44 +9314,2313 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -8824,44 +9314,2313 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 8824 | .unused, | 9314 | .unused, |
| 8825 | .unused, | 9315 | .unused, |
| 8826 | .unused, | 9316 | .unused, |
| | 9317 | .unused, |
| | 9318 | .unused, |
| | 9319 | .unused, |
| 8827 | }, | 9320 | }, |
| 8828 | .dst_temps = .{.{ .rc_mask = .{ .rc = .sse, .info = .{ | 9321 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 8829 | .kind = .all, | 9322 | .ref = .src0, |
| 8830 | .scalar = .dword, | 9323 | .rc = .sse, |
| 8831 | } } }}, | 9324 | .info = .{ .kind = .all, .scalar = .dword }, |
| | 9325 | } }}, |
| 8832 | .each = .{ .once = &.{ | 9326 | .each = .{ .once = &.{ |
| 8833 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | 9327 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 8834 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, | 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 | else => unreachable, | 9330 | else => unreachable, |
| 8837 | .e => 0b00000, | 9331 | .e => 0b00000, |
| 8838 | .ne => 0b00100, | 9332 | .ne => 0b00100, |
| 8839 | }) }, | 9333 | }) }, |
| 8840 | } }, | 9334 | } }, |
| 8841 | } }, | 9335 | }, .{ |
| 8842 | }) catch |err| switch (err) { | 9336 | .required_features = .{ .avx, null, null, null }, |
| 8843 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 9337 | .src_constraints = .{ |
| 8844 | @tagName(air_tag), | 9338 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 8845 | cg.typeOf(extra.lhs).fmt(pt), | 9339 | .{ .scalar_float = .{ .of = .dword, .is = .dword } }, |
| 8846 | ops[0].tracking(cg), | 9340 | }, |
| 8847 | ops[1].tracking(cg), | 9341 | .patterns = &.{ |
| 8848 | }), | 9342 | .{ .src = .{ .to_sse, .mem } }, |
| 8849 | else => |e| return e, | 9343 | .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, |
| 8850 | }, | 9344 | .{ .src = .{ .to_sse, .to_sse } }, |
| 8851 | .gte => unreachable, | 9345 | }, |
| 8852 | .gt => unreachable, | 9346 | .dst_temps = .{.{ .mut_rc_mask = .{ |
| 8853 | } | 9347 | .ref = .src0, |
| 8854 | try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); | 9348 | .rc = .sse, |
| 8855 | }, | 9349 | .info = .{ .kind = .all, .scalar = .dword }, |
| 8856 | | 9350 | } }}, |
| 8857 | .abs => |air_tag| if (use_old) try cg.airAbs(inst) else fallback: { | 9351 | .each = .{ .once = &.{ |
| 8858 | const ty_op = air_datas[@intFromEnum(inst)].ty_op; | 9352 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .ui(switch (cc) { |
| 8859 | if (ty_op.ty.toType().isVector(zcu) and ty_op.ty.toType().childType(zcu).isRuntimeFloat()) break :fallback try cg.airAbs(inst); | 9353 | else => unreachable, |
| 8860 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | 9354 | .e => 0b00000, |
| 8861 | var res: [1]Temp = undefined; | 9355 | .ne => 0b00100, |
| 8862 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 9356 | }) }, |
| 8863 | .required_features = .{ .cmov, null, null, null }, | 9357 | } }, |
| 8864 | .src_constraints = .{ .{ .int = .byte }, .any }, | 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 | .patterns = &.{ | 11624 | .patterns = &.{ |
| 8866 | .{ .src = .{ .to_gpr, .none } }, | 11625 | .{ .src = .{ .to_gpr, .none } }, |
| 8867 | }, | 11626 | }, |
| ... | @@ -9037,6 +11796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9037,6 +11796,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9037 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 11796 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 9038 | .unused, | 11797 | .unused, |
| 9039 | .unused, | 11798 | .unused, |
| | 11799 | .unused, |
| | 11800 | .unused, |
| | 11801 | .unused, |
| 9040 | }, | 11802 | }, |
| 9041 | .dst_temps = .{.mem}, | 11803 | .dst_temps = .{.mem}, |
| 9042 | .clobbers = .{ .eflags = true }, | 11804 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9061,7 +11823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9061,7 +11823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9061 | .{ .src = .{ .mem, .none } }, | 11823 | .{ .src = .{ .mem, .none } }, |
| 9062 | .{ .src = .{ .to_mm, .none } }, | 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 | .each = .{ .once = &.{ | 11827 | .each = .{ .once = &.{ |
| 9066 | .{ ._, .p_b, .abs, .dst0q, .src0q, ._, ._ }, | 11828 | .{ ._, .p_b, .abs, .dst0q, .src0q, ._, ._ }, |
| 9067 | } }, | 11829 | } }, |
| ... | @@ -9072,7 +11834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9072,7 +11834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9072 | .{ .src = .{ .mem, .none } }, | 11834 | .{ .src = .{ .mem, .none } }, |
| 9073 | .{ .src = .{ .to_mm, .none } }, | 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 | .each = .{ .once = &.{ | 11838 | .each = .{ .once = &.{ |
| 9077 | .{ ._, .p_w, .abs, .dst0q, .src0q, ._, ._ }, | 11839 | .{ ._, .p_w, .abs, .dst0q, .src0q, ._, ._ }, |
| 9078 | } }, | 11840 | } }, |
| ... | @@ -9083,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9083,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9083 | .{ .src = .{ .mem, .none } }, | 11845 | .{ .src = .{ .mem, .none } }, |
| 9084 | .{ .src = .{ .to_mm, .none } }, | 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 | .each = .{ .once = &.{ | 11849 | .each = .{ .once = &.{ |
| 9088 | .{ ._, .p_d, .abs, .dst0q, .src0q, ._, ._ }, | 11850 | .{ ._, .p_d, .abs, .dst0q, .src0q, ._, ._ }, |
| 9089 | } }, | 11851 | } }, |
| ... | @@ -9094,7 +11856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9094,7 +11856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9094 | .{ .src = .{ .mem, .none } }, | 11856 | .{ .src = .{ .mem, .none } }, |
| 9095 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11860 | .each = .{ .once = &.{ |
| 9099 | .{ ._, .p_b, .abs, .dst0x, .src0x, ._, ._ }, | 11861 | .{ ._, .p_b, .abs, .dst0x, .src0x, ._, ._ }, |
| 9100 | } }, | 11862 | } }, |
| ... | @@ -9105,7 +11867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9105,7 +11867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9105 | .{ .src = .{ .mem, .none } }, | 11867 | .{ .src = .{ .mem, .none } }, |
| 9106 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11871 | .each = .{ .once = &.{ |
| 9110 | .{ ._, .p_w, .abs, .dst0x, .src0x, ._, ._ }, | 11872 | .{ ._, .p_w, .abs, .dst0x, .src0x, ._, ._ }, |
| 9111 | } }, | 11873 | } }, |
| ... | @@ -9116,7 +11878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9116,7 +11878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9116 | .{ .src = .{ .mem, .none } }, | 11878 | .{ .src = .{ .mem, .none } }, |
| 9117 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11882 | .each = .{ .once = &.{ |
| 9121 | .{ ._, .p_d, .abs, .dst0x, .src0x, ._, ._ }, | 11883 | .{ ._, .p_d, .abs, .dst0x, .src0x, ._, ._ }, |
| 9122 | } }, | 11884 | } }, |
| ... | @@ -9127,7 +11889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9127,7 +11889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9127 | .{ .src = .{ .mem, .none } }, | 11889 | .{ .src = .{ .mem, .none } }, |
| 9128 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11893 | .each = .{ .once = &.{ |
| 9132 | .{ ._, .vp_b, .abs, .dst0x, .src0x, ._, ._ }, | 11894 | .{ ._, .vp_b, .abs, .dst0x, .src0x, ._, ._ }, |
| 9133 | } }, | 11895 | } }, |
| ... | @@ -9138,7 +11900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9138,7 +11900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9138 | .{ .src = .{ .mem, .none } }, | 11900 | .{ .src = .{ .mem, .none } }, |
| 9139 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11904 | .each = .{ .once = &.{ |
| 9143 | .{ ._, .vp_w, .abs, .dst0x, .src0x, ._, ._ }, | 11905 | .{ ._, .vp_w, .abs, .dst0x, .src0x, ._, ._ }, |
| 9144 | } }, | 11906 | } }, |
| ... | @@ -9149,7 +11911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9149,7 +11911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9149 | .{ .src = .{ .mem, .none } }, | 11911 | .{ .src = .{ .mem, .none } }, |
| 9150 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11915 | .each = .{ .once = &.{ |
| 9154 | .{ ._, .vp_d, .abs, .dst0x, .src0x, ._, ._ }, | 11916 | .{ ._, .vp_d, .abs, .dst0x, .src0x, ._, ._ }, |
| 9155 | } }, | 11917 | } }, |
| ... | @@ -9160,7 +11922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9160,7 +11922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9160 | .{ .src = .{ .mem, .none } }, | 11922 | .{ .src = .{ .mem, .none } }, |
| 9161 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11926 | .each = .{ .once = &.{ |
| 9165 | .{ ._, .vp_b, .abs, .dst0y, .src0y, ._, ._ }, | 11927 | .{ ._, .vp_b, .abs, .dst0y, .src0y, ._, ._ }, |
| 9166 | } }, | 11928 | } }, |
| ... | @@ -9171,7 +11933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9171,7 +11933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9171 | .{ .src = .{ .mem, .none } }, | 11933 | .{ .src = .{ .mem, .none } }, |
| 9172 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11937 | .each = .{ .once = &.{ |
| 9176 | .{ ._, .vp_w, .abs, .dst0y, .src0y, ._, ._ }, | 11938 | .{ ._, .vp_w, .abs, .dst0y, .src0y, ._, ._ }, |
| 9177 | } }, | 11939 | } }, |
| ... | @@ -9182,7 +11944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9182,7 +11944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9182 | .{ .src = .{ .mem, .none } }, | 11944 | .{ .src = .{ .mem, .none } }, |
| 9183 | .{ .src = .{ .to_sse, .none } }, | 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 | .each = .{ .once = &.{ | 11948 | .each = .{ .once = &.{ |
| 9187 | .{ ._, .vp_d, .abs, .dst0y, .src0y, ._, ._ }, | 11949 | .{ ._, .vp_d, .abs, .dst0y, .src0y, ._, ._ }, |
| 9188 | } }, | 11950 | } }, |
| ... | @@ -9199,6 +11961,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9199,6 +11961,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9199 | .unused, | 11961 | .unused, |
| 9200 | .unused, | 11962 | .unused, |
| 9201 | .unused, | 11963 | .unused, |
| | 11964 | .unused, |
| | 11965 | .unused, |
| | 11966 | .unused, |
| 9202 | }, | 11967 | }, |
| 9203 | .dst_temps = .{.mem}, | 11968 | .dst_temps = .{.mem}, |
| 9204 | .clobbers = .{ .eflags = true }, | 11969 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9222,6 +11987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9222,6 +11987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9222 | .unused, | 11987 | .unused, |
| 9223 | .unused, | 11988 | .unused, |
| 9224 | .unused, | 11989 | .unused, |
| | 11990 | .unused, |
| | 11991 | .unused, |
| | 11992 | .unused, |
| 9225 | }, | 11993 | }, |
| 9226 | .dst_temps = .{.mem}, | 11994 | .dst_temps = .{.mem}, |
| 9227 | .clobbers = .{ .eflags = true }, | 11995 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9245,6 +12013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9245,6 +12013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9245 | .unused, | 12013 | .unused, |
| 9246 | .unused, | 12014 | .unused, |
| 9247 | .unused, | 12015 | .unused, |
| | 12016 | .unused, |
| | 12017 | .unused, |
| | 12018 | .unused, |
| 9248 | }, | 12019 | }, |
| 9249 | .dst_temps = .{.mem}, | 12020 | .dst_temps = .{.mem}, |
| 9250 | .clobbers = .{ .eflags = true }, | 12021 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9268,6 +12039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9268,6 +12039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9268 | .unused, | 12039 | .unused, |
| 9269 | .unused, | 12040 | .unused, |
| 9270 | .unused, | 12041 | .unused, |
| | 12042 | .unused, |
| | 12043 | .unused, |
| | 12044 | .unused, |
| 9271 | }, | 12045 | }, |
| 9272 | .dst_temps = .{.mem}, | 12046 | .dst_temps = .{.mem}, |
| 9273 | .clobbers = .{ .eflags = true }, | 12047 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9291,6 +12065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9291,6 +12065,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9291 | .unused, | 12065 | .unused, |
| 9292 | .unused, | 12066 | .unused, |
| 9293 | .unused, | 12067 | .unused, |
| | 12068 | .unused, |
| | 12069 | .unused, |
| | 12070 | .unused, |
| 9294 | }, | 12071 | }, |
| 9295 | .dst_temps = .{.mem}, | 12072 | .dst_temps = .{.mem}, |
| 9296 | .clobbers = .{ .eflags = true }, | 12073 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9314,6 +12091,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9314,6 +12091,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9314 | .unused, | 12091 | .unused, |
| 9315 | .unused, | 12092 | .unused, |
| 9316 | .unused, | 12093 | .unused, |
| | 12094 | .unused, |
| | 12095 | .unused, |
| | 12096 | .unused, |
| 9317 | }, | 12097 | }, |
| 9318 | .dst_temps = .{.mem}, | 12098 | .dst_temps = .{.mem}, |
| 9319 | .clobbers = .{ .eflags = true }, | 12099 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9337,6 +12117,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9337,6 +12117,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9337 | .unused, | 12117 | .unused, |
| 9338 | .unused, | 12118 | .unused, |
| 9339 | .unused, | 12119 | .unused, |
| | 12120 | .unused, |
| | 12121 | .unused, |
| | 12122 | .unused, |
| 9340 | }, | 12123 | }, |
| 9341 | .dst_temps = .{.mem}, | 12124 | .dst_temps = .{.mem}, |
| 9342 | .clobbers = .{ .eflags = true }, | 12125 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9360,6 +12143,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9360,6 +12143,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9360 | .unused, | 12143 | .unused, |
| 9361 | .unused, | 12144 | .unused, |
| 9362 | .unused, | 12145 | .unused, |
| | 12146 | .unused, |
| | 12147 | .unused, |
| | 12148 | .unused, |
| 9363 | }, | 12149 | }, |
| 9364 | .dst_temps = .{.mem}, | 12150 | .dst_temps = .{.mem}, |
| 9365 | .clobbers = .{ .eflags = true }, | 12151 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9383,6 +12169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9383,6 +12169,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9383 | .unused, | 12169 | .unused, |
| 9384 | .unused, | 12170 | .unused, |
| 9385 | .unused, | 12171 | .unused, |
| | 12172 | .unused, |
| | 12173 | .unused, |
| | 12174 | .unused, |
| 9386 | }, | 12175 | }, |
| 9387 | .dst_temps = .{.mem}, | 12176 | .dst_temps = .{.mem}, |
| 9388 | .clobbers = .{ .eflags = true }, | 12177 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9406,6 +12195,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9406,6 +12195,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9406 | .unused, | 12195 | .unused, |
| 9407 | .unused, | 12196 | .unused, |
| 9408 | .unused, | 12197 | .unused, |
| | 12198 | .unused, |
| | 12199 | .unused, |
| | 12200 | .unused, |
| 9409 | }, | 12201 | }, |
| 9410 | .dst_temps = .{.mem}, | 12202 | .dst_temps = .{.mem}, |
| 9411 | .clobbers = .{ .eflags = true }, | 12203 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9429,6 +12221,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9429,6 +12221,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9429 | .unused, | 12221 | .unused, |
| 9430 | .unused, | 12222 | .unused, |
| 9431 | .unused, | 12223 | .unused, |
| | 12224 | .unused, |
| | 12225 | .unused, |
| | 12226 | .unused, |
| 9432 | }, | 12227 | }, |
| 9433 | .dst_temps = .{.mem}, | 12228 | .dst_temps = .{.mem}, |
| 9434 | .clobbers = .{ .eflags = true }, | 12229 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9452,6 +12247,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9452,6 +12247,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9452 | .unused, | 12247 | .unused, |
| 9453 | .unused, | 12248 | .unused, |
| 9454 | .unused, | 12249 | .unused, |
| | 12250 | .unused, |
| | 12251 | .unused, |
| | 12252 | .unused, |
| 9455 | }, | 12253 | }, |
| 9456 | .dst_temps = .{.mem}, | 12254 | .dst_temps = .{.mem}, |
| 9457 | .clobbers = .{ .eflags = true }, | 12255 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9475,6 +12273,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9475,6 +12273,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9475 | .unused, | 12273 | .unused, |
| 9476 | .unused, | 12274 | .unused, |
| 9477 | .unused, | 12275 | .unused, |
| | 12276 | .unused, |
| | 12277 | .unused, |
| | 12278 | .unused, |
| 9478 | }, | 12279 | }, |
| 9479 | .dst_temps = .{.mem}, | 12280 | .dst_temps = .{.mem}, |
| 9480 | .clobbers = .{ .eflags = true }, | 12281 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9501,6 +12302,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9501,6 +12302,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9501 | .unused, | 12302 | .unused, |
| 9502 | .unused, | 12303 | .unused, |
| 9503 | .unused, | 12304 | .unused, |
| | 12305 | .unused, |
| | 12306 | .unused, |
| | 12307 | .unused, |
| 9504 | }, | 12308 | }, |
| 9505 | .dst_temps = .{.mem}, | 12309 | .dst_temps = .{.mem}, |
| 9506 | .clobbers = .{ .eflags = true }, | 12310 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9527,6 +12331,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9527,6 +12331,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9527 | .unused, | 12331 | .unused, |
| 9528 | .unused, | 12332 | .unused, |
| 9529 | .unused, | 12333 | .unused, |
| | 12334 | .unused, |
| | 12335 | .unused, |
| | 12336 | .unused, |
| 9530 | }, | 12337 | }, |
| 9531 | .dst_temps = .{.mem}, | 12338 | .dst_temps = .{.mem}, |
| 9532 | .clobbers = .{ .eflags = true }, | 12339 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9552,6 +12359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9552,6 +12359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9552 | .unused, | 12359 | .unused, |
| 9553 | .unused, | 12360 | .unused, |
| 9554 | .unused, | 12361 | .unused, |
| | 12362 | .unused, |
| | 12363 | .unused, |
| | 12364 | .unused, |
| 9555 | }, | 12365 | }, |
| 9556 | .dst_temps = .{.mem}, | 12366 | .dst_temps = .{.mem}, |
| 9557 | .clobbers = .{ .eflags = true }, | 12367 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9578,6 +12388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9578,6 +12388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9578 | .unused, | 12388 | .unused, |
| 9579 | .unused, | 12389 | .unused, |
| 9580 | .unused, | 12390 | .unused, |
| | 12391 | .unused, |
| | 12392 | .unused, |
| | 12393 | .unused, |
| 9581 | }, | 12394 | }, |
| 9582 | .dst_temps = .{.mem}, | 12395 | .dst_temps = .{.mem}, |
| 9583 | .clobbers = .{ .eflags = true }, | 12396 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9602,6 +12415,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9602,6 +12415,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9602 | .unused, | 12415 | .unused, |
| 9603 | .unused, | 12416 | .unused, |
| 9604 | .unused, | 12417 | .unused, |
| | 12418 | .unused, |
| | 12419 | .unused, |
| | 12420 | .unused, |
| 9605 | }, | 12421 | }, |
| 9606 | .dst_temps = .{.mem}, | 12422 | .dst_temps = .{.mem}, |
| 9607 | .clobbers = .{ .eflags = true }, | 12423 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9628,6 +12444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9628,6 +12444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9628 | .unused, | 12444 | .unused, |
| 9629 | .unused, | 12445 | .unused, |
| 9630 | .unused, | 12446 | .unused, |
| | 12447 | .unused, |
| | 12448 | .unused, |
| | 12449 | .unused, |
| 9631 | }, | 12450 | }, |
| 9632 | .dst_temps = .{.mem}, | 12451 | .dst_temps = .{.mem}, |
| 9633 | .clobbers = .{ .eflags = true }, | 12452 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9652,6 +12471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9652,6 +12471,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9652 | .unused, | 12471 | .unused, |
| 9653 | .unused, | 12472 | .unused, |
| 9654 | .unused, | 12473 | .unused, |
| | 12474 | .unused, |
| | 12475 | .unused, |
| | 12476 | .unused, |
| 9655 | }, | 12477 | }, |
| 9656 | .dst_temps = .{.mem}, | 12478 | .dst_temps = .{.mem}, |
| 9657 | .clobbers = .{ .eflags = true }, | 12479 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9678,6 +12500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9678,6 +12500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9678 | .unused, | 12500 | .unused, |
| 9679 | .unused, | 12501 | .unused, |
| 9680 | .unused, | 12502 | .unused, |
| | 12503 | .unused, |
| | 12504 | .unused, |
| | 12505 | .unused, |
| 9681 | }, | 12506 | }, |
| 9682 | .dst_temps = .{.mem}, | 12507 | .dst_temps = .{.mem}, |
| 9683 | .clobbers = .{ .eflags = true }, | 12508 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9703,6 +12528,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9703,6 +12528,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9703 | .unused, | 12528 | .unused, |
| 9704 | .unused, | 12529 | .unused, |
| 9705 | .unused, | 12530 | .unused, |
| | 12531 | .unused, |
| | 12532 | .unused, |
| | 12533 | .unused, |
| 9706 | }, | 12534 | }, |
| 9707 | .dst_temps = .{.mem}, | 12535 | .dst_temps = .{.mem}, |
| 9708 | .clobbers = .{ .eflags = true }, | 12536 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9729,6 +12557,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9729,6 +12557,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9729 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, | 12557 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 9730 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, | 12558 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 9731 | .unused, | 12559 | .unused, |
| | 12560 | .unused, |
| | 12561 | .unused, |
| | 12562 | .unused, |
| 9732 | }, | 12563 | }, |
| 9733 | .dst_temps = .{.mem}, | 12564 | .dst_temps = .{.mem}, |
| 9734 | .clobbers = .{ .eflags = true }, | 12565 | .clobbers = .{ .eflags = true }, |
| ... | @@ -9750,15 +12581,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9750,15 +12581,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9750 | .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ }, | 12581 | .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ }, |
| 9751 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 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 | .required_features = .{ .sse, null, null, null }, | 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 | .patterns = &.{ | 12609 | .patterns = &.{ |
| 9757 | .{ .src = .{ .to_mut_sse, .none } }, | 12610 | .{ .src = .{ .to_mut_sse, .none } }, |
| 9758 | }, | 12611 | }, |
| 9759 | .extra_temps = .{ | 12612 | .extra_temps = .{ |
| 9760 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12618 | .unused, |
| 9763 | .unused, | 12619 | .unused, |
| 9764 | .unused, | 12620 | .unused, |
| ... | @@ -9770,33 +12626,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9770,33 +12626,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9770 | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, | 12626 | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 9771 | } }, | 12627 | } }, |
| 9772 | }, .{ | 12628 | }, .{ |
| 9773 | .required_features = .{ .sse2, null, null, null }, | 12629 | .required_features = .{ .avx, null, null, null }, |
| 9774 | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .qword } }, .any }, | 12630 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, |
| 9775 | .patterns = &.{ | 12631 | .patterns = &.{ |
| 9776 | .{ .src = .{ .to_mut_sse, .none } }, | 12632 | .{ .src = .{ .to_sse, .none } }, |
| 9777 | }, | 12633 | }, |
| 9778 | .extra_temps = .{ | 12634 | .extra_temps = .{ |
| 9779 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12640 | .unused, |
| 9782 | .unused, | 12641 | .unused, |
| 9783 | .unused, | 12642 | .unused, |
| 9784 | .unused, | 12643 | .unused, |
| 9785 | }, | 12644 | }, |
| 9786 | .dst_temps = .{.{ .ref = .src0 }}, | 12645 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9787 | .each = .{ .once = &.{ | 12646 | .each = .{ .once = &.{ |
| 9788 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 12651 | .required_features = .{ .avx, null, null, null }, |
| 9793 | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .qword } }, .any }, | 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 | .patterns = &.{ | 12675 | .patterns = &.{ |
| 9795 | .{ .src = .{ .to_mut_sse, .none } }, | 12676 | .{ .src = .{ .to_mut_sse, .none } }, |
| 9796 | }, | 12677 | }, |
| 9797 | .extra_temps = .{ | 12678 | .extra_temps = .{ |
| 9798 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12684 | .unused, |
| 9801 | .unused, | 12685 | .unused, |
| 9802 | .unused, | 12686 | .unused, |
| ... | @@ -9805,218 +12689,383 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9805,218 +12689,383 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9805 | .dst_temps = .{.{ .ref = .src0 }}, | 12689 | .dst_temps = .{.{ .ref = .src0 }}, |
| 9806 | .each = .{ .once = &.{ | 12690 | .each = .{ .once = &.{ |
| 9807 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 12691 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9808 | .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, | 12692 | .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ }, |
| 9809 | } }, | 12693 | } }, |
| 9810 | }, .{ | 12694 | }, .{ |
| 9811 | .required_features = .{ .avx, null, null, null }, | 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 | .patterns = &.{ | 12697 | .patterns = &.{ |
| 9814 | .{ .src = .{ .to_sse, .none } }, | 12698 | .{ .src = .{ .to_sse, .none } }, |
| 9815 | }, | 12699 | }, |
| 9816 | .extra_temps = .{ | 12700 | .extra_temps = .{ |
| 9817 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12706 | .unused, |
| 9820 | .unused, | 12707 | .unused, |
| 9821 | .unused, | 12708 | .unused, |
| 9822 | .unused, | 12709 | .unused, |
| 9823 | }, | 12710 | }, |
| 9824 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12711 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9825 | .each = .{ .once = &.{ | 12712 | .each = .{ .once = &.{ |
| 9826 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 | .required_features = .{ .avx, null, null, null }, | 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 | .patterns = &.{ | 12743 | .patterns = &.{ |
| 9833 | .{ .src = .{ .to_sse, .none } }, | 12744 | .{ .src = .{ .to_sse, .none } }, |
| 9834 | }, | 12745 | }, |
| 9835 | .extra_temps = .{ | 12746 | .extra_temps = .{ |
| 9836 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12752 | .unused, |
| 9839 | .unused, | 12753 | .unused, |
| 9840 | .unused, | 12754 | .unused, |
| 9841 | .unused, | 12755 | .unused, |
| 9842 | }, | 12756 | }, |
| 9843 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12757 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9844 | .each = .{ .once = &.{ | 12758 | .each = .{ .once = &.{ |
| 9845 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 12763 | .required_features = .{ .sse2, null, null, null }, |
| 9850 | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .yword, .is = .dword } }, .any }, | 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 | .patterns = &.{ | 12809 | .patterns = &.{ |
| 9852 | .{ .src = .{ .to_sse, .none } }, | 12810 | .{ .src = .{ .to_sse, .none } }, |
| 9853 | }, | 12811 | }, |
| 9854 | .extra_temps = .{ | 12812 | .extra_temps = .{ |
| 9855 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12818 | .unused, |
| 9858 | .unused, | 12819 | .unused, |
| 9859 | .unused, | 12820 | .unused, |
| 9860 | .unused, | 12821 | .unused, |
| 9861 | }, | 12822 | }, |
| 9862 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12823 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9863 | .each = .{ .once = &.{ | 12824 | .each = .{ .once = &.{ |
| 9864 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 | .required_features = .{ .avx, null, null, null }, | 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 | .patterns = &.{ | 12831 | .patterns = &.{ |
| 9871 | .{ .src = .{ .to_sse, .none } }, | 12832 | .{ .src = .{ .to_sse, .none } }, |
| 9872 | }, | 12833 | }, |
| 9873 | .extra_temps = .{ | 12834 | .extra_temps = .{ |
| 9874 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 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 | .unused, | 12840 | .unused, |
| 9877 | .unused, | 12841 | .unused, |
| 9878 | .unused, | 12842 | .unused, |
| 9879 | .unused, | 12843 | .unused, |
| 9880 | }, | 12844 | }, |
| 9881 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12845 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 9882 | .each = .{ .once = &.{ | 12846 | .each = .{ .once = &.{ |
| 9883 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 12847 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9884 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, | 12848 | .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ }, |
| 9885 | } }, | 12849 | } }, |
| 9886 | }, .{ | 12850 | }, .{ |
| 9887 | .required_features = .{ .x87, null, null, null }, | 12851 | .required_features = .{ .avx, null, null, null }, |
| 9888 | .src_constraints = .{ .{ .scalar_exact_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 12852 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, |
| 9889 | .patterns = &.{ | 12853 | .patterns = &.{ |
| 9890 | .{ .src = .{ .mem, .none } }, | 12854 | .{ .src = .{ .to_mem, .none } }, |
| 9891 | .{ .src = .{ .to_x87, .none } }, | | |
| 9892 | }, | 12855 | }, |
| 9893 | .extra_temps = .{ | 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 | .unused, | 12861 | .unused, |
| 9896 | .unused, | 12862 | .unused, |
| 9897 | .unused, | 12863 | .unused, |
| 9898 | .unused, | 12864 | .unused, |
| 9899 | .unused, | 12865 | .unused, |
| 9900 | }, | 12866 | }, |
| 9901 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .x87 } }}, | 12867 | .dst_temps = .{.mem}, |
| 9902 | .each = .{ .once = &.{ | 12868 | .each = .{ .once = &.{ |
| 9903 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 12869 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 9904 | .{ ._, .f_, .abs, ._, ._, ._, ._ }, | 12870 | .{ ._, .v_ps, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ }, |
| 9905 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 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 }, | 12906 | .required_features = .{ .avx, null, null, null }, |
| 9909 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 12907 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, |
| 9910 | .patterns = &.{ | 12908 | .patterns = &.{ |
| 9911 | .{ .src = .{ .to_sse, .none } }, | 12909 | .{ .src = .{ .to_mem, .none } }, |
| 9912 | }, | 12910 | }, |
| 9913 | .extra_temps = .{ | 12911 | .extra_temps = .{ |
| 9914 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 12912 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9915 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 12913 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| | 12914 | .{ .kind = .{ .rc = .sse } }, |
| | 12915 | .{ .kind = .{ .rc = .sse } }, |
| | 12916 | .unused, |
| 9916 | .unused, | 12917 | .unused, |
| 9917 | .unused, | 12918 | .unused, |
| 9918 | .unused, | 12919 | .unused, |
| 9919 | .unused, | 12920 | .unused, |
| 9920 | }, | 12921 | }, |
| 9921 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12922 | .dst_temps = .{.mem}, |
| 9922 | .each = .{ .once = &.{ | 12923 | .each = .{ .once = &.{ |
| 9923 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 12933 | .required_features = .{ .sse2, null, null, null }, |
| 9928 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 12934 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any }, |
| 9929 | .patterns = &.{ | 12935 | .patterns = &.{ |
| 9930 | .{ .src = .{ .to_sse, .none } }, | 12936 | .{ .src = .{ .to_mem, .none } }, |
| 9931 | }, | 12937 | }, |
| 9932 | .extra_temps = .{ | 12938 | .extra_temps = .{ |
| 9933 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 12939 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9934 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 12940 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 12941 | .{ .kind = .{ .rc = .sse } }, |
| | 12942 | .{ .kind = .{ .rc = .sse } }, |
| | 12943 | .unused, |
| 9935 | .unused, | 12944 | .unused, |
| 9936 | .unused, | 12945 | .unused, |
| 9937 | .unused, | 12946 | .unused, |
| 9938 | .unused, | 12947 | .unused, |
| 9939 | }, | 12948 | }, |
| 9940 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 12949 | .dst_temps = .{.mem}, |
| 9941 | .each = .{ .once = &.{ | 12950 | .each = .{ .once = &.{ |
| 9942 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 12961 | .required_features = .{ .avx2, null, null, null }, |
| 9947 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 12962 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, |
| 9948 | .patterns = &.{ | 12963 | .patterns = &.{ |
| 9949 | .{ .src = .{ .to_mut_sse, .none } }, | 12964 | .{ .src = .{ .to_mem, .none } }, |
| 9950 | }, | 12965 | }, |
| 9951 | .extra_temps = .{ | 12966 | .extra_temps = .{ |
| 9952 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 12967 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9953 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 12968 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| | 12969 | .{ .kind = .{ .rc = .sse } }, |
| | 12970 | .{ .kind = .{ .rc = .sse } }, |
| | 12971 | .unused, |
| 9954 | .unused, | 12972 | .unused, |
| 9955 | .unused, | 12973 | .unused, |
| 9956 | .unused, | 12974 | .unused, |
| 9957 | .unused, | 12975 | .unused, |
| 9958 | }, | 12976 | }, |
| 9959 | .dst_temps = .{.{ .ref = .src0 }}, | 12977 | .dst_temps = .{.mem}, |
| 9960 | .each = .{ .once = &.{ | 12978 | .each = .{ .once = &.{ |
| 9961 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 12988 | .required_features = .{ .avx, null, null, null }, |
| 9966 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 12989 | .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, |
| 9967 | .patterns = &.{ | 12990 | .patterns = &.{ |
| 9968 | .{ .src = .{ .to_mut_sse, .none } }, | 12991 | .{ .src = .{ .to_mem, .none } }, |
| 9969 | }, | 12992 | }, |
| 9970 | .extra_temps = .{ | 12993 | .extra_temps = .{ |
| 9971 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 12994 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9972 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 12995 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, |
| | 12996 | .{ .kind = .{ .rc = .sse } }, |
| | 12997 | .{ .kind = .{ .rc = .sse } }, |
| | 12998 | .unused, |
| 9973 | .unused, | 12999 | .unused, |
| 9974 | .unused, | 13000 | .unused, |
| 9975 | .unused, | 13001 | .unused, |
| 9976 | .unused, | 13002 | .unused, |
| 9977 | }, | 13003 | }, |
| 9978 | .dst_temps = .{.{ .ref = .src0 }}, | 13004 | .dst_temps = .{.mem}, |
| 9979 | .each = .{ .once = &.{ | 13005 | .each = .{ .once = &.{ |
| 9980 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 13015 | .required_features = .{ .sse2, null, null, null }, |
| 9985 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .xword } }, .any }, | 13016 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, |
| 9986 | .patterns = &.{ | 13017 | .patterns = &.{ |
| 9987 | .{ .src = .{ .to_sse, .none } }, | 13018 | .{ .src = .{ .to_mem, .none } }, |
| 9988 | }, | 13019 | }, |
| 9989 | .extra_temps = .{ | 13020 | .extra_temps = .{ |
| 9990 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 13021 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9991 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 13022 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 13023 | .{ .kind = .{ .rc = .sse } }, |
| | 13024 | .{ .kind = .{ .rc = .sse } }, |
| | 13025 | .unused, |
| 9992 | .unused, | 13026 | .unused, |
| 9993 | .unused, | 13027 | .unused, |
| 9994 | .unused, | 13028 | .unused, |
| 9995 | .unused, | 13029 | .unused, |
| 9996 | }, | 13030 | }, |
| 9997 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 13031 | .dst_temps = .{.mem}, |
| 9998 | .each = .{ .once = &.{ | 13032 | .each = .{ .once = &.{ |
| 9999 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 }, | 13043 | .required_features = .{ .sse, null, null, null }, |
| 10004 | .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .xword } }, .any }, | 13044 | .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, |
| 10005 | .patterns = &.{ | 13045 | .patterns = &.{ |
| 10006 | .{ .src = .{ .to_sse, .none } }, | 13046 | .{ .src = .{ .to_mem, .none } }, |
| 10007 | }, | 13047 | }, |
| 10008 | .extra_temps = .{ | 13048 | .extra_temps = .{ |
| 10009 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 13049 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 10010 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize = true } } }, | 13050 | .{ .kind = .{ .smax_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, |
| | 13051 | .{ .kind = .{ .rc = .sse } }, |
| | 13052 | .{ .kind = .{ .rc = .sse } }, |
| | 13053 | .unused, |
| 10011 | .unused, | 13054 | .unused, |
| 10012 | .unused, | 13055 | .unused, |
| 10013 | .unused, | 13056 | .unused, |
| 10014 | .unused, | 13057 | .unused, |
| 10015 | }, | 13058 | }, |
| 10016 | .dst_temps = .{.{ .mut_reg = .{ .ref = .src0, .rc = .sse } }}, | 13059 | .dst_temps = .{.mem}, |
| 10017 | .each = .{ .once = &.{ | 13060 | .each = .{ .once = &.{ |
| 10018 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 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 | } }) catch |err| switch (err) { | 13070 | } }) catch |err| switch (err) { |
| 10022 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ | 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,6 +13243,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10194 | .unused, | 13243 | .unused, |
| 10195 | .unused, | 13244 | .unused, |
| 10196 | .unused, | 13245 | .unused, |
| | 13246 | .unused, |
| | 13247 | .unused, |
| | 13248 | .unused, |
| 10197 | }, | 13249 | }, |
| 10198 | .dst_temps = .{.{ .rc = .general_purpose }}, | 13250 | .dst_temps = .{.{ .rc = .general_purpose }}, |
| 10199 | .clobbers = .{ .eflags = true }, | 13251 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10328,6 +13380,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10328,6 +13380,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10328 | .unused, | 13380 | .unused, |
| 10329 | .unused, | 13381 | .unused, |
| 10330 | .unused, | 13382 | .unused, |
| | 13383 | .unused, |
| | 13384 | .unused, |
| | 13385 | .unused, |
| 10331 | }, | 13386 | }, |
| 10332 | .dst_temps = .{.{ .cc = cc }}, | 13387 | .dst_temps = .{.{ .cc = cc }}, |
| 10333 | .clobbers = .{ .eflags = true }, | 13388 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10353,6 +13408,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10353,6 +13408,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10353 | .unused, | 13408 | .unused, |
| 10354 | .unused, | 13409 | .unused, |
| 10355 | .unused, | 13410 | .unused, |
| | 13411 | .unused, |
| | 13412 | .unused, |
| | 13413 | .unused, |
| 10356 | }, | 13414 | }, |
| 10357 | .dst_temps = .{.{ .cc = cc }}, | 13415 | .dst_temps = .{.{ .cc = cc }}, |
| 10358 | .clobbers = .{ .eflags = true }, | 13416 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10389,6 +13447,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10389,6 +13447,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10389 | .unused, | 13447 | .unused, |
| 10390 | .unused, | 13448 | .unused, |
| 10391 | .unused, | 13449 | .unused, |
| | 13450 | .unused, |
| | 13451 | .unused, |
| | 13452 | .unused, |
| 10392 | }, | 13453 | }, |
| 10393 | .dst_temps = .{.{ .cc = cc }}, | 13454 | .dst_temps = .{.{ .cc = cc }}, |
| 10394 | .clobbers = .{ .eflags = true }, | 13455 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10414,6 +13475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10414,6 +13475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10414 | .unused, | 13475 | .unused, |
| 10415 | .unused, | 13476 | .unused, |
| 10416 | .unused, | 13477 | .unused, |
| | 13478 | .unused, |
| | 13479 | .unused, |
| | 13480 | .unused, |
| 10417 | }, | 13481 | }, |
| 10418 | .dst_temps = .{.{ .cc = cc }}, | 13482 | .dst_temps = .{.{ .cc = cc }}, |
| 10419 | .clobbers = .{ .eflags = true }, | 13483 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10436,6 +13500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10436,6 +13500,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10436 | .unused, | 13500 | .unused, |
| 10437 | .unused, | 13501 | .unused, |
| 10438 | .unused, | 13502 | .unused, |
| | 13503 | .unused, |
| | 13504 | .unused, |
| | 13505 | .unused, |
| 10439 | }, | 13506 | }, |
| 10440 | .dst_temps = .{.{ .cc = cc }}, | 13507 | .dst_temps = .{.{ .cc = cc }}, |
| 10441 | .clobbers = .{ .eflags = true }, | 13508 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10459,6 +13526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10459,6 +13526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10459 | .unused, | 13526 | .unused, |
| 10460 | .unused, | 13527 | .unused, |
| 10461 | .unused, | 13528 | .unused, |
| | 13529 | .unused, |
| | 13530 | .unused, |
| | 13531 | .unused, |
| 10462 | }, | 13532 | }, |
| 10463 | .dst_temps = .{.{ .cc = cc }}, | 13533 | .dst_temps = .{.{ .cc = cc }}, |
| 10464 | .clobbers = .{ .eflags = true }, | 13534 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10491,6 +13561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10491,6 +13561,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10491 | .unused, | 13561 | .unused, |
| 10492 | .unused, | 13562 | .unused, |
| 10493 | .unused, | 13563 | .unused, |
| | 13564 | .unused, |
| | 13565 | .unused, |
| | 13566 | .unused, |
| 10494 | }, | 13567 | }, |
| 10495 | .dst_temps = .{.{ .cc = cc }}, | 13568 | .dst_temps = .{.{ .cc = cc }}, |
| 10496 | .clobbers = .{ .eflags = true }, | 13569 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10520,6 +13593,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10520,6 +13593,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10520 | .unused, | 13593 | .unused, |
| 10521 | .unused, | 13594 | .unused, |
| 10522 | .unused, | 13595 | .unused, |
| | 13596 | .unused, |
| | 13597 | .unused, |
| | 13598 | .unused, |
| 10523 | }, | 13599 | }, |
| 10524 | .dst_temps = .{.{ .cc = cc }}, | 13600 | .dst_temps = .{.{ .cc = cc }}, |
| 10525 | .clobbers = .{ .eflags = true }, | 13601 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10552,6 +13628,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10552,6 +13628,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10552 | .unused, | 13628 | .unused, |
| 10553 | .unused, | 13629 | .unused, |
| 10554 | .unused, | 13630 | .unused, |
| | 13631 | .unused, |
| | 13632 | .unused, |
| | 13633 | .unused, |
| 10555 | }, | 13634 | }, |
| 10556 | .dst_temps = .{.{ .cc = cc }}, | 13635 | .dst_temps = .{.{ .cc = cc }}, |
| 10557 | .clobbers = .{ .eflags = true }, | 13636 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10581,6 +13660,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10581,6 +13660,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10581 | .unused, | 13660 | .unused, |
| 10582 | .unused, | 13661 | .unused, |
| 10583 | .unused, | 13662 | .unused, |
| | 13663 | .unused, |
| | 13664 | .unused, |
| | 13665 | .unused, |
| 10584 | }, | 13666 | }, |
| 10585 | .dst_temps = .{.{ .cc = cc }}, | 13667 | .dst_temps = .{.{ .cc = cc }}, |
| 10586 | .clobbers = .{ .eflags = true }, | 13668 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10610,6 +13692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10610,6 +13692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10610 | .unused, | 13692 | .unused, |
| 10611 | .unused, | 13693 | .unused, |
| 10612 | .unused, | 13694 | .unused, |
| | 13695 | .unused, |
| | 13696 | .unused, |
| | 13697 | .unused, |
| 10613 | }, | 13698 | }, |
| 10614 | .dst_temps = .{.{ .cc = cc }}, | 13699 | .dst_temps = .{.{ .cc = cc }}, |
| 10615 | .clobbers = .{ .eflags = true }, | 13700 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10639,6 +13724,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10639,6 +13724,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10639 | .unused, | 13724 | .unused, |
| 10640 | .unused, | 13725 | .unused, |
| 10641 | .unused, | 13726 | .unused, |
| | 13727 | .unused, |
| | 13728 | .unused, |
| | 13729 | .unused, |
| 10642 | }, | 13730 | }, |
| 10643 | .dst_temps = .{.{ .cc = cc }}, | 13731 | .dst_temps = .{.{ .cc = cc }}, |
| 10644 | .clobbers = .{ .eflags = true }, | 13732 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10671,6 +13759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10671,6 +13759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10671 | .unused, | 13759 | .unused, |
| 10672 | .unused, | 13760 | .unused, |
| 10673 | .unused, | 13761 | .unused, |
| | 13762 | .unused, |
| | 13763 | .unused, |
| | 13764 | .unused, |
| 10674 | }, | 13765 | }, |
| 10675 | .dst_temps = .{.{ .cc = cc }}, | 13766 | .dst_temps = .{.{ .cc = cc }}, |
| 10676 | .clobbers = .{ .eflags = true }, | 13767 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10702,6 +13793,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10702,6 +13793,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10702 | .unused, | 13793 | .unused, |
| 10703 | .unused, | 13794 | .unused, |
| 10704 | .unused, | 13795 | .unused, |
| | 13796 | .unused, |
| | 13797 | .unused, |
| | 13798 | .unused, |
| 10705 | }, | 13799 | }, |
| 10706 | .dst_temps = .{.{ .cc = cc }}, | 13800 | .dst_temps = .{.{ .cc = cc }}, |
| 10707 | .clobbers = .{ .eflags = true }, | 13801 | .clobbers = .{ .eflags = true }, |
| ... | @@ -10728,6 +13822,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10728,6 +13822,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10728 | .unused, | 13822 | .unused, |
| 10729 | .unused, | 13823 | .unused, |
| 10730 | .unused, | 13824 | .unused, |
| | 13825 | .unused, |
| | 13826 | .unused, |
| | 13827 | .unused, |
| 10731 | }, | 13828 | }, |
| 10732 | .dst_temps = .{.{ .cc = switch (cc) { | 13829 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10733 | else => unreachable, | 13830 | else => unreachable, |
| ... | @@ -10747,7 +13844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10747,7 +13844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10747 | .patterns = &.{ | 13844 | .patterns = &.{ |
| 10748 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 13845 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10749 | }, | 13846 | }, |
| 10750 | .call_frame = .{ .size = 0, .alignment = .@"16" }, | 13847 | .call_frame = .{ .alignment = .@"16" }, |
| 10751 | .extra_temps = .{ | 13848 | .extra_temps = .{ |
| 10752 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 13849 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10753 | else => unreachable, | 13850 | else => unreachable, |
| ... | @@ -10759,11 +13856,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10759,11 +13856,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10759 | .unused, | 13856 | .unused, |
| 10760 | .unused, | 13857 | .unused, |
| 10761 | .unused, | 13858 | .unused, |
| | 13859 | .unused, |
| | 13860 | .unused, |
| | 13861 | .unused, |
| 10762 | }, | 13862 | }, |
| 10763 | .dst_temps = .{.{ .cc = cc }}, | 13863 | .dst_temps = .{.{ .cc = cc }}, |
| 10764 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 13864 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10765 | .each = .{ .once = &.{ | 13865 | .each = .{ .once = &.{ |
| 10766 | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, | 13866 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10767 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 13867 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10768 | } }, | 13868 | } }, |
| 10769 | }, .{ | 13869 | }, .{ |
| ... | @@ -10781,6 +13881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10781,6 +13881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10781 | .unused, | 13881 | .unused, |
| 10782 | .unused, | 13882 | .unused, |
| 10783 | .unused, | 13883 | .unused, |
| | 13884 | .unused, |
| | 13885 | .unused, |
| | 13886 | .unused, |
| 10784 | }, | 13887 | }, |
| 10785 | .dst_temps = .{.{ .cc = switch (cc) { | 13888 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10786 | else => unreachable, | 13889 | else => unreachable, |
| ... | @@ -10806,6 +13909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10806,6 +13909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10806 | .unused, | 13909 | .unused, |
| 10807 | .unused, | 13910 | .unused, |
| 10808 | .unused, | 13911 | .unused, |
| | 13912 | .unused, |
| | 13913 | .unused, |
| | 13914 | .unused, |
| 10809 | }, | 13915 | }, |
| 10810 | .dst_temps = .{.{ .cc = switch (cc) { | 13916 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10811 | else => unreachable, | 13917 | else => unreachable, |
| ... | @@ -10822,7 +13928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10822,7 +13928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10822 | .patterns = &.{ | 13928 | .patterns = &.{ |
| 10823 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 13929 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10824 | }, | 13930 | }, |
| 10825 | .call_frame = .{ .size = 0, .alignment = .@"16" }, | 13931 | .call_frame = .{ .alignment = .@"16" }, |
| 10826 | .extra_temps = .{ | 13932 | .extra_temps = .{ |
| 10827 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 13933 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10828 | else => unreachable, | 13934 | else => unreachable, |
| ... | @@ -10834,11 +13940,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10834,11 +13940,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10834 | .unused, | 13940 | .unused, |
| 10835 | .unused, | 13941 | .unused, |
| 10836 | .unused, | 13942 | .unused, |
| | 13943 | .unused, |
| | 13944 | .unused, |
| | 13945 | .unused, |
| 10837 | }, | 13946 | }, |
| 10838 | .dst_temps = .{.{ .cc = cc }}, | 13947 | .dst_temps = .{.{ .cc = cc }}, |
| 10839 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 13948 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10840 | .each = .{ .once = &.{ | 13949 | .each = .{ .once = &.{ |
| 10841 | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, | 13950 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10842 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 13951 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10843 | } }, | 13952 | } }, |
| 10844 | }, .{ | 13953 | }, .{ |
| ... | @@ -10856,6 +13965,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10856,6 +13965,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10856 | .unused, | 13965 | .unused, |
| 10857 | .unused, | 13966 | .unused, |
| 10858 | .unused, | 13967 | .unused, |
| | 13968 | .unused, |
| | 13969 | .unused, |
| | 13970 | .unused, |
| 10859 | }, | 13971 | }, |
| 10860 | .dst_temps = .{.{ .cc = switch (cc) { | 13972 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10861 | else => unreachable, | 13973 | else => unreachable, |
| ... | @@ -10881,6 +13993,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10881,6 +13993,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10881 | .unused, | 13993 | .unused, |
| 10882 | .unused, | 13994 | .unused, |
| 10883 | .unused, | 13995 | .unused, |
| | 13996 | .unused, |
| | 13997 | .unused, |
| | 13998 | .unused, |
| 10884 | }, | 13999 | }, |
| 10885 | .dst_temps = .{.{ .cc = switch (cc) { | 14000 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10886 | else => unreachable, | 14001 | else => unreachable, |
| ... | @@ -10897,7 +14012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10897,7 +14012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10897 | .patterns = &.{ | 14012 | .patterns = &.{ |
| 10898 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 14013 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 10899 | }, | 14014 | }, |
| 10900 | .call_frame = .{ .size = 0, .alignment = .@"16" }, | 14015 | .call_frame = .{ .alignment = .@"16" }, |
| 10901 | .extra_temps = .{ | 14016 | .extra_temps = .{ |
| 10902 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 14017 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 10903 | else => unreachable, | 14018 | else => unreachable, |
| ... | @@ -10909,11 +14024,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10909,11 +14024,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10909 | .unused, | 14024 | .unused, |
| 10910 | .unused, | 14025 | .unused, |
| 10911 | .unused, | 14026 | .unused, |
| | 14027 | .unused, |
| | 14028 | .unused, |
| | 14029 | .unused, |
| 10912 | }, | 14030 | }, |
| 10913 | .dst_temps = .{.{ .cc = cc }}, | 14031 | .dst_temps = .{.{ .cc = cc }}, |
| 10914 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 14032 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10915 | .each = .{ .once = &.{ | 14033 | .each = .{ .once = &.{ |
| 10916 | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, | 14034 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 10917 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 14035 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 10918 | } }, | 14036 | } }, |
| 10919 | }, .{ | 14037 | }, .{ |
| ... | @@ -10929,6 +14047,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10929,6 +14047,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10929 | .unused, | 14047 | .unused, |
| 10930 | .unused, | 14048 | .unused, |
| 10931 | .unused, | 14049 | .unused, |
| | 14050 | .unused, |
| | 14051 | .unused, |
| | 14052 | .unused, |
| 10932 | }, | 14053 | }, |
| 10933 | .dst_temps = .{.{ .cc = switch (cc) { | 14054 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10934 | else => unreachable, | 14055 | else => unreachable, |
| ... | @@ -10957,6 +14078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10957,6 +14078,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10957 | .unused, | 14078 | .unused, |
| 10958 | .unused, | 14079 | .unused, |
| 10959 | .unused, | 14080 | .unused, |
| | 14081 | .unused, |
| | 14082 | .unused, |
| | 14083 | .unused, |
| 10960 | }, | 14084 | }, |
| 10961 | .dst_temps = .{.{ .cc = switch (cc) { | 14085 | .dst_temps = .{.{ .cc = switch (cc) { |
| 10962 | else => unreachable, | 14086 | else => unreachable, |
| ... | @@ -10977,7 +14101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10977,7 +14101,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10977 | .extra_temps = .{ | 14101 | .extra_temps = .{ |
| 10978 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14102 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 10979 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 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 | .unused, | 14108 | .unused, |
| 10982 | .unused, | 14109 | .unused, |
| 10983 | .unused, | 14110 | .unused, |
| ... | @@ -11004,10 +14131,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11004,10 +14131,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11004 | .extra_temps = .{ | 14131 | .extra_temps = .{ |
| 11005 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14132 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11006 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 14133 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11007 | .{ .type = .u16, .kind = .{ .reg = .ax } }, | | |
| 11008 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 14134 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 11009 | .unused, | 14135 | .unused, |
| 11010 | .unused, | 14136 | .unused, |
| | 14137 | .unused, |
| | 14138 | .unused, |
| | 14139 | .unused, |
| | 14140 | .unused, |
| 11011 | }, | 14141 | }, |
| 11012 | .dst_temps = .{.{ .cc = cc }}, | 14142 | .dst_temps = .{.{ .cc = cc }}, |
| 11013 | .clobbers = .{ .eflags = true }, | 14143 | .clobbers = .{ .eflags = true }, |
| ... | @@ -11016,8 +14146,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11016,8 +14146,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11016 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 14146 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 11017 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, | 14147 | .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, |
| 11018 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, | 14148 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, |
| 11019 | .{ ._, ._, .xor, .tmp3b, .si(0b0_1_000_000), ._, ._ }, | 14149 | .{ ._, ._, .xor, .tmp2b, .si(0b0_1_000_000), ._, ._ }, |
| 11020 | .{ ._, ._, .@"test", .tmp3b, .si(0b0_1_000_100), ._, ._ }, | 14150 | .{ ._, ._, .@"test", .tmp2b, .si(0b0_1_000_100), ._, ._ }, |
| 11021 | } }, | 14151 | } }, |
| 11022 | }, .{ | 14152 | }, .{ |
| 11023 | .required_features = .{ .x87, null, null, null }, | 14153 | .required_features = .{ .x87, null, null, null }, |
| ... | @@ -11028,7 +14158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11028,7 +14158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11028 | .extra_temps = .{ | 14158 | .extra_temps = .{ |
| 11029 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14159 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11030 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 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 | .unused, | 14165 | .unused, |
| 11033 | .unused, | 14166 | .unused, |
| 11034 | .unused, | 14167 | .unused, |
| ... | @@ -11057,7 +14190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11057,7 +14190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11057 | .extra_temps = .{ | 14190 | .extra_temps = .{ |
| 11058 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14191 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11059 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 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 | .unused, | 14197 | .unused, |
| 11062 | .unused, | 14198 | .unused, |
| 11063 | .unused, | 14199 | .unused, |
| ... | @@ -11085,10 +14221,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11085,10 +14221,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11085 | .extra_temps = .{ | 14221 | .extra_temps = .{ |
| 11086 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14222 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11087 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 14223 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 11088 | .{ .type = .u16, .kind = .{ .reg = .ax } }, | | |
| 11089 | .{ .type = .u8, .kind = .{ .reg = .ah } }, | 14224 | .{ .type = .u8, .kind = .{ .reg = .ah } }, |
| 11090 | .unused, | 14225 | .unused, |
| 11091 | .unused, | 14226 | .unused, |
| | 14227 | .unused, |
| | 14228 | .unused, |
| | 14229 | .unused, |
| | 14230 | .unused, |
| 11092 | }, | 14231 | }, |
| 11093 | .dst_temps = .{.{ .cc = cc }}, | 14232 | .dst_temps = .{.{ .cc = cc }}, |
| 11094 | .clobbers = .{ .eflags = true }, | 14233 | .clobbers = .{ .eflags = true }, |
| ... | @@ -11096,8 +14235,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11096,8 +14235,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11096 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 14235 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 11097 | .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ }, | 14236 | .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ }, |
| 11098 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, | 14237 | .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ }, |
| 11099 | .{ ._, ._, .xor, .tmp3b, .si(0b0_1_000_000), ._, ._ }, | 14238 | .{ ._, ._, .xor, .tmp2b, .si(0b0_1_000_000), ._, ._ }, |
| 11100 | .{ ._, ._, .@"test", .tmp3b, .si(0b0_1_000_100), ._, ._ }, | 14239 | .{ ._, ._, .@"test", .tmp2b, .si(0b0_1_000_100), ._, ._ }, |
| 11101 | } }, | 14240 | } }, |
| 11102 | }, .{ | 14241 | }, .{ |
| 11103 | .required_features = .{ .x87, null, null, null }, | 14242 | .required_features = .{ .x87, null, null, null }, |
| ... | @@ -11110,7 +14249,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11110,7 +14249,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11110 | .extra_temps = .{ | 14249 | .extra_temps = .{ |
| 11111 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, | 14250 | .{ .type = .f80, .kind = .{ .reg = .st6 } }, |
| 11112 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 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 | .unused, | 14256 | .unused, |
| 11115 | .unused, | 14257 | .unused, |
| 11116 | .unused, | 14258 | .unused, |
| ... | @@ -11133,7 +14275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11133,7 +14275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11133 | .patterns = &.{ | 14275 | .patterns = &.{ |
| 11134 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, | 14276 | .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, |
| 11135 | }, | 14277 | }, |
| 11136 | .call_frame = .{ .size = 0, .alignment = .@"16" }, | 14278 | .call_frame = .{ .alignment = .@"16" }, |
| 11137 | .extra_temps = .{ | 14279 | .extra_temps = .{ |
| 11138 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { | 14280 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { |
| 11139 | else => unreachable, | 14281 | else => unreachable, |
| ... | @@ -11145,11 +14287,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11145,11 +14287,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11145 | .unused, | 14287 | .unused, |
| 11146 | .unused, | 14288 | .unused, |
| 11147 | .unused, | 14289 | .unused, |
| | 14290 | .unused, |
| | 14291 | .unused, |
| | 14292 | .unused, |
| 11148 | }, | 14293 | }, |
| 11149 | .dst_temps = .{.{ .cc = cc }}, | 14294 | .dst_temps = .{.{ .cc = cc }}, |
| 11150 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 14295 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 11151 | .each = .{ .once = &.{ | 14296 | .each = .{ .once = &.{ |
| 11152 | .{ ._, ._, .call, .tmp0p, ._, ._, ._ }, | 14297 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 11153 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, | 14298 | .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ }, |
| 11154 | } }, | 14299 | } }, |
| 11155 | } }, | 14300 | } }, |
| ... | @@ -11753,7 +14898,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11753,7 +14898,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11753 | | 14898 | |
| 11754 | .err_return_trace => { | 14899 | .err_return_trace => { |
| 11755 | const ert: Temp = .{ .index = err_ret_trace_index }; | 14900 | const ert: Temp = .{ .index = err_ret_trace_index }; |
| 11756 | try ert.moveTo(inst, cg); | 14901 | try ert.finish(inst, &.{}, &.{}, cg); |
| 11757 | }, | 14902 | }, |
| 11758 | .set_err_return_trace => { | 14903 | .set_err_return_trace => { |
| 11759 | const un_op = air_datas[@intFromEnum(inst)].un_op; | 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,7 +14933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11788 | var ert: Temp = .{ .index = err_ret_trace_index }; | 14933 | var ert: Temp = .{ .index = err_ret_trace_index }; |
| 11789 | var res = try ert.load(.usize, .{ .disp = @intCast(agg_ty.structFieldOffset(ty_pl.payload, zcu)) }, cg); | 14934 | var res = try ert.load(.usize, .{ .disp = @intCast(agg_ty.structFieldOffset(ty_pl.payload, zcu)) }, cg); |
| 11790 | try ert.die(cg); | 14935 | try ert.die(cg); |
| 11791 | try res.moveTo(inst, cg); | 14936 | try res.finish(inst, &.{}, &.{}, cg); |
| 11792 | }, | 14937 | }, |
| 11793 | | 14938 | |
| 11794 | .vector_store_elem => return cg.fail("TODO implement vector_store_elem", .{}), | 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,7 +26258,11 @@ fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index |
| 23113 | .resurrect = true, | 26258 | .resurrect = true, |
| 23114 | .close_scope = true, | 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 | if (std.debug.runtime_safety) assert(self.inst_tracking.getIndex(inst).? == inst_tracking_i); | 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,13 +27772,15 @@ fn moveStrategy(self: *CodeGen, ty: Type, class: Register.Class, aligned: bool) |
| 24623 | 64 => switch (ty.vectorLen(zcu)) { | 27772 | 64 => switch (ty.vectorLen(zcu)) { |
| 24624 | 1...2 => return .{ .move = if (self.hasFeature(.avx)) | 27773 | 1...2 => return .{ .move = if (self.hasFeature(.avx)) |
| 24625 | .{ .v_pd, if (aligned) .mova else .movu } | 27774 | .{ .v_pd, if (aligned) .mova else .movu } |
| | 27775 | else if (self.hasFeature(.sse2)) |
| | 27776 | .{ ._pd, if (aligned) .mova else .movu } |
| 24626 | else | 27777 | else |
| 24627 | .{ ._pd, if (aligned) .mova else .movu } }, | 27778 | .{ ._ps, if (aligned) .mova else .movu } }, |
| 24628 | 3...4 => if (self.hasFeature(.avx)) | 27779 | 3...4 => if (self.hasFeature(.avx)) |
| 24629 | return .{ .move = .{ .v_pd, if (aligned) .mova else .movu } }, | 27780 | return .{ .move = .{ .v_pd, if (aligned) .mova else .movu } }, |
| 24630 | else => {}, | 27781 | else => {}, |
| 24631 | }, | 27782 | }, |
| 24632 | 128 => switch (ty.vectorLen(zcu)) { | 27783 | 80, 128 => switch (ty.vectorLen(zcu)) { |
| 24633 | 1 => return .{ .move = if (self.hasFeature(.avx)) | 27784 | 1 => return .{ .move = if (self.hasFeature(.avx)) |
| 24634 | .{ if (aligned) .v_dqa else .v_dqu, .mov } | 27785 | .{ if (aligned) .v_dqa else .v_dqu, .mov } |
| 24635 | else if (self.hasFeature(.sse2)) | 27786 | else if (self.hasFeature(.sse2)) |
| ... | @@ -24958,7 +28109,7 @@ fn genSetReg( | ... | @@ -24958,7 +28109,7 @@ fn genSetReg( |
| 24958 | }, | 28109 | }, |
| 24959 | .mmx => unreachable, | 28110 | .mmx => unreachable, |
| 24960 | .sse => switch (src_reg.class()) { | 28111 | .sse => switch (src_reg.class()) { |
| 24961 | .general_purpose => try self.asmRegisterRegister( | 28112 | .general_purpose => if (self.hasFeature(.sse2)) try self.asmRegisterRegister( |
| 24962 | switch (abi_size) { | 28113 | switch (abi_size) { |
| 24963 | 1...4 => if (self.hasFeature(.avx)) .{ .v_d, .mov } else .{ ._d, .mov }, | 28114 | 1...4 => if (self.hasFeature(.avx)) .{ .v_d, .mov } else .{ ._d, .mov }, |
| 24964 | 5...8 => if (self.hasFeature(.avx)) .{ .v_q, .mov } else .{ ._q, .mov }, | 28115 | 5...8 => if (self.hasFeature(.avx)) .{ .v_q, .mov } else .{ ._q, .mov }, |
| ... | @@ -24966,7 +28117,26 @@ fn genSetReg( | ... | @@ -24966,7 +28117,26 @@ fn genSetReg( |
| 24966 | }, | 28117 | }, |
| 24967 | dst_reg.to128(), | 28118 | dst_reg.to128(), |
| 24968 | registerAlias(src_reg, @max(abi_size, 4)), | 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 | .segment => try self.genSetReg( | 28140 | .segment => try self.genSetReg( |
| 24971 | dst_reg, | 28141 | dst_reg, |
| 24972 | ty, | 28142 | ty, |
| ... | @@ -24977,7 +28147,12 @@ fn genSetReg( | ... | @@ -24977,7 +28147,12 @@ fn genSetReg( |
| 24977 | .sse => try self.asmRegisterRegister( | 28147 | .sse => try self.asmRegisterRegister( |
| 24978 | @as(?Mir.Inst.FixedTag, switch (ty.scalarType(zcu).zigTypeTag(zcu)) { | 28148 | @as(?Mir.Inst.FixedTag, switch (ty.scalarType(zcu).zigTypeTag(zcu)) { |
| 24979 | else => switch (abi_size) { | 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 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, | 28156 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, |
| 24982 | else => null, | 28157 | else => null, |
| 24983 | }, | 28158 | }, |
| ... | @@ -24985,13 +28160,20 @@ fn genSetReg( | ... | @@ -24985,13 +28160,20 @@ fn genSetReg( |
| 24985 | 16, 128 => switch (abi_size) { | 28160 | 16, 128 => switch (abi_size) { |
| 24986 | 2...16 => if (self.hasFeature(.avx)) | 28161 | 2...16 => if (self.hasFeature(.avx)) |
| 24987 | .{ .v_dqa, .mov } | 28162 | .{ .v_dqa, .mov } |
| | 28163 | else if (self.hasFeature(.sse2)) |
| | 28164 | .{ ._dqa, .mov } |
| 24988 | else | 28165 | else |
| 24989 | .{ ._dqa, .mov }, | 28166 | .{ ._ps, .mova }, |
| 24990 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, | 28167 | 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null, |
| 24991 | else => null, | 28168 | else => null, |
| 24992 | }, | 28169 | }, |
| 24993 | 32 => if (self.hasFeature(.avx)) .{ .v_ps, .mova } else .{ ._ps, .mova }, | 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 | 80 => null, | 28177 | 80 => null, |
| 24996 | else => unreachable, | 28178 | else => unreachable, |
| 24997 | }, | 28179 | }, |
| ... | @@ -25688,15 +28870,19 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -25688,15 +28870,19 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void { |
| 25688 | const src_lock = if (src_mcv.getReg()) |src_reg| self.register_manager.lockReg(src_reg) else null; | 28870 | const src_lock = if (src_mcv.getReg()) |src_reg| self.register_manager.lockReg(src_reg) else null; |
| 25689 | defer if (src_lock) |lock| self.register_manager.unlockReg(lock); | 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 | dst_rc.supersetOf(src_rc) and dst_ty.abiSize(zcu) <= src_ty.abiSize(zcu) and | 28875 | dst_rc.supersetOf(src_rc) and dst_ty.abiSize(zcu) <= src_ty.abiSize(zcu) and |
| 25693 | dst_ty.abiAlignment(zcu).order(src_ty.abiAlignment(zcu)).compare(.lte) and | 28876 | dst_ty.abiAlignment(zcu).order(src_ty.abiAlignment(zcu)).compare(.lte) and |
| 25694 | self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) src_mcv else dst: { | 28877 | self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) src_mcv else dst: { |
| 25695 | const dst_mcv = try self.allocRegOrMem(inst, true); | 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))) { | 28879 | try self.genCopy(switch (src_mcv) { |
| 25697 | .lt => dst_ty, | 28880 | else => switch (std.math.order(dst_ty.abiSize(zcu), src_ty.abiSize(zcu))) { |
| 25698 | .eq => if (!dst_mcv.isBase() or src_mcv.isBase()) dst_ty else src_ty, | 28881 | .lt => dst_ty, |
| 25699 | .gt => src_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 | }, dst_mcv, src_mcv, .{}); | 28886 | }, dst_mcv, src_mcv, .{}); |
| 25701 | break :dst dst_mcv; | 28887 | break :dst dst_mcv; |
| 25702 | }; | 28888 | }; |
| ... | @@ -31173,7 +34359,7 @@ const Select = struct { | ... | @@ -31173,7 +34359,7 @@ const Select = struct { |
| 31173 | dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any), | 34359 | dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any), |
| 31174 | src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any), | 34360 | src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any), |
| 31175 | patterns: []const Select.Pattern, | 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 | extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused), | 34363 | extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused), |
| 31178 | dst_temps: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]TempSpec.Kind = @splat(.unused), | 34364 | dst_temps: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]TempSpec.Kind = @splat(.unused), |
| 31179 | clobbers: packed struct { | 34365 | clobbers: packed struct { |
| ... | @@ -31202,14 +34388,16 @@ const Select = struct { | ... | @@ -31202,14 +34388,16 @@ const Select = struct { |
| 31202 | multiple_size: Memory.Size, | 34388 | multiple_size: Memory.Size, |
| 31203 | int: Memory.Size, | 34389 | int: Memory.Size, |
| 31204 | scalar_int_is: Memory.Size, | 34390 | scalar_int_is: Memory.Size, |
| 31205 | scalar_int: struct { of: Memory.Size, is: Memory.Size }, | 34391 | scalar_int: OfIsSizes, |
| 31206 | scalar_signed_int: Memory.Size, | 34392 | scalar_signed_int: Memory.Size, |
| 31207 | scalar_unsigned_int: Memory.Size, | 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 | float: Memory.Size, | 34396 | float: Memory.Size, |
| 31210 | scalar_float: struct { of: Memory.Size, is: Memory.Size }, | 34397 | scalar_any_float: Memory.Size, |
| 31211 | scalar_exact_float: struct { of: Memory.Size, is: Memory.Size }, | 34398 | scalar_float: OfIsSizes, |
| 31212 | multiple_scalar_int: struct { of: Memory.Size, is: Memory.Size }, | 34399 | multiple_scalar_any_float: Memory.Size, |
| | 34400 | multiple_scalar_float: OfIsSizes, |
| 31213 | exact_int: u16, | 34401 | exact_int: u16, |
| 31214 | exact_signed_int: u16, | 34402 | exact_signed_int: u16, |
| 31215 | exact_unsigned_int: u16, | 34403 | exact_unsigned_int: u16, |
| ... | @@ -31218,16 +34406,18 @@ const Select = struct { | ... | @@ -31218,16 +34406,18 @@ const Select = struct { |
| 31218 | po2_int: Memory.Size, | 34406 | po2_int: Memory.Size, |
| 31219 | signed_po2_int: Memory.Size, | 34407 | signed_po2_int: Memory.Size, |
| 31220 | unsigned_po2_or_exact_int: Memory.Size, | 34408 | unsigned_po2_or_exact_int: Memory.Size, |
| 31221 | remainder_int: struct { of: Memory.Size, is: Memory.Size }, | 34409 | remainder_int: OfIsSizes, |
| 31222 | exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, | 34410 | exact_remainder_int: OfIsSizes, |
| 31223 | signed_or_exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, | 34411 | signed_or_exact_remainder_int: OfIsSizes, |
| 31224 | unsigned_or_exact_remainder_int: struct { of: Memory.Size, is: Memory.Size }, | 34412 | unsigned_or_exact_remainder_int: OfIsSizes, |
| 31225 | signed_int: Memory.Size, | 34413 | signed_int: Memory.Size, |
| 31226 | unsigned_int: Memory.Size, | 34414 | unsigned_int: Memory.Size, |
| 31227 | elem_size_is: u8, | 34415 | elem_size_is: u8, |
| 31228 | po2_elem_size, | 34416 | po2_elem_size, |
| 31229 | elem_int: Memory.Size, | 34417 | elem_int: Memory.Size, |
| 31230 | | 34418 | |
| | 34419 | const OfIsSizes = struct { of: Memory.Size, is: Memory.Size }; |
| | 34420 | |
| 31231 | fn accepts(constraint: Constraint, ty: Type, cg: *CodeGen) bool { | 34421 | fn accepts(constraint: Constraint, ty: Type, cg: *CodeGen) bool { |
| 31232 | const zcu = cg.pt.zcu; | 34422 | const zcu = cg.pt.zcu; |
| 31233 | return switch (constraint) { | 34423 | return switch (constraint) { |
| ... | @@ -31258,7 +34448,7 @@ const Select = struct { | ... | @@ -31258,7 +34448,7 @@ const Select = struct { |
| 31258 | size.bitSize(cg.target) >= int_info.bits | 34448 | size.bitSize(cg.target) >= int_info.bits |
| 31259 | else | 34449 | else |
| 31260 | false, | 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 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, | 34452 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 31263 | .scalar_signed_int => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info| switch (int_info.signedness) { | 34453 | .scalar_signed_int => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info| switch (int_info.signedness) { |
| 31264 | .signed => size.bitSize(cg.target) >= int_info.bits, | 34454 | .signed => size.bitSize(cg.target) >= int_info.bits, |
| ... | @@ -31275,9 +34465,13 @@ const Select = struct { | ... | @@ -31275,9 +34465,13 @@ const Select = struct { |
| 31275 | else | 34465 | else |
| 31276 | false, | 34466 | false, |
| 31277 | .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false, | 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 | 34468 | .scalar_any_float => |size| @divExact(size.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, | 34469 | cg.floatBits(ty.scalarType(zcu)) != null, |
| 31280 | .scalar_exact_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= ty.abiSize(zcu) and | 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 | if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false, | 34475 | if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false, |
| 31282 | .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false, | 34476 | .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false, |
| 31283 | .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { | 34477 | .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { |
| ... | @@ -31505,48 +34699,81 @@ const Select = struct { | ... | @@ -31505,48 +34699,81 @@ const Select = struct { |
| 31505 | unused, | 34699 | unused, |
| 31506 | any, | 34700 | any, |
| 31507 | cc: Condition, | 34701 | cc: Condition, |
| | 34702 | ref: Select.Operand.Ref, |
| 31508 | reg: Register, | 34703 | reg: Register, |
| 31509 | rc: Register.Class, | 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 | rc_mask: struct { rc: Register.Class, info: MaskInfo }, | 34707 | rc_mask: struct { rc: Register.Class, info: MaskInfo }, |
| | 34708 | mut_rc_mask: struct { ref: Select.Operand.Ref, rc: Register.Class, info: MaskInfo }, |
| 31511 | mem, | 34709 | mem, |
| 31512 | smin_mem: ConstInfo, | 34710 | smin_mem: ConstInfo, |
| 31513 | smax_mem: ConstInfo, | 34711 | smax_mem: ConstInfo, |
| 31514 | umin_mem: ConstInfo, | 34712 | umin_mem: ConstInfo, |
| 31515 | umax_mem: ConstInfo, | 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 | symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, | 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 | fn finish(kind: Kind, temp: Temp, s: *const Select) void { | 34718 | fn finish(kind: Kind, temp: Temp, s: *const Select) void { |
| 31524 | switch (kind) { | 34719 | switch (kind) { |
| 31525 | else => {}, | 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 | const cg = s.cg; | 34735 | const cg = s.cg; |
| 31533 | return switch (spec.kind) { | 34736 | return switch (spec.kind) { |
| 31534 | .unused => null, | 34737 | .unused => unreachable, |
| 31535 | .any => try cg.tempAlloc(spec.type), | 34738 | .any => try cg.tempAlloc(spec.type), |
| 31536 | .cc => |cc| try cg.tempInit(spec.type, .{ .eflags = cc }), | 34739 | .cc => |cc| try cg.tempInit(spec.type, .{ .eflags = cc }), |
| | 34740 | .ref => |ref| ref.deref(s), |
| 31537 | .reg => |reg| try cg.tempInit(spec.type, .{ .register = reg }), | 34741 | .reg => |reg| try cg.tempInit(spec.type, .{ .register = reg }), |
| 31538 | .rc => |rc| try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), | 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 | .rc_mask => |rc_mask| try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), | 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 | .mem => try cg.tempAllocMem(spec.type), | 34763 | .mem => try cg.tempAllocMem(spec.type), |
| 31541 | .smin_mem, .smax_mem, .umin_mem, .umax_mem => |const_info| { | 34764 | .smin_mem, .smax_mem, .umin_mem, .umax_mem => |const_info| { |
| 31542 | const pt = cg.pt; | 34765 | const pt = cg.pt; |
| 31543 | const zcu = pt.zcu; | 34766 | const zcu = pt.zcu; |
| 31544 | const ip = &zcu.intern_pool; | 34767 | const ip = &zcu.intern_pool; |
| 31545 | const ty = const_info.ref.deref(s).typeOf(s.cg); | 34768 | const ty = const_info.ref.deref(s).typeOf(cg); |
| 31546 | const vector_len: ?u32, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { | 34769 | const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { |
| 31547 | else => .{ if (const_info.vectorize) 1 else null, ty }, | 34770 | else => .{ null, ty }, |
| 31548 | .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) }, | 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 | const res_scalar_ty, const res_scalar_val: Value = res_scalar: switch (scalar_ty.toIntern()) { | 34777 | const res_scalar_ty, const res_scalar_val: Value = res_scalar: switch (scalar_ty.toIntern()) { |
| 31551 | .bool_type => .{ | 34778 | .bool_type => .{ |
| 31552 | scalar_ty, | 34779 | scalar_ty, |
| ... | @@ -31591,7 +34818,7 @@ const Select = struct { | ... | @@ -31591,7 +34818,7 @@ const Select = struct { |
| 31591 | break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) }; | 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 | .ty = (try pt.vectorType(.{ | 34822 | .ty = (try pt.vectorType(.{ |
| 31596 | .len = len, | 34823 | .len = len, |
| 31597 | .child = res_scalar_ty.toIntern(), | 34824 | .child = res_scalar_ty.toIntern(), |
| ... | @@ -31600,17 +34827,6 @@ const Select = struct { | ... | @@ -31600,17 +34827,6 @@ const Select = struct { |
| 31600 | } })) else res_scalar_val; | 34827 | } })) else res_scalar_val; |
| 31601 | return try cg.tempFromValue(res_val); | 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 | .symbol => |symbol| if (cg.bin_file.cast(.elf)) |elf_file| try cg.tempInit(spec.type, .{ .lea_symbol = .{ | 34830 | .symbol => |symbol| if (cg.bin_file.cast(.elf)) |elf_file| try cg.tempInit(spec.type, .{ .lea_symbol = .{ |
| 31615 | .sym_index = try elf_file.getGlobalSymbol(symbol.name, symbol.lib), | 34831 | .sym_index = try elf_file.getGlobalSymbol(symbol.name, symbol.lib), |
| 31616 | } }) else if (cg.bin_file.cast(.macho)) |macho_file| try cg.tempInit(spec.type, .{ .lea_symbol = .{ | 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,6 +34923,9 @@ const Select = struct { |
| 31707 | tmp3, | 34923 | tmp3, |
| 31708 | tmp4, | 34924 | tmp4, |
| 31709 | tmp5, | 34925 | tmp5, |
| | 34926 | tmp6, |
| | 34927 | tmp7, |
| | 34928 | tmp8, |
| 31710 | dst0, | 34929 | dst0, |
| 31711 | src0, | 34930 | src0, |
| 31712 | src1, | 34931 | src1, |
| ... | @@ -31778,6 +34997,36 @@ const Select = struct { | ... | @@ -31778,6 +34997,36 @@ const Select = struct { |
| 31778 | const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; | 34997 | const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; |
| 31779 | const tmp5y: Sized = .{ .ref = .tmp5, .size = .yword }; | 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 | const dst0: Sized = .{ .ref = .dst0, .size = .none }; | 35030 | const dst0: Sized = .{ .ref = .dst0, .size = .none }; |
| 31782 | const dst0b: Sized = .{ .ref = .dst0, .size = .byte }; | 35031 | const dst0b: Sized = .{ .ref = .dst0, .size = .byte }; |
| 31783 | const dst0w: Sized = .{ .ref = .dst0, .size = .word }; | 35032 | const dst0w: Sized = .{ .ref = .dst0, .size = .word }; |
| ... | @@ -31875,6 +35124,33 @@ const Select = struct { | ... | @@ -31875,6 +35124,33 @@ const Select = struct { |
| 31875 | const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x }; | 35124 | const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x }; |
| 31876 | const tmp5y: Select.Operand = .{ .tag = .ref, .base = .tmp5y }; | 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 | const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b }; | 35154 | const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b }; |
| 31879 | const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w }; | 35155 | const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w }; |
| 31880 | const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d }; | 35156 | const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d }; |
| ... | @@ -32204,14 +35480,20 @@ fn select( | ... | @@ -32204,14 +35480,20 @@ fn select( |
| 32204 | const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; | 35480 | const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; |
| 32205 | | 35481 | |
| 32206 | caller_preserved: { | 35482 | caller_preserved: { |
| 32207 | switch (switch (case.clobbers.caller_preserved) { | 35483 | const cc = switch (case.clobbers.caller_preserved) { |
| 32208 | .none => break :caller_preserved, | 35484 | .none => break :caller_preserved, |
| 32209 | .ccc => cg.target.cCallingConvention().?, | 35485 | .ccc => cg.target.cCallingConvention().?, |
| 32210 | .zigcc => .auto, | 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 | else => unreachable, | 35493 | else => unreachable, |
| 32213 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| { | 35494 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| skip: { |
| 32214 | const tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse continue; | 35495 | if (reg == err_ret_trace_reg) break :skip; |
| | 35496 | const tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse break :skip; |
| 32215 | try cg.register_manager.getRegIndex(tracked_index, null); | 35497 | try cg.register_manager.getRegIndex(tracked_index, null); |
| 32216 | assert(cg.register_manager.lockRegIndexAssumeUnused(tracked_index).tracked_index == tracked_index); | 35498 | assert(cg.register_manager.lockRegIndexAssumeUnused(tracked_index).tracked_index == tracked_index); |
| 32217 | }, | 35499 | }, |
| ... | @@ -32220,7 +35502,9 @@ fn select( | ... | @@ -32220,7 +35502,9 @@ fn select( |
| 32220 | | 35502 | |
| 32221 | @memcpy(src_slots[0..src_temps.len], src_temps); | 35503 | @memcpy(src_slots[0..src_temps.len], src_temps); |
| 32222 | std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); | 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 | while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { | 35509 | while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { |
| 32226 | if (try src_pattern.convert(src_temp, cg)) break; | 35510 | if (try src_pattern.convert(src_temp, cg)) break; |
| ... | @@ -32231,7 +35515,7 @@ fn select( | ... | @@ -32231,7 +35515,7 @@ fn select( |
| 32231 | if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); | 35515 | if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); |
| 32232 | | 35516 | |
| 32233 | for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| | 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 | @memcpy(dst_slots[0..dst_temps.len], dst_temps); | 35519 | @memcpy(dst_slots[0..dst_temps.len], dst_temps); |
| 32236 | | 35520 | |
| 32237 | switch (case.each) { | 35521 | switch (case.each) { |
| ... | @@ -32243,16 +35527,20 @@ fn select( | ... | @@ -32243,16 +35527,20 @@ fn select( |
| 32243 | assert(s.top == 0); | 35527 | assert(s.top == 0); |
| 32244 | | 35528 | |
| 32245 | caller_preserved: { | 35529 | caller_preserved: { |
| 32246 | switch (switch (case.clobbers.caller_preserved) { | 35530 | const cc = switch (case.clobbers.caller_preserved) { |
| 32247 | .none => break :caller_preserved, | 35531 | .none => break :caller_preserved, |
| 32248 | .ccc => cg.target.cCallingConvention().?, | 35532 | .ccc => cg.target.cCallingConvention().?, |
| 32249 | .zigcc => .auto, | 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 | else => unreachable, | 35540 | else => unreachable, |
| 32252 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| { | 35541 | inline .x86_64_sysv, .x86_64_win, .auto => |_, tag| inline for (comptime abi.getCallerPreservedRegs(tag)) |reg| skip: { |
| 32253 | cg.register_manager.unlockReg(.{ | 35542 | if (reg == err_ret_trace_reg) break :skip; |
| 32254 | .tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse continue, | 35543 | cg.register_manager.unlockReg(.{ .tracked_index = RegisterManager.indexOfKnownRegIntoTracked(reg) orelse break :skip }); |
| 32255 | }); | | |
| 32256 | }, | 35544 | }, |
| 32257 | } | 35545 | } |
| 32258 | } | 35546 | } |