| ... | @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2414 | } | 2414 | } |
| 2415 | | 2415 | |
| 2416 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | 2416 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2417 | @setEvalBranchQuota(3_900); | 2417 | @setEvalBranchQuota(4_100); |
| 2418 | const pt = cg.pt; | 2418 | const pt = cg.pt; |
| 2419 | const zcu = pt.zcu; | 2419 | const zcu = pt.zcu; |
| 2420 | const ip = &zcu.intern_pool; | 2420 | const ip = &zcu.intern_pool; |
| ... | @@ -5567,13 +5567,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5567,13 +5567,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5567 | .dst_temps = .{.mem}, | 5567 | .dst_temps = .{.mem}, |
| 5568 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5568 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5569 | .each = .{ .once = &.{ | 5569 | .each = .{ .once = &.{ |
| 5570 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5570 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5571 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, | 5571 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 5572 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, | 5572 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, |
| 5573 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, | 5573 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, |
| 5574 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 5574 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5575 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | 5575 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 5576 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 5576 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5577 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5577 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5578 | } }, | 5578 | } }, |
| 5579 | }, .{ | 5579 | }, .{ |
| ... | @@ -5600,14 +5600,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5600,14 +5600,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5600 | .dst_temps = .{.mem}, | 5600 | .dst_temps = .{.mem}, |
| 5601 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5601 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5602 | .each = .{ .once = &.{ | 5602 | .each = .{ .once = &.{ |
| 5603 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5603 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5604 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 5604 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5605 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 5605 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5606 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 5606 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| 5607 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, | 5607 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| 5608 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 5608 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5609 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | 5609 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 5610 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 5610 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5611 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5611 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5612 | } }, | 5612 | } }, |
| 5613 | }, .{ | 5613 | }, .{ |
| ... | @@ -5634,7 +5634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5634,7 +5634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5634 | .dst_temps = .{.mem}, | 5634 | .dst_temps = .{.mem}, |
| 5635 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5635 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5636 | .each = .{ .once = &.{ | 5636 | .each = .{ .once = &.{ |
| 5637 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5637 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5638 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 5638 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5639 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 5639 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5640 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 5640 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| ... | @@ -5642,7 +5642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5642,7 +5642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5642 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 5642 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5643 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, | 5643 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| 5644 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, | 5644 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, |
| 5645 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 5645 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5646 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5646 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5647 | } }, | 5647 | } }, |
| 5648 | }, .{ | 5648 | }, .{ |
| ... | @@ -5657,7 +5657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5657,7 +5657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5657 | .call_frame = .{ .alignment = .@"16" }, | 5657 | .call_frame = .{ .alignment = .@"16" }, |
| 5658 | .extra_temps = .{ | 5658 | .extra_temps = .{ |
| 5659 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 5659 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5660 | .{ .type = .f16, .kind = .{ .reg = .eax } }, | 5660 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 5661 | .{ .type = .f32, .kind = .mem }, | 5661 | .{ .type = .f32, .kind = .mem }, |
| 5662 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 5662 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5663 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 5663 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| ... | @@ -5669,7 +5669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5669,7 +5669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5669 | .dst_temps = .{.mem}, | 5669 | .dst_temps = .{.mem}, |
| 5670 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 5670 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5671 | .each = .{ .once = &.{ | 5671 | .each = .{ .once = &.{ |
| 5672 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5672 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5673 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 5673 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| 5674 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 5674 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 5675 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 5675 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| ... | @@ -5680,7 +5680,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5680,7 +5680,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5680 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, | 5680 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| 5681 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, | 5681 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| 5682 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | 5682 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| 5683 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 5683 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5684 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5684 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5685 | } }, | 5685 | } }, |
| 5686 | }, .{ | 5686 | }, .{ |
| ... | @@ -5878,14 +5878,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5878,14 +5878,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5878 | .dst_temps = .{.mem}, | 5878 | .dst_temps = .{.mem}, |
| 5879 | .clobbers = .{ .eflags = true }, | 5879 | .clobbers = .{ .eflags = true }, |
| 5880 | .each = .{ .once = &.{ | 5880 | .each = .{ .once = &.{ |
| 5881 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5881 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5882 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 5882 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 5883 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 5883 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 5884 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | 5884 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 5885 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, | 5885 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 5886 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 5886 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 5887 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 5887 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 5888 | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, | 5888 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 5889 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5889 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5890 | } }, | 5890 | } }, |
| 5891 | }, .{ | 5891 | }, .{ |
| ... | @@ -5911,7 +5911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5911,7 +5911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5911 | .dst_temps = .{.mem}, | 5911 | .dst_temps = .{.mem}, |
| 5912 | .clobbers = .{ .eflags = true }, | 5912 | .clobbers = .{ .eflags = true }, |
| 5913 | .each = .{ .once = &.{ | 5913 | .each = .{ .once = &.{ |
| 5914 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5914 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5915 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5915 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 5916 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5916 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 5917 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 5917 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -5919,7 +5919,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5919,7 +5919,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5919 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 5919 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 5920 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 5920 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 5921 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 5921 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 5922 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 5922 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5923 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5923 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5924 | } }, | 5924 | } }, |
| 5925 | }, .{ | 5925 | }, .{ |
| ... | @@ -5945,7 +5945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5945,7 +5945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5945 | .dst_temps = .{.mem}, | 5945 | .dst_temps = .{.mem}, |
| 5946 | .clobbers = .{ .eflags = true }, | 5946 | .clobbers = .{ .eflags = true }, |
| 5947 | .each = .{ .once = &.{ | 5947 | .each = .{ .once = &.{ |
| 5948 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 5948 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5949 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 5949 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 5950 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 5950 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 5951 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 5951 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -5955,7 +5955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -5955,7 +5955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5955 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, | 5955 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 5956 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 5956 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 5957 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 5957 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 5958 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 5958 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5959 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 5959 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5960 | } }, | 5960 | } }, |
| 5961 | }, .{ | 5961 | }, .{ |
| ... | @@ -6179,14 +6179,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6179,14 +6179,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6179 | .dst_temps = .{.mem}, | 6179 | .dst_temps = .{.mem}, |
| 6180 | .clobbers = .{ .eflags = true }, | 6180 | .clobbers = .{ .eflags = true }, |
| 6181 | .each = .{ .once = &.{ | 6181 | .each = .{ .once = &.{ |
| 6182 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6182 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6183 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 6183 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 6184 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 6184 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 6185 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | 6185 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 6186 | .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, | 6186 | .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 6187 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 6187 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 6188 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 6188 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 6189 | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, | 6189 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 6190 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6190 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6191 | } }, | 6191 | } }, |
| 6192 | }, .{ | 6192 | }, .{ |
| ... | @@ -6212,7 +6212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6212,7 +6212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6212 | .dst_temps = .{.mem}, | 6212 | .dst_temps = .{.mem}, |
| 6213 | .clobbers = .{ .eflags = true }, | 6213 | .clobbers = .{ .eflags = true }, |
| 6214 | .each = .{ .once = &.{ | 6214 | .each = .{ .once = &.{ |
| 6215 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6215 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6216 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 6216 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6217 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 6217 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6218 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 6218 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -6220,7 +6220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6220,7 +6220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6220 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 6220 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 6221 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 6221 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 6222 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 6222 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 6223 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 6223 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6224 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6224 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6225 | } }, | 6225 | } }, |
| 6226 | }, .{ | 6226 | }, .{ |
| ... | @@ -6246,7 +6246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6246,7 +6246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6246 | .dst_temps = .{.mem}, | 6246 | .dst_temps = .{.mem}, |
| 6247 | .clobbers = .{ .eflags = true }, | 6247 | .clobbers = .{ .eflags = true }, |
| 6248 | .each = .{ .once = &.{ | 6248 | .each = .{ .once = &.{ |
| 6249 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6249 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6250 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 6250 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6251 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 6251 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6252 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 6252 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -6256,7 +6256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6256,7 +6256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6256 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, | 6256 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 6257 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 6257 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 6258 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 6258 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6259 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 6259 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6260 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6260 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6261 | } }, | 6261 | } }, |
| 6262 | }, .{ | 6262 | }, .{ |
| ... | @@ -6283,14 +6283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6283,14 +6283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6283 | .dst_temps = .{.mem}, | 6283 | .dst_temps = .{.mem}, |
| 6284 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 6284 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6285 | .each = .{ .once = &.{ | 6285 | .each = .{ .once = &.{ |
| 6286 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6286 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6287 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, | 6287 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 6288 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, | 6288 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 6289 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 6289 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 6290 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 6290 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 6291 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 6291 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6292 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | 6292 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| 6293 | .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ }, | 6293 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 6294 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6294 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6295 | } }, | 6295 | } }, |
| 6296 | }, .{ | 6296 | }, .{ |
| ... | @@ -6580,12 +6580,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6580,12 +6580,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6580 | .dst_temps = .{.mem}, | 6580 | .dst_temps = .{.mem}, |
| 6581 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 6581 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6582 | .each = .{ .once = &.{ | 6582 | .each = .{ .once = &.{ |
| 6583 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6583 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6584 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 6584 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6585 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 6585 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6586 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 6586 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6587 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 6587 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6588 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 6588 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6589 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6589 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6590 | } }, | 6590 | } }, |
| 6591 | }, .{ | 6591 | }, .{ |
| ... | @@ -6612,12 +6612,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6612,12 +6612,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6612 | .dst_temps = .{.mem}, | 6612 | .dst_temps = .{.mem}, |
| 6613 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 6613 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6614 | .each = .{ .once = &.{ | 6614 | .each = .{ .once = &.{ |
| 6615 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6615 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6616 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 6616 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6617 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 6617 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6618 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 6618 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6619 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 6619 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6620 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 6620 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6621 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6621 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6622 | } }, | 6622 | } }, |
| 6623 | }, .{ | 6623 | }, .{ |
| ... | @@ -6644,12 +6644,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -6644,12 +6644,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6644 | .dst_temps = .{.mem}, | 6644 | .dst_temps = .{.mem}, |
| 6645 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 6645 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6646 | .each = .{ .once = &.{ | 6646 | .each = .{ .once = &.{ |
| 6647 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 6647 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6648 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 6648 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6649 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 6649 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6650 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 6650 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6651 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 6651 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6652 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 6652 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6653 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 6653 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6654 | } }, | 6654 | } }, |
| 6655 | } }) catch |err| switch (err) { | 6655 | } }) catch |err| switch (err) { |
| ... | @@ -9411,13 +9411,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9411,13 +9411,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9411 | .dst_temps = .{.mem}, | 9411 | .dst_temps = .{.mem}, |
| 9412 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 9412 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9413 | .each = .{ .once = &.{ | 9413 | .each = .{ .once = &.{ |
| 9414 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9414 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9415 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, | 9415 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 9416 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, | 9416 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, |
| 9417 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, | 9417 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, |
| 9418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 9418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9419 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | 9419 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 9420 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 9420 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9422 | } }, | 9422 | } }, |
| 9423 | }, .{ | 9423 | }, .{ |
| ... | @@ -9444,14 +9444,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9444,14 +9444,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9444 | .dst_temps = .{.mem}, | 9444 | .dst_temps = .{.mem}, |
| 9445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 9445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9446 | .each = .{ .once = &.{ | 9446 | .each = .{ .once = &.{ |
| 9447 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9448 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 9448 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9449 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 9449 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9450 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 9450 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| 9451 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, | 9451 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| 9452 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 9452 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9453 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, | 9453 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 9454 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 9454 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9455 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9455 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9456 | } }, | 9456 | } }, |
| 9457 | }, .{ | 9457 | }, .{ |
| ... | @@ -9478,7 +9478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9478,7 +9478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9478 | .dst_temps = .{.mem}, | 9478 | .dst_temps = .{.mem}, |
| 9479 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 9479 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9480 | .each = .{ .once = &.{ | 9480 | .each = .{ .once = &.{ |
| 9481 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9481 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9482 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 9482 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9483 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, | 9483 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9484 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, | 9484 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| ... | @@ -9486,7 +9486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9486,7 +9486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9486 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 9486 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9487 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, | 9487 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| 9488 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, | 9488 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, |
| 9489 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 9489 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9490 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9490 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9491 | } }, | 9491 | } }, |
| 9492 | }, .{ | 9492 | }, .{ |
| ... | @@ -9501,7 +9501,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9501,7 +9501,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9501 | .call_frame = .{ .alignment = .@"16" }, | 9501 | .call_frame = .{ .alignment = .@"16" }, |
| 9502 | .extra_temps = .{ | 9502 | .extra_temps = .{ |
| 9503 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 9503 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9504 | .{ .type = .f16, .kind = .{ .reg = .eax } }, | 9504 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 9505 | .{ .type = .f32, .kind = .mem }, | 9505 | .{ .type = .f32, .kind = .mem }, |
| 9506 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, | 9506 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9507 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, | 9507 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| ... | @@ -9513,7 +9513,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9513,7 +9513,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9513 | .dst_temps = .{.mem}, | 9513 | .dst_temps = .{.mem}, |
| 9514 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 9514 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9515 | .each = .{ .once = &.{ | 9515 | .each = .{ .once = &.{ |
| 9516 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9516 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9517 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, | 9517 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| 9518 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, | 9518 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 9519 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, | 9519 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| ... | @@ -9524,7 +9524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9524,7 +9524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9524 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, | 9524 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| 9525 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, | 9525 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| 9526 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, | 9526 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| 9527 | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, | 9527 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9528 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9528 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9529 | } }, | 9529 | } }, |
| 9530 | }, .{ | 9530 | }, .{ |
| ... | @@ -9722,14 +9722,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9722,14 +9722,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9722 | .dst_temps = .{.mem}, | 9722 | .dst_temps = .{.mem}, |
| 9723 | .clobbers = .{ .eflags = true }, | 9723 | .clobbers = .{ .eflags = true }, |
| 9724 | .each = .{ .once = &.{ | 9724 | .each = .{ .once = &.{ |
| 9725 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9725 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9726 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 9726 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 9727 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 9727 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 9728 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | 9728 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 9729 | .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, | 9729 | .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 9730 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 9730 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 9731 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 9731 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 9732 | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, | 9732 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 9733 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9733 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9734 | } }, | 9734 | } }, |
| 9735 | }, .{ | 9735 | }, .{ |
| ... | @@ -9755,7 +9755,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9755,7 +9755,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9755 | .dst_temps = .{.mem}, | 9755 | .dst_temps = .{.mem}, |
| 9756 | .clobbers = .{ .eflags = true }, | 9756 | .clobbers = .{ .eflags = true }, |
| 9757 | .each = .{ .once = &.{ | 9757 | .each = .{ .once = &.{ |
| 9758 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9758 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9759 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 9759 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9760 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 9760 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9761 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 9761 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -9763,7 +9763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9763,7 +9763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9763 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 9763 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 9764 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 9764 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 9765 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 9765 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 9766 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 9766 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9767 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9767 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9768 | } }, | 9768 | } }, |
| 9769 | }, .{ | 9769 | }, .{ |
| ... | @@ -9789,7 +9789,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9789,7 +9789,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9789 | .dst_temps = .{.mem}, | 9789 | .dst_temps = .{.mem}, |
| 9790 | .clobbers = .{ .eflags = true }, | 9790 | .clobbers = .{ .eflags = true }, |
| 9791 | .each = .{ .once = &.{ | 9791 | .each = .{ .once = &.{ |
| 9792 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 9792 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9793 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 9793 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9794 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 9794 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9795 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, | 9795 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -9799,7 +9799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -9799,7 +9799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9799 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, | 9799 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 9800 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 9800 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 9801 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 9801 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 9802 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 9802 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9803 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 9803 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9804 | } }, | 9804 | } }, |
| 9805 | }, .{ | 9805 | }, .{ |
| ... | @@ -10023,14 +10023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10023,14 +10023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10023 | .dst_temps = .{.mem}, | 10023 | .dst_temps = .{.mem}, |
| 10024 | .clobbers = .{ .eflags = true }, | 10024 | .clobbers = .{ .eflags = true }, |
| 10025 | .each = .{ .once = &.{ | 10025 | .each = .{ .once = &.{ |
| 10026 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10026 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10027 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, | 10027 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10028 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, | 10028 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 10029 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, | 10029 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 10030 | .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, | 10030 | .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 10031 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, | 10031 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 10032 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, | 10032 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 10033 | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, | 10033 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10034 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10034 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10035 | } }, | 10035 | } }, |
| 10036 | }, .{ | 10036 | }, .{ |
| ... | @@ -10056,7 +10056,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10056,7 +10056,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10056 | .dst_temps = .{.mem}, | 10056 | .dst_temps = .{.mem}, |
| 10057 | .clobbers = .{ .eflags = true }, | 10057 | .clobbers = .{ .eflags = true }, |
| 10058 | .each = .{ .once = &.{ | 10058 | .each = .{ .once = &.{ |
| 10059 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10059 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10060 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 10060 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10061 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 10061 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10062 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 10062 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -10064,7 +10064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10064,7 +10064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10064 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, | 10064 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 10065 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, | 10065 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 10066 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, | 10066 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 10067 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 10067 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10068 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10068 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10069 | } }, | 10069 | } }, |
| 10070 | }, .{ | 10070 | }, .{ |
| ... | @@ -10090,7 +10090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10090,7 +10090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10090 | .dst_temps = .{.mem}, | 10090 | .dst_temps = .{.mem}, |
| 10091 | .clobbers = .{ .eflags = true }, | 10091 | .clobbers = .{ .eflags = true }, |
| 10092 | .each = .{ .once = &.{ | 10092 | .each = .{ .once = &.{ |
| 10093 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10093 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10094 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 10094 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10095 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 10095 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10096 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, | 10096 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | @@ -10100,7 +10100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10100,7 +10100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10100 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, | 10100 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 10101 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, | 10101 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 10102 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 10102 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10103 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 10103 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10104 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10104 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10105 | } }, | 10105 | } }, |
| 10106 | }, .{ | 10106 | }, .{ |
| ... | @@ -10127,14 +10127,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10127,14 +10127,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10127 | .dst_temps = .{.mem}, | 10127 | .dst_temps = .{.mem}, |
| 10128 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 10128 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10129 | .each = .{ .once = &.{ | 10129 | .each = .{ .once = &.{ |
| 10130 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10130 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10131 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, | 10131 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 10132 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, | 10132 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 10133 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, | 10133 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 10134 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, | 10134 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 10135 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 10135 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10136 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, | 10136 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| 10137 | .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ }, | 10137 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 10138 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10138 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10139 | } }, | 10139 | } }, |
| 10140 | }, .{ | 10140 | }, .{ |
| ... | @@ -10412,12 +10412,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10412,12 +10412,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10412 | .dst_temps = .{.mem}, | 10412 | .dst_temps = .{.mem}, |
| 10413 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 10413 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10414 | .each = .{ .once = &.{ | 10414 | .each = .{ .once = &.{ |
| 10415 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10415 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10416 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 10416 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10417 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 10417 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 10418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10419 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 10419 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10420 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 10420 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10422 | } }, | 10422 | } }, |
| 10423 | }, .{ | 10423 | }, .{ |
| ... | @@ -10444,12 +10444,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10444,12 +10444,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10444 | .dst_temps = .{.mem}, | 10444 | .dst_temps = .{.mem}, |
| 10445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 10445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10446 | .each = .{ .once = &.{ | 10446 | .each = .{ .once = &.{ |
| 10447 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10448 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 10448 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10449 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 10449 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10450 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 10450 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10451 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 10451 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10452 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 10452 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10453 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10453 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10454 | } }, | 10454 | } }, |
| 10455 | }, .{ | 10455 | }, .{ |
| ... | @@ -10476,12 +10476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -10476,12 +10476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10476 | .dst_temps = .{.mem}, | 10476 | .dst_temps = .{.mem}, |
| 10477 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 10477 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10478 | .each = .{ .once = &.{ | 10478 | .each = .{ .once = &.{ |
| 10479 | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, | 10479 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10480 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, | 10480 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10481 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, | 10481 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10482 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, | 10482 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10483 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, | 10483 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10484 | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, | 10484 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10485 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 10485 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10486 | } }, | 10486 | } }, |
| 10487 | } }) catch |err| switch (err) { | 10487 | } }) catch |err| switch (err) { |
| ... | @@ -11990,13 +11990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -11990,13 +11990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11990 | }, | 11990 | }, |
| 11991 | .dst_temps = .{.mem}, | 11991 | .dst_temps = .{.mem}, |
| 11992 | .each = .{ .once = &.{ | 11992 | .each = .{ .once = &.{ |
| 11993 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ }, | 11993 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 11994 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, | 11994 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 11995 | .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_src0_unaligned_size), ._, ._ }, | 11995 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ }, |
| 11996 | .{ ._, ._, .xor, .tmp2q, .leaia(.qword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ }, | 11996 | .{ ._, ._, .xor, .tmp2q, .leai(.qword, .tmp1, .tmp0), ._, ._ }, |
| 11997 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_src0_unaligned_size), .tmp2q, ._, ._ }, | 11997 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ }, |
| 11998 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, | 11998 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ }, |
| 11999 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 11999 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| | 12000 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 12000 | } }, | 12001 | } }, |
| 12001 | }, .{ | 12002 | }, .{ |
| 12002 | .patterns = &.{ | 12003 | .patterns = &.{ |
| ... | @@ -12015,13 +12016,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -12015,13 +12016,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12015 | }, | 12016 | }, |
| 12016 | .dst_temps = .{.mem}, | 12017 | .dst_temps = .{.mem}, |
| 12017 | .each = .{ .once = &.{ | 12018 | .each = .{ .once = &.{ |
| 12018 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ }, | 12019 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 12019 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, | 12020 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 12020 | .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_src0_unaligned_size), ._, ._ }, | 12021 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ }, |
| 12021 | .{ ._, ._, .xor, .tmp2d, .leaia(.dword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ }, | 12022 | .{ ._, ._, .xor, .tmp2d, .leai(.dword, .tmp1, .tmp0), ._, ._ }, |
| 12022 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_src0_unaligned_size), .tmp2d, ._, ._ }, | 12023 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ }, |
| 12023 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, | 12024 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 4), ._, ._ }, |
| 12024 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 12025 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| | 12026 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 12025 | } }, | 12027 | } }, |
| 12026 | } }) catch |err| switch (err) { | 12028 | } }) catch |err| switch (err) { |
| 12027 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ | 12029 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| ... | @@ -20246,7 +20248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -20246,7 +20248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 20246 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ }, | 20248 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ }, |
| 20247 | .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ }, | 20249 | .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ }, |
| 20248 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, | 20250 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 20249 | .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ }, | 20251 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| 20250 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 20252 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 20251 | } }, | 20253 | } }, |
| 20252 | }, .{ | 20254 | }, .{ |
| ... | @@ -21899,7 +21901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21899,7 +21901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21899 | .patterns = &.{ | 21901 | .patterns = &.{ |
| 21900 | .{ .src = .{ .to_sse, .none } }, | 21902 | .{ .src = .{ .to_sse, .none } }, |
| 21901 | }, | 21903 | }, |
| 21902 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 21904 | .dst_temps = .{.{ .rc = .sse }}, |
| 21903 | .each = .{ .once = &.{ | 21905 | .each = .{ .once = &.{ |
| 21904 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, | 21906 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| 21905 | } }, | 21907 | } }, |
| ... | @@ -21910,7 +21912,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21910,7 +21912,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21910 | .patterns = &.{ | 21912 | .patterns = &.{ |
| 21911 | .{ .src = .{ .to_sse, .none } }, | 21913 | .{ .src = .{ .to_sse, .none } }, |
| 21912 | }, | 21914 | }, |
| 21913 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 21915 | .dst_temps = .{.{ .rc = .sse }}, |
| 21914 | .each = .{ .once = &.{ | 21916 | .each = .{ .once = &.{ |
| 21915 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, | 21917 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| 21916 | } }, | 21918 | } }, |
| ... | @@ -21921,7 +21923,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21921,7 +21923,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21921 | .patterns = &.{ | 21923 | .patterns = &.{ |
| 21922 | .{ .src = .{ .to_sse, .none } }, | 21924 | .{ .src = .{ .to_sse, .none } }, |
| 21923 | }, | 21925 | }, |
| 21924 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 21926 | .dst_temps = .{.{ .rc = .sse }}, |
| 21925 | .each = .{ .once = &.{ | 21927 | .each = .{ .once = &.{ |
| 21926 | .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ }, | 21928 | .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ }, |
| 21927 | } }, | 21929 | } }, |
| ... | @@ -21949,6 +21951,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21949,6 +21951,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21949 | .each = .{ .once = &.{ | 21951 | .each = .{ .once = &.{ |
| 21950 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 21952 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 21951 | } }, | 21953 | } }, |
| | 21954 | }, .{ |
| | 21955 | .required_features = .{ .f16c, null, null, null }, |
| | 21956 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, |
| | 21957 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, |
| | 21958 | .patterns = &.{ |
| | 21959 | .{ .src = .{ .to_mem, .none } }, |
| | 21960 | }, |
| | 21961 | .extra_temps = .{ |
| | 21962 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 21963 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 21964 | .unused, |
| | 21965 | .unused, |
| | 21966 | .unused, |
| | 21967 | .unused, |
| | 21968 | .unused, |
| | 21969 | .unused, |
| | 21970 | .unused, |
| | 21971 | }, |
| | 21972 | .dst_temps = .{.mem}, |
| | 21973 | .clobbers = .{ .eflags = true }, |
| | 21974 | .each = .{ .once = &.{ |
| | 21975 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, |
| | 21976 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, |
| | 21977 | .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ }, |
| | 21978 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 21979 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 21980 | } }, |
| | 21981 | }, .{ |
| | 21982 | .required_features = .{ .avx, null, null, null }, |
| | 21983 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 21984 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 21985 | .patterns = &.{ |
| | 21986 | .{ .src = .{ .to_mem, .none } }, |
| | 21987 | }, |
| | 21988 | .call_frame = .{ .alignment = .@"16" }, |
| | 21989 | .extra_temps = .{ |
| | 21990 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 21991 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 21992 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 21993 | .unused, |
| | 21994 | .unused, |
| | 21995 | .unused, |
| | 21996 | .unused, |
| | 21997 | .unused, |
| | 21998 | .unused, |
| | 21999 | }, |
| | 22000 | .dst_temps = .{.mem}, |
| | 22001 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22002 | .each = .{ .once = &.{ |
| | 22003 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22004 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22005 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22006 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22007 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22008 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22009 | } }, |
| | 22010 | }, .{ |
| | 22011 | .required_features = .{ .sse4_1, null, null, null }, |
| | 22012 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 22013 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22014 | .patterns = &.{ |
| | 22015 | .{ .src = .{ .to_mem, .none } }, |
| | 22016 | }, |
| | 22017 | .call_frame = .{ .alignment = .@"16" }, |
| | 22018 | .extra_temps = .{ |
| | 22019 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22020 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 22021 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 22022 | .unused, |
| | 22023 | .unused, |
| | 22024 | .unused, |
| | 22025 | .unused, |
| | 22026 | .unused, |
| | 22027 | .unused, |
| | 22028 | }, |
| | 22029 | .dst_temps = .{.mem}, |
| | 22030 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22031 | .each = .{ .once = &.{ |
| | 22032 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22033 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22034 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22035 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22036 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22037 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22038 | } }, |
| | 22039 | }, .{ |
| | 22040 | .required_features = .{ .sse2, null, null, null }, |
| | 22041 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 22042 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22043 | .patterns = &.{ |
| | 22044 | .{ .src = .{ .to_mem, .none } }, |
| | 22045 | }, |
| | 22046 | .call_frame = .{ .alignment = .@"16" }, |
| | 22047 | .extra_temps = .{ |
| | 22048 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22049 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 22050 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 22051 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22052 | .unused, |
| | 22053 | .unused, |
| | 22054 | .unused, |
| | 22055 | .unused, |
| | 22056 | .unused, |
| | 22057 | }, |
| | 22058 | .dst_temps = .{.mem}, |
| | 22059 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22060 | .each = .{ .once = &.{ |
| | 22061 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22062 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22063 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22064 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 22065 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 22066 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22067 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22068 | } }, |
| | 22069 | }, .{ |
| | 22070 | .required_features = .{ .sse, null, null, null }, |
| | 22071 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 22072 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22073 | .patterns = &.{ |
| | 22074 | .{ .src = .{ .to_mem, .none } }, |
| | 22075 | }, |
| | 22076 | .call_frame = .{ .alignment = .@"16" }, |
| | 22077 | .extra_temps = .{ |
| | 22078 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22079 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 22080 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } }, |
| | 22081 | .{ .type = .f32, .kind = .mem }, |
| | 22082 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22083 | .unused, |
| | 22084 | .unused, |
| | 22085 | .unused, |
| | 22086 | .unused, |
| | 22087 | }, |
| | 22088 | .dst_temps = .{.mem}, |
| | 22089 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22090 | .each = .{ .once = &.{ |
| | 22091 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22092 | .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22093 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22094 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 22095 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 22096 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 22097 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22098 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22099 | } }, |
| 21952 | }, .{ | 22100 | }, .{ |
| 21953 | .required_features = .{ .sse, null, null, null }, | 22101 | .required_features = .{ .sse, null, null, null }, |
| 21954 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22102 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| ... | @@ -21975,60 +22123,158 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -21975,60 +22123,158 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21975 | } }, | 22123 | } }, |
| 21976 | }, .{ | 22124 | }, .{ |
| 21977 | .required_features = .{ .avx, null, null, null }, | 22125 | .required_features = .{ .avx, null, null, null }, |
| 21978 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22126 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 21979 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 22127 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| 21980 | .patterns = &.{ | 22128 | .patterns = &.{ |
| 21981 | .{ .src = .{ .mem, .none } }, | 22129 | .{ .src = .{ .to_mem, .none } }, |
| 21982 | }, | 22130 | }, |
| 21983 | .dst_temps = .{.{ .rc = .sse }}, | 22131 | .call_frame = .{ .alignment = .@"16" }, |
| | 22132 | .extra_temps = .{ |
| | 22133 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22134 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 22135 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 22136 | .unused, |
| | 22137 | .unused, |
| | 22138 | .unused, |
| | 22139 | .unused, |
| | 22140 | .unused, |
| | 22141 | .unused, |
| | 22142 | }, |
| | 22143 | .dst_temps = .{.mem}, |
| | 22144 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 21984 | .each = .{ .once = &.{ | 22145 | .each = .{ .once = &.{ |
| 21985 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, | 22146 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 21986 | .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ }, | 22147 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22148 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22149 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22150 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22151 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21987 | } }, | 22152 | } }, |
| 21988 | }, .{ | 22153 | }, .{ |
| 21989 | .required_features = .{ .avx, null, null, null }, | 22154 | .required_features = .{ .sse4_1, null, null, null }, |
| 21990 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22155 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 21991 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 22156 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| 21992 | .patterns = &.{ | 22157 | .patterns = &.{ |
| 21993 | .{ .src = .{ .to_sse, .none } }, | 22158 | .{ .src = .{ .to_mem, .none } }, |
| 21994 | }, | 22159 | }, |
| 21995 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 22160 | .call_frame = .{ .alignment = .@"16" }, |
| | 22161 | .extra_temps = .{ |
| | 22162 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22163 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 22164 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 22165 | .unused, |
| | 22166 | .unused, |
| | 22167 | .unused, |
| | 22168 | .unused, |
| | 22169 | .unused, |
| | 22170 | .unused, |
| | 22171 | }, |
| | 22172 | .dst_temps = .{.mem}, |
| | 22173 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 21996 | .each = .{ .once = &.{ | 22174 | .each = .{ .once = &.{ |
| 21997 | .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ }, | 22175 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22176 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22177 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22178 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22179 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22180 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 21998 | } }, | 22181 | } }, |
| 21999 | }, .{ | 22182 | }, .{ |
| 22000 | .required_features = .{ .sse2, null, null, null }, | 22183 | .required_features = .{ .sse2, null, null, null }, |
| | 22184 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 22185 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22186 | .patterns = &.{ |
| | 22187 | .{ .src = .{ .to_mem, .none } }, |
| | 22188 | }, |
| | 22189 | .call_frame = .{ .alignment = .@"16" }, |
| | 22190 | .extra_temps = .{ |
| | 22191 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22192 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 22193 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 22194 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22195 | .unused, |
| | 22196 | .unused, |
| | 22197 | .unused, |
| | 22198 | .unused, |
| | 22199 | .unused, |
| | 22200 | }, |
| | 22201 | .dst_temps = .{.mem}, |
| | 22202 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22203 | .each = .{ .once = &.{ |
| | 22204 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22205 | .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22206 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22207 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 22208 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 22209 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22210 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22211 | } }, |
| | 22212 | }, .{ |
| | 22213 | .required_features = .{ .sse, null, null, null }, |
| | 22214 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 22215 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22216 | .patterns = &.{ |
| | 22217 | .{ .src = .{ .to_mem, .none } }, |
| | 22218 | }, |
| | 22219 | .call_frame = .{ .alignment = .@"16" }, |
| | 22220 | .extra_temps = .{ |
| | 22221 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22222 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 22223 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } }, |
| | 22224 | .{ .type = .f32, .kind = .mem }, |
| | 22225 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22226 | .unused, |
| | 22227 | .unused, |
| | 22228 | .unused, |
| | 22229 | .unused, |
| | 22230 | }, |
| | 22231 | .dst_temps = .{.mem}, |
| | 22232 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22233 | .each = .{ .once = &.{ |
| | 22234 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22235 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 22236 | .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22237 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22238 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 22239 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 22240 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 22241 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22242 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22243 | } }, |
| | 22244 | }, .{ |
| | 22245 | .required_features = .{ .avx, null, null, null }, |
| 22001 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22246 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22002 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 22247 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22003 | .patterns = &.{ | 22248 | .patterns = &.{ |
| 22004 | .{ .src = .{ .mut_sse, .none } }, | 22249 | .{ .src = .{ .mem, .none } }, |
| 22005 | }, | 22250 | }, |
| 22006 | .dst_temps = .{.{ .ref = .src0 }}, | 22251 | .dst_temps = .{.{ .rc = .sse }}, |
| 22007 | .each = .{ .once = &.{ | 22252 | .each = .{ .once = &.{ |
| 22008 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, | 22253 | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 22254 | .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ }, |
| 22009 | } }, | 22255 | } }, |
| 22010 | }, .{ | 22256 | }, .{ |
| 22011 | .required_features = .{ .sse2, null, null, null }, | 22257 | .required_features = .{ .avx, null, null, null }, |
| 22012 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22258 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22013 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 22259 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22014 | .patterns = &.{ | 22260 | .patterns = &.{ |
| 22015 | .{ .src = .{ .mem, .none } }, | 22261 | .{ .src = .{ .to_sse, .none } }, |
| 22016 | .{ .src = .{ .sse, .none } }, | | |
| 22017 | }, | 22262 | }, |
| 22018 | .dst_temps = .{.{ .rc = .sse }}, | 22263 | .dst_temps = .{.{ .rc = .sse }}, |
| 22019 | .each = .{ .once = &.{ | 22264 | .each = .{ .once = &.{ |
| 22020 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, | 22265 | .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ }, |
| 22021 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, | | |
| 22022 | } }, | 22266 | } }, |
| 22023 | }, .{ | 22267 | }, .{ |
| 22024 | .required_features = .{ .sse2, null, null, null }, | 22268 | .required_features = .{ .sse2, null, null, null }, |
| 22025 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 22269 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22026 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, | 22270 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22027 | .patterns = &.{ | 22271 | .patterns = &.{ |
| 22028 | .{ .src = .{ .to_mut_sse, .none } }, | 22272 | .{ .src = .{ .mem, .none } }, |
| | 22273 | .{ .src = .{ .to_sse, .none } }, |
| 22029 | }, | 22274 | }, |
| 22030 | .dst_temps = .{.{ .ref = .src0 }}, | 22275 | .dst_temps = .{.{ .rc = .sse }}, |
| 22031 | .each = .{ .once = &.{ | 22276 | .each = .{ .once = &.{ |
| | 22277 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22032 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, | 22278 | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, |
| 22033 | } }, | 22279 | } }, |
| 22034 | }, .{ | 22280 | }, .{ |
| ... | @@ -22062,9 +22308,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22062,9 +22308,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22062 | .{ .src = .{ .mem, .none } }, | 22308 | .{ .src = .{ .mem, .none } }, |
| 22063 | .{ .src = .{ .to_sse, .none } }, | 22309 | .{ .src = .{ .to_sse, .none } }, |
| 22064 | }, | 22310 | }, |
| 22065 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 22311 | .dst_temps = .{.{ .rc = .sse }}, |
| 22066 | .each = .{ .once = &.{ | 22312 | .each = .{ .once = &.{ |
| 22067 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0q, ._, ._ }, | 22313 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| 22068 | } }, | 22314 | } }, |
| 22069 | }, .{ | 22315 | }, .{ |
| 22070 | .required_features = .{ .sse2, null, null, null }, | 22316 | .required_features = .{ .sse2, null, null, null }, |
| ... | @@ -22074,9 +22320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22074,9 +22320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22074 | .{ .src = .{ .mem, .none } }, | 22320 | .{ .src = .{ .mem, .none } }, |
| 22075 | .{ .src = .{ .to_sse, .none } }, | 22321 | .{ .src = .{ .to_sse, .none } }, |
| 22076 | }, | 22322 | }, |
| 22077 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 22323 | .dst_temps = .{.{ .rc = .sse }}, |
| 22078 | .each = .{ .once = &.{ | 22324 | .each = .{ .once = &.{ |
| 22079 | .{ ._, ._ps, .cvtpd2, .dst0x, .src0q, ._, ._ }, | 22325 | .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| 22080 | } }, | 22326 | } }, |
| 22081 | }, .{ | 22327 | }, .{ |
| 22082 | .required_features = .{ .avx, null, null, null }, | 22328 | .required_features = .{ .avx, null, null, null }, |
| ... | @@ -22086,12 +22332,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22086,12 +22332,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22086 | .{ .src = .{ .mem, .none } }, | 22332 | .{ .src = .{ .mem, .none } }, |
| 22087 | .{ .src = .{ .to_sse, .none } }, | 22333 | .{ .src = .{ .to_sse, .none } }, |
| 22088 | }, | 22334 | }, |
| 22089 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 22335 | .dst_temps = .{.{ .rc = .sse }}, |
| | 22336 | .each = .{ .once = &.{ |
| | 22337 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ }, |
| | 22338 | } }, |
| | 22339 | }, .{ |
| | 22340 | .required_features = .{ .avx, null, null, null }, |
| | 22341 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, |
| | 22342 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 22343 | .patterns = &.{ |
| | 22344 | .{ .src = .{ .to_mem, .none } }, |
| | 22345 | }, |
| | 22346 | .extra_temps = .{ |
| | 22347 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22348 | .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, |
| | 22349 | .unused, |
| | 22350 | .unused, |
| | 22351 | .unused, |
| | 22352 | .unused, |
| | 22353 | .unused, |
| | 22354 | .unused, |
| | 22355 | .unused, |
| | 22356 | }, |
| | 22357 | .dst_temps = .{.mem}, |
| | 22358 | .clobbers = .{ .eflags = true }, |
| 22090 | .each = .{ .once = &.{ | 22359 | .each = .{ .once = &.{ |
| 22091 | .{ ._, .v_ps, .cvtpd2, .dst0y, .src0x, ._, ._ }, | 22360 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, |
| | 22361 | .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, |
| | 22362 | .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 22363 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 22364 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22092 | } }, | 22365 | } }, |
| 22093 | }, .{ | 22366 | }, .{ |
| 22094 | .required_features = .{ .@"64bit", .avx, null, null }, | 22367 | .required_features = .{ .sse2, null, null, null }, |
| | 22368 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, |
| | 22369 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, |
| | 22370 | .patterns = &.{ |
| | 22371 | .{ .src = .{ .to_mem, .none } }, |
| | 22372 | }, |
| | 22373 | .extra_temps = .{ |
| | 22374 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22375 | .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } }, |
| | 22376 | .unused, |
| | 22377 | .unused, |
| | 22378 | .unused, |
| | 22379 | .unused, |
| | 22380 | .unused, |
| | 22381 | .unused, |
| | 22382 | .unused, |
| | 22383 | }, |
| | 22384 | .dst_temps = .{.mem}, |
| | 22385 | .clobbers = .{ .eflags = true }, |
| | 22386 | .each = .{ .once = &.{ |
| | 22387 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, |
| | 22388 | .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ }, |
| | 22389 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 22390 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 22391 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22392 | } }, |
| | 22393 | }, .{ |
| | 22394 | .required_features = .{ .x87, null, null, null }, |
| | 22395 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 22396 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 22397 | .patterns = &.{ |
| | 22398 | .{ .src = .{ .to_mem, .none } }, |
| | 22399 | }, |
| | 22400 | .extra_temps = .{ |
| | 22401 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22402 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 22403 | .unused, |
| | 22404 | .unused, |
| | 22405 | .unused, |
| | 22406 | .unused, |
| | 22407 | .unused, |
| | 22408 | .unused, |
| | 22409 | .unused, |
| | 22410 | }, |
| | 22411 | .dst_temps = .{.mem}, |
| | 22412 | .clobbers = .{ .eflags = true }, |
| | 22413 | .each = .{ .once = &.{ |
| | 22414 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22415 | .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22416 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22417 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 22418 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22419 | } }, |
| | 22420 | }, .{ |
| | 22421 | .required_features = .{ .avx, null, null, null }, |
| 22095 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 22422 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22096 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 22423 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22097 | .patterns = &.{ | 22424 | .patterns = &.{ |
| ... | @@ -22117,7 +22444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22117,7 +22444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22117 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 22444 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22118 | } }, | 22445 | } }, |
| 22119 | }, .{ | 22446 | }, .{ |
| 22120 | .required_features = .{ .@"64bit", .sse2, null, null }, | 22447 | .required_features = .{ .sse2, null, null, null }, |
| 22121 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 22448 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22122 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 22449 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22123 | .patterns = &.{ | 22450 | .patterns = &.{ |
| ... | @@ -22143,7 +22470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22143,7 +22470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22143 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 22470 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22144 | } }, | 22471 | } }, |
| 22145 | }, .{ | 22472 | }, .{ |
| 22146 | .required_features = .{ .@"64bit", .sse, null, null }, | 22473 | .required_features = .{ .sse, null, null, null }, |
| 22147 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 22474 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22148 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, | 22475 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22149 | .patterns = &.{ | 22476 | .patterns = &.{ |
| ... | @@ -22168,6 +22495,129 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22168,6 +22495,129 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22168 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, | 22495 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| 22169 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 22496 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22170 | } }, | 22497 | } }, |
| | 22498 | }, .{ |
| | 22499 | .required_features = .{ .avx, null, null, null }, |
| | 22500 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22501 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22502 | .patterns = &.{ |
| | 22503 | .{ .src = .{ .to_mem, .none } }, |
| | 22504 | }, |
| | 22505 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 22506 | .extra_temps = .{ |
| | 22507 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22508 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 22509 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 22510 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 22511 | .unused, |
| | 22512 | .unused, |
| | 22513 | .unused, |
| | 22514 | .unused, |
| | 22515 | .unused, |
| | 22516 | }, |
| | 22517 | .dst_temps = .{.mem}, |
| | 22518 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22519 | .each = .{ .once = &.{ |
| | 22520 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22521 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22522 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 22523 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 22524 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22525 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22526 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22527 | } }, |
| | 22528 | }, .{ |
| | 22529 | .required_features = .{ .sse4_1, null, null, null }, |
| | 22530 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22531 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22532 | .patterns = &.{ |
| | 22533 | .{ .src = .{ .to_mem, .none } }, |
| | 22534 | }, |
| | 22535 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 22536 | .extra_temps = .{ |
| | 22537 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22538 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 22539 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 22540 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 22541 | .unused, |
| | 22542 | .unused, |
| | 22543 | .unused, |
| | 22544 | .unused, |
| | 22545 | .unused, |
| | 22546 | }, |
| | 22547 | .dst_temps = .{.mem}, |
| | 22548 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22549 | .each = .{ .once = &.{ |
| | 22550 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22551 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22552 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 22553 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 22554 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22555 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22556 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22557 | } }, |
| | 22558 | }, .{ |
| | 22559 | .required_features = .{ .sse2, null, null, null }, |
| | 22560 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22561 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22562 | .patterns = &.{ |
| | 22563 | .{ .src = .{ .to_mem, .none } }, |
| | 22564 | }, |
| | 22565 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 22566 | .extra_temps = .{ |
| | 22567 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22568 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 22569 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 22570 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 22571 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22572 | .unused, |
| | 22573 | .unused, |
| | 22574 | .unused, |
| | 22575 | .unused, |
| | 22576 | }, |
| | 22577 | .dst_temps = .{.mem}, |
| | 22578 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22579 | .each = .{ .once = &.{ |
| | 22580 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22581 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22582 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 22583 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 22584 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| | 22585 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 22586 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22587 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22588 | } }, |
| | 22589 | }, .{ |
| | 22590 | .required_features = .{ .sse, null, null, null }, |
| | 22591 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22592 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22593 | .patterns = &.{ |
| | 22594 | .{ .src = .{ .to_mem, .none } }, |
| | 22595 | }, |
| | 22596 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 22597 | .extra_temps = .{ |
| | 22598 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22599 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 22600 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 22601 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } }, |
| | 22602 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22603 | .unused, |
| | 22604 | .unused, |
| | 22605 | .unused, |
| | 22606 | .unused, |
| | 22607 | }, |
| | 22608 | .dst_temps = .{.mem}, |
| | 22609 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22610 | .each = .{ .once = &.{ |
| | 22611 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22612 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22613 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 22614 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 22615 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ }, |
| | 22616 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ }, |
| | 22617 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 22618 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22619 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22620 | } }, |
| 22171 | }, .{ | 22621 | }, .{ |
| 22172 | .required_features = .{ .x87, null, null, null }, | 22622 | .required_features = .{ .x87, null, null, null }, |
| 22173 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 22623 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| ... | @@ -22192,6 +22642,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22192,6 +22642,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22192 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 22642 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 22193 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, | 22643 | .{ ._, .f_p, .st, .dst0d, ._, ._, ._ }, |
| 22194 | } }, | 22644 | } }, |
| | 22645 | }, .{ |
| | 22646 | .required_features = .{ .x87, null, null, null }, |
| | 22647 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22648 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 22649 | .patterns = &.{ |
| | 22650 | .{ .src = .{ .to_mem, .none } }, |
| | 22651 | }, |
| | 22652 | .extra_temps = .{ |
| | 22653 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22654 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 22655 | .unused, |
| | 22656 | .unused, |
| | 22657 | .unused, |
| | 22658 | .unused, |
| | 22659 | .unused, |
| | 22660 | .unused, |
| | 22661 | .unused, |
| | 22662 | }, |
| | 22663 | .dst_temps = .{.mem}, |
| | 22664 | .clobbers = .{ .eflags = true }, |
| | 22665 | .each = .{ .once = &.{ |
| | 22666 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22667 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22668 | .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22669 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 22670 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22671 | } }, |
| 22195 | }, .{ | 22672 | }, .{ |
| 22196 | .required_features = .{ .x87, null, null, null }, | 22673 | .required_features = .{ .x87, null, null, null }, |
| 22197 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 22674 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| ... | @@ -22216,6 +22693,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22216,6 +22693,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22216 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, | 22693 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 22217 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, | 22694 | .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, |
| 22218 | } }, | 22695 | } }, |
| | 22696 | }, .{ |
| | 22697 | .required_features = .{ .x87, null, null, null }, |
| | 22698 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 22699 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 22700 | .patterns = &.{ |
| | 22701 | .{ .src = .{ .to_mem, .none } }, |
| | 22702 | }, |
| | 22703 | .extra_temps = .{ |
| | 22704 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22705 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 22706 | .unused, |
| | 22707 | .unused, |
| | 22708 | .unused, |
| | 22709 | .unused, |
| | 22710 | .unused, |
| | 22711 | .unused, |
| | 22712 | .unused, |
| | 22713 | }, |
| | 22714 | .dst_temps = .{.mem}, |
| | 22715 | .clobbers = .{ .eflags = true }, |
| | 22716 | .each = .{ .once = &.{ |
| | 22717 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22718 | .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22719 | .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 22720 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 22721 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22722 | } }, |
| 22219 | }, .{ | 22723 | }, .{ |
| 22220 | .required_features = .{ .sse, null, null, null }, | 22724 | .required_features = .{ .sse, null, null, null }, |
| 22221 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 22725 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| ... | @@ -22240,6 +22744,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22240,6 +22744,125 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22240 | .each = .{ .once = &.{ | 22744 | .each = .{ .once = &.{ |
| 22241 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 22745 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22242 | } }, | 22746 | } }, |
| | 22747 | }, .{ |
| | 22748 | .required_features = .{ .avx, null, null, null }, |
| | 22749 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22750 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22751 | .patterns = &.{ |
| | 22752 | .{ .src = .{ .to_mem, .none } }, |
| | 22753 | }, |
| | 22754 | .call_frame = .{ .alignment = .@"16" }, |
| | 22755 | .extra_temps = .{ |
| | 22756 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22757 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22758 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 22759 | .unused, |
| | 22760 | .unused, |
| | 22761 | .unused, |
| | 22762 | .unused, |
| | 22763 | .unused, |
| | 22764 | .unused, |
| | 22765 | }, |
| | 22766 | .dst_temps = .{.mem}, |
| | 22767 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22768 | .each = .{ .once = &.{ |
| | 22769 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22770 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22771 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22772 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22773 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22774 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22775 | } }, |
| | 22776 | }, .{ |
| | 22777 | .required_features = .{ .sse4_1, null, null, null }, |
| | 22778 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22779 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22780 | .patterns = &.{ |
| | 22781 | .{ .src = .{ .to_mem, .none } }, |
| | 22782 | }, |
| | 22783 | .call_frame = .{ .alignment = .@"16" }, |
| | 22784 | .extra_temps = .{ |
| | 22785 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22786 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22787 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 22788 | .unused, |
| | 22789 | .unused, |
| | 22790 | .unused, |
| | 22791 | .unused, |
| | 22792 | .unused, |
| | 22793 | .unused, |
| | 22794 | }, |
| | 22795 | .dst_temps = .{.mem}, |
| | 22796 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22797 | .each = .{ .once = &.{ |
| | 22798 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22799 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22800 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22801 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, |
| | 22802 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22803 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22804 | } }, |
| | 22805 | }, .{ |
| | 22806 | .required_features = .{ .sse2, null, null, null }, |
| | 22807 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22808 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22809 | .patterns = &.{ |
| | 22810 | .{ .src = .{ .to_mem, .none } }, |
| | 22811 | }, |
| | 22812 | .call_frame = .{ .alignment = .@"16" }, |
| | 22813 | .extra_temps = .{ |
| | 22814 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22815 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22816 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 22817 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22818 | .unused, |
| | 22819 | .unused, |
| | 22820 | .unused, |
| | 22821 | .unused, |
| | 22822 | .unused, |
| | 22823 | }, |
| | 22824 | .dst_temps = .{.mem}, |
| | 22825 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22826 | .each = .{ .once = &.{ |
| | 22827 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22828 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22829 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22830 | .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, |
| | 22831 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, |
| | 22832 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22833 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22834 | } }, |
| | 22835 | }, .{ |
| | 22836 | .required_features = .{ .sse, null, null, null }, |
| | 22837 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22838 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| | 22839 | .patterns = &.{ |
| | 22840 | .{ .src = .{ .to_mem, .none } }, |
| | 22841 | }, |
| | 22842 | .call_frame = .{ .alignment = .@"16" }, |
| | 22843 | .extra_temps = .{ |
| | 22844 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22845 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 22846 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } }, |
| | 22847 | .{ .type = .f32, .kind = .mem }, |
| | 22848 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 22849 | .unused, |
| | 22850 | .unused, |
| | 22851 | .unused, |
| | 22852 | .unused, |
| | 22853 | }, |
| | 22854 | .dst_temps = .{.mem}, |
| | 22855 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22856 | .each = .{ .once = &.{ |
| | 22857 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22858 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22859 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22860 | .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ }, |
| | 22861 | .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ }, |
| | 22862 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, |
| | 22863 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 22864 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22865 | } }, |
| 22243 | }, .{ | 22866 | }, .{ |
| 22244 | .required_features = .{ .sse, null, null, null }, | 22867 | .required_features = .{ .sse, null, null, null }, |
| 22245 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 22868 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| ... | @@ -22264,6 +22887,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22264,6 +22887,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22264 | .each = .{ .once = &.{ | 22887 | .each = .{ .once = &.{ |
| 22265 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 22888 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22266 | } }, | 22889 | } }, |
| | 22890 | }, .{ |
| | 22891 | .required_features = .{ .avx, null, null, null }, |
| | 22892 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22893 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 22894 | .patterns = &.{ |
| | 22895 | .{ .src = .{ .to_mem, .none } }, |
| | 22896 | }, |
| | 22897 | .call_frame = .{ .alignment = .@"16" }, |
| | 22898 | .extra_temps = .{ |
| | 22899 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22900 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22901 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 22902 | .unused, |
| | 22903 | .unused, |
| | 22904 | .unused, |
| | 22905 | .unused, |
| | 22906 | .unused, |
| | 22907 | .unused, |
| | 22908 | }, |
| | 22909 | .dst_temps = .{.mem}, |
| | 22910 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22911 | .each = .{ .once = &.{ |
| | 22912 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22913 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22914 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22915 | .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 22916 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 22917 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22918 | } }, |
| | 22919 | }, .{ |
| | 22920 | .required_features = .{ .sse2, null, null, null }, |
| | 22921 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22922 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 22923 | .patterns = &.{ |
| | 22924 | .{ .src = .{ .to_mem, .none } }, |
| | 22925 | }, |
| | 22926 | .call_frame = .{ .alignment = .@"16" }, |
| | 22927 | .extra_temps = .{ |
| | 22928 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22929 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22930 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 22931 | .unused, |
| | 22932 | .unused, |
| | 22933 | .unused, |
| | 22934 | .unused, |
| | 22935 | .unused, |
| | 22936 | .unused, |
| | 22937 | }, |
| | 22938 | .dst_temps = .{.mem}, |
| | 22939 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22940 | .each = .{ .once = &.{ |
| | 22941 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22942 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22943 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22944 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 22945 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 22946 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22947 | } }, |
| | 22948 | }, .{ |
| | 22949 | .required_features = .{ .sse, null, null, null }, |
| | 22950 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 22951 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 22952 | .patterns = &.{ |
| | 22953 | .{ .src = .{ .to_mem, .none } }, |
| | 22954 | }, |
| | 22955 | .call_frame = .{ .alignment = .@"16" }, |
| | 22956 | .extra_temps = .{ |
| | 22957 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 22958 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 22959 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } }, |
| | 22960 | .unused, |
| | 22961 | .unused, |
| | 22962 | .unused, |
| | 22963 | .unused, |
| | 22964 | .unused, |
| | 22965 | .unused, |
| | 22966 | }, |
| | 22967 | .dst_temps = .{.mem}, |
| | 22968 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 22969 | .each = .{ .once = &.{ |
| | 22970 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 22971 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 22972 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 22973 | .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 22974 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 22975 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 22976 | } }, |
| 22267 | }, .{ | 22977 | }, .{ |
| 22268 | .required_features = .{ .sse, null, null, null }, | 22978 | .required_features = .{ .sse, null, null, null }, |
| 22269 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 22979 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| ... | @@ -22288,6 +22998,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22288,6 +22998,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22288 | .each = .{ .once = &.{ | 22998 | .each = .{ .once = &.{ |
| 22289 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 22999 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22290 | } }, | 23000 | } }, |
| | 23001 | }, .{ |
| | 23002 | .required_features = .{ .avx, null, null, null }, |
| | 23003 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23004 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23005 | .patterns = &.{ |
| | 23006 | .{ .src = .{ .to_mem, .none } }, |
| | 23007 | }, |
| | 23008 | .call_frame = .{ .alignment = .@"16" }, |
| | 23009 | .extra_temps = .{ |
| | 23010 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23011 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23012 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 23013 | .unused, |
| | 23014 | .unused, |
| | 23015 | .unused, |
| | 23016 | .unused, |
| | 23017 | .unused, |
| | 23018 | .unused, |
| | 23019 | }, |
| | 23020 | .dst_temps = .{.mem}, |
| | 23021 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23022 | .each = .{ .once = &.{ |
| | 23023 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23024 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23025 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23026 | .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23027 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 23028 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23029 | } }, |
| | 23030 | }, .{ |
| | 23031 | .required_features = .{ .sse2, null, null, null }, |
| | 23032 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23033 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23034 | .patterns = &.{ |
| | 23035 | .{ .src = .{ .to_mem, .none } }, |
| | 23036 | }, |
| | 23037 | .call_frame = .{ .alignment = .@"16" }, |
| | 23038 | .extra_temps = .{ |
| | 23039 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23040 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23041 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 23042 | .unused, |
| | 23043 | .unused, |
| | 23044 | .unused, |
| | 23045 | .unused, |
| | 23046 | .unused, |
| | 23047 | .unused, |
| | 23048 | }, |
| | 23049 | .dst_temps = .{.mem}, |
| | 23050 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23051 | .each = .{ .once = &.{ |
| | 23052 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23053 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23054 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23055 | .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23056 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 23057 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23058 | } }, |
| | 23059 | }, .{ |
| | 23060 | .required_features = .{ .sse, null, null, null }, |
| | 23061 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23062 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23063 | .patterns = &.{ |
| | 23064 | .{ .src = .{ .to_mem, .none } }, |
| | 23065 | }, |
| | 23066 | .call_frame = .{ .alignment = .@"16" }, |
| | 23067 | .extra_temps = .{ |
| | 23068 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23069 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23070 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } }, |
| | 23071 | .unused, |
| | 23072 | .unused, |
| | 23073 | .unused, |
| | 23074 | .unused, |
| | 23075 | .unused, |
| | 23076 | .unused, |
| | 23077 | }, |
| | 23078 | .dst_temps = .{.mem}, |
| | 23079 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23080 | .each = .{ .once = &.{ |
| | 23081 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23082 | .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23083 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23084 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23085 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 23086 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23087 | } }, |
| 22291 | }, .{ | 23088 | }, .{ |
| 22292 | .required_features = .{ .sse, null, null, null }, | 23089 | .required_features = .{ .sse, null, null, null }, |
| 22293 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, | 23090 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| ... | @@ -22312,6 +23109,96 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22312,6 +23109,96 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22312 | .each = .{ .once = &.{ | 23109 | .each = .{ .once = &.{ |
| 22313 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 23110 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22314 | } }, | 23111 | } }, |
| | 23112 | }, .{ |
| | 23113 | .required_features = .{ .avx, null, null, null }, |
| | 23114 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23115 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23116 | .patterns = &.{ |
| | 23117 | .{ .src = .{ .to_mem, .none } }, |
| | 23118 | }, |
| | 23119 | .call_frame = .{ .alignment = .@"16" }, |
| | 23120 | .extra_temps = .{ |
| | 23121 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23122 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23123 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 23124 | .unused, |
| | 23125 | .unused, |
| | 23126 | .unused, |
| | 23127 | .unused, |
| | 23128 | .unused, |
| | 23129 | .unused, |
| | 23130 | }, |
| | 23131 | .dst_temps = .{.mem}, |
| | 23132 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23133 | .each = .{ .once = &.{ |
| | 23134 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23135 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23136 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23137 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23138 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23139 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23140 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23141 | } }, |
| | 23142 | }, .{ |
| | 23143 | .required_features = .{ .sse2, null, null, null }, |
| | 23144 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23145 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23146 | .patterns = &.{ |
| | 23147 | .{ .src = .{ .to_mem, .none } }, |
| | 23148 | }, |
| | 23149 | .call_frame = .{ .alignment = .@"16" }, |
| | 23150 | .extra_temps = .{ |
| | 23151 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23152 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23153 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 23154 | .unused, |
| | 23155 | .unused, |
| | 23156 | .unused, |
| | 23157 | .unused, |
| | 23158 | .unused, |
| | 23159 | .unused, |
| | 23160 | }, |
| | 23161 | .dst_temps = .{.mem}, |
| | 23162 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23163 | .each = .{ .once = &.{ |
| | 23164 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23165 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23166 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23167 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23168 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23169 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23170 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23171 | } }, |
| | 23172 | }, .{ |
| | 23173 | .required_features = .{ .sse, null, null, null }, |
| | 23174 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, |
| | 23175 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23176 | .patterns = &.{ |
| | 23177 | .{ .src = .{ .to_mem, .none } }, |
| | 23178 | }, |
| | 23179 | .call_frame = .{ .alignment = .@"16" }, |
| | 23180 | .extra_temps = .{ |
| | 23181 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23182 | .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, |
| | 23183 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } }, |
| | 23184 | .unused, |
| | 23185 | .unused, |
| | 23186 | .unused, |
| | 23187 | .unused, |
| | 23188 | .unused, |
| | 23189 | .unused, |
| | 23190 | }, |
| | 23191 | .dst_temps = .{.mem}, |
| | 23192 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23193 | .each = .{ .once = &.{ |
| | 23194 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| | 23195 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23196 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23197 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23198 | .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23199 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23200 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23201 | } }, |
| 22315 | } }) catch |err| switch (err) { | 23202 | } }) catch |err| switch (err) { |
| 22316 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 23203 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 22317 | @tagName(air_tag), | 23204 | @tagName(air_tag), |
| ... | @@ -22334,7 +23221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22334,7 +23221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22334 | .patterns = &.{ | 23221 | .patterns = &.{ |
| 22335 | .{ .src = .{ .to_sse, .none } }, | 23222 | .{ .src = .{ .to_sse, .none } }, |
| 22336 | }, | 23223 | }, |
| 22337 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23224 | .dst_temps = .{.{ .rc = .sse }}, |
| 22338 | .each = .{ .once = &.{ | 23225 | .each = .{ .once = &.{ |
| 22339 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 23226 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22340 | } }, | 23227 | } }, |
| ... | @@ -22346,7 +23233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22346,7 +23233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22346 | .{ .src = .{ .mem, .none } }, | 23233 | .{ .src = .{ .mem, .none } }, |
| 22347 | .{ .src = .{ .to_sse, .none } }, | 23234 | .{ .src = .{ .to_sse, .none } }, |
| 22348 | }, | 23235 | }, |
| 22349 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23236 | .dst_temps = .{.{ .rc = .sse }}, |
| 22350 | .each = .{ .once = &.{ | 23237 | .each = .{ .once = &.{ |
| 22351 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 23238 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22352 | } }, | 23239 | } }, |
| ... | @@ -22358,7 +23245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22358,7 +23245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22358 | .{ .src = .{ .mem, .none } }, | 23245 | .{ .src = .{ .mem, .none } }, |
| 22359 | .{ .src = .{ .to_sse, .none } }, | 23246 | .{ .src = .{ .to_sse, .none } }, |
| 22360 | }, | 23247 | }, |
| 22361 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23248 | .dst_temps = .{.{ .rc = .sse }}, |
| 22362 | .each = .{ .once = &.{ | 23249 | .each = .{ .once = &.{ |
| 22363 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | 23250 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 22364 | } }, | 23251 | } }, |
| ... | @@ -22386,6 +23273,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22386,6 +23273,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22386 | .each = .{ .once = &.{ | 23273 | .each = .{ .once = &.{ |
| 22387 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 23274 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22388 | } }, | 23275 | } }, |
| | 23276 | }, .{ |
| | 23277 | .required_features = .{ .f16c, null, null, null }, |
| | 23278 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, |
| | 23279 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, |
| | 23280 | .patterns = &.{ |
| | 23281 | .{ .src = .{ .to_mem, .none } }, |
| | 23282 | }, |
| | 23283 | .extra_temps = .{ |
| | 23284 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23285 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 23286 | .unused, |
| | 23287 | .unused, |
| | 23288 | .unused, |
| | 23289 | .unused, |
| | 23290 | .unused, |
| | 23291 | .unused, |
| | 23292 | .unused, |
| | 23293 | }, |
| | 23294 | .dst_temps = .{.mem}, |
| | 23295 | .clobbers = .{ .eflags = true }, |
| | 23296 | .each = .{ .once = &.{ |
| | 23297 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 23298 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 23299 | .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 23300 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23301 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23302 | } }, |
| | 23303 | }, .{ |
| | 23304 | .required_features = .{ .avx, null, null, null }, |
| | 23305 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23306 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 23307 | .patterns = &.{ |
| | 23308 | .{ .src = .{ .to_mem, .none } }, |
| | 23309 | }, |
| | 23310 | .call_frame = .{ .alignment = .@"16" }, |
| | 23311 | .extra_temps = .{ |
| | 23312 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23313 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23314 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 23315 | .unused, |
| | 23316 | .unused, |
| | 23317 | .unused, |
| | 23318 | .unused, |
| | 23319 | .unused, |
| | 23320 | .unused, |
| | 23321 | }, |
| | 23322 | .dst_temps = .{.mem}, |
| | 23323 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23324 | .each = .{ .once = &.{ |
| | 23325 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23326 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 23327 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 23328 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23329 | .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23330 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23331 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23332 | } }, |
| | 23333 | }, .{ |
| | 23334 | .required_features = .{ .sse2, null, null, null }, |
| | 23335 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23336 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 23337 | .patterns = &.{ |
| | 23338 | .{ .src = .{ .to_mem, .none } }, |
| | 23339 | }, |
| | 23340 | .call_frame = .{ .alignment = .@"16" }, |
| | 23341 | .extra_temps = .{ |
| | 23342 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23343 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23344 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 23345 | .unused, |
| | 23346 | .unused, |
| | 23347 | .unused, |
| | 23348 | .unused, |
| | 23349 | .unused, |
| | 23350 | .unused, |
| | 23351 | }, |
| | 23352 | .dst_temps = .{.mem}, |
| | 23353 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23354 | .each = .{ .once = &.{ |
| | 23355 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23356 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 23357 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 23358 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23359 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23360 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23361 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23362 | } }, |
| | 23363 | }, .{ |
| | 23364 | .required_features = .{ .sse, null, null, null }, |
| | 23365 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23366 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, |
| | 23367 | .patterns = &.{ |
| | 23368 | .{ .src = .{ .to_mem, .none } }, |
| | 23369 | }, |
| | 23370 | .call_frame = .{ .alignment = .@"16" }, |
| | 23371 | .extra_temps = .{ |
| | 23372 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23373 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 23374 | .{ .type = .f32, .kind = .mem }, |
| | 23375 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23376 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } }, |
| | 23377 | .unused, |
| | 23378 | .unused, |
| | 23379 | .unused, |
| | 23380 | .unused, |
| | 23381 | }, |
| | 23382 | .dst_temps = .{.mem}, |
| | 23383 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23384 | .each = .{ .once = &.{ |
| | 23385 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23386 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23387 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 23388 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 23389 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 23390 | .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 23391 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23392 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23393 | } }, |
| 22389 | }, .{ | 23394 | }, .{ |
| 22390 | .required_features = .{ .f16c, null, null, null }, | 23395 | .required_features = .{ .f16c, null, null, null }, |
| 22391 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 23396 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| ... | @@ -22393,7 +23398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22393,7 +23398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22393 | .patterns = &.{ | 23398 | .patterns = &.{ |
| 22394 | .{ .src = .{ .to_sse, .none } }, | 23399 | .{ .src = .{ .to_sse, .none } }, |
| 22395 | }, | 23400 | }, |
| 22396 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23401 | .dst_temps = .{.{ .rc = .sse }}, |
| 22397 | .each = .{ .once = &.{ | 23402 | .each = .{ .once = &.{ |
| 22398 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 23403 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22399 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ }, | 23404 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ }, |
| ... | @@ -22406,7 +23411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22406,7 +23411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22406 | .{ .src = .{ .mem, .none } }, | 23411 | .{ .src = .{ .mem, .none } }, |
| 22407 | .{ .src = .{ .to_sse, .none } }, | 23412 | .{ .src = .{ .to_sse, .none } }, |
| 22408 | }, | 23413 | }, |
| 22409 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23414 | .dst_temps = .{.{ .rc = .sse }}, |
| 22410 | .each = .{ .once = &.{ | 23415 | .each = .{ .once = &.{ |
| 22411 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 23416 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22412 | .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ }, | 23417 | .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ }, |
| ... | @@ -22419,11 +23424,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22419,11 +23424,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22419 | .{ .src = .{ .mem, .none } }, | 23424 | .{ .src = .{ .mem, .none } }, |
| 22420 | .{ .src = .{ .to_sse, .none } }, | 23425 | .{ .src = .{ .to_sse, .none } }, |
| 22421 | }, | 23426 | }, |
| 22422 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23427 | .dst_temps = .{.{ .rc = .sse }}, |
| 22423 | .each = .{ .once = &.{ | 23428 | .each = .{ .once = &.{ |
| 22424 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 23429 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22425 | .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ }, | 23430 | .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ }, |
| 22426 | } }, | 23431 | } }, |
| | 23432 | }, .{ |
| | 23433 | .required_features = .{ .f16c, null, null, null }, |
| | 23434 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any }, |
| | 23435 | .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }}, |
| | 23436 | .patterns = &.{ |
| | 23437 | .{ .src = .{ .mem, .none } }, |
| | 23438 | .{ .src = .{ .to_sse, .none } }, |
| | 23439 | }, |
| | 23440 | .extra_temps = .{ |
| | 23441 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 23442 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 23443 | .unused, |
| | 23444 | .unused, |
| | 23445 | .unused, |
| | 23446 | .unused, |
| | 23447 | .unused, |
| | 23448 | .unused, |
| | 23449 | .unused, |
| | 23450 | }, |
| | 23451 | .dst_temps = .{.mem}, |
| | 23452 | .each = .{ .once = &.{ |
| | 23453 | .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ }, |
| | 23454 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, |
| | 23455 | .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ }, |
| | 23456 | .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ }, |
| | 23457 | .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ }, |
| | 23458 | .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ }, |
| | 23459 | } }, |
| 22427 | }, .{ | 23460 | }, .{ |
| 22428 | .required_features = .{ .sse, null, null, null }, | 23461 | .required_features = .{ .sse, null, null, null }, |
| 22429 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 23462 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| ... | @@ -22448,6 +23481,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22448,6 +23481,128 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22448 | .each = .{ .once = &.{ | 23481 | .each = .{ .once = &.{ |
| 22449 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 23482 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22450 | } }, | 23483 | } }, |
| | 23484 | }, .{ |
| | 23485 | .required_features = .{ .f16c, null, null, null }, |
| | 23486 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, |
| | 23487 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }}, |
| | 23488 | .patterns = &.{ |
| | 23489 | .{ .src = .{ .to_mem, .none } }, |
| | 23490 | }, |
| | 23491 | .extra_temps = .{ |
| | 23492 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23493 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| | 23494 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 23495 | .unused, |
| | 23496 | .unused, |
| | 23497 | .unused, |
| | 23498 | .unused, |
| | 23499 | .unused, |
| | 23500 | .unused, |
| | 23501 | }, |
| | 23502 | .dst_temps = .{.mem}, |
| | 23503 | .clobbers = .{ .eflags = true }, |
| | 23504 | .each = .{ .once = &.{ |
| | 23505 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 23506 | .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 23507 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, |
| | 23508 | .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ }, |
| | 23509 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ }, |
| | 23510 | .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, |
| | 23511 | .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ }, |
| | 23512 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23513 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23514 | } }, |
| | 23515 | }, .{ |
| | 23516 | .required_features = .{ .avx, null, null, null }, |
| | 23517 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23518 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23519 | .patterns = &.{ |
| | 23520 | .{ .src = .{ .to_mem, .none } }, |
| | 23521 | }, |
| | 23522 | .call_frame = .{ .alignment = .@"16" }, |
| | 23523 | .extra_temps = .{ |
| | 23524 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23525 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23526 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 23527 | .unused, |
| | 23528 | .unused, |
| | 23529 | .unused, |
| | 23530 | .unused, |
| | 23531 | .unused, |
| | 23532 | .unused, |
| | 23533 | }, |
| | 23534 | .dst_temps = .{.mem}, |
| | 23535 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23536 | .each = .{ .once = &.{ |
| | 23537 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23538 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 23539 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 23540 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23541 | .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23542 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23543 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23544 | } }, |
| | 23545 | }, .{ |
| | 23546 | .required_features = .{ .sse2, null, null, null }, |
| | 23547 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23548 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23549 | .patterns = &.{ |
| | 23550 | .{ .src = .{ .to_mem, .none } }, |
| | 23551 | }, |
| | 23552 | .call_frame = .{ .alignment = .@"16" }, |
| | 23553 | .extra_temps = .{ |
| | 23554 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23555 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23556 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 23557 | .unused, |
| | 23558 | .unused, |
| | 23559 | .unused, |
| | 23560 | .unused, |
| | 23561 | .unused, |
| | 23562 | .unused, |
| | 23563 | }, |
| | 23564 | .dst_temps = .{.mem}, |
| | 23565 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23566 | .each = .{ .once = &.{ |
| | 23567 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23568 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 23569 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 23570 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23571 | .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23572 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23573 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23574 | } }, |
| | 23575 | }, .{ |
| | 23576 | .required_features = .{ .sse, null, null, null }, |
| | 23577 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23578 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 23579 | .patterns = &.{ |
| | 23580 | .{ .src = .{ .to_mem, .none } }, |
| | 23581 | }, |
| | 23582 | .call_frame = .{ .alignment = .@"16" }, |
| | 23583 | .extra_temps = .{ |
| | 23584 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23585 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 23586 | .{ .type = .f32, .kind = .mem }, |
| | 23587 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23588 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } }, |
| | 23589 | .unused, |
| | 23590 | .unused, |
| | 23591 | .unused, |
| | 23592 | .unused, |
| | 23593 | }, |
| | 23594 | .dst_temps = .{.mem}, |
| | 23595 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23596 | .each = .{ .once = &.{ |
| | 23597 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23598 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23599 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 23600 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 23601 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 23602 | .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 23603 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23604 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23605 | } }, |
| 22451 | }, .{ | 23606 | }, .{ |
| 22452 | .required_features = .{ .f16c, .x87, null, null }, | 23607 | .required_features = .{ .f16c, .x87, null, null }, |
| 22453 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 23608 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| ... | @@ -22456,7 +23611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22456,7 +23611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22456 | .{ .src = .{ .to_sse, .none } }, | 23611 | .{ .src = .{ .to_sse, .none } }, |
| 22457 | }, | 23612 | }, |
| 22458 | .extra_temps = .{ | 23613 | .extra_temps = .{ |
| 22459 | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 23614 | .{ .type = .f32, .kind = .{ .rc = .sse } }, |
| 22460 | .{ .type = .f32, .kind = .mem }, | 23615 | .{ .type = .f32, .kind = .mem }, |
| 22461 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, | 23616 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 22462 | .unused, | 23617 | .unused, |
| ... | @@ -22497,6 +23652,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22497,6 +23652,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22497 | .each = .{ .once = &.{ | 23652 | .each = .{ .once = &.{ |
| 22498 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 23653 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22499 | } }, | 23654 | } }, |
| | 23655 | }, .{ |
| | 23656 | .required_features = .{ .avx, null, null, null }, |
| | 23657 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23658 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23659 | .patterns = &.{ |
| | 23660 | .{ .src = .{ .to_mem, .none } }, |
| | 23661 | }, |
| | 23662 | .call_frame = .{ .alignment = .@"16" }, |
| | 23663 | .extra_temps = .{ |
| | 23664 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23665 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23666 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 23667 | .unused, |
| | 23668 | .unused, |
| | 23669 | .unused, |
| | 23670 | .unused, |
| | 23671 | .unused, |
| | 23672 | .unused, |
| | 23673 | }, |
| | 23674 | .dst_temps = .{.mem}, |
| | 23675 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23676 | .each = .{ .once = &.{ |
| | 23677 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23678 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 23679 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 23680 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23681 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23682 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23683 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23684 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23685 | } }, |
| | 23686 | }, .{ |
| | 23687 | .required_features = .{ .sse2, null, null, null }, |
| | 23688 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23689 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23690 | .patterns = &.{ |
| | 23691 | .{ .src = .{ .to_mem, .none } }, |
| | 23692 | }, |
| | 23693 | .call_frame = .{ .alignment = .@"16" }, |
| | 23694 | .extra_temps = .{ |
| | 23695 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23696 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23697 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 23698 | .unused, |
| | 23699 | .unused, |
| | 23700 | .unused, |
| | 23701 | .unused, |
| | 23702 | .unused, |
| | 23703 | .unused, |
| | 23704 | }, |
| | 23705 | .dst_temps = .{.mem}, |
| | 23706 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23707 | .each = .{ .once = &.{ |
| | 23708 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23709 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 23710 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 23711 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23712 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23713 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23714 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23715 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23716 | } }, |
| | 23717 | }, .{ |
| | 23718 | .required_features = .{ .sse, null, null, null }, |
| | 23719 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23720 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 23721 | .patterns = &.{ |
| | 23722 | .{ .src = .{ .to_mem, .none } }, |
| | 23723 | }, |
| | 23724 | .call_frame = .{ .alignment = .@"16" }, |
| | 23725 | .extra_temps = .{ |
| | 23726 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23727 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 23728 | .{ .type = .f32, .kind = .mem }, |
| | 23729 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23730 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } }, |
| | 23731 | .unused, |
| | 23732 | .unused, |
| | 23733 | .unused, |
| | 23734 | .unused, |
| | 23735 | }, |
| | 23736 | .dst_temps = .{.mem}, |
| | 23737 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23738 | .each = .{ .once = &.{ |
| | 23739 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23740 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23741 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 23742 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 23743 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 23744 | .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, |
| | 23745 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 23746 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23748 | } }, |
| 22500 | }, .{ | 23749 | }, .{ |
| 22501 | .required_features = .{ .sse, null, null, null }, | 23750 | .required_features = .{ .sse, null, null, null }, |
| 22502 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, | 23751 | .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| ... | @@ -22523,60 +23772,129 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22523,60 +23772,129 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22523 | } }, | 23772 | } }, |
| 22524 | }, .{ | 23773 | }, .{ |
| 22525 | .required_features = .{ .avx, null, null, null }, | 23774 | .required_features = .{ .avx, null, null, null }, |
| 22526 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 23775 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| 22527 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 23776 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22528 | .patterns = &.{ | 23777 | .patterns = &.{ |
| 22529 | .{ .src = .{ .mem, .none } }, | 23778 | .{ .src = .{ .to_mem, .none } }, |
| 22530 | }, | 23779 | }, |
| 22531 | .dst_temps = .{.{ .rc = .sse }}, | 23780 | .call_frame = .{ .alignment = .@"16" }, |
| | 23781 | .extra_temps = .{ |
| | 23782 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23783 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23784 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 23785 | .unused, |
| | 23786 | .unused, |
| | 23787 | .unused, |
| | 23788 | .unused, |
| | 23789 | .unused, |
| | 23790 | .unused, |
| | 23791 | }, |
| | 23792 | .dst_temps = .{.mem}, |
| | 23793 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 22532 | .each = .{ .once = &.{ | 23794 | .each = .{ .once = &.{ |
| 22533 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, | 23795 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 22534 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ }, | 23796 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 23797 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, |
| | 23798 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23799 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23800 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23801 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22535 | } }, | 23802 | } }, |
| 22536 | }, .{ | 23803 | }, .{ |
| 22537 | .required_features = .{ .avx, null, null, null }, | 23804 | .required_features = .{ .sse2, null, null, null }, |
| 22538 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 23805 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| 22539 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 23806 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22540 | .patterns = &.{ | 23807 | .patterns = &.{ |
| 22541 | .{ .src = .{ .to_sse, .none } }, | 23808 | .{ .src = .{ .to_mem, .none } }, |
| 22542 | }, | 23809 | }, |
| 22543 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23810 | .call_frame = .{ .alignment = .@"16" }, |
| | 23811 | .extra_temps = .{ |
| | 23812 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23813 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23814 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 23815 | .unused, |
| | 23816 | .unused, |
| | 23817 | .unused, |
| | 23818 | .unused, |
| | 23819 | .unused, |
| | 23820 | .unused, |
| | 23821 | }, |
| | 23822 | .dst_temps = .{.mem}, |
| | 23823 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 22544 | .each = .{ .once = &.{ | 23824 | .each = .{ .once = &.{ |
| 22545 | .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ }, | 23825 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23826 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 23827 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, |
| | 23828 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 23829 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 23830 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23831 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 22546 | } }, | 23832 | } }, |
| 22547 | }, .{ | 23833 | }, .{ |
| 22548 | .required_features = .{ .sse2, null, null, null }, | 23834 | .required_features = .{ .sse, null, null, null }, |
| | 23835 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| | 23836 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 23837 | .patterns = &.{ |
| | 23838 | .{ .src = .{ .to_mem, .none } }, |
| | 23839 | }, |
| | 23840 | .call_frame = .{ .alignment = .@"16" }, |
| | 23841 | .extra_temps = .{ |
| | 23842 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23843 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| | 23844 | .{ .type = .f32, .kind = .mem }, |
| | 23845 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| | 23846 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } }, |
| | 23847 | .unused, |
| | 23848 | .unused, |
| | 23849 | .unused, |
| | 23850 | .unused, |
| | 23851 | }, |
| | 23852 | .dst_temps = .{.mem}, |
| | 23853 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 23854 | .each = .{ .once = &.{ |
| | 23855 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 23856 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 23857 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| | 23858 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| | 23859 | .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, |
| | 23860 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| | 23861 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| | 23862 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23863 | } }, |
| | 23864 | }, .{ |
| | 23865 | .required_features = .{ .avx, null, null, null }, |
| 22549 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 23866 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22550 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 23867 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22551 | .patterns = &.{ | 23868 | .patterns = &.{ |
| 22552 | .{ .src = .{ .mut_sse, .none } }, | 23869 | .{ .src = .{ .mem, .none } }, |
| 22553 | }, | 23870 | }, |
| 22554 | .dst_temps = .{.{ .ref = .src0 }}, | 23871 | .dst_temps = .{.{ .rc = .sse }}, |
| 22555 | .each = .{ .once = &.{ | 23872 | .each = .{ .once = &.{ |
| 22556 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, | 23873 | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| | 23874 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ }, |
| 22557 | } }, | 23875 | } }, |
| 22558 | }, .{ | 23876 | }, .{ |
| 22559 | .required_features = .{ .sse2, null, null, null }, | 23877 | .required_features = .{ .avx, null, null, null }, |
| 22560 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 23878 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22561 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 23879 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22562 | .patterns = &.{ | 23880 | .patterns = &.{ |
| 22563 | .{ .src = .{ .mem, .none } }, | 23881 | .{ .src = .{ .to_sse, .none } }, |
| 22564 | .{ .src = .{ .sse, .none } }, | | |
| 22565 | }, | 23882 | }, |
| 22566 | .dst_temps = .{.{ .rc = .sse }}, | 23883 | .dst_temps = .{.{ .rc = .sse }}, |
| 22567 | .each = .{ .once = &.{ | 23884 | .each = .{ .once = &.{ |
| 22568 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, | 23885 | .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ }, |
| 22569 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, | | |
| 22570 | } }, | 23886 | } }, |
| 22571 | }, .{ | 23887 | }, .{ |
| 22572 | .required_features = .{ .sse2, null, null, null }, | 23888 | .required_features = .{ .sse2, null, null, null }, |
| 22573 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 23889 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22574 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, | 23890 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22575 | .patterns = &.{ | 23891 | .patterns = &.{ |
| 22576 | .{ .src = .{ .to_mut_sse, .none } }, | 23892 | .{ .src = .{ .mem, .none } }, |
| | 23893 | .{ .src = .{ .to_sse, .none } }, |
| 22577 | }, | 23894 | }, |
| 22578 | .dst_temps = .{.{ .ref = .src0 }}, | 23895 | .dst_temps = .{.{ .rc = .sse }}, |
| 22579 | .each = .{ .once = &.{ | 23896 | .each = .{ .once = &.{ |
| | 23897 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22580 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, | 23898 | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, |
| 22581 | } }, | 23899 | } }, |
| 22582 | }, .{ | 23900 | }, .{ |
| ... | @@ -22610,7 +23928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22610,7 +23928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22610 | .{ .src = .{ .mem, .none } }, | 23928 | .{ .src = .{ .mem, .none } }, |
| 22611 | .{ .src = .{ .to_sse, .none } }, | 23929 | .{ .src = .{ .to_sse, .none } }, |
| 22612 | }, | 23930 | }, |
| 22613 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23931 | .dst_temps = .{.{ .rc = .sse }}, |
| 22614 | .each = .{ .once = &.{ | 23932 | .each = .{ .once = &.{ |
| 22615 | .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ }, | 23933 | .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| 22616 | } }, | 23934 | } }, |
| ... | @@ -22622,7 +23940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22622,7 +23940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22622 | .{ .src = .{ .mem, .none } }, | 23940 | .{ .src = .{ .mem, .none } }, |
| 22623 | .{ .src = .{ .to_sse, .none } }, | 23941 | .{ .src = .{ .to_sse, .none } }, |
| 22624 | }, | 23942 | }, |
| 22625 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23943 | .dst_temps = .{.{ .rc = .sse }}, |
| 22626 | .each = .{ .once = &.{ | 23944 | .each = .{ .once = &.{ |
| 22627 | .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ }, | 23945 | .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| 22628 | } }, | 23946 | } }, |
| ... | @@ -22634,10 +23952,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22634,10 +23952,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22634 | .{ .src = .{ .mem, .none } }, | 23952 | .{ .src = .{ .mem, .none } }, |
| 22635 | .{ .src = .{ .to_sse, .none } }, | 23953 | .{ .src = .{ .to_sse, .none } }, |
| 22636 | }, | 23954 | }, |
| 22637 | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, | 23955 | .dst_temps = .{.{ .rc = .sse }}, |
| 22638 | .each = .{ .once = &.{ | 23956 | .each = .{ .once = &.{ |
| 22639 | .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ }, | 23957 | .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ }, |
| 22640 | } }, | 23958 | } }, |
| | 23959 | }, .{ |
| | 23960 | .required_features = .{ .avx, null, null, null }, |
| | 23961 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, |
| | 23962 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, |
| | 23963 | .patterns = &.{ |
| | 23964 | .{ .src = .{ .to_mem, .none } }, |
| | 23965 | }, |
| | 23966 | .extra_temps = .{ |
| | 23967 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23968 | .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, |
| | 23969 | .unused, |
| | 23970 | .unused, |
| | 23971 | .unused, |
| | 23972 | .unused, |
| | 23973 | .unused, |
| | 23974 | .unused, |
| | 23975 | .unused, |
| | 23976 | }, |
| | 23977 | .dst_temps = .{.mem}, |
| | 23978 | .clobbers = .{ .eflags = true }, |
| | 23979 | .each = .{ .once = &.{ |
| | 23980 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 23981 | .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 23982 | .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, |
| | 23983 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 23984 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 23985 | } }, |
| | 23986 | }, .{ |
| | 23987 | .required_features = .{ .sse2, null, null, null }, |
| | 23988 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any }, |
| | 23989 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, |
| | 23990 | .patterns = &.{ |
| | 23991 | .{ .src = .{ .to_mem, .none } }, |
| | 23992 | }, |
| | 23993 | .extra_temps = .{ |
| | 23994 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 23995 | .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, |
| | 23996 | .unused, |
| | 23997 | .unused, |
| | 23998 | .unused, |
| | 23999 | .unused, |
| | 24000 | .unused, |
| | 24001 | .unused, |
| | 24002 | .unused, |
| | 24003 | }, |
| | 24004 | .dst_temps = .{.mem}, |
| | 24005 | .clobbers = .{ .eflags = true }, |
| | 24006 | .each = .{ .once = &.{ |
| | 24007 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 24008 | .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 24009 | .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, |
| | 24010 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 24011 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24012 | } }, |
| | 24013 | }, .{ |
| | 24014 | .required_features = .{ .x87, null, null, null }, |
| | 24015 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 24016 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, |
| | 24017 | .patterns = &.{ |
| | 24018 | .{ .src = .{ .to_mem, .none } }, |
| | 24019 | }, |
| | 24020 | .extra_temps = .{ |
| | 24021 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24022 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 24023 | .unused, |
| | 24024 | .unused, |
| | 24025 | .unused, |
| | 24026 | .unused, |
| | 24027 | .unused, |
| | 24028 | .unused, |
| | 24029 | .unused, |
| | 24030 | }, |
| | 24031 | .dst_temps = .{.mem}, |
| | 24032 | .clobbers = .{ .eflags = true }, |
| | 24033 | .each = .{ .once = &.{ |
| | 24034 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24035 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24036 | .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24037 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 24038 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24039 | } }, |
| 22641 | }, .{ | 24040 | }, .{ |
| 22642 | .required_features = .{ .x87, null, null, null }, | 24041 | .required_features = .{ .x87, null, null, null }, |
| 22643 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 24042 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| ... | @@ -22661,6 +24060,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22661,6 +24060,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22661 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, | 24060 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, |
| 22662 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 24061 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 22663 | } }, | 24062 | } }, |
| | 24063 | }, .{ |
| | 24064 | .required_features = .{ .x87, null, null, null }, |
| | 24065 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 24066 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 24067 | .patterns = &.{ |
| | 24068 | .{ .src = .{ .to_mem, .none } }, |
| | 24069 | }, |
| | 24070 | .extra_temps = .{ |
| | 24071 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24072 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 24073 | .unused, |
| | 24074 | .unused, |
| | 24075 | .unused, |
| | 24076 | .unused, |
| | 24077 | .unused, |
| | 24078 | .unused, |
| | 24079 | .unused, |
| | 24080 | }, |
| | 24081 | .dst_temps = .{.mem}, |
| | 24082 | .each = .{ .once = &.{ |
| | 24083 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24084 | .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24085 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24086 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 24087 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24088 | } }, |
| 22664 | }, .{ | 24089 | }, .{ |
| 22665 | .required_features = .{ .sse, null, null, null }, | 24090 | .required_features = .{ .sse, null, null, null }, |
| 22666 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, | 24091 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| ... | @@ -22685,6 +24110,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22685,6 +24110,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22685 | .each = .{ .once = &.{ | 24110 | .each = .{ .once = &.{ |
| 22686 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 24111 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22687 | } }, | 24112 | } }, |
| | 24113 | }, .{ |
| | 24114 | .required_features = .{ .avx, null, null, null }, |
| | 24115 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 24116 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24117 | .patterns = &.{ |
| | 24118 | .{ .src = .{ .to_mem, .none } }, |
| | 24119 | }, |
| | 24120 | .call_frame = .{ .alignment = .@"16" }, |
| | 24121 | .extra_temps = .{ |
| | 24122 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24123 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 24124 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 24125 | .unused, |
| | 24126 | .unused, |
| | 24127 | .unused, |
| | 24128 | .unused, |
| | 24129 | .unused, |
| | 24130 | .unused, |
| | 24131 | }, |
| | 24132 | .dst_temps = .{.mem}, |
| | 24133 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24134 | .each = .{ .once = &.{ |
| | 24135 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24136 | .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24137 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24138 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24139 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 24140 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24141 | } }, |
| | 24142 | }, .{ |
| | 24143 | .required_features = .{ .sse2, null, null, null }, |
| | 24144 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 24145 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24146 | .patterns = &.{ |
| | 24147 | .{ .src = .{ .to_mem, .none } }, |
| | 24148 | }, |
| | 24149 | .call_frame = .{ .alignment = .@"16" }, |
| | 24150 | .extra_temps = .{ |
| | 24151 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24152 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 24153 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 24154 | .unused, |
| | 24155 | .unused, |
| | 24156 | .unused, |
| | 24157 | .unused, |
| | 24158 | .unused, |
| | 24159 | .unused, |
| | 24160 | }, |
| | 24161 | .dst_temps = .{.mem}, |
| | 24162 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24163 | .each = .{ .once = &.{ |
| | 24164 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24165 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24166 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24167 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24168 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 24169 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24170 | } }, |
| | 24171 | }, .{ |
| | 24172 | .required_features = .{ .sse, null, null, null }, |
| | 24173 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| | 24174 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24175 | .patterns = &.{ |
| | 24176 | .{ .src = .{ .to_mem, .none } }, |
| | 24177 | }, |
| | 24178 | .call_frame = .{ .alignment = .@"16" }, |
| | 24179 | .extra_temps = .{ |
| | 24180 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24181 | .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, |
| | 24182 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } }, |
| | 24183 | .unused, |
| | 24184 | .unused, |
| | 24185 | .unused, |
| | 24186 | .unused, |
| | 24187 | .unused, |
| | 24188 | .unused, |
| | 24189 | }, |
| | 24190 | .dst_temps = .{.mem}, |
| | 24191 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24192 | .each = .{ .once = &.{ |
| | 24193 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24194 | .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24195 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24196 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24197 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| | 24198 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24199 | } }, |
| 22688 | }, .{ | 24200 | }, .{ |
| 22689 | .required_features = .{ .x87, null, null, null }, | 24201 | .required_features = .{ .x87, null, null, null }, |
| 22690 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 24202 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| ... | @@ -22708,6 +24220,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22708,6 +24220,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22708 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, | 24220 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| 22709 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, | 24221 | .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, |
| 22710 | } }, | 24222 | } }, |
| | 24223 | }, .{ |
| | 24224 | .required_features = .{ .x87, null, null, null }, |
| | 24225 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 24226 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, |
| | 24227 | .patterns = &.{ |
| | 24228 | .{ .src = .{ .to_mem, .none } }, |
| | 24229 | }, |
| | 24230 | .extra_temps = .{ |
| | 24231 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24232 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| | 24233 | .unused, |
| | 24234 | .unused, |
| | 24235 | .unused, |
| | 24236 | .unused, |
| | 24237 | .unused, |
| | 24238 | .unused, |
| | 24239 | .unused, |
| | 24240 | }, |
| | 24241 | .dst_temps = .{.mem}, |
| | 24242 | .each = .{ .once = &.{ |
| | 24243 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24244 | .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24245 | .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| | 24246 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 24247 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24248 | } }, |
| 22711 | }, .{ | 24249 | }, .{ |
| 22712 | .required_features = .{ .sse, null, null, null }, | 24250 | .required_features = .{ .sse, null, null, null }, |
| 22713 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, | 24251 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| ... | @@ -22733,7 +24271,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22733,7 +24271,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22733 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, | 24271 | .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, |
| 22734 | } }, | 24272 | } }, |
| 22735 | }, .{ | 24273 | }, .{ |
| 22736 | .required_features = .{ .@"64bit", .avx, null, null }, | 24274 | .required_features = .{ .avx, null, null, null }, |
| | 24275 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 24276 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24277 | .patterns = &.{ |
| | 24278 | .{ .src = .{ .to_mem, .none } }, |
| | 24279 | }, |
| | 24280 | .call_frame = .{ .alignment = .@"16" }, |
| | 24281 | .extra_temps = .{ |
| | 24282 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24283 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 24284 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 24285 | .unused, |
| | 24286 | .unused, |
| | 24287 | .unused, |
| | 24288 | .unused, |
| | 24289 | .unused, |
| | 24290 | .unused, |
| | 24291 | }, |
| | 24292 | .dst_temps = .{.mem}, |
| | 24293 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24294 | .each = .{ .once = &.{ |
| | 24295 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24296 | .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24297 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24298 | .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24299 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 24300 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24301 | } }, |
| | 24302 | }, .{ |
| | 24303 | .required_features = .{ .sse2, null, null, null }, |
| | 24304 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 24305 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24306 | .patterns = &.{ |
| | 24307 | .{ .src = .{ .to_mem, .none } }, |
| | 24308 | }, |
| | 24309 | .call_frame = .{ .alignment = .@"16" }, |
| | 24310 | .extra_temps = .{ |
| | 24311 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24312 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 24313 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 24314 | .unused, |
| | 24315 | .unused, |
| | 24316 | .unused, |
| | 24317 | .unused, |
| | 24318 | .unused, |
| | 24319 | .unused, |
| | 24320 | }, |
| | 24321 | .dst_temps = .{.mem}, |
| | 24322 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24323 | .each = .{ .once = &.{ |
| | 24324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24325 | .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24326 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24327 | .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24328 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 24329 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24330 | } }, |
| | 24331 | }, .{ |
| | 24332 | .required_features = .{ .sse, null, null, null }, |
| | 24333 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| | 24334 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24335 | .patterns = &.{ |
| | 24336 | .{ .src = .{ .to_mem, .none } }, |
| | 24337 | }, |
| | 24338 | .call_frame = .{ .alignment = .@"16" }, |
| | 24339 | .extra_temps = .{ |
| | 24340 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24341 | .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, |
| | 24342 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } }, |
| | 24343 | .unused, |
| | 24344 | .unused, |
| | 24345 | .unused, |
| | 24346 | .unused, |
| | 24347 | .unused, |
| | 24348 | .unused, |
| | 24349 | }, |
| | 24350 | .dst_temps = .{.mem}, |
| | 24351 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24352 | .each = .{ .once = &.{ |
| | 24353 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24354 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| | 24355 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24356 | .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, |
| | 24357 | .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24358 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 24359 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24360 | } }, |
| | 24361 | }, .{ |
| | 24362 | .required_features = .{ .avx, null, null, null }, |
| 22737 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 24363 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22738 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 24364 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22739 | .patterns = &.{ | 24365 | .patterns = &.{ |
| ... | @@ -22759,7 +24385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22759,7 +24385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22759 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 24385 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22760 | } }, | 24386 | } }, |
| 22761 | }, .{ | 24387 | }, .{ |
| 22762 | .required_features = .{ .@"64bit", .sse2, null, null }, | 24388 | .required_features = .{ .sse2, null, null, null }, |
| 22763 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 24389 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22764 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 24390 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22765 | .patterns = &.{ | 24391 | .patterns = &.{ |
| ... | @@ -22785,7 +24411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22785,7 +24411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22785 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 24411 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22786 | } }, | 24412 | } }, |
| 22787 | }, .{ | 24413 | }, .{ |
| 22788 | .required_features = .{ .@"64bit", .sse, null, null }, | 24414 | .required_features = .{ .sse, null, null, null }, |
| 22789 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, | 24415 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22790 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, | 24416 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22791 | .patterns = &.{ | 24417 | .patterns = &.{ |
| ... | @@ -22810,6 +24436,96 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -22810,6 +24436,96 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22810 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, | 24436 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| 22811 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, | 24437 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22812 | } }, | 24438 | } }, |
| | 24439 | }, .{ |
| | 24440 | .required_features = .{ .avx, null, null, null }, |
| | 24441 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 24442 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24443 | .patterns = &.{ |
| | 24444 | .{ .src = .{ .to_mem, .none } }, |
| | 24445 | }, |
| | 24446 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 24447 | .extra_temps = .{ |
| | 24448 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24449 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 24450 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 24451 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 24452 | .unused, |
| | 24453 | .unused, |
| | 24454 | .unused, |
| | 24455 | .unused, |
| | 24456 | .unused, |
| | 24457 | }, |
| | 24458 | .dst_temps = .{.mem}, |
| | 24459 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24460 | .each = .{ .once = &.{ |
| | 24461 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24462 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24463 | .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 24464 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24465 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24466 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 24467 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24468 | } }, |
| | 24469 | }, .{ |
| | 24470 | .required_features = .{ .sse2, null, null, null }, |
| | 24471 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 24472 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24473 | .patterns = &.{ |
| | 24474 | .{ .src = .{ .to_mem, .none } }, |
| | 24475 | }, |
| | 24476 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 24477 | .extra_temps = .{ |
| | 24478 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24479 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 24480 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 24481 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 24482 | .unused, |
| | 24483 | .unused, |
| | 24484 | .unused, |
| | 24485 | .unused, |
| | 24486 | .unused, |
| | 24487 | }, |
| | 24488 | .dst_temps = .{.mem}, |
| | 24489 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24490 | .each = .{ .once = &.{ |
| | 24491 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24492 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24493 | .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 24494 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24495 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24496 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 24497 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24498 | } }, |
| | 24499 | }, .{ |
| | 24500 | .required_features = .{ .sse, null, null, null }, |
| | 24501 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| | 24502 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| | 24503 | .patterns = &.{ |
| | 24504 | .{ .src = .{ .to_mem, .none } }, |
| | 24505 | }, |
| | 24506 | .call_frame = .{ .size = 16, .alignment = .@"16" }, |
| | 24507 | .extra_temps = .{ |
| | 24508 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 24509 | .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, |
| | 24510 | .{ .type = .f80, .kind = .{ .frame = .call_frame } }, |
| | 24511 | .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } }, |
| | 24512 | .unused, |
| | 24513 | .unused, |
| | 24514 | .unused, |
| | 24515 | .unused, |
| | 24516 | .unused, |
| | 24517 | }, |
| | 24518 | .dst_temps = .{.mem}, |
| | 24519 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| | 24520 | .each = .{ .once = &.{ |
| | 24521 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| | 24522 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| | 24523 | .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, |
| | 24524 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| | 24525 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| | 24526 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 24527 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 24528 | } }, |
| 22813 | } }) catch |err| switch (err) { | 24529 | } }) catch |err| switch (err) { |
| 22814 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ | 24530 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 22815 | @tagName(air_tag), | 24531 | @tagName(air_tag), |
| ... | @@ -30715,6 +32431,7 @@ fn genBinOp( | ... | @@ -30715,6 +32431,7 @@ fn genBinOp( |
| 30715 | try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(), | 32431 | try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(), |
| 30716 | ); | 32432 | ); |
| 30717 | try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg); | 32433 | try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg); |
| | 32434 | try self.asmRegisterRegister(.{ .v_, .movshdup }, tmp_reg, dst_reg); |
| 30718 | break :src .{ .register = tmp_reg }; | 32435 | break :src .{ .register = tmp_reg }; |
| 30719 | } else rhs_mcv; | 32436 | } else rhs_mcv; |
| 30720 | | 32437 | |
| ... | @@ -43508,7 +45225,7 @@ const Select = struct { | ... | @@ -43508,7 +45225,7 @@ const Select = struct { |
| 43508 | top: u3, | 45225 | top: u3, |
| 43509 | | 45226 | |
| 43510 | fn emitLabel(s: *Select, label_index: Label) void { | 45227 | fn emitLabel(s: *Select, label_index: Label) void { |
| 43511 | if (label_index == ._) return; | 45228 | assert(@intFromEnum(label_index) < @intFromEnum(Label._)); |
| 43512 | const label = &s.labels[@intFromEnum(label_index)]; | 45229 | const label = &s.labels[@intFromEnum(label_index)]; |
| 43513 | for (&label.forward) |*reloc| { | 45230 | for (&label.forward) |*reloc| { |
| 43514 | if (reloc.*) |r| s.cg.performReloc(r); | 45231 | if (reloc.*) |r| s.cg.performReloc(r); |
| ... | @@ -43518,29 +45235,35 @@ const Select = struct { | ... | @@ -43518,29 +45235,35 @@ const Select = struct { |
| 43518 | } | 45235 | } |
| 43519 | | 45236 | |
| 43520 | fn emit(s: *Select, inst: Instruction) !void { | 45237 | fn emit(s: *Select, inst: Instruction) !void { |
| 43521 | s.emitLabel(inst[0]); | | |
| 43522 | const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] }; | 45238 | const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] }; |
| 43523 | var mir_ops: [4]CodeGen.Operand = undefined; | 45239 | pseudo: { |
| 43524 | inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s); | 45240 | switch (inst[0]) { |
| 43525 | s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) { | 45241 | .@"0:", .@"1:", .@"2:" => |label| s.emitLabel(label), |
| 43526 | error.InvalidInstruction => { | 45242 | ._ => {}, |
| 43527 | const fixes = @tagName(mir_tag[0]); | 45243 | .pseudo => break :pseudo, |
| 43528 | const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?; | 45244 | } |
| 43529 | return s.cg.fail( | 45245 | var mir_ops: [4]CodeGen.Operand = undefined; |
| 43530 | "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'", | 45246 | inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s); |
| 43531 | .{ | 45247 | s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) { |
| 43532 | fixes[0..fixes_blank], | 45248 | error.InvalidInstruction => { |
| 43533 | @tagName(mir_tag[1]), | 45249 | const fixes = @tagName(mir_tag[0]); |
| 43534 | fixes[fixes_blank + 1 ..], | 45250 | const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?; |
| 43535 | @tagName(mir_ops[0]), | 45251 | return s.cg.fail( |
| 43536 | @tagName(mir_ops[1]), | 45252 | "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'", |
| 43537 | @tagName(mir_ops[2]), | 45253 | .{ |
| 43538 | @tagName(mir_ops[3]), | 45254 | fixes[0..fixes_blank], |
| 43539 | }, | 45255 | @tagName(mir_tag[1]), |
| 43540 | ); | 45256 | fixes[fixes_blank + 1 ..], |
| 43541 | }, | 45257 | @tagName(mir_ops[0]), |
| 43542 | else => |e| return e, | 45258 | @tagName(mir_ops[1]), |
| 43543 | }; | 45259 | @tagName(mir_ops[2]), |
| | 45260 | @tagName(mir_ops[3]), |
| | 45261 | }, |
| | 45262 | ); |
| | 45263 | }, |
| | 45264 | else => |e| return e, |
| | 45265 | }; |
| | 45266 | } |
| 43544 | switch (mir_tag[0]) { | 45267 | switch (mir_tag[0]) { |
| 43545 | .f_ => switch (mir_tag[1]) { | 45268 | .f_ => switch (mir_tag[1]) { |
| 43546 | .@"2xm1", | 45269 | .@"2xm1", |
| ... | @@ -43594,32 +45317,6 @@ const Select = struct { | ... | @@ -43594,32 +45317,6 @@ const Select = struct { |
| 43594 | .yl2x => s.top +%= 1, | 45317 | .yl2x => s.top +%= 1, |
| 43595 | else => unreachable, | 45318 | else => unreachable, |
| 43596 | }, | 45319 | }, |
| 43597 | .fb_ => switch (mir_tag[1]) { | | |
| 43598 | .ld => s.top -%= 1, | | |
| 43599 | else => unreachable, | | |
| 43600 | }, | | |
| 43601 | .fb_p => switch (mir_tag[1]) { | | |
| 43602 | .st => s.top +%= 1, | | |
| 43603 | else => unreachable, | | |
| 43604 | }, | | |
| 43605 | .fi_ => switch (mir_tag[1]) { | | |
| 43606 | .add, .com, .div, .divr, .mul, .st, .stt, .sub, .subr => {}, | | |
| 43607 | .ld => s.top -%= 1, | | |
| 43608 | else => unreachable, | | |
| 43609 | }, | | |
| 43610 | .fi_p => switch (mir_tag[1]) { | | |
| 43611 | .com, .st => s.top +%= 1, | | |
| 43612 | else => unreachable, | | |
| 43613 | }, | | |
| 43614 | .fn_ => switch (mir_tag[1]) { | | |
| 43615 | .clex => {}, | | |
| 43616 | .init, .save => s.top = 0, | | |
| 43617 | else => unreachable, | | |
| 43618 | }, | | |
| 43619 | .fn_cw, .fn_env, .fn_sw => switch (mir_tag[1]) { | | |
| 43620 | .st => {}, | | |
| 43621 | else => unreachable, | | |
| 43622 | }, | | |
| 43623 | .f_cstp => switch (mir_tag[1]) { | 45320 | .f_cstp => switch (mir_tag[1]) { |
| 43624 | .de => s.top -%= 1, | 45321 | .de => s.top -%= 1, |
| 43625 | .in => s.top +%= 1, | 45322 | .in => s.top +%= 1, |
| ... | @@ -43646,6 +45343,32 @@ const Select = struct { | ... | @@ -43646,6 +45343,32 @@ const Select = struct { |
| 43646 | .com, .ucom => s.top +%= 2, | 45343 | .com, .ucom => s.top +%= 2, |
| 43647 | else => unreachable, | 45344 | else => unreachable, |
| 43648 | }, | 45345 | }, |
| | 45346 | .fb_ => switch (mir_tag[1]) { |
| | 45347 | .ld => s.top -%= 1, |
| | 45348 | else => unreachable, |
| | 45349 | }, |
| | 45350 | .fb_p => switch (mir_tag[1]) { |
| | 45351 | .st => s.top +%= 1, |
| | 45352 | else => unreachable, |
| | 45353 | }, |
| | 45354 | .fi_ => switch (mir_tag[1]) { |
| | 45355 | .add, .com, .div, .divr, .mul, .st, .stt, .sub, .subr => {}, |
| | 45356 | .ld => s.top -%= 1, |
| | 45357 | else => unreachable, |
| | 45358 | }, |
| | 45359 | .fi_p => switch (mir_tag[1]) { |
| | 45360 | .com, .st => s.top +%= 1, |
| | 45361 | else => unreachable, |
| | 45362 | }, |
| | 45363 | .fn_ => switch (mir_tag[1]) { |
| | 45364 | .clex => {}, |
| | 45365 | .init, .save => s.top = 0, |
| | 45366 | else => unreachable, |
| | 45367 | }, |
| | 45368 | .fn_cw, .fn_env, .fn_sw => switch (mir_tag[1]) { |
| | 45369 | .st => {}, |
| | 45370 | else => unreachable, |
| | 45371 | }, |
| 43649 | .fx_ => switch (mir_tag[1]) { | 45372 | .fx_ => switch (mir_tag[1]) { |
| 43650 | .rstor => unreachable, | 45373 | .rstor => unreachable, |
| 43651 | .save => {}, | 45374 | .save => {}, |
| ... | @@ -44199,7 +45922,7 @@ const Select = struct { | ... | @@ -44199,7 +45922,7 @@ const Select = struct { |
| 44199 | Select.Operand, | 45922 | Select.Operand, |
| 44200 | Select.Operand, | 45923 | Select.Operand, |
| 44201 | }; | 45924 | }; |
| 44202 | const Label = enum { @"0:", @"1:", @"2:", @"_" }; | 45925 | const Label = enum { @"0:", @"1:", @"2:", @"_", pseudo }; |
| 44203 | const Operand = struct { | 45926 | const Operand = struct { |
| 44204 | tag: Tag, | 45927 | tag: Tag, |
| 44205 | base: Ref.Sized = .none, | 45928 | base: Ref.Sized = .none, |
| ... | @@ -44228,7 +45951,7 @@ const Select = struct { | ... | @@ -44228,7 +45951,7 @@ const Select = struct { |
| 44228 | ptr_bit_size, | 45951 | ptr_bit_size, |
| 44229 | size, | 45952 | size, |
| 44230 | size_sub_elem_size, | 45953 | size_sub_elem_size, |
| 44231 | src0_unaligned_size, | 45954 | unaligned_size, |
| 44232 | bit_size, | 45955 | bit_size, |
| 44233 | src0_bit_size, | 45956 | src0_bit_size, |
| 44234 | len, | 45957 | len, |
| ... | @@ -44252,8 +45975,8 @@ const Select = struct { | ... | @@ -44252,8 +45975,8 @@ const Select = struct { |
| 44252 | const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" }; | 45975 | const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" }; |
| 44253 | const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" }; | 45976 | const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" }; |
| 44254 | const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" }; | 45977 | const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" }; |
| 44255 | const add_src0_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" }; | 45978 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 44256 | const sub_src0_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" }; | 45979 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 44257 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; | 45980 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; |
| 44258 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; | 45981 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| 44259 | const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; | 45982 | const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| ... | @@ -44744,7 +46467,7 @@ const Select = struct { | ... | @@ -44744,7 +46467,7 @@ const Select = struct { |
| 44744 | const ty = op.base.ref.deref(s).typeOf(s.cg); | 46467 | const ty = op.base.ref.deref(s).typeOf(s.cg); |
| 44745 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); | 46468 | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 44746 | }, | 46469 | }, |
| 44747 | .src0_unaligned_size => @intCast(s.cg.unalignedSize(Select.Operand.Ref.src0.deref(s).typeOf(s.cg))), | 46470 | .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))), |
| 44748 | .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 46471 | .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 44749 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), | 46472 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 44750 | .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)), | 46473 | .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)), |