| ... | ... | @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2414 | 2414 | } |
| 2415 | 2415 | |
| 2416 | 2416 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2417 | | @setEvalBranchQuota(3_900); |
| 2417 | @setEvalBranchQuota(4_100); |
| 2418 | 2418 | const pt = cg.pt; |
| 2419 | 2419 | const zcu = pt.zcu; |
| 2420 | 2420 | const ip = &zcu.intern_pool; |
| ... | ... | @@ -5567,13 +5567,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5567 | 5567 | .dst_temps = .{.mem}, |
| 5568 | 5568 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5569 | 5569 | .each = .{ .once = &.{ |
| 5570 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5570 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5571 | 5571 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 5572 | 5572 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, |
| 5573 | 5573 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, |
| 5574 | 5574 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5575 | 5575 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 5576 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 5576 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5577 | 5577 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5578 | 5578 | } }, |
| 5579 | 5579 | }, .{ |
| ... | ... | @@ -5600,14 +5600,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5600 | 5600 | .dst_temps = .{.mem}, |
| 5601 | 5601 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5602 | 5602 | .each = .{ .once = &.{ |
| 5603 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5603 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5604 | 5604 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5605 | 5605 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5606 | 5606 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| 5607 | 5607 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| 5608 | 5608 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5609 | 5609 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 5610 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 5610 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5611 | 5611 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5612 | 5612 | } }, |
| 5613 | 5613 | }, .{ |
| ... | ... | @@ -5634,7 +5634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5634 | 5634 | .dst_temps = .{.mem}, |
| 5635 | 5635 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5636 | 5636 | .each = .{ .once = &.{ |
| 5637 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5637 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5638 | 5638 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 5639 | 5639 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 5640 | 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 | 5642 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 5643 | 5643 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| 5644 | 5644 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, |
| 5645 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 5645 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5646 | 5646 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5647 | 5647 | } }, |
| 5648 | 5648 | }, .{ |
| ... | ... | @@ -5657,7 +5657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5657 | 5657 | .call_frame = .{ .alignment = .@"16" }, |
| 5658 | 5658 | .extra_temps = .{ |
| 5659 | 5659 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 5660 | | .{ .type = .f16, .kind = .{ .reg = .eax } }, |
| 5660 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 5661 | 5661 | .{ .type = .f32, .kind = .mem }, |
| 5662 | 5662 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 5663 | 5663 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| ... | ... | @@ -5669,7 +5669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5669 | 5669 | .dst_temps = .{.mem}, |
| 5670 | 5670 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 5671 | 5671 | .each = .{ .once = &.{ |
| 5672 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5672 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5673 | 5673 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| 5674 | 5674 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 5675 | 5675 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| ... | ... | @@ -5680,7 +5680,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5680 | 5680 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| 5681 | 5681 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| 5682 | 5682 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| 5683 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 5683 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 5684 | 5684 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5685 | 5685 | } }, |
| 5686 | 5686 | }, .{ |
| ... | ... | @@ -5878,14 +5878,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5878 | 5878 | .dst_temps = .{.mem}, |
| 5879 | 5879 | .clobbers = .{ .eflags = true }, |
| 5880 | 5880 | .each = .{ .once = &.{ |
| 5881 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5881 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5882 | 5882 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 5883 | 5883 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 5884 | 5884 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 5885 | 5885 | .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 5886 | 5886 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 5887 | 5887 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 5888 | | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, |
| 5888 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 5889 | 5889 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5890 | 5890 | } }, |
| 5891 | 5891 | }, .{ |
| ... | ... | @@ -5911,7 +5911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5911 | 5911 | .dst_temps = .{.mem}, |
| 5912 | 5912 | .clobbers = .{ .eflags = true }, |
| 5913 | 5913 | .each = .{ .once = &.{ |
| 5914 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5914 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5915 | 5915 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 5916 | 5916 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 5917 | 5917 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -5919,7 +5919,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5919 | 5919 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 5920 | 5920 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 5921 | 5921 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 5922 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 5922 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5923 | 5923 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5924 | 5924 | } }, |
| 5925 | 5925 | }, .{ |
| ... | ... | @@ -5945,7 +5945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5945 | 5945 | .dst_temps = .{.mem}, |
| 5946 | 5946 | .clobbers = .{ .eflags = true }, |
| 5947 | 5947 | .each = .{ .once = &.{ |
| 5948 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 5948 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5949 | 5949 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 5950 | 5950 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 5951 | 5951 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -5955,7 +5955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5955 | 5955 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 5956 | 5956 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 5957 | 5957 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 5958 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 5958 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 5959 | 5959 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 5960 | 5960 | } }, |
| 5961 | 5961 | }, .{ |
| ... | ... | @@ -6179,14 +6179,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6179 | 6179 | .dst_temps = .{.mem}, |
| 6180 | 6180 | .clobbers = .{ .eflags = true }, |
| 6181 | 6181 | .each = .{ .once = &.{ |
| 6182 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6182 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6183 | 6183 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 6184 | 6184 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 6185 | 6185 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 6186 | 6186 | .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 6187 | 6187 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 6188 | 6188 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 6189 | | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, |
| 6189 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 6190 | 6190 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6191 | 6191 | } }, |
| 6192 | 6192 | }, .{ |
| ... | ... | @@ -6212,7 +6212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6212 | 6212 | .dst_temps = .{.mem}, |
| 6213 | 6213 | .clobbers = .{ .eflags = true }, |
| 6214 | 6214 | .each = .{ .once = &.{ |
| 6215 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6215 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6216 | 6216 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6217 | 6217 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6218 | 6218 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -6220,7 +6220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6220 | 6220 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 6221 | 6221 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 6222 | 6222 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 6223 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 6223 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6224 | 6224 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6225 | 6225 | } }, |
| 6226 | 6226 | }, .{ |
| ... | ... | @@ -6246,7 +6246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6246 | 6246 | .dst_temps = .{.mem}, |
| 6247 | 6247 | .clobbers = .{ .eflags = true }, |
| 6248 | 6248 | .each = .{ .once = &.{ |
| 6249 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6249 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6250 | 6250 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6251 | 6251 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6252 | 6252 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -6256,7 +6256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6256 | 6256 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 6257 | 6257 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 6258 | 6258 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6259 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 6259 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6260 | 6260 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6261 | 6261 | } }, |
| 6262 | 6262 | }, .{ |
| ... | ... | @@ -6283,14 +6283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6283 | 6283 | .dst_temps = .{.mem}, |
| 6284 | 6284 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6285 | 6285 | .each = .{ .once = &.{ |
| 6286 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6286 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6287 | 6287 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 6288 | 6288 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 6289 | 6289 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 6290 | 6290 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 6291 | 6291 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6292 | 6292 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| 6293 | | .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ }, |
| 6293 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 6294 | 6294 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6295 | 6295 | } }, |
| 6296 | 6296 | }, .{ |
| ... | ... | @@ -6580,12 +6580,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6580 | 6580 | .dst_temps = .{.mem}, |
| 6581 | 6581 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6582 | 6582 | .each = .{ .once = &.{ |
| 6583 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6583 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6584 | 6584 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6585 | 6585 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6586 | 6586 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6587 | 6587 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6588 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 6588 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6589 | 6589 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6590 | 6590 | } }, |
| 6591 | 6591 | }, .{ |
| ... | ... | @@ -6612,12 +6612,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6612 | 6612 | .dst_temps = .{.mem}, |
| 6613 | 6613 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6614 | 6614 | .each = .{ .once = &.{ |
| 6615 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6615 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6616 | 6616 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6617 | 6617 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6618 | 6618 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6619 | 6619 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6620 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 6620 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6621 | 6621 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6622 | 6622 | } }, |
| 6623 | 6623 | }, .{ |
| ... | ... | @@ -6644,12 +6644,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6644 | 6644 | .dst_temps = .{.mem}, |
| 6645 | 6645 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 6646 | 6646 | .each = .{ .once = &.{ |
| 6647 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 6647 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 6648 | 6648 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 6649 | 6649 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 6650 | 6650 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 6651 | 6651 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 6652 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 6652 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 6653 | 6653 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 6654 | 6654 | } }, |
| 6655 | 6655 | } }) catch |err| switch (err) { |
| ... | ... | @@ -9411,13 +9411,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9411 | 9411 | .dst_temps = .{.mem}, |
| 9412 | 9412 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9413 | 9413 | .each = .{ .once = &.{ |
| 9414 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9414 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9415 | 9415 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| 9416 | 9416 | .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) }, |
| 9417 | 9417 | .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) }, |
| 9418 | 9418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9419 | 9419 | .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 9420 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 9420 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9421 | 9421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9422 | 9422 | } }, |
| 9423 | 9423 | }, .{ |
| ... | ... | @@ -9444,14 +9444,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9444 | 9444 | .dst_temps = .{.mem}, |
| 9445 | 9445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9446 | 9446 | .each = .{ .once = &.{ |
| 9447 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9448 | 9448 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9449 | 9449 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9450 | 9450 | .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ }, |
| 9451 | 9451 | .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ }, |
| 9452 | 9452 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9453 | 9453 | .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ }, |
| 9454 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 9454 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9455 | 9455 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9456 | 9456 | } }, |
| 9457 | 9457 | }, .{ |
| ... | ... | @@ -9478,7 +9478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9478 | 9478 | .dst_temps = .{.mem}, |
| 9479 | 9479 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9480 | 9480 | .each = .{ .once = &.{ |
| 9481 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9481 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9482 | 9482 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 9483 | 9483 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 9484 | 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 | 9486 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 9487 | 9487 | .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, |
| 9488 | 9488 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ }, |
| 9489 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 9489 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9490 | 9490 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9491 | 9491 | } }, |
| 9492 | 9492 | }, .{ |
| ... | ... | @@ -9501,7 +9501,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9501 | 9501 | .call_frame = .{ .alignment = .@"16" }, |
| 9502 | 9502 | .extra_temps = .{ |
| 9503 | 9503 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 9504 | | .{ .type = .f16, .kind = .{ .reg = .eax } }, |
| 9504 | .{ .type = .f16, .kind = .{ .reg = .ax } }, |
| 9505 | 9505 | .{ .type = .f32, .kind = .mem }, |
| 9506 | 9506 | .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, |
| 9507 | 9507 | .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, |
| ... | ... | @@ -9513,7 +9513,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9513 | 9513 | .dst_temps = .{.mem}, |
| 9514 | 9514 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 9515 | 9515 | .each = .{ .once = &.{ |
| 9516 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9516 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9517 | 9517 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ }, |
| 9518 | 9518 | .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, |
| 9519 | 9519 | .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, |
| ... | ... | @@ -9524,7 +9524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9524 | 9524 | .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, |
| 9525 | 9525 | .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, |
| 9526 | 9526 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ }, |
| 9527 | | .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ }, |
| 9527 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 9528 | 9528 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9529 | 9529 | } }, |
| 9530 | 9530 | }, .{ |
| ... | ... | @@ -9722,14 +9722,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9722 | 9722 | .dst_temps = .{.mem}, |
| 9723 | 9723 | .clobbers = .{ .eflags = true }, |
| 9724 | 9724 | .each = .{ .once = &.{ |
| 9725 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9725 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9726 | 9726 | .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 9727 | 9727 | .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 9728 | 9728 | .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 9729 | 9729 | .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 9730 | 9730 | .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 9731 | 9731 | .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 9732 | | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, |
| 9732 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 9733 | 9733 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9734 | 9734 | } }, |
| 9735 | 9735 | }, .{ |
| ... | ... | @@ -9755,7 +9755,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9755 | 9755 | .dst_temps = .{.mem}, |
| 9756 | 9756 | .clobbers = .{ .eflags = true }, |
| 9757 | 9757 | .each = .{ .once = &.{ |
| 9758 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9758 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9759 | 9759 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9760 | 9760 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9761 | 9761 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -9763,7 +9763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9763 | 9763 | .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 9764 | 9764 | .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 9765 | 9765 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 9766 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 9766 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9767 | 9767 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9768 | 9768 | } }, |
| 9769 | 9769 | }, .{ |
| ... | ... | @@ -9789,7 +9789,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9789 | 9789 | .dst_temps = .{.mem}, |
| 9790 | 9790 | .clobbers = .{ .eflags = true }, |
| 9791 | 9791 | .each = .{ .once = &.{ |
| 9792 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 9792 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 9793 | 9793 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 9794 | 9794 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 9795 | 9795 | .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -9799,7 +9799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 9799 | 9799 | .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 9800 | 9800 | .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 9801 | 9801 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 9802 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 9802 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 9803 | 9803 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 9804 | 9804 | } }, |
| 9805 | 9805 | }, .{ |
| ... | ... | @@ -10023,14 +10023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10023 | 10023 | .dst_temps = .{.mem}, |
| 10024 | 10024 | .clobbers = .{ .eflags = true }, |
| 10025 | 10025 | .each = .{ .once = &.{ |
| 10026 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10026 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10027 | 10027 | .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, |
| 10028 | 10028 | .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ }, |
| 10029 | 10029 | .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) }, |
| 10030 | 10030 | .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ }, |
| 10031 | 10031 | .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y }, |
| 10032 | 10032 | .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ }, |
| 10033 | | .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ }, |
| 10033 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 10034 | 10034 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10035 | 10035 | } }, |
| 10036 | 10036 | }, .{ |
| ... | ... | @@ -10056,7 +10056,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10056 | 10056 | .dst_temps = .{.mem}, |
| 10057 | 10057 | .clobbers = .{ .eflags = true }, |
| 10058 | 10058 | .each = .{ .once = &.{ |
| 10059 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10059 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10060 | 10060 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10061 | 10061 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10062 | 10062 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -10064,7 +10064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10064 | 10064 | .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, |
| 10065 | 10065 | .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, |
| 10066 | 10066 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, |
| 10067 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 10067 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10068 | 10068 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10069 | 10069 | } }, |
| 10070 | 10070 | }, .{ |
| ... | ... | @@ -10090,7 +10090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10090 | 10090 | .dst_temps = .{.mem}, |
| 10091 | 10091 | .clobbers = .{ .eflags = true }, |
| 10092 | 10092 | .each = .{ .once = &.{ |
| 10093 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10093 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10094 | 10094 | .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10095 | 10095 | .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10096 | 10096 | .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, |
| ... | ... | @@ -10100,7 +10100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10100 | 10100 | .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, |
| 10101 | 10101 | .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, |
| 10102 | 10102 | .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10103 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 10103 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10104 | 10104 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10105 | 10105 | } }, |
| 10106 | 10106 | }, .{ |
| ... | ... | @@ -10127,14 +10127,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10127 | 10127 | .dst_temps = .{.mem}, |
| 10128 | 10128 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10129 | 10129 | .each = .{ .once = &.{ |
| 10130 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10130 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10131 | 10131 | .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 10132 | 10132 | .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| 10133 | 10133 | .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 10134 | 10134 | .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 10135 | 10135 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10136 | 10136 | .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| 10137 | | .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ }, |
| 10137 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 10138 | 10138 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10139 | 10139 | } }, |
| 10140 | 10140 | }, .{ |
| ... | ... | @@ -10412,12 +10412,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10412 | 10412 | .dst_temps = .{.mem}, |
| 10413 | 10413 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10414 | 10414 | .each = .{ .once = &.{ |
| 10415 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10415 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10416 | 10416 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10417 | 10417 | .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10418 | 10418 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10419 | 10419 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10420 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 10420 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10421 | 10421 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10422 | 10422 | } }, |
| 10423 | 10423 | }, .{ |
| ... | ... | @@ -10444,12 +10444,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10444 | 10444 | .dst_temps = .{.mem}, |
| 10445 | 10445 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10446 | 10446 | .each = .{ .once = &.{ |
| 10447 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10447 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10448 | 10448 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10449 | 10449 | .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10450 | 10450 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10451 | 10451 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10452 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 10452 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10453 | 10453 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10454 | 10454 | } }, |
| 10455 | 10455 | }, .{ |
| ... | ... | @@ -10476,12 +10476,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 10476 | 10476 | .dst_temps = .{.mem}, |
| 10477 | 10477 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 10478 | 10478 | .each = .{ .once = &.{ |
| 10479 | | .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ }, |
| 10479 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 10480 | 10480 | .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| 10481 | 10481 | .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, |
| 10482 | 10482 | .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, |
| 10483 | 10483 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, |
| 10484 | | .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ }, |
| 10484 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 10485 | 10485 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 10486 | 10486 | } }, |
| 10487 | 10487 | } }) catch |err| switch (err) { |
| ... | ... | @@ -11990,13 +11990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 11990 | 11990 | }, |
| 11991 | 11991 | .dst_temps = .{.mem}, |
| 11992 | 11992 | .each = .{ .once = &.{ |
| 11993 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ }, |
| 11993 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 11994 | 11994 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 11995 | | .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_src0_unaligned_size), ._, ._ }, |
| 11996 | | .{ ._, ._, .xor, .tmp2q, .leaia(.qword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ }, |
| 11997 | | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_src0_unaligned_size), .tmp2q, ._, ._ }, |
| 11998 | | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 11999 | | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 11995 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ }, |
| 11996 | .{ ._, ._, .xor, .tmp2q, .leai(.qword, .tmp1, .tmp0), ._, ._ }, |
| 11997 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ }, |
| 11998 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ }, |
| 11999 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| 12000 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 12000 | 12001 | } }, |
| 12001 | 12002 | }, .{ |
| 12002 | 12003 | .patterns = &.{ |
| ... | ... | @@ -12015,13 +12016,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 12015 | 12016 | }, |
| 12016 | 12017 | .dst_temps = .{.mem}, |
| 12017 | 12018 | .each = .{ .once = &.{ |
| 12018 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ }, |
| 12019 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 12019 | 12020 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 12020 | | .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_src0_unaligned_size), ._, ._ }, |
| 12021 | | .{ ._, ._, .xor, .tmp2d, .leaia(.dword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ }, |
| 12022 | | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_src0_unaligned_size), .tmp2d, ._, ._ }, |
| 12023 | | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 12024 | | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 12021 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ }, |
| 12022 | .{ ._, ._, .xor, .tmp2d, .leai(.dword, .tmp1, .tmp0), ._, ._ }, |
| 12023 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ }, |
| 12024 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 4), ._, ._ }, |
| 12025 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| 12026 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 12025 | 12027 | } }, |
| 12026 | 12028 | } }) catch |err| switch (err) { |
| 12027 | 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 | 20248 | .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ }, |
| 20247 | 20249 | .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ }, |
| 20248 | 20250 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 20249 | | .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ }, |
| 20251 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, |
| 20250 | 20252 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, |
| 20251 | 20253 | } }, |
| 20252 | 20254 | }, .{ |
| ... | ... | @@ -21899,7 +21901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21899 | 21901 | .patterns = &.{ |
| 21900 | 21902 | .{ .src = .{ .to_sse, .none } }, |
| 21901 | 21903 | }, |
| 21902 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 21904 | .dst_temps = .{.{ .rc = .sse }}, |
| 21903 | 21905 | .each = .{ .once = &.{ |
| 21904 | 21906 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| 21905 | 21907 | } }, |
| ... | ... | @@ -21910,7 +21912,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21910 | 21912 | .patterns = &.{ |
| 21911 | 21913 | .{ .src = .{ .to_sse, .none } }, |
| 21912 | 21914 | }, |
| 21913 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 21915 | .dst_temps = .{.{ .rc = .sse }}, |
| 21914 | 21916 | .each = .{ .once = &.{ |
| 21915 | 21917 | .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ }, |
| 21916 | 21918 | } }, |
| ... | ... | @@ -21921,7 +21923,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21921 | 21923 | .patterns = &.{ |
| 21922 | 21924 | .{ .src = .{ .to_sse, .none } }, |
| 21923 | 21925 | }, |
| 21924 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 21926 | .dst_temps = .{.{ .rc = .sse }}, |
| 21925 | 21927 | .each = .{ .once = &.{ |
| 21926 | 21928 | .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ }, |
| 21927 | 21929 | } }, |
| ... | ... | @@ -21949,6 +21951,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 21949 | 21951 | .each = .{ .once = &.{ |
| 21950 | 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 | 22101 | .required_features = .{ .sse, null, null, null }, |
| 21954 | 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 | 22123 | } }, |
| 21976 | 22124 | }, .{ |
| 21977 | 22125 | .required_features = .{ .avx, null, null, null }, |
| 21978 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 21979 | | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22126 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22127 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| 21980 | 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 | 22145 | .each = .{ .once = &.{ |
| 21985 | | .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| 21986 | | .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ }, |
| 22146 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 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 }, |
| 21990 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 21991 | | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22154 | .required_features = .{ .sse4_1, null, null, null }, |
| 22155 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22156 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, |
| 21992 | 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 | 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 | 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 | 22246 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22002 | 22247 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22003 | 22248 | .patterns = &.{ |
| 22004 | | .{ .src = .{ .mut_sse, .none } }, |
| 22249 | .{ .src = .{ .mem, .none } }, |
| 22005 | 22250 | }, |
| 22006 | | .dst_temps = .{.{ .ref = .src0 }}, |
| 22251 | .dst_temps = .{.{ .rc = .sse }}, |
| 22007 | 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 | 22258 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22013 | 22259 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22014 | 22260 | .patterns = &.{ |
| 22015 | | .{ .src = .{ .mem, .none } }, |
| 22016 | | .{ .src = .{ .sse, .none } }, |
| 22261 | .{ .src = .{ .to_sse, .none } }, |
| 22017 | 22262 | }, |
| 22018 | 22263 | .dst_temps = .{.{ .rc = .sse }}, |
| 22019 | 22264 | .each = .{ .once = &.{ |
| 22020 | | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22021 | | .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ }, |
| 22265 | .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ }, |
| 22022 | 22266 | } }, |
| 22023 | 22267 | }, .{ |
| 22024 | 22268 | .required_features = .{ .sse2, null, null, null }, |
| 22025 | 22269 | .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, |
| 22026 | 22270 | .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, |
| 22027 | 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 | 22276 | .each = .{ .once = &.{ |
| 22277 | .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22032 | 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 | 22308 | .{ .src = .{ .mem, .none } }, |
| 22063 | 22309 | .{ .src = .{ .to_sse, .none } }, |
| 22064 | 22310 | }, |
| 22065 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22311 | .dst_temps = .{.{ .rc = .sse }}, |
| 22066 | 22312 | .each = .{ .once = &.{ |
| 22067 | | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0q, ._, ._ }, |
| 22313 | .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| 22068 | 22314 | } }, |
| 22069 | 22315 | }, .{ |
| 22070 | 22316 | .required_features = .{ .sse2, null, null, null }, |
| ... | ... | @@ -22074,9 +22320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22074 | 22320 | .{ .src = .{ .mem, .none } }, |
| 22075 | 22321 | .{ .src = .{ .to_sse, .none } }, |
| 22076 | 22322 | }, |
| 22077 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 22323 | .dst_temps = .{.{ .rc = .sse }}, |
| 22078 | 22324 | .each = .{ .once = &.{ |
| 22079 | | .{ ._, ._ps, .cvtpd2, .dst0x, .src0q, ._, ._ }, |
| 22325 | .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ }, |
| 22080 | 22326 | } }, |
| 22081 | 22327 | }, .{ |
| 22082 | 22328 | .required_features = .{ .avx, null, null, null }, |
| ... | ... | @@ -22086,12 +22332,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22086 | 22332 | .{ .src = .{ .mem, .none } }, |
| 22087 | 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 | 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 | 22422 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22096 | 22423 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22097 | 22424 | .patterns = &.{ |
| ... | ... | @@ -22117,7 +22444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22117 | 22444 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22118 | 22445 | } }, |
| 22119 | 22446 | }, .{ |
| 22120 | | .required_features = .{ .@"64bit", .sse2, null, null }, |
| 22447 | .required_features = .{ .sse2, null, null, null }, |
| 22121 | 22448 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22122 | 22449 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22123 | 22450 | .patterns = &.{ |
| ... | ... | @@ -22143,7 +22470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22143 | 22470 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22144 | 22471 | } }, |
| 22145 | 22472 | }, .{ |
| 22146 | | .required_features = .{ .@"64bit", .sse, null, null }, |
| 22473 | .required_features = .{ .sse, null, null, null }, |
| 22147 | 22474 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22148 | 22475 | .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, |
| 22149 | 22476 | .patterns = &.{ |
| ... | ... | @@ -22168,6 +22495,129 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22168 | 22495 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| 22169 | 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 | 22622 | .required_features = .{ .x87, null, null, null }, |
| 22173 | 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 | 22642 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 22193 | 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 | 22673 | .required_features = .{ .x87, null, null, null }, |
| 22197 | 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 | 22693 | .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, |
| 22217 | 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 | 22724 | .required_features = .{ .sse, null, null, null }, |
| 22221 | 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 | 22744 | .each = .{ .once = &.{ |
| 22241 | 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 | 22867 | .required_features = .{ .sse, null, null, null }, |
| 22245 | 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 | 22887 | .each = .{ .once = &.{ |
| 22265 | 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 | 22978 | .required_features = .{ .sse, null, null, null }, |
| 22269 | 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 | 22998 | .each = .{ .once = &.{ |
| 22289 | 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 | 23089 | .required_features = .{ .sse, null, null, null }, |
| 22293 | 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 | 23109 | .each = .{ .once = &.{ |
| 22313 | 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 | 23202 | } }) catch |err| switch (err) { |
| 22316 | 23203 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 22317 | 23204 | @tagName(air_tag), |
| ... | ... | @@ -22334,7 +23221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22334 | 23221 | .patterns = &.{ |
| 22335 | 23222 | .{ .src = .{ .to_sse, .none } }, |
| 22336 | 23223 | }, |
| 22337 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23224 | .dst_temps = .{.{ .rc = .sse }}, |
| 22338 | 23225 | .each = .{ .once = &.{ |
| 22339 | 23226 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22340 | 23227 | } }, |
| ... | ... | @@ -22346,7 +23233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22346 | 23233 | .{ .src = .{ .mem, .none } }, |
| 22347 | 23234 | .{ .src = .{ .to_sse, .none } }, |
| 22348 | 23235 | }, |
| 22349 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23236 | .dst_temps = .{.{ .rc = .sse }}, |
| 22350 | 23237 | .each = .{ .once = &.{ |
| 22351 | 23238 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22352 | 23239 | } }, |
| ... | ... | @@ -22358,7 +23245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22358 | 23245 | .{ .src = .{ .mem, .none } }, |
| 22359 | 23246 | .{ .src = .{ .to_sse, .none } }, |
| 22360 | 23247 | }, |
| 22361 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23248 | .dst_temps = .{.{ .rc = .sse }}, |
| 22362 | 23249 | .each = .{ .once = &.{ |
| 22363 | 23250 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| 22364 | 23251 | } }, |
| ... | ... | @@ -22386,6 +23273,124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22386 | 23273 | .each = .{ .once = &.{ |
| 22387 | 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 | 23395 | .required_features = .{ .f16c, null, null, null }, |
| 22391 | 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 | 23398 | .patterns = &.{ |
| 22394 | 23399 | .{ .src = .{ .to_sse, .none } }, |
| 22395 | 23400 | }, |
| 22396 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23401 | .dst_temps = .{.{ .rc = .sse }}, |
| 22397 | 23402 | .each = .{ .once = &.{ |
| 22398 | 23403 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22399 | 23404 | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ }, |
| ... | ... | @@ -22406,7 +23411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22406 | 23411 | .{ .src = .{ .mem, .none } }, |
| 22407 | 23412 | .{ .src = .{ .to_sse, .none } }, |
| 22408 | 23413 | }, |
| 22409 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23414 | .dst_temps = .{.{ .rc = .sse }}, |
| 22410 | 23415 | .each = .{ .once = &.{ |
| 22411 | 23416 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22412 | 23417 | .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ }, |
| ... | ... | @@ -22419,11 +23424,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22419 | 23424 | .{ .src = .{ .mem, .none } }, |
| 22420 | 23425 | .{ .src = .{ .to_sse, .none } }, |
| 22421 | 23426 | }, |
| 22422 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23427 | .dst_temps = .{.{ .rc = .sse }}, |
| 22423 | 23428 | .each = .{ .once = &.{ |
| 22424 | 23429 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| 22425 | 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 | 23461 | .required_features = .{ .sse, null, null, null }, |
| 22429 | 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 | 23481 | .each = .{ .once = &.{ |
| 22449 | 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 | 23607 | .required_features = .{ .f16c, .x87, null, null }, |
| 22453 | 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 | 23611 | .{ .src = .{ .to_sse, .none } }, |
| 22457 | 23612 | }, |
| 22458 | 23613 | .extra_temps = .{ |
| 22459 | | .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 23614 | .{ .type = .f32, .kind = .{ .rc = .sse } }, |
| 22460 | 23615 | .{ .type = .f32, .kind = .mem }, |
| 22461 | 23616 | .{ .type = .f80, .kind = .{ .reg = .st7 } }, |
| 22462 | 23617 | .unused, |
| ... | ... | @@ -22497,6 +23652,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22497 | 23652 | .each = .{ .once = &.{ |
| 22498 | 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 | 23750 | .required_features = .{ .sse, null, null, null }, |
| 22502 | 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 | 23772 | } }, |
| 22524 | 23773 | }, .{ |
| 22525 | 23774 | .required_features = .{ .avx, null, null, null }, |
| 22526 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22527 | | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 23775 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| 23776 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22528 | 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 | 23794 | .each = .{ .once = &.{ |
| 22533 | | .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, |
| 22534 | | .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ }, |
| 23795 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 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 }, |
| 22538 | | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22539 | | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 23804 | .required_features = .{ .sse2, null, null, null }, |
| 23805 | .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, |
| 23806 | .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22540 | 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 | 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 | 23866 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22550 | 23867 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22551 | 23868 | .patterns = &.{ |
| 22552 | | .{ .src = .{ .mut_sse, .none } }, |
| 23869 | .{ .src = .{ .mem, .none } }, |
| 22553 | 23870 | }, |
| 22554 | | .dst_temps = .{.{ .ref = .src0 }}, |
| 23871 | .dst_temps = .{.{ .rc = .sse }}, |
| 22555 | 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 | 23878 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22561 | 23879 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22562 | 23880 | .patterns = &.{ |
| 22563 | | .{ .src = .{ .mem, .none } }, |
| 22564 | | .{ .src = .{ .sse, .none } }, |
| 23881 | .{ .src = .{ .to_sse, .none } }, |
| 22565 | 23882 | }, |
| 22566 | 23883 | .dst_temps = .{.{ .rc = .sse }}, |
| 22567 | 23884 | .each = .{ .once = &.{ |
| 22568 | | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22569 | | .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ }, |
| 23885 | .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ }, |
| 22570 | 23886 | } }, |
| 22571 | 23887 | }, .{ |
| 22572 | 23888 | .required_features = .{ .sse2, null, null, null }, |
| 22573 | 23889 | .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, |
| 22574 | 23890 | .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, |
| 22575 | 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 | 23896 | .each = .{ .once = &.{ |
| 23897 | .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, |
| 22580 | 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 | 23928 | .{ .src = .{ .mem, .none } }, |
| 22611 | 23929 | .{ .src = .{ .to_sse, .none } }, |
| 22612 | 23930 | }, |
| 22613 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23931 | .dst_temps = .{.{ .rc = .sse }}, |
| 22614 | 23932 | .each = .{ .once = &.{ |
| 22615 | 23933 | .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| 22616 | 23934 | } }, |
| ... | ... | @@ -22622,7 +23940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22622 | 23940 | .{ .src = .{ .mem, .none } }, |
| 22623 | 23941 | .{ .src = .{ .to_sse, .none } }, |
| 22624 | 23942 | }, |
| 22625 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23943 | .dst_temps = .{.{ .rc = .sse }}, |
| 22626 | 23944 | .each = .{ .once = &.{ |
| 22627 | 23945 | .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ }, |
| 22628 | 23946 | } }, |
| ... | ... | @@ -22634,10 +23952,91 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22634 | 23952 | .{ .src = .{ .mem, .none } }, |
| 22635 | 23953 | .{ .src = .{ .to_sse, .none } }, |
| 22636 | 23954 | }, |
| 22637 | | .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, |
| 23955 | .dst_temps = .{.{ .rc = .sse }}, |
| 22638 | 23956 | .each = .{ .once = &.{ |
| 22639 | 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 | 24041 | .required_features = .{ .x87, null, null, null }, |
| 22643 | 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 | 24060 | .{ ._, .f_, .ld, .src0d, ._, ._, ._ }, |
| 22662 | 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 | 24090 | .required_features = .{ .sse, null, null, null }, |
| 22666 | 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 | 24110 | .each = .{ .once = &.{ |
| 22686 | 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 | 24201 | .required_features = .{ .x87, null, null, null }, |
| 22690 | 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 | 24220 | .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, |
| 22709 | 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 | 24250 | .required_features = .{ .sse, null, null, null }, |
| 22713 | 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 | 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 | 24363 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22738 | 24364 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22739 | 24365 | .patterns = &.{ |
| ... | ... | @@ -22759,7 +24385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22759 | 24385 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22760 | 24386 | } }, |
| 22761 | 24387 | }, .{ |
| 22762 | | .required_features = .{ .@"64bit", .sse2, null, null }, |
| 24388 | .required_features = .{ .sse2, null, null, null }, |
| 22763 | 24389 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22764 | 24390 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22765 | 24391 | .patterns = &.{ |
| ... | ... | @@ -22785,7 +24411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22785 | 24411 | .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, |
| 22786 | 24412 | } }, |
| 22787 | 24413 | }, .{ |
| 22788 | | .required_features = .{ .@"64bit", .sse, null, null }, |
| 24414 | .required_features = .{ .sse, null, null, null }, |
| 22789 | 24415 | .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, |
| 22790 | 24416 | .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, |
| 22791 | 24417 | .patterns = &.{ |
| ... | ... | @@ -22810,6 +24436,96 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22810 | 24436 | .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ }, |
| 22811 | 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 | 24529 | } }) catch |err| switch (err) { |
| 22814 | 24530 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 22815 | 24531 | @tagName(air_tag), |
| ... | ... | @@ -30715,6 +32431,7 @@ fn genBinOp( |
| 30715 | 32431 | try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(), |
| 30716 | 32432 | ); |
| 30717 | 32433 | try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg); |
| 32434 | try self.asmRegisterRegister(.{ .v_, .movshdup }, tmp_reg, dst_reg); |
| 30718 | 32435 | break :src .{ .register = tmp_reg }; |
| 30719 | 32436 | } else rhs_mcv; |
| 30720 | 32437 | |
| ... | ... | @@ -43508,7 +45225,7 @@ const Select = struct { |
| 43508 | 45225 | top: u3, |
| 43509 | 45226 | |
| 43510 | 45227 | fn emitLabel(s: *Select, label_index: Label) void { |
| 43511 | | if (label_index == ._) return; |
| 45228 | assert(@intFromEnum(label_index) < @intFromEnum(Label._)); |
| 43512 | 45229 | const label = &s.labels[@intFromEnum(label_index)]; |
| 43513 | 45230 | for (&label.forward) |*reloc| { |
| 43514 | 45231 | if (reloc.*) |r| s.cg.performReloc(r); |
| ... | ... | @@ -43518,29 +45235,35 @@ const Select = struct { |
| 43518 | 45235 | } |
| 43519 | 45236 | |
| 43520 | 45237 | fn emit(s: *Select, inst: Instruction) !void { |
| 43521 | | s.emitLabel(inst[0]); |
| 43522 | 45238 | const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] }; |
| 43523 | | var mir_ops: [4]CodeGen.Operand = undefined; |
| 43524 | | inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s); |
| 43525 | | s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) { |
| 43526 | | error.InvalidInstruction => { |
| 43527 | | const fixes = @tagName(mir_tag[0]); |
| 43528 | | const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?; |
| 43529 | | return s.cg.fail( |
| 43530 | | "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'", |
| 43531 | | .{ |
| 43532 | | fixes[0..fixes_blank], |
| 43533 | | @tagName(mir_tag[1]), |
| 43534 | | fixes[fixes_blank + 1 ..], |
| 43535 | | @tagName(mir_ops[0]), |
| 43536 | | @tagName(mir_ops[1]), |
| 43537 | | @tagName(mir_ops[2]), |
| 43538 | | @tagName(mir_ops[3]), |
| 43539 | | }, |
| 43540 | | ); |
| 43541 | | }, |
| 43542 | | else => |e| return e, |
| 43543 | | }; |
| 45239 | pseudo: { |
| 45240 | switch (inst[0]) { |
| 45241 | .@"0:", .@"1:", .@"2:" => |label| s.emitLabel(label), |
| 45242 | ._ => {}, |
| 45243 | .pseudo => break :pseudo, |
| 45244 | } |
| 45245 | var mir_ops: [4]CodeGen.Operand = undefined; |
| 45246 | inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s); |
| 45247 | s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) { |
| 45248 | error.InvalidInstruction => { |
| 45249 | const fixes = @tagName(mir_tag[0]); |
| 45250 | const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?; |
| 45251 | return s.cg.fail( |
| 45252 | "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'", |
| 45253 | .{ |
| 45254 | fixes[0..fixes_blank], |
| 45255 | @tagName(mir_tag[1]), |
| 45256 | fixes[fixes_blank + 1 ..], |
| 45257 | @tagName(mir_ops[0]), |
| 45258 | @tagName(mir_ops[1]), |
| 45259 | @tagName(mir_ops[2]), |
| 45260 | @tagName(mir_ops[3]), |
| 45261 | }, |
| 45262 | ); |
| 45263 | }, |
| 45264 | else => |e| return e, |
| 45265 | }; |
| 45266 | } |
| 43544 | 45267 | switch (mir_tag[0]) { |
| 43545 | 45268 | .f_ => switch (mir_tag[1]) { |
| 43546 | 45269 | .@"2xm1", |
| ... | ... | @@ -43594,32 +45317,6 @@ const Select = struct { |
| 43594 | 45317 | .yl2x => s.top +%= 1, |
| 43595 | 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 | 45320 | .f_cstp => switch (mir_tag[1]) { |
| 43624 | 45321 | .de => s.top -%= 1, |
| 43625 | 45322 | .in => s.top +%= 1, |
| ... | ... | @@ -43646,6 +45343,32 @@ const Select = struct { |
| 43646 | 45343 | .com, .ucom => s.top +%= 2, |
| 43647 | 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 | 45372 | .fx_ => switch (mir_tag[1]) { |
| 43650 | 45373 | .rstor => unreachable, |
| 43651 | 45374 | .save => {}, |
| ... | ... | @@ -44199,7 +45922,7 @@ const Select = struct { |
| 44199 | 45922 | Select.Operand, |
| 44200 | 45923 | Select.Operand, |
| 44201 | 45924 | }; |
| 44202 | | const Label = enum { @"0:", @"1:", @"2:", @"_" }; |
| 45925 | const Label = enum { @"0:", @"1:", @"2:", @"_", pseudo }; |
| 44203 | 45926 | const Operand = struct { |
| 44204 | 45927 | tag: Tag, |
| 44205 | 45928 | base: Ref.Sized = .none, |
| ... | ... | @@ -44228,7 +45951,7 @@ const Select = struct { |
| 44228 | 45951 | ptr_bit_size, |
| 44229 | 45952 | size, |
| 44230 | 45953 | size_sub_elem_size, |
| 44231 | | src0_unaligned_size, |
| 45954 | unaligned_size, |
| 44232 | 45955 | bit_size, |
| 44233 | 45956 | src0_bit_size, |
| 44234 | 45957 | len, |
| ... | ... | @@ -44252,8 +45975,8 @@ const Select = struct { |
| 44252 | 45975 | const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" }; |
| 44253 | 45976 | const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" }; |
| 44254 | 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" }; |
| 44256 | | const sub_src0_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 45978 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 45979 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 44257 | 45980 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; |
| 44258 | 45981 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| 44259 | 45982 | const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| ... | ... | @@ -44744,7 +46467,7 @@ const Select = struct { |
| 44744 | 46467 | const ty = op.base.ref.deref(s).typeOf(s.cg); |
| 44745 | 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 | 46471 | .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 44749 | 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 | 46473 | .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)), |