| ... | @@ -2292,7 +2292,7 @@ fn genBodyBlock(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -2292,7 +2292,7 @@ fn genBodyBlock(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2292 | } | 2292 | } |
| 2293 | | 2293 | |
| 2294 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | 2294 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2295 | @setEvalBranchQuota(29_500); | 2295 | @setEvalBranchQuota(29_600); |
| 2296 | const pt = cg.pt; | 2296 | const pt = cg.pt; |
| 2297 | const zcu = pt.zcu; | 2297 | const zcu = pt.zcu; |
| 2298 | const ip = &zcu.intern_pool; | 2298 | const ip = &zcu.intern_pool; |
| ... | @@ -23288,10 +23288,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23288,10 +23288,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23288 | .dst_temps = .{ .mem, .unused }, | 23288 | .dst_temps = .{ .mem, .unused }, |
| 23289 | .clobbers = .{ .eflags = true }, | 23289 | .clobbers = .{ .eflags = true }, |
| 23290 | .each = .{ .once = &.{ | 23290 | .each = .{ .once = &.{ |
| 23291 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23291 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23292 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 23292 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23293 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size), ._, ._ }, | 23293 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23294 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 23294 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23295 | .{ ._, ._, .mov, .tmp4d, .sia(-8, .src0, .add_elem_size), ._, ._ }, | 23295 | .{ ._, ._, .mov, .tmp4d, .sia(-8, .src0, .add_elem_size), ._, ._ }, |
| 23296 | .{ .@"1:", ._, .xor, .tmp5d, .tmp5d, ._, ._ }, | 23296 | .{ .@"1:", ._, .xor, .tmp5d, .tmp5d, ._, ._ }, |
| 23297 | .{ ._, ._, .@"or", .tmp5q, .leai(.tmp1q, .tmp4), ._, ._ }, | 23297 | .{ ._, ._, .@"or", .tmp5q, .leai(.tmp1q, .tmp4), ._, ._ }, |
| ... | @@ -23339,10 +23339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23339,10 +23339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23339 | .dst_temps = .{ .mem, .unused }, | 23339 | .dst_temps = .{ .mem, .unused }, |
| 23340 | .clobbers = .{ .eflags = true }, | 23340 | .clobbers = .{ .eflags = true }, |
| 23341 | .each = .{ .once = &.{ | 23341 | .each = .{ .once = &.{ |
| 23342 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23342 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23343 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 23343 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23344 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 23344 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 23345 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 23345 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23346 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 23346 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 23347 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 23347 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 23348 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 23348 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -23393,10 +23393,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23393,10 +23393,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23393 | .dst_temps = .{ .mem, .unused }, | 23393 | .dst_temps = .{ .mem, .unused }, |
| 23394 | .clobbers = .{ .eflags = true }, | 23394 | .clobbers = .{ .eflags = true }, |
| 23395 | .each = .{ .once = &.{ | 23395 | .each = .{ .once = &.{ |
| 23396 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23396 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23397 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 23397 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23398 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 23398 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 23399 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 23399 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23400 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 23400 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 23401 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 23401 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 23402 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 23402 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -23447,10 +23447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23447,10 +23447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23447 | .dst_temps = .{ .mem, .unused }, | 23447 | .dst_temps = .{ .mem, .unused }, |
| 23448 | .clobbers = .{ .eflags = true }, | 23448 | .clobbers = .{ .eflags = true }, |
| 23449 | .each = .{ .once = &.{ | 23449 | .each = .{ .once = &.{ |
| 23450 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23450 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23451 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 23451 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23452 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 23452 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 23453 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 23453 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23454 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 23454 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 23455 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 23455 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 23456 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 23456 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -23502,10 +23502,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -23502,10 +23502,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23502 | .dst_temps = .{ .mem, .unused }, | 23502 | .dst_temps = .{ .mem, .unused }, |
| 23503 | .clobbers = .{ .eflags = true }, | 23503 | .clobbers = .{ .eflags = true }, |
| 23504 | .each = .{ .once = &.{ | 23504 | .each = .{ .once = &.{ |
| 23505 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 23505 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23506 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 23506 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23507 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 23507 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 23508 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 23508 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23509 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 23509 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 23510 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 23510 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 23511 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 23511 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -26107,10 +26107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26107,10 +26107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26107 | .dst_temps = .{ .mem, .unused }, | 26107 | .dst_temps = .{ .mem, .unused }, |
| 26108 | .clobbers = .{ .eflags = true }, | 26108 | .clobbers = .{ .eflags = true }, |
| 26109 | .each = .{ .once = &.{ | 26109 | .each = .{ .once = &.{ |
| 26110 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 26110 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 26111 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 26111 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26112 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size), ._, ._ }, | 26112 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26113 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 26113 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26114 | .{ ._, ._, .mov, .tmp4d, .sia(-8, .src0, .add_elem_size), ._, ._ }, | 26114 | .{ ._, ._, .mov, .tmp4d, .sia(-8, .src0, .add_elem_size), ._, ._ }, |
| 26115 | .{ .@"1:", ._, .xor, .tmp5d, .tmp5d, ._, ._ }, | 26115 | .{ .@"1:", ._, .xor, .tmp5d, .tmp5d, ._, ._ }, |
| 26116 | .{ ._, ._, .@"or", .tmp5q, .leai(.tmp1q, .tmp4), ._, ._ }, | 26116 | .{ ._, ._, .@"or", .tmp5q, .leai(.tmp1q, .tmp4), ._, ._ }, |
| ... | @@ -26158,10 +26158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26158,10 +26158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26158 | .dst_temps = .{ .mem, .unused }, | 26158 | .dst_temps = .{ .mem, .unused }, |
| 26159 | .clobbers = .{ .eflags = true }, | 26159 | .clobbers = .{ .eflags = true }, |
| 26160 | .each = .{ .once = &.{ | 26160 | .each = .{ .once = &.{ |
| 26161 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 26161 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 26162 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 26162 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26163 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 26163 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 26164 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 26164 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26165 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 26165 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 26166 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 26166 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 26167 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 26167 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -26212,10 +26212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26212,10 +26212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26212 | .dst_temps = .{ .mem, .unused }, | 26212 | .dst_temps = .{ .mem, .unused }, |
| 26213 | .clobbers = .{ .eflags = true }, | 26213 | .clobbers = .{ .eflags = true }, |
| 26214 | .each = .{ .once = &.{ | 26214 | .each = .{ .once = &.{ |
| 26215 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 26215 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 26216 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 26216 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26217 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 26217 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 26218 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 26218 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26219 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 26219 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 26220 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 26220 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 26221 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 26221 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -26266,10 +26266,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26266,10 +26266,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26266 | .dst_temps = .{ .mem, .unused }, | 26266 | .dst_temps = .{ .mem, .unused }, |
| 26267 | .clobbers = .{ .eflags = true }, | 26267 | .clobbers = .{ .eflags = true }, |
| 26268 | .each = .{ .once = &.{ | 26268 | .each = .{ .once = &.{ |
| 26269 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 26269 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 26270 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 26270 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26271 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 26271 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 26272 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 26272 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26273 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 26273 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 26274 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 26274 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 26275 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 26275 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -26321,10 +26321,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -26321,10 +26321,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 26321 | .dst_temps = .{ .mem, .unused }, | 26321 | .dst_temps = .{ .mem, .unused }, |
| 26322 | .clobbers = .{ .eflags = true }, | 26322 | .clobbers = .{ .eflags = true }, |
| 26323 | .each = .{ .once = &.{ | 26323 | .each = .{ .once = &.{ |
| 26324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, | 26324 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 26325 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size), ._, ._ }, | 26325 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26326 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size, 8), ._, ._ }, | 26326 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size, 8), ._, ._ }, |
| 26327 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size), ._, ._ }, | 26327 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ }, |
| 26328 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, | 26328 | .{ ._, ._, .mov, .tmp4d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ }, |
| 26329 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, | 26329 | .{ .@"1:", ._, .lea, .tmp5p, .leaa(.tmp4, .sub_src0_elem_size_div_8), ._, ._ }, |
| 26330 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, | 26330 | .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, |
| ... | @@ -37912,7 +37912,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -37912,7 +37912,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 37912 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 37912 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 37913 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 37913 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 37914 | .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 37914 | .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 37915 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ }, | 37915 | .{ ._, ._, .movsx, .tmp1d, .tmp1h, ._, ._ }, |
| | 37916 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1l, ._, ._ }, |
| 37916 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 37917 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 37917 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 37918 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 37918 | } }, | 37919 | } }, |
| ... | @@ -37944,7 +37945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -37944,7 +37945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 37944 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 37945 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 37945 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 37946 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 37946 | .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 37947 | .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 37947 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ }, | 37948 | .{ ._, ._, .movsx, .tmp1d, .tmp1h, ._, ._ }, |
| | 37949 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1l, ._, ._ }, |
| 37948 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 37950 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 37949 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 37951 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 37950 | } }, | 37952 | } }, |
| ... | @@ -37977,7 +37979,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -37977,7 +37979,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 37977 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 37979 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 37978 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 37980 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 37979 | .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 37981 | .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 37980 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ }, | 37982 | .{ ._, ._, .movzx, .tmp1d, .tmp1h, ._, ._ }, |
| | 37983 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1l, ._, ._ }, |
| 37981 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, | 37984 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 37982 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 37985 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 37983 | } }, | 37986 | } }, |
| ... | @@ -38009,7 +38012,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -38009,7 +38012,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 38009 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, | 38012 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 38010 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, | 38013 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 38011 | .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, | 38014 | .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ }, |
| 38012 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ }, | 38015 | .{ ._, ._, .movzx, .tmp1d, .tmp1h, ._, ._ }, |
| | 38016 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1l, ._, ._ }, |
| 38013 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, | 38017 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 38014 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, | 38018 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 38015 | } }, | 38019 | } }, |
| ... | @@ -59429,9 +59433,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59429,9 +59433,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59429 | .required_features = .{ .mmx, null, null, null }, | 59433 | .required_features = .{ .mmx, null, null, null }, |
| 59430 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, | 59434 | .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, |
| 59431 | .patterns = &.{ | 59435 | .patterns = &.{ |
| 59432 | .{ .src = .{ .to_mut_mm, .mem, .none } }, | 59436 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| 59433 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, | 59437 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| 59434 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, | 59438 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 59435 | }, | 59439 | }, |
| 59436 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, | 59440 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59437 | .each = .{ .once = &.{ | 59441 | .each = .{ .once = &.{ |
| ... | @@ -59441,9 +59445,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59441,9 +59445,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59441 | .required_features = .{ .avx, null, null, null }, | 59445 | .required_features = .{ .avx, null, null, null }, |
| 59442 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, | 59446 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 59443 | .patterns = &.{ | 59447 | .patterns = &.{ |
| 59444 | .{ .src = .{ .to_xmm, .mem, .none } }, | 59448 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 59445 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, | 59449 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 59446 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, | 59450 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 59447 | }, | 59451 | }, |
| 59448 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 59452 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 59449 | .each = .{ .once = &.{ | 59453 | .each = .{ .once = &.{ |
| ... | @@ -59453,9 +59457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59453,9 +59457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59453 | .required_features = .{ .sse2, null, null, null }, | 59457 | .required_features = .{ .sse2, null, null, null }, |
| 59454 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, | 59458 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 59455 | .patterns = &.{ | 59459 | .patterns = &.{ |
| 59456 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, | 59460 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 59457 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, | 59461 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 59458 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, | 59462 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 59459 | }, | 59463 | }, |
| 59460 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, | 59464 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59461 | .each = .{ .once = &.{ | 59465 | .each = .{ .once = &.{ |
| ... | @@ -59465,9 +59469,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59465,9 +59469,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59465 | .required_features = .{ .sse, null, null, null }, | 59469 | .required_features = .{ .sse, null, null, null }, |
| 59466 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, | 59470 | .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, |
| 59467 | .patterns = &.{ | 59471 | .patterns = &.{ |
| 59468 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, | 59472 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 59469 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, | 59473 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 59470 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, | 59474 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 59471 | }, | 59475 | }, |
| 59472 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, | 59476 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59473 | .each = .{ .once = &.{ | 59477 | .each = .{ .once = &.{ |
| ... | @@ -59477,9 +59481,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59477,9 +59481,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59477 | .required_features = .{ .avx2, null, null, null }, | 59481 | .required_features = .{ .avx2, null, null, null }, |
| 59478 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, | 59482 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, |
| 59479 | .patterns = &.{ | 59483 | .patterns = &.{ |
| 59480 | .{ .src = .{ .to_ymm, .mem, .none } }, | 59484 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 59481 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, | 59485 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 59482 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, | 59486 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 59483 | }, | 59487 | }, |
| 59484 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 59488 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 59485 | .each = .{ .once = &.{ | 59489 | .each = .{ .once = &.{ |
| ... | @@ -59489,9 +59493,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -59489,9 +59493,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59489 | .required_features = .{ .avx, null, null, null }, | 59493 | .required_features = .{ .avx, null, null, null }, |
| 59490 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, | 59494 | .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, |
| 59491 | .patterns = &.{ | 59495 | .patterns = &.{ |
| 59492 | .{ .src = .{ .to_ymm, .mem, .none } }, | 59496 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 59493 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, | 59497 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 59494 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, | 59498 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 59495 | }, | 59499 | }, |
| 59496 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 59500 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 59497 | .each = .{ .once = &.{ | 59501 | .each = .{ .once = &.{ |
| ... | @@ -64077,6 +64081,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64077,6 +64081,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64077 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); | 64081 | var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); |
| 64078 | var res: [1]Temp = undefined; | 64082 | var res: [1]Temp = undefined; |
| 64079 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ | 64083 | cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ |
| | 64084 | .src_constraints = .{ .{ .bool_vec = .byte }, .any, .any }, |
| | 64085 | .patterns = &.{ |
| | 64086 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 64087 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 64088 | }, |
| | 64089 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64090 | .each = .{ .once = &.{ |
| | 64091 | .{ ._, ._, .not, .dst0b, ._, ._, ._ }, |
| | 64092 | } }, |
| | 64093 | }, .{ |
| 64080 | .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any }, | 64094 | .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any }, |
| 64081 | .patterns = &.{ | 64095 | .patterns = &.{ |
| 64082 | .{ .src = .{ .mut_mem, .none, .none } }, | 64096 | .{ .src = .{ .mut_mem, .none, .none } }, |
| ... | @@ -64097,6 +64111,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64097,6 +64111,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64097 | .each = .{ .once = &.{ | 64111 | .each = .{ .once = &.{ |
| 64098 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ }, | 64112 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ }, |
| 64099 | } }, | 64113 | } }, |
| | 64114 | }, .{ |
| | 64115 | .src_constraints = .{ .{ .bool_vec = .word }, .any, .any }, |
| | 64116 | .patterns = &.{ |
| | 64117 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 64118 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 64119 | }, |
| | 64120 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64121 | .each = .{ .once = &.{ |
| | 64122 | .{ ._, ._, .not, .dst0w, ._, ._, ._ }, |
| | 64123 | } }, |
| 64100 | }, .{ | 64124 | }, .{ |
| 64101 | .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any }, | 64125 | .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any }, |
| 64102 | .patterns = &.{ | 64126 | .patterns = &.{ |
| ... | @@ -64118,6 +64142,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64118,6 +64142,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64118 | .each = .{ .once = &.{ | 64142 | .each = .{ .once = &.{ |
| 64119 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ }, | 64143 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ }, |
| 64120 | } }, | 64144 | } }, |
| | 64145 | }, .{ |
| | 64146 | .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any }, |
| | 64147 | .patterns = &.{ |
| | 64148 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 64149 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 64150 | }, |
| | 64151 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64152 | .each = .{ .once = &.{ |
| | 64153 | .{ ._, ._, .not, .dst0d, ._, ._, ._ }, |
| | 64154 | } }, |
| 64121 | }, .{ | 64155 | }, .{ |
| 64122 | .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any }, | 64156 | .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any }, |
| 64123 | .patterns = &.{ | 64157 | .patterns = &.{ |
| ... | @@ -64139,6 +64173,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64139,6 +64173,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64139 | .each = .{ .once = &.{ | 64173 | .each = .{ .once = &.{ |
| 64140 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_umax), ._, ._ }, | 64174 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_umax), ._, ._ }, |
| 64141 | } }, | 64175 | } }, |
| | 64176 | }, .{ |
| | 64177 | .required_features = .{ .@"64bit", null, null, null }, |
| | 64178 | .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any }, |
| | 64179 | .patterns = &.{ |
| | 64180 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 64181 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| | 64182 | }, |
| | 64183 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64184 | .each = .{ .once = &.{ |
| | 64185 | .{ ._, ._, .not, .dst0q, ._, ._, ._ }, |
| | 64186 | } }, |
| 64142 | }, .{ | 64187 | }, .{ |
| 64143 | .required_features = .{ .@"64bit", null, null, null }, | 64188 | .required_features = .{ .@"64bit", null, null, null }, |
| 64144 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, | 64189 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, |
| ... | @@ -64162,12 +64207,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64162,12 +64207,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64162 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, | 64207 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 64163 | .{ ._, ._, .xor, .dst0q, .src0q, ._, ._ }, | 64208 | .{ ._, ._, .xor, .dst0q, .src0q, ._, ._ }, |
| 64164 | } }, | 64209 | } }, |
| | 64210 | }, .{ |
| | 64211 | .required_features = .{ .mmx, null, null, null }, |
| | 64212 | .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any }, |
| | 64213 | .patterns = &.{ |
| | 64214 | .{ .src = .{ .mem, .none, .none } }, |
| | 64215 | .{ .src = .{ .to_mmx, .none, .none } }, |
| | 64216 | }, |
| | 64217 | .dst_temps = .{ .{ .rc = .mmx }, .unused }, |
| | 64218 | .each = .{ .once = &.{ |
| | 64219 | .{ ._, .p_d, .cmpeq, .dst0q, .dst0q, ._, ._ }, |
| | 64220 | .{ ._, .p_, .xor, .dst0q, .src0q, ._, ._ }, |
| | 64221 | } }, |
| 64165 | }, .{ | 64222 | }, .{ |
| 64166 | .required_features = .{ .mmx, null, null, null }, | 64223 | .required_features = .{ .mmx, null, null, null }, |
| 64167 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, | 64224 | .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, |
| 64168 | .patterns = &.{ | 64225 | .patterns = &.{ |
| 64169 | .{ .src = .{ .mem, .none, .none } }, | 64226 | .{ .src = .{ .mem, .none, .none } }, |
| 64170 | .{ .src = .{ .to_mm, .none, .none } }, | 64227 | .{ .src = .{ .to_mmx, .none, .none } }, |
| 64171 | }, | 64228 | }, |
| 64172 | .dst_temps = .{ .{ .rc = .mmx }, .unused }, | 64229 | .dst_temps = .{ .{ .rc = .mmx }, .unused }, |
| 64173 | .each = .{ .once = &.{ | 64230 | .each = .{ .once = &.{ |
| ... | @@ -64178,7 +64235,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64178,7 +64235,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64178 | .required_features = .{ .mmx, null, null, null }, | 64235 | .required_features = .{ .mmx, null, null, null }, |
| 64179 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, | 64236 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 64180 | .patterns = &.{ | 64237 | .patterns = &.{ |
| 64181 | .{ .src = .{ .to_mut_mm, .none, .none } }, | 64238 | .{ .src = .{ .to_mut_mmx, .none, .none } }, |
| 64182 | }, | 64239 | }, |
| 64183 | .extra_temps = .{ | 64240 | .extra_temps = .{ |
| 64184 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64241 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64198,12 +64255,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64198,12 +64255,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64198 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64255 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64199 | .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ }, | 64256 | .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ }, |
| 64200 | } }, | 64257 | } }, |
| | 64258 | }, .{ |
| | 64259 | .required_features = .{ .avx, null, null, null }, |
| | 64260 | .src_constraints = .{ .{ .bool_vec = .xword }, .any, .any }, |
| | 64261 | .patterns = &.{ |
| | 64262 | .{ .src = .{ .mem, .none, .none } }, |
| | 64263 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 64264 | }, |
| | 64265 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| | 64266 | .each = .{ .once = &.{ |
| | 64267 | .{ ._, .vp_q, .cmpeq, .dst0x, .dst0x, .dst0x, ._ }, |
| | 64268 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .src0x, ._ }, |
| | 64269 | } }, |
| 64201 | }, .{ | 64270 | }, .{ |
| 64202 | .required_features = .{ .avx, null, null, null }, | 64271 | .required_features = .{ .avx, null, null, null }, |
| 64203 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, | 64272 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, |
| 64204 | .patterns = &.{ | 64273 | .patterns = &.{ |
| 64205 | .{ .src = .{ .mem, .none, .none } }, | 64274 | .{ .src = .{ .mem, .none, .none } }, |
| 64206 | .{ .src = .{ .to_xmm, .none, .none } }, | 64275 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64207 | }, | 64276 | }, |
| 64208 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 64277 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 64209 | .each = .{ .once = &.{ | 64278 | .each = .{ .once = &.{ |
| ... | @@ -64214,7 +64283,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64214,7 +64283,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64214 | .required_features = .{ .avx, null, null, null }, | 64283 | .required_features = .{ .avx, null, null, null }, |
| 64215 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, | 64284 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, |
| 64216 | .patterns = &.{ | 64285 | .patterns = &.{ |
| 64217 | .{ .src = .{ .to_xmm, .none, .none } }, | 64286 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64218 | }, | 64287 | }, |
| 64219 | .extra_temps = .{ | 64288 | .extra_temps = .{ |
| 64220 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64289 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64234,12 +64303,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64234,12 +64303,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64234 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64303 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64235 | .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, | 64304 | .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 64236 | } }, | 64305 | } }, |
| | 64306 | }, .{ |
| | 64307 | .required_features = .{ .sse2, null, null, null }, |
| | 64308 | .src_constraints = .{ .{ .bool_vec = .xword }, .any, .any }, |
| | 64309 | .patterns = &.{ |
| | 64310 | .{ .src = .{ .mem, .none, .none } }, |
| | 64311 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 64312 | }, |
| | 64313 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| | 64314 | .each = .{ .once = &.{ |
| | 64315 | .{ ._, .p_d, .cmpeq, .dst0x, .dst0x, ._, ._ }, |
| | 64316 | .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ }, |
| | 64317 | } }, |
| 64237 | }, .{ | 64318 | }, .{ |
| 64238 | .required_features = .{ .sse2, null, null, null }, | 64319 | .required_features = .{ .sse2, null, null, null }, |
| 64239 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, | 64320 | .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, |
| 64240 | .patterns = &.{ | 64321 | .patterns = &.{ |
| 64241 | .{ .src = .{ .mem, .none, .none } }, | 64322 | .{ .src = .{ .mem, .none, .none } }, |
| 64242 | .{ .src = .{ .to_xmm, .none, .none } }, | 64323 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64243 | }, | 64324 | }, |
| 64244 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 64325 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 64245 | .each = .{ .once = &.{ | 64326 | .each = .{ .once = &.{ |
| ... | @@ -64250,7 +64331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64250,7 +64331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64250 | .required_features = .{ .sse2, null, null, null }, | 64331 | .required_features = .{ .sse2, null, null, null }, |
| 64251 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, | 64332 | .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, |
| 64252 | .patterns = &.{ | 64333 | .patterns = &.{ |
| 64253 | .{ .src = .{ .to_mut_xmm, .none, .none } }, | 64334 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 64254 | }, | 64335 | }, |
| 64255 | .extra_temps = .{ | 64336 | .extra_temps = .{ |
| 64256 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64337 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64270,11 +64351,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64270,11 +64351,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64270 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64351 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64271 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, | 64352 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 64272 | } }, | 64353 | } }, |
| | 64354 | }, .{ |
| | 64355 | .required_features = .{ .sse, null, null, null }, |
| | 64356 | .src_constraints = .{ .{ .bool_vec = .xword }, .any, .any }, |
| | 64357 | .patterns = &.{ |
| | 64358 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| | 64359 | }, |
| | 64360 | .extra_temps = .{ |
| | 64361 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 64362 | .{ .kind = .{ .umax_mem = .{ .ref = .src0 } } }, |
| | 64363 | .unused, |
| | 64364 | .unused, |
| | 64365 | .unused, |
| | 64366 | .unused, |
| | 64367 | .unused, |
| | 64368 | .unused, |
| | 64369 | .unused, |
| | 64370 | .unused, |
| | 64371 | .unused, |
| | 64372 | }, |
| | 64373 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64374 | .each = .{ .once = &.{ |
| | 64375 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| | 64376 | .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| | 64377 | } }, |
| 64273 | }, .{ | 64378 | }, .{ |
| 64274 | .required_features = .{ .sse, null, null, null }, | 64379 | .required_features = .{ .sse, null, null, null }, |
| 64275 | .src_constraints = .{ .{ .int = .xword }, .any, .any }, | 64380 | .src_constraints = .{ .{ .int = .xword }, .any, .any }, |
| 64276 | .patterns = &.{ | 64381 | .patterns = &.{ |
| 64277 | .{ .src = .{ .to_mut_xmm, .none, .none } }, | 64382 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 64278 | }, | 64383 | }, |
| 64279 | .extra_temps = .{ | 64384 | .extra_temps = .{ |
| 64280 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64385 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64294,12 +64399,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64294,12 +64399,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64294 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64399 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64295 | .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, | 64400 | .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 64296 | } }, | 64401 | } }, |
| | 64402 | }, .{ |
| | 64403 | .required_features = .{ .avx2, null, null, null }, |
| | 64404 | .src_constraints = .{ .{ .bool_vec = .yword }, .any, .any }, |
| | 64405 | .patterns = &.{ |
| | 64406 | .{ .src = .{ .mem, .none, .none } }, |
| | 64407 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 64408 | }, |
| | 64409 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| | 64410 | .each = .{ .once = &.{ |
| | 64411 | .{ ._, .vp_q, .cmpeq, .dst0y, .dst0y, .dst0y, ._ }, |
| | 64412 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .src0y, ._ }, |
| | 64413 | } }, |
| 64297 | }, .{ | 64414 | }, .{ |
| 64298 | .required_features = .{ .avx2, null, null, null }, | 64415 | .required_features = .{ .avx2, null, null, null }, |
| 64299 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, | 64416 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, |
| 64300 | .patterns = &.{ | 64417 | .patterns = &.{ |
| 64301 | .{ .src = .{ .mem, .none, .none } }, | 64418 | .{ .src = .{ .mem, .none, .none } }, |
| 64302 | .{ .src = .{ .to_ymm, .none, .none } }, | 64419 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64303 | }, | 64420 | }, |
| 64304 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 64421 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 64305 | .each = .{ .once = &.{ | 64422 | .each = .{ .once = &.{ |
| ... | @@ -64310,7 +64427,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64310,7 +64427,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64310 | .required_features = .{ .avx2, null, null, null }, | 64427 | .required_features = .{ .avx2, null, null, null }, |
| 64311 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, | 64428 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, |
| 64312 | .patterns = &.{ | 64429 | .patterns = &.{ |
| 64313 | .{ .src = .{ .to_ymm, .none, .none } }, | 64430 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64314 | }, | 64431 | }, |
| 64315 | .extra_temps = .{ | 64432 | .extra_temps = .{ |
| 64316 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64433 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64330,12 +64447,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64330,12 +64447,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64330 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64447 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64331 | .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, | 64448 | .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 64332 | } }, | 64449 | } }, |
| | 64450 | }, .{ |
| | 64451 | .required_features = .{ .avx, null, null, null }, |
| | 64452 | .src_constraints = .{ .{ .bool_vec = .yword }, .any, .any }, |
| | 64453 | .patterns = &.{ |
| | 64454 | .{ .src = .{ .mem, .none, .none } }, |
| | 64455 | .{ .src = .{ .to_sse, .none, .none } }, |
| | 64456 | }, |
| | 64457 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| | 64458 | .each = .{ .once = &.{ |
| | 64459 | .{ ._, .v_pd, .cmp, .dst0y, .dst0y, .dst0y, .vp(.true) }, |
| | 64460 | .{ ._, .v_pd, .xor, .dst0y, .dst0y, .src0y, ._ }, |
| | 64461 | } }, |
| 64333 | }, .{ | 64462 | }, .{ |
| 64334 | .required_features = .{ .avx, null, null, null }, | 64463 | .required_features = .{ .avx, null, null, null }, |
| 64335 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, | 64464 | .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, |
| 64336 | .patterns = &.{ | 64465 | .patterns = &.{ |
| 64337 | .{ .src = .{ .mem, .none, .none } }, | 64466 | .{ .src = .{ .mem, .none, .none } }, |
| 64338 | .{ .src = .{ .to_ymm, .none, .none } }, | 64467 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64339 | }, | 64468 | }, |
| 64340 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 64469 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 64341 | .each = .{ .once = &.{ | 64470 | .each = .{ .once = &.{ |
| ... | @@ -64346,7 +64475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64346,7 +64475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64346 | .required_features = .{ .avx, null, null, null }, | 64475 | .required_features = .{ .avx, null, null, null }, |
| 64347 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, | 64476 | .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, |
| 64348 | .patterns = &.{ | 64477 | .patterns = &.{ |
| 64349 | .{ .src = .{ .to_ymm, .none, .none } }, | 64478 | .{ .src = .{ .to_sse, .none, .none } }, |
| 64350 | }, | 64479 | }, |
| 64351 | .extra_temps = .{ | 64480 | .extra_temps = .{ |
| 64352 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 64481 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -64366,6 +64495,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64366,6 +64495,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64366 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 64495 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 64367 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, | 64496 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 64368 | } }, | 64497 | } }, |
| | 64498 | }, .{ |
| | 64499 | .required_features = .{ .avx2, null, null, null }, |
| | 64500 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| | 64501 | .patterns = &.{ |
| | 64502 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64503 | }, |
| | 64504 | .extra_temps = .{ |
| | 64505 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64506 | .{ .kind = .{ .rc = .sse } }, |
| | 64507 | .{ .kind = .{ .rc = .sse } }, |
| | 64508 | .unused, |
| | 64509 | .unused, |
| | 64510 | .unused, |
| | 64511 | .unused, |
| | 64512 | .unused, |
| | 64513 | .unused, |
| | 64514 | .unused, |
| | 64515 | .unused, |
| | 64516 | }, |
| | 64517 | .dst_temps = .{ .mem, .unused }, |
| | 64518 | .clobbers = .{ .eflags = true }, |
| | 64519 | .each = .{ .once = &.{ |
| | 64520 | .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_size), ._, ._ }, |
| | 64521 | .{ ._, .vp_q, .cmpeq, .tmp1y, .tmp1y, .tmp1y, ._ }, |
| | 64522 | .{ .@"0:", .vp_, .xor, .tmp2y, .tmp1y, .memiad(.src0y, .tmp0, .add_size, -16), ._ }, |
| | 64523 | .{ ._, .v_dqu, .mov, .memiad(.dst0y, .tmp0, .add_size, -16), .tmp2y, ._, ._ }, |
| | 64524 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 64525 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64526 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, |
| | 64527 | .{ ._, .v_dqa, .mov, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, |
| | 64528 | } }, |
| 64369 | }, .{ | 64529 | }, .{ |
| 64370 | .required_features = .{ .avx2, null, null, null }, | 64530 | .required_features = .{ .avx2, null, null, null }, |
| 64371 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, | 64531 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| ... | @@ -64397,6 +64557,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64397,6 +64557,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64397 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, | 64557 | .{ .@"0:", .vp_, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, |
| 64398 | .{ ._, .v_dqa, .mov, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, | 64558 | .{ ._, .v_dqa, .mov, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, |
| 64399 | } }, | 64559 | } }, |
| | 64560 | }, .{ |
| | 64561 | .required_features = .{ .avx2, null, null, null }, |
| | 64562 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| | 64563 | .patterns = &.{ |
| | 64564 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64565 | }, |
| | 64566 | .extra_temps = .{ |
| | 64567 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64568 | .{ .kind = .{ .rc = .sse } }, |
| | 64569 | .{ .kind = .{ .rc = .sse } }, |
| | 64570 | .unused, |
| | 64571 | .unused, |
| | 64572 | .unused, |
| | 64573 | .unused, |
| | 64574 | .unused, |
| | 64575 | .unused, |
| | 64576 | .unused, |
| | 64577 | .unused, |
| | 64578 | }, |
| | 64579 | .dst_temps = .{ .mem, .unused }, |
| | 64580 | .clobbers = .{ .eflags = true }, |
| | 64581 | .each = .{ .once = &.{ |
| | 64582 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64583 | .{ ._, .vp_q, .cmpeq, .tmp1y, .tmp1y, .tmp1y, ._ }, |
| | 64584 | .{ .@"0:", .vp_, .xor, .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| | 64585 | .{ ._, .v_dqu, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp2y, ._, ._ }, |
| | 64586 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 64587 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64588 | } }, |
| 64400 | }, .{ | 64589 | }, .{ |
| 64401 | .required_features = .{ .avx2, null, null, null }, | 64590 | .required_features = .{ .avx2, null, null, null }, |
| 64402 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, | 64591 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| ... | @@ -64426,6 +64615,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64426,6 +64615,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64426 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 64615 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 64427 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 64616 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 64428 | } }, | 64617 | } }, |
| | 64618 | }, .{ |
| | 64619 | .required_features = .{ .avx, null, null, null }, |
| | 64620 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| | 64621 | .patterns = &.{ |
| | 64622 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64623 | }, |
| | 64624 | .extra_temps = .{ |
| | 64625 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64626 | .{ .kind = .{ .rc = .sse } }, |
| | 64627 | .{ .kind = .{ .rc = .sse } }, |
| | 64628 | .unused, |
| | 64629 | .unused, |
| | 64630 | .unused, |
| | 64631 | .unused, |
| | 64632 | .unused, |
| | 64633 | .unused, |
| | 64634 | .unused, |
| | 64635 | .unused, |
| | 64636 | }, |
| | 64637 | .dst_temps = .{ .mem, .unused }, |
| | 64638 | .clobbers = .{ .eflags = true }, |
| | 64639 | .each = .{ .once = &.{ |
| | 64640 | .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_size), ._, ._ }, |
| | 64641 | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.true) }, |
| | 64642 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memiad(.src0y, .tmp0, .add_size, -16), ._ }, |
| | 64643 | .{ ._, .v_pd, .movu, .memiad(.dst0y, .tmp0, .add_size, -16), .tmp2y, ._, ._ }, |
| | 64644 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 64645 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64646 | .{ .@"0:", .v_pd, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, |
| | 64647 | .{ ._, .v_pd, .mova, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, |
| | 64648 | } }, |
| 64429 | }, .{ | 64649 | }, .{ |
| 64430 | .required_features = .{ .avx, null, null, null }, | 64650 | .required_features = .{ .avx, null, null, null }, |
| 64431 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, | 64651 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, |
| ... | @@ -64457,6 +64677,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64457,6 +64677,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64457 | .{ .@"0:", .v_pd, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, | 64677 | .{ .@"0:", .v_pd, .xor, .tmp2x, .tmp1x, .memad(.src0x, .add_size, -16), ._ }, |
| 64458 | .{ ._, .v_pd, .mova, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, | 64678 | .{ ._, .v_pd, .mova, .memad(.dst0x, .add_size, -16), .tmp2x, ._, ._ }, |
| 64459 | } }, | 64679 | } }, |
| | 64680 | }, .{ |
| | 64681 | .required_features = .{ .avx, null, null, null }, |
| | 64682 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| | 64683 | .patterns = &.{ |
| | 64684 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64685 | }, |
| | 64686 | .extra_temps = .{ |
| | 64687 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64688 | .{ .kind = .{ .rc = .sse } }, |
| | 64689 | .{ .kind = .{ .rc = .sse } }, |
| | 64690 | .unused, |
| | 64691 | .unused, |
| | 64692 | .unused, |
| | 64693 | .unused, |
| | 64694 | .unused, |
| | 64695 | .unused, |
| | 64696 | .unused, |
| | 64697 | .unused, |
| | 64698 | }, |
| | 64699 | .dst_temps = .{ .mem, .unused }, |
| | 64700 | .clobbers = .{ .eflags = true }, |
| | 64701 | .each = .{ .once = &.{ |
| | 64702 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64703 | .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.true) }, |
| | 64704 | .{ .@"0:", .v_pd, .xor, .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._ }, |
| | 64705 | .{ ._, .v_pd, .movu, .memia(.dst0y, .tmp0, .add_size), .tmp2y, ._, ._ }, |
| | 64706 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| | 64707 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64708 | } }, |
| 64460 | }, .{ | 64709 | }, .{ |
| 64461 | .required_features = .{ .avx, null, null, null }, | 64710 | .required_features = .{ .avx, null, null, null }, |
| 64462 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, | 64711 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, |
| ... | @@ -64486,6 +64735,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64486,6 +64735,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64486 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, | 64735 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 64487 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 64736 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 64488 | } }, | 64737 | } }, |
| | 64738 | }, .{ |
| | 64739 | .required_features = .{ .avx, null, null, null }, |
| | 64740 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 64741 | .patterns = &.{ |
| | 64742 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64743 | }, |
| | 64744 | .extra_temps = .{ |
| | 64745 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64746 | .{ .kind = .{ .rc = .sse } }, |
| | 64747 | .{ .kind = .{ .rc = .sse } }, |
| | 64748 | .unused, |
| | 64749 | .unused, |
| | 64750 | .unused, |
| | 64751 | .unused, |
| | 64752 | .unused, |
| | 64753 | .unused, |
| | 64754 | .unused, |
| | 64755 | .unused, |
| | 64756 | }, |
| | 64757 | .dst_temps = .{ .mem, .unused }, |
| | 64758 | .clobbers = .{ .eflags = true }, |
| | 64759 | .each = .{ .once = &.{ |
| | 64760 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64761 | .{ ._, .vp_q, .cmpeq, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| | 64762 | .{ .@"0:", .v_, .xor, .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._ }, |
| | 64763 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp2x, ._, ._ }, |
| | 64764 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 64765 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64766 | } }, |
| 64489 | }, .{ | 64767 | }, .{ |
| 64490 | .required_features = .{ .avx, null, null, null }, | 64768 | .required_features = .{ .avx, null, null, null }, |
| 64491 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, | 64769 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| ... | @@ -64515,6 +64793,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64515,6 +64793,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64515 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 64793 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 64516 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 64794 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 64517 | } }, | 64795 | } }, |
| | 64796 | }, .{ |
| | 64797 | .required_features = .{ .sse2, null, null, null }, |
| | 64798 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 64799 | .patterns = &.{ |
| | 64800 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64801 | }, |
| | 64802 | .extra_temps = .{ |
| | 64803 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64804 | .{ .kind = .{ .rc = .sse } }, |
| | 64805 | .{ .kind = .{ .rc = .sse } }, |
| | 64806 | .unused, |
| | 64807 | .unused, |
| | 64808 | .unused, |
| | 64809 | .unused, |
| | 64810 | .unused, |
| | 64811 | .unused, |
| | 64812 | .unused, |
| | 64813 | .unused, |
| | 64814 | }, |
| | 64815 | .dst_temps = .{ .mem, .unused }, |
| | 64816 | .clobbers = .{ .eflags = true }, |
| | 64817 | .each = .{ .once = &.{ |
| | 64818 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64819 | .{ ._, .p_d, .cmpeq, .tmp1x, .tmp1x, ._, ._ }, |
| | 64820 | .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, |
| | 64821 | .{ ._, .p_, .xor, .tmp2x, .tmp1x, ._, ._ }, |
| | 64822 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp2x, ._, ._ }, |
| | 64823 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 64824 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64825 | } }, |
| 64518 | }, .{ | 64826 | }, .{ |
| 64519 | .required_features = .{ .sse2, null, null, null }, | 64827 | .required_features = .{ .sse2, null, null, null }, |
| 64520 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, | 64828 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| ... | @@ -64545,6 +64853,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64545,6 +64853,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64545 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 64853 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 64546 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 64854 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 64547 | } }, | 64855 | } }, |
| | 64856 | }, .{ |
| | 64857 | .required_features = .{ .@"64bit", null, null, null }, |
| | 64858 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 64859 | .patterns = &.{ |
| | 64860 | .{ .src = .{ .mut_mem, .none, .none } }, |
| | 64861 | }, |
| | 64862 | .extra_temps = .{ |
| | 64863 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64864 | .unused, |
| | 64865 | .unused, |
| | 64866 | .unused, |
| | 64867 | .unused, |
| | 64868 | .unused, |
| | 64869 | .unused, |
| | 64870 | .unused, |
| | 64871 | .unused, |
| | 64872 | .unused, |
| | 64873 | .unused, |
| | 64874 | }, |
| | 64875 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| | 64876 | .clobbers = .{ .eflags = true }, |
| | 64877 | .each = .{ .once = &.{ |
| | 64878 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64879 | .{ .@"0:", ._, .not, .memia(.dst0q, .tmp0, .add_size), ._, ._, ._ }, |
| | 64880 | .{ ._, ._, .not, .memiad(.dst0q, .tmp0, .add_size, 8), ._, ._, ._ }, |
| | 64881 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| | 64882 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64883 | } }, |
| 64548 | }, .{ | 64884 | }, .{ |
| 64549 | .required_features = .{ .@"64bit", null, null, null }, | 64885 | .required_features = .{ .@"64bit", null, null, null }, |
| 64550 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, | 64886 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| ... | @@ -64573,6 +64909,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -64573,6 +64909,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 64573 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, | 64909 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 64574 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, | 64910 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 64575 | } }, | 64911 | } }, |
| | 64912 | }, .{ |
| | 64913 | .required_features = .{ .@"64bit", null, null, null }, |
| | 64914 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 64915 | .patterns = &.{ |
| | 64916 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 64917 | }, |
| | 64918 | .extra_temps = .{ |
| | 64919 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| | 64920 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 64921 | .unused, |
| | 64922 | .unused, |
| | 64923 | .unused, |
| | 64924 | .unused, |
| | 64925 | .unused, |
| | 64926 | .unused, |
| | 64927 | .unused, |
| | 64928 | .unused, |
| | 64929 | .unused, |
| | 64930 | }, |
| | 64931 | .dst_temps = .{ .mem, .unused }, |
| | 64932 | .clobbers = .{ .eflags = true }, |
| | 64933 | .each = .{ .once = &.{ |
| | 64934 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| | 64935 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| | 64936 | .{ ._, ._, .not, .tmp1q, ._, ._, ._ }, |
| | 64937 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ }, |
| | 64938 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| | 64939 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| | 64940 | } }, |
| 64576 | }, .{ | 64941 | }, .{ |
| 64577 | .required_features = .{ .@"64bit", null, null, null }, | 64942 | .required_features = .{ .@"64bit", null, null, null }, |
| 64578 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, | 64943 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| ... | @@ -65038,7 +65403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65038,7 +65403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65038 | .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any }, | 65403 | .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any }, |
| 65039 | .patterns = &.{ | 65404 | .patterns = &.{ |
| 65040 | .{ .src = .{ .mem, .none, .none } }, | 65405 | .{ .src = .{ .mem, .none, .none } }, |
| 65041 | .{ .src = .{ .to_mm, .none, .none } }, | 65406 | .{ .src = .{ .to_mmx, .none, .none } }, |
| 65042 | }, | 65407 | }, |
| 65043 | .dst_temps = .{ .{ .rc = .mmx }, .unused }, | 65408 | .dst_temps = .{ .{ .rc = .mmx }, .unused }, |
| 65044 | .each = .{ .once = &.{ | 65409 | .each = .{ .once = &.{ |
| ... | @@ -65049,7 +65414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65049,7 +65414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65049 | .required_features = .{ .mmx, null, null, null }, | 65414 | .required_features = .{ .mmx, null, null, null }, |
| 65050 | .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any }, | 65415 | .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any }, |
| 65051 | .patterns = &.{ | 65416 | .patterns = &.{ |
| 65052 | .{ .src = .{ .to_mut_mm, .none, .none } }, | 65417 | .{ .src = .{ .to_mut_mmx, .none, .none } }, |
| 65053 | }, | 65418 | }, |
| 65054 | .extra_temps = .{ | 65419 | .extra_temps = .{ |
| 65055 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65420 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65074,7 +65439,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65074,7 +65439,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65074 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, | 65439 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, |
| 65075 | .patterns = &.{ | 65440 | .patterns = &.{ |
| 65076 | .{ .src = .{ .mem, .none, .none } }, | 65441 | .{ .src = .{ .mem, .none, .none } }, |
| 65077 | .{ .src = .{ .to_xmm, .none, .none } }, | 65442 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65078 | }, | 65443 | }, |
| 65079 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 65444 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 65080 | .each = .{ .once = &.{ | 65445 | .each = .{ .once = &.{ |
| ... | @@ -65085,7 +65450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65085,7 +65450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65085 | .required_features = .{ .avx, null, null, null }, | 65450 | .required_features = .{ .avx, null, null, null }, |
| 65086 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, | 65451 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, |
| 65087 | .patterns = &.{ | 65452 | .patterns = &.{ |
| 65088 | .{ .src = .{ .to_xmm, .none, .none } }, | 65453 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65089 | }, | 65454 | }, |
| 65090 | .extra_temps = .{ | 65455 | .extra_temps = .{ |
| 65091 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65456 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65110,7 +65475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65110,7 +65475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65110 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, | 65475 | .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, |
| 65111 | .patterns = &.{ | 65476 | .patterns = &.{ |
| 65112 | .{ .src = .{ .mem, .none, .none } }, | 65477 | .{ .src = .{ .mem, .none, .none } }, |
| 65113 | .{ .src = .{ .to_xmm, .none, .none } }, | 65478 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65114 | }, | 65479 | }, |
| 65115 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 65480 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 65116 | .each = .{ .once = &.{ | 65481 | .each = .{ .once = &.{ |
| ... | @@ -65121,7 +65486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65121,7 +65486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65121 | .required_features = .{ .sse2, null, null, null }, | 65486 | .required_features = .{ .sse2, null, null, null }, |
| 65122 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, | 65487 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, |
| 65123 | .patterns = &.{ | 65488 | .patterns = &.{ |
| 65124 | .{ .src = .{ .to_mut_xmm, .none, .none } }, | 65489 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 65125 | }, | 65490 | }, |
| 65126 | .extra_temps = .{ | 65491 | .extra_temps = .{ |
| 65127 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65492 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65145,7 +65510,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65145,7 +65510,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65145 | .required_features = .{ .sse, null, null, null }, | 65510 | .required_features = .{ .sse, null, null, null }, |
| 65146 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, | 65511 | .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, |
| 65147 | .patterns = &.{ | 65512 | .patterns = &.{ |
| 65148 | .{ .src = .{ .to_mut_xmm, .none, .none } }, | 65513 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 65149 | }, | 65514 | }, |
| 65150 | .extra_temps = .{ | 65515 | .extra_temps = .{ |
| 65151 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65516 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65170,7 +65535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65170,7 +65535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65170 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, | 65535 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, |
| 65171 | .patterns = &.{ | 65536 | .patterns = &.{ |
| 65172 | .{ .src = .{ .mem, .none, .none } }, | 65537 | .{ .src = .{ .mem, .none, .none } }, |
| 65173 | .{ .src = .{ .to_ymm, .none, .none } }, | 65538 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65174 | }, | 65539 | }, |
| 65175 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 65540 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 65176 | .each = .{ .once = &.{ | 65541 | .each = .{ .once = &.{ |
| ... | @@ -65181,7 +65546,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65181,7 +65546,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65181 | .required_features = .{ .avx2, null, null, null }, | 65546 | .required_features = .{ .avx2, null, null, null }, |
| 65182 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, | 65547 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, |
| 65183 | .patterns = &.{ | 65548 | .patterns = &.{ |
| 65184 | .{ .src = .{ .to_ymm, .none, .none } }, | 65549 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65185 | }, | 65550 | }, |
| 65186 | .extra_temps = .{ | 65551 | .extra_temps = .{ |
| 65187 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65552 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65206,7 +65571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65206,7 +65571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65206 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, | 65571 | .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, |
| 65207 | .patterns = &.{ | 65572 | .patterns = &.{ |
| 65208 | .{ .src = .{ .mem, .none, .none } }, | 65573 | .{ .src = .{ .mem, .none, .none } }, |
| 65209 | .{ .src = .{ .to_ymm, .none, .none } }, | 65574 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65210 | }, | 65575 | }, |
| 65211 | .dst_temps = .{ .{ .rc = .sse }, .unused }, | 65576 | .dst_temps = .{ .{ .rc = .sse }, .unused }, |
| 65212 | .each = .{ .once = &.{ | 65577 | .each = .{ .once = &.{ |
| ... | @@ -65217,7 +65582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65217,7 +65582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65217 | .required_features = .{ .avx, null, null, null }, | 65582 | .required_features = .{ .avx, null, null, null }, |
| 65218 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, | 65583 | .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, |
| 65219 | .patterns = &.{ | 65584 | .patterns = &.{ |
| 65220 | .{ .src = .{ .to_ymm, .none, .none } }, | 65585 | .{ .src = .{ .to_sse, .none, .none } }, |
| 65221 | }, | 65586 | }, |
| 65222 | .extra_temps = .{ | 65587 | .extra_temps = .{ |
| 65223 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 65588 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -65237,6 +65602,118 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65237,6 +65602,118 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65237 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, | 65602 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 65238 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, | 65603 | .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 65239 | } }, | 65604 | } }, |
| | 65605 | }, .{ |
| | 65606 | .required_features = .{ .@"64bit", null, null, null }, |
| | 65607 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| | 65608 | .patterns = &.{ |
| | 65609 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65610 | }, |
| | 65611 | .extra_temps = .{ |
| | 65612 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65613 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 65614 | .unused, |
| | 65615 | .unused, |
| | 65616 | .unused, |
| | 65617 | .unused, |
| | 65618 | .unused, |
| | 65619 | .unused, |
| | 65620 | .unused, |
| | 65621 | .unused, |
| | 65622 | .unused, |
| | 65623 | }, |
| | 65624 | .dst_temps = .{ .mem, .unused }, |
| | 65625 | .each = .{ .once = &.{ |
| | 65626 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| | 65627 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 65628 | .{ ._, ._, .not, .tmp1q, ._, ._, ._ }, |
| | 65629 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 65630 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| | 65631 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65632 | } }, |
| | 65633 | }, .{ |
| | 65634 | .required_features = .{ .@"64bit", null, null, null }, |
| | 65635 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| | 65636 | .patterns = &.{ |
| | 65637 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65638 | }, |
| | 65639 | .extra_temps = .{ |
| | 65640 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65641 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 65642 | .unused, |
| | 65643 | .unused, |
| | 65644 | .unused, |
| | 65645 | .unused, |
| | 65646 | .unused, |
| | 65647 | .unused, |
| | 65648 | .unused, |
| | 65649 | .unused, |
| | 65650 | .unused, |
| | 65651 | }, |
| | 65652 | .dst_temps = .{ .mem, .unused }, |
| | 65653 | .each = .{ .once = &.{ |
| | 65654 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| | 65655 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 65656 | .{ ._, ._, .not, .tmp1q, ._, ._, ._ }, |
| | 65657 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 65658 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| | 65659 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65660 | } }, |
| | 65661 | }, .{ |
| | 65662 | .required_features = .{ .@"64bit", null, null, null }, |
| | 65663 | .src_constraints = .{ .any_signed_int_or_full_vec, .any, .any }, |
| | 65664 | .patterns = &.{ |
| | 65665 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65666 | }, |
| | 65667 | .extra_temps = .{ |
| | 65668 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65669 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 65670 | .unused, |
| | 65671 | .unused, |
| | 65672 | .unused, |
| | 65673 | .unused, |
| | 65674 | .unused, |
| | 65675 | .unused, |
| | 65676 | .unused, |
| | 65677 | .unused, |
| | 65678 | .unused, |
| | 65679 | }, |
| | 65680 | .dst_temps = .{ .mem, .unused }, |
| | 65681 | .each = .{ .once = &.{ |
| | 65682 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| | 65683 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 65684 | .{ ._, ._, .not, .tmp1q, ._, ._, ._ }, |
| | 65685 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 65686 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| | 65687 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65688 | } }, |
| | 65689 | }, .{ |
| | 65690 | .required_features = .{ .@"64bit", null, null, null }, |
| | 65691 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| | 65692 | .patterns = &.{ |
| | 65693 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65694 | }, |
| | 65695 | .extra_temps = .{ |
| | 65696 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65697 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| | 65698 | .unused, |
| | 65699 | .unused, |
| | 65700 | .unused, |
| | 65701 | .unused, |
| | 65702 | .unused, |
| | 65703 | .unused, |
| | 65704 | .unused, |
| | 65705 | .unused, |
| | 65706 | .unused, |
| | 65707 | }, |
| | 65708 | .dst_temps = .{ .mem, .unused }, |
| | 65709 | .each = .{ .once = &.{ |
| | 65710 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| | 65711 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| | 65712 | .{ ._, ._, .not, .tmp1q, ._, ._, ._ }, |
| | 65713 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| | 65714 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| | 65715 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65716 | } }, |
| 65240 | }, .{ | 65717 | }, .{ |
| 65241 | .required_features = .{ .@"64bit", null, null, null }, | 65718 | .required_features = .{ .@"64bit", null, null, null }, |
| 65242 | .patterns = &.{ | 65719 | .patterns = &.{ |
| ... | @@ -65257,14 +65734,94 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65257,14 +65734,94 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65257 | }, | 65734 | }, |
| 65258 | .dst_temps = .{ .mem, .unused }, | 65735 | .dst_temps = .{ .mem, .unused }, |
| 65259 | .each = .{ .once = &.{ | 65736 | .each = .{ .once = &.{ |
| 65260 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 65737 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 65261 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, | 65738 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 65262 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ }, | 65739 | .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ }, |
| 65263 | .{ ._, ._, .xor, .tmp2q, .leai(.tmp1q, .tmp0), ._, ._ }, | 65740 | .{ ._, ._, .xor, .tmp2q, .leai(.tmp1q, .tmp0), ._, ._ }, |
| 65264 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ }, | 65741 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ }, |
| 65265 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ }, | 65742 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 65266 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, | 65743 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 65267 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | 65744 | } }, |
| | 65745 | }, .{ |
| | 65746 | .src_constraints = .{ .{ .remainder_bool_vec = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 65747 | .patterns = &.{ |
| | 65748 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65749 | }, |
| | 65750 | .extra_temps = .{ |
| | 65751 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65752 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65753 | .unused, |
| | 65754 | .unused, |
| | 65755 | .unused, |
| | 65756 | .unused, |
| | 65757 | .unused, |
| | 65758 | .unused, |
| | 65759 | .unused, |
| | 65760 | .unused, |
| | 65761 | .unused, |
| | 65762 | }, |
| | 65763 | .dst_temps = .{ .mem, .unused }, |
| | 65764 | .each = .{ .once = &.{ |
| | 65765 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, |
| | 65766 | .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, |
| | 65767 | .{ ._, ._, .not, .tmp1d, ._, ._, ._ }, |
| | 65768 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp1d, ._, ._ }, |
| | 65769 | .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, |
| | 65770 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65771 | } }, |
| | 65772 | }, .{ |
| | 65773 | .src_constraints = .{ .any_signed_int_or_full_vec, .any, .any }, |
| | 65774 | .patterns = &.{ |
| | 65775 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65776 | }, |
| | 65777 | .extra_temps = .{ |
| | 65778 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65779 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65780 | .unused, |
| | 65781 | .unused, |
| | 65782 | .unused, |
| | 65783 | .unused, |
| | 65784 | .unused, |
| | 65785 | .unused, |
| | 65786 | .unused, |
| | 65787 | .unused, |
| | 65788 | .unused, |
| | 65789 | }, |
| | 65790 | .dst_temps = .{ .mem, .unused }, |
| | 65791 | .each = .{ .once = &.{ |
| | 65792 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| | 65793 | .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, |
| | 65794 | .{ ._, ._, .not, .tmp1d, ._, ._, ._ }, |
| | 65795 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp1d, ._, ._ }, |
| | 65796 | .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, |
| | 65797 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| | 65798 | } }, |
| | 65799 | }, .{ |
| | 65800 | .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| | 65801 | .patterns = &.{ |
| | 65802 | .{ .src = .{ .to_mem, .none, .none } }, |
| | 65803 | }, |
| | 65804 | .extra_temps = .{ |
| | 65805 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65806 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| | 65807 | .unused, |
| | 65808 | .unused, |
| | 65809 | .unused, |
| | 65810 | .unused, |
| | 65811 | .unused, |
| | 65812 | .unused, |
| | 65813 | .unused, |
| | 65814 | .unused, |
| | 65815 | .unused, |
| | 65816 | }, |
| | 65817 | .dst_temps = .{ .mem, .unused }, |
| | 65818 | .each = .{ .once = &.{ |
| | 65819 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, |
| | 65820 | .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, |
| | 65821 | .{ ._, ._, .not, .tmp1d, ._, ._, ._ }, |
| | 65822 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp1d, ._, ._ }, |
| | 65823 | .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, |
| | 65824 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 65268 | } }, | 65825 | } }, |
| 65269 | }, .{ | 65826 | }, .{ |
| 65270 | .patterns = &.{ | 65827 | .patterns = &.{ |
| ... | @@ -65285,14 +65842,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -65285,14 +65842,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 65285 | }, | 65842 | }, |
| 65286 | .dst_temps = .{ .mem, .unused }, | 65843 | .dst_temps = .{ .mem, .unused }, |
| 65287 | .each = .{ .once = &.{ | 65844 | .each = .{ .once = &.{ |
| 65288 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, | 65845 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 65289 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, | 65846 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, |
| 65290 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ }, | 65847 | .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ }, |
| 65291 | .{ ._, ._, .xor, .tmp2d, .leai(.tmp1d, .tmp0), ._, ._ }, | 65848 | .{ ._, ._, .xor, .tmp2d, .leai(.tmp1d, .tmp0), ._, ._ }, |
| 65292 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ }, | 65849 | .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ }, |
| 65293 | .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 4), ._, ._ }, | 65850 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 65294 | .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ }, | 65851 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 65295 | .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, | | |
| 65296 | } }, | 65852 | } }, |
| 65297 | } }) catch |err| switch (err) { | 65853 | } }) catch |err| switch (err) { |
| 65298 | error.SelectFailed => return cg.fail("failed to select {s} {f} {f}", .{ | 65854 | error.SelectFailed => return cg.fail("failed to select {s} {f} {f}", .{ |
| ... | @@ -75367,7 +75923,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -75367,7 +75923,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 75367 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, | 75923 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, |
| 75368 | .patterns = &.{ | 75924 | .patterns = &.{ |
| 75369 | .{ .src = .{ .mem, .none, .none } }, | 75925 | .{ .src = .{ .mem, .none, .none } }, |
| 75370 | .{ .src = .{ .to_mm, .none, .none } }, | 75926 | .{ .src = .{ .to_mmx, .none, .none } }, |
| 75371 | }, | 75927 | }, |
| 75372 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, | 75928 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, |
| 75373 | .each = .{ .once = &.{ | 75929 | .each = .{ .once = &.{ |
| ... | @@ -75378,7 +75934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -75378,7 +75934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 75378 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, | 75934 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, |
| 75379 | .patterns = &.{ | 75935 | .patterns = &.{ |
| 75380 | .{ .src = .{ .mem, .none, .none } }, | 75936 | .{ .src = .{ .mem, .none, .none } }, |
| 75381 | .{ .src = .{ .to_mm, .none, .none } }, | 75937 | .{ .src = .{ .to_mmx, .none, .none } }, |
| 75382 | }, | 75938 | }, |
| 75383 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, | 75939 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, |
| 75384 | .each = .{ .once = &.{ | 75940 | .each = .{ .once = &.{ |
| ... | @@ -75389,7 +75945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -75389,7 +75945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 75389 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, | 75945 | .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, |
| 75390 | .patterns = &.{ | 75946 | .patterns = &.{ |
| 75391 | .{ .src = .{ .mem, .none, .none } }, | 75947 | .{ .src = .{ .mem, .none, .none } }, |
| 75392 | .{ .src = .{ .to_mm, .none, .none } }, | 75948 | .{ .src = .{ .to_mmx, .none, .none } }, |
| 75393 | }, | 75949 | }, |
| 75394 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, | 75950 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }, .unused }, |
| 75395 | .each = .{ .once = &.{ | 75951 | .each = .{ .once = &.{ |
| ... | @@ -112415,7 +112971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -112415,7 +112971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 112415 | .dst_temps = .{ .mem, .unused }, | 112971 | .dst_temps = .{ .mem, .unused }, |
| 112416 | .clobbers = .{ .eflags = true }, | 112972 | .clobbers = .{ .eflags = true }, |
| 112417 | .each = .{ .once = &.{ | 112973 | .each = .{ .once = &.{ |
| 112418 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 112974 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 112419 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, | 112975 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, |
| 112420 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 112976 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 112421 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ }, | 112977 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ }, |
| ... | @@ -112445,7 +113001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -112445,7 +113001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 112445 | .dst_temps = .{ .mem, .unused }, | 113001 | .dst_temps = .{ .mem, .unused }, |
| 112446 | .clobbers = .{ .eflags = true }, | 113002 | .clobbers = .{ .eflags = true }, |
| 112447 | .each = .{ .once = &.{ | 113003 | .each = .{ .once = &.{ |
| 112448 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 113004 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 112449 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 113005 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 112450 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 113006 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 112451 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ }, | 113007 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ }, |
| ... | @@ -112475,7 +113031,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -112475,7 +113031,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 112475 | .dst_temps = .{ .mem, .unused }, | 113031 | .dst_temps = .{ .mem, .unused }, |
| 112476 | .clobbers = .{ .eflags = true }, | 113032 | .clobbers = .{ .eflags = true }, |
| 112477 | .each = .{ .once = &.{ | 113033 | .each = .{ .once = &.{ |
| 112478 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 113034 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 112479 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, | 113035 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, |
| 112480 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 113036 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 112481 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ }, | 113037 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ }, |
| ... | @@ -112505,7 +113061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -112505,7 +113061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 112505 | .dst_temps = .{ .mem, .unused }, | 113061 | .dst_temps = .{ .mem, .unused }, |
| 112506 | .clobbers = .{ .eflags = true }, | 113062 | .clobbers = .{ .eflags = true }, |
| 112507 | .each = .{ .once = &.{ | 113063 | .each = .{ .once = &.{ |
| 112508 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 113064 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 112509 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 113065 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 112510 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 113066 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 112511 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ }, | 113067 | .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ }, |
| ... | @@ -113099,7 +113655,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113099,7 +113655,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113099 | .dst_temps = .{ .mem, .unused }, | 113655 | .dst_temps = .{ .mem, .unused }, |
| 113100 | .clobbers = .{ .eflags = true }, | 113656 | .clobbers = .{ .eflags = true }, |
| 113101 | .each = .{ .once = &.{ | 113657 | .each = .{ .once = &.{ |
| 113102 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, | 113658 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size_up_16), ._, ._ }, |
| 113103 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, | 113659 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, |
| 113104 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 113660 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 113105 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, | 113661 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, |
| ... | @@ -113129,7 +113685,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113129,7 +113685,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113129 | .dst_temps = .{ .mem, .unused }, | 113685 | .dst_temps = .{ .mem, .unused }, |
| 113130 | .clobbers = .{ .eflags = true }, | 113686 | .clobbers = .{ .eflags = true }, |
| 113131 | .each = .{ .once = &.{ | 113687 | .each = .{ .once = &.{ |
| 113132 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 113688 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 113133 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 113689 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 113134 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 113690 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 113135 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, | 113691 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, |
| ... | @@ -113159,7 +113715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113159,7 +113715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113159 | .dst_temps = .{ .mem, .unused }, | 113715 | .dst_temps = .{ .mem, .unused }, |
| 113160 | .clobbers = .{ .eflags = true }, | 113716 | .clobbers = .{ .eflags = true }, |
| 113161 | .each = .{ .once = &.{ | 113717 | .each = .{ .once = &.{ |
| 113162 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, | 113718 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size_up_16), ._, ._ }, |
| 113163 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, | 113719 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, |
| 113164 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 113720 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 113165 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, | 113721 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, |
| ... | @@ -113189,7 +113745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113189,7 +113745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113189 | .dst_temps = .{ .mem, .unused }, | 113745 | .dst_temps = .{ .mem, .unused }, |
| 113190 | .clobbers = .{ .eflags = true }, | 113746 | .clobbers = .{ .eflags = true }, |
| 113191 | .each = .{ .once = &.{ | 113747 | .each = .{ .once = &.{ |
| 113192 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 113748 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 113193 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 113749 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 113194 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 113750 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 113195 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, | 113751 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, |
| ... | @@ -113499,7 +114055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113499,7 +114055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113499 | .dst_temps = .{ .mem, .unused }, | 114055 | .dst_temps = .{ .mem, .unused }, |
| 113500 | .clobbers = .{ .eflags = true }, | 114056 | .clobbers = .{ .eflags = true }, |
| 113501 | .each = .{ .once = &.{ | 114057 | .each = .{ .once = &.{ |
| 113502 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ }, | 114058 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size_up_16), ._, ._ }, |
| 113503 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ }, | 114059 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ }, |
| 113504 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, | 114060 | .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ }, |
| 113505 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, | 114061 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, |
| ... | @@ -113528,7 +114084,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -113528,7 +114084,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 113528 | .dst_temps = .{ .mem, .unused }, | 114084 | .dst_temps = .{ .mem, .unused }, |
| 113529 | .clobbers = .{ .eflags = true }, | 114085 | .clobbers = .{ .eflags = true }, |
| 113530 | .each = .{ .once = &.{ | 114086 | .each = .{ .once = &.{ |
| 113531 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ }, | 114087 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size_up_8), ._, ._ }, |
| 113532 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ }, | 114088 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ }, |
| 113533 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, | 114089 | .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ }, |
| 113534 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, | 114090 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| ... | @@ -115542,7 +116098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115542,7 +116098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115542 | .dst_temps = .{ .mem, .unused }, | 116098 | .dst_temps = .{ .mem, .unused }, |
| 115543 | .clobbers = .{ .eflags = true }, | 116099 | .clobbers = .{ .eflags = true }, |
| 115544 | .each = .{ .once = &.{ | 116100 | .each = .{ .once = &.{ |
| 115545 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116101 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 115546 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, | 116102 | .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, |
| 115547 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 116103 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 115548 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, | 116104 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -115572,7 +116128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115572,7 +116128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115572 | .dst_temps = .{ .mem, .unused }, | 116128 | .dst_temps = .{ .mem, .unused }, |
| 115573 | .clobbers = .{ .eflags = true }, | 116129 | .clobbers = .{ .eflags = true }, |
| 115574 | .each = .{ .once = &.{ | 116130 | .each = .{ .once = &.{ |
| 115575 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 116131 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 115576 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 116132 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 115577 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116133 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 115578 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, | 116134 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -115602,7 +116158,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115602,7 +116158,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115602 | .dst_temps = .{ .mem, .unused }, | 116158 | .dst_temps = .{ .mem, .unused }, |
| 115603 | .clobbers = .{ .eflags = true }, | 116159 | .clobbers = .{ .eflags = true }, |
| 115604 | .each = .{ .once = &.{ | 116160 | .each = .{ .once = &.{ |
| 115605 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 116161 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 115606 | .{ .@"0:", .p_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 116162 | .{ .@"0:", .p_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 115607 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116163 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 115608 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, | 116164 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -115632,7 +116188,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115632,7 +116188,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115632 | .dst_temps = .{ .mem, .unused }, | 116188 | .dst_temps = .{ .mem, .unused }, |
| 115633 | .clobbers = .{ .eflags = true }, | 116189 | .clobbers = .{ .eflags = true }, |
| 115634 | .each = .{ .once = &.{ | 116190 | .each = .{ .once = &.{ |
| 115635 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116191 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 115636 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, | 116192 | .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ }, |
| 115637 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 116193 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 115638 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, | 116194 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -115662,7 +116218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115662,7 +116218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115662 | .dst_temps = .{ .mem, .unused }, | 116218 | .dst_temps = .{ .mem, .unused }, |
| 115663 | .clobbers = .{ .eflags = true }, | 116219 | .clobbers = .{ .eflags = true }, |
| 115664 | .each = .{ .once = &.{ | 116220 | .each = .{ .once = &.{ |
| 115665 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 116221 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 115666 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 116222 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 115667 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116223 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 115668 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, | 116224 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -115692,7 +116248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -115692,7 +116248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 115692 | .dst_temps = .{ .mem, .unused }, | 116248 | .dst_temps = .{ .mem, .unused }, |
| 115693 | .clobbers = .{ .eflags = true }, | 116249 | .clobbers = .{ .eflags = true }, |
| 115694 | .each = .{ .once = &.{ | 116250 | .each = .{ .once = &.{ |
| 115695 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 116251 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 115696 | .{ .@"0:", .p_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 116252 | .{ .@"0:", .p_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 115697 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116253 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 115698 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, | 116254 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -116048,7 +116604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116048,7 +116604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116048 | .dst_temps = .{ .mem, .unused }, | 116604 | .dst_temps = .{ .mem, .unused }, |
| 116049 | .clobbers = .{ .eflags = true }, | 116605 | .clobbers = .{ .eflags = true }, |
| 116050 | .each = .{ .once = &.{ | 116606 | .each = .{ .once = &.{ |
| 116051 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, | 116607 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size_up_16), ._, ._ }, |
| 116052 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, | 116608 | .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, |
| 116053 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 116609 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 116054 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, | 116610 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -116078,7 +116634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116078,7 +116634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116078 | .dst_temps = .{ .mem, .unused }, | 116634 | .dst_temps = .{ .mem, .unused }, |
| 116079 | .clobbers = .{ .eflags = true }, | 116635 | .clobbers = .{ .eflags = true }, |
| 116080 | .each = .{ .once = &.{ | 116636 | .each = .{ .once = &.{ |
| 116081 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116637 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 116082 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 116638 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 116083 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116639 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 116084 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 116640 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -116108,7 +116664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116108,7 +116664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116108 | .dst_temps = .{ .mem, .unused }, | 116664 | .dst_temps = .{ .mem, .unused }, |
| 116109 | .clobbers = .{ .eflags = true }, | 116665 | .clobbers = .{ .eflags = true }, |
| 116110 | .each = .{ .once = &.{ | 116666 | .each = .{ .once = &.{ |
| 116111 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116667 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 116112 | .{ .@"0:", .p_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 116668 | .{ .@"0:", .p_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 116113 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116669 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 116114 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 116670 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -116138,7 +116694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116138,7 +116694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116138 | .dst_temps = .{ .mem, .unused }, | 116694 | .dst_temps = .{ .mem, .unused }, |
| 116139 | .clobbers = .{ .eflags = true }, | 116695 | .clobbers = .{ .eflags = true }, |
| 116140 | .each = .{ .once = &.{ | 116696 | .each = .{ .once = &.{ |
| 116141 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, | 116697 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size_up_16), ._, ._ }, |
| 116142 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, | 116698 | .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, |
| 116143 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, | 116699 | .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, |
| 116144 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, | 116700 | .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -116168,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116168,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116168 | .dst_temps = .{ .mem, .unused }, | 116724 | .dst_temps = .{ .mem, .unused }, |
| 116169 | .clobbers = .{ .eflags = true }, | 116725 | .clobbers = .{ .eflags = true }, |
| 116170 | .each = .{ .once = &.{ | 116726 | .each = .{ .once = &.{ |
| 116171 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116727 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 116172 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 116728 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 116173 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116729 | .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 116174 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 116730 | .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -116198,7 +116754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116198,7 +116754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116198 | .dst_temps = .{ .mem, .unused }, | 116754 | .dst_temps = .{ .mem, .unused }, |
| 116199 | .clobbers = .{ .eflags = true }, | 116755 | .clobbers = .{ .eflags = true }, |
| 116200 | .each = .{ .once = &.{ | 116756 | .each = .{ .once = &.{ |
| 116201 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 116757 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 116202 | .{ .@"0:", .p_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 116758 | .{ .@"0:", .p_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 116203 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, | 116759 | .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, |
| 116204 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 116760 | .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| ... | @@ -116388,7 +116944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116388,7 +116944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116388 | .dst_temps = .{ .mem, .unused }, | 116944 | .dst_temps = .{ .mem, .unused }, |
| 116389 | .clobbers = .{ .eflags = true }, | 116945 | .clobbers = .{ .eflags = true }, |
| 116390 | .each = .{ .once = &.{ | 116946 | .each = .{ .once = &.{ |
| 116391 | .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, | 116947 | .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size_up_32), ._, ._ }, |
| 116392 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memi(.src0y, .tmp0), ._, ._ }, | 116948 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memi(.src0y, .tmp0), ._, ._ }, |
| 116393 | .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ }, | 116949 | .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ }, |
| 116394 | .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, | 116950 | .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, |
| ... | @@ -116417,7 +116973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116417,7 +116973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116417 | .dst_temps = .{ .mem, .unused }, | 116973 | .dst_temps = .{ .mem, .unused }, |
| 116418 | .clobbers = .{ .eflags = true }, | 116974 | .clobbers = .{ .eflags = true }, |
| 116419 | .each = .{ .once = &.{ | 116975 | .each = .{ .once = &.{ |
| 116420 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ }, | 116976 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size_up_16), ._, ._ }, |
| 116421 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, | 116977 | .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, |
| 116422 | .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ }, | 116978 | .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ }, |
| 116423 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, | 116979 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, |
| ... | @@ -116446,7 +117002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -116446,7 +117002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 116446 | .dst_temps = .{ .mem, .unused }, | 117002 | .dst_temps = .{ .mem, .unused }, |
| 116447 | .clobbers = .{ .eflags = true }, | 117003 | .clobbers = .{ .eflags = true }, |
| 116448 | .each = .{ .once = &.{ | 117004 | .each = .{ .once = &.{ |
| 116449 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ }, | 117005 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size_up_16), ._, ._ }, |
| 116450 | .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, | 117006 | .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, |
| 116451 | .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ }, | 117007 | .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ }, |
| 116452 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, | 117008 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, |
| ... | @@ -118062,7 +118618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118062,7 +118618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118062 | .dst_temps = .{ .mem, .unused }, | 118618 | .dst_temps = .{ .mem, .unused }, |
| 118063 | .clobbers = .{ .eflags = true }, | 118619 | .clobbers = .{ .eflags = true }, |
| 118064 | .each = .{ .once = &.{ | 118620 | .each = .{ .once = &.{ |
| 118065 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 118621 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118066 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 118622 | .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118067 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, | 118623 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, |
| 118068 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ }, | 118624 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -118092,7 +118648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118092,7 +118648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118092 | .dst_temps = .{ .mem, .unused }, | 118648 | .dst_temps = .{ .mem, .unused }, |
| 118093 | .clobbers = .{ .eflags = true }, | 118649 | .clobbers = .{ .eflags = true }, |
| 118094 | .each = .{ .once = &.{ | 118650 | .each = .{ .once = &.{ |
| 118095 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ }, | 118651 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size_up_2), ._, ._ }, |
| 118096 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 118652 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| 118097 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) }, | 118653 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) }, |
| 118098 | .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, | 118654 | .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, |
| ... | @@ -118124,7 +118680,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118124,7 +118680,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118124 | .dst_temps = .{ .mem, .unused }, | 118680 | .dst_temps = .{ .mem, .unused }, |
| 118125 | .clobbers = .{ .eflags = true }, | 118681 | .clobbers = .{ .eflags = true }, |
| 118126 | .each = .{ .once = &.{ | 118682 | .each = .{ .once = &.{ |
| 118127 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ }, | 118683 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size_up_2), ._, ._ }, |
| 118128 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 118684 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 118129 | .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ }, | 118685 | .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ }, |
| 118130 | .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, | 118686 | .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, |
| ... | @@ -118156,7 +118712,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118156,7 +118712,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118156 | .dst_temps = .{ .mem, .unused }, | 118712 | .dst_temps = .{ .mem, .unused }, |
| 118157 | .clobbers = .{ .eflags = true }, | 118713 | .clobbers = .{ .eflags = true }, |
| 118158 | .each = .{ .once = &.{ | 118714 | .each = .{ .once = &.{ |
| 118159 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 118715 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118160 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 118716 | .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118161 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, | 118717 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, |
| 118162 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ }, | 118718 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -118186,7 +118742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118186,7 +118742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118186 | .dst_temps = .{ .mem, .unused }, | 118742 | .dst_temps = .{ .mem, .unused }, |
| 118187 | .clobbers = .{ .eflags = true }, | 118743 | .clobbers = .{ .eflags = true }, |
| 118188 | .each = .{ .once = &.{ | 118744 | .each = .{ .once = &.{ |
| 118189 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ }, | 118745 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size_up_2), ._, ._ }, |
| 118190 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, | 118746 | .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, |
| 118191 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) }, | 118747 | .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) }, |
| 118192 | .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, | 118748 | .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, |
| ... | @@ -118218,7 +118774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118218,7 +118774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118218 | .dst_temps = .{ .mem, .unused }, | 118774 | .dst_temps = .{ .mem, .unused }, |
| 118219 | .clobbers = .{ .eflags = true }, | 118775 | .clobbers = .{ .eflags = true }, |
| 118220 | .each = .{ .once = &.{ | 118776 | .each = .{ .once = &.{ |
| 118221 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ }, | 118777 | .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size_up_2), ._, ._ }, |
| 118222 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, | 118778 | .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, |
| 118223 | .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ }, | 118779 | .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ }, |
| 118224 | .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, | 118780 | .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, |
| ... | @@ -118700,7 +119256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118700,7 +119256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118700 | .dst_temps = .{ .mem, .unused }, | 119256 | .dst_temps = .{ .mem, .unused }, |
| 118701 | .clobbers = .{ .eflags = true }, | 119257 | .clobbers = .{ .eflags = true }, |
| 118702 | .each = .{ .once = &.{ | 119258 | .each = .{ .once = &.{ |
| 118703 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 119259 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 118704 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 119260 | .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 118705 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, | 119261 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, |
| 118706 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, | 119262 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -118730,7 +119286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118730,7 +119286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118730 | .dst_temps = .{ .mem, .unused }, | 119286 | .dst_temps = .{ .mem, .unused }, |
| 118731 | .clobbers = .{ .eflags = true }, | 119287 | .clobbers = .{ .eflags = true }, |
| 118732 | .each = .{ .once = &.{ | 119288 | .each = .{ .once = &.{ |
| 118733 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 119289 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118734 | .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 119290 | .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118735 | .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, | 119291 | .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, |
| 118736 | .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, | 119292 | .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, |
| ... | @@ -118761,7 +119317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118761,7 +119317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118761 | .dst_temps = .{ .mem, .unused }, | 119317 | .dst_temps = .{ .mem, .unused }, |
| 118762 | .clobbers = .{ .eflags = true }, | 119318 | .clobbers = .{ .eflags = true }, |
| 118763 | .each = .{ .once = &.{ | 119319 | .each = .{ .once = &.{ |
| 118764 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 119320 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118765 | .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 119321 | .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118766 | .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, | 119322 | .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, |
| 118767 | .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, | 119323 | .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, |
| ... | @@ -118792,7 +119348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118792,7 +119348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118792 | .dst_temps = .{ .mem, .unused }, | 119348 | .dst_temps = .{ .mem, .unused }, |
| 118793 | .clobbers = .{ .eflags = true }, | 119349 | .clobbers = .{ .eflags = true }, |
| 118794 | .each = .{ .once = &.{ | 119350 | .each = .{ .once = &.{ |
| 118795 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 119351 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 118796 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 119352 | .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 118797 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, | 119353 | .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, |
| 118798 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, | 119354 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ }, |
| ... | @@ -118822,7 +119378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118822,7 +119378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118822 | .dst_temps = .{ .mem, .unused }, | 119378 | .dst_temps = .{ .mem, .unused }, |
| 118823 | .clobbers = .{ .eflags = true }, | 119379 | .clobbers = .{ .eflags = true }, |
| 118824 | .each = .{ .once = &.{ | 119380 | .each = .{ .once = &.{ |
| 118825 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 119381 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118826 | .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 119382 | .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118827 | .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, | 119383 | .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, |
| 118828 | .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, | 119384 | .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, |
| ... | @@ -118853,7 +119409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -118853,7 +119409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 118853 | .dst_temps = .{ .mem, .unused }, | 119409 | .dst_temps = .{ .mem, .unused }, |
| 118854 | .clobbers = .{ .eflags = true }, | 119410 | .clobbers = .{ .eflags = true }, |
| 118855 | .each = .{ .once = &.{ | 119411 | .each = .{ .once = &.{ |
| 118856 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ }, | 119412 | .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size_up_4), ._, ._ }, |
| 118857 | .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, | 119413 | .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ }, |
| 118858 | .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, | 119414 | .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, |
| 118859 | .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, | 119415 | .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, |
| ... | @@ -119106,7 +119662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -119106,7 +119662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 119106 | .dst_temps = .{ .mem, .unused }, | 119662 | .dst_temps = .{ .mem, .unused }, |
| 119107 | .clobbers = .{ .eflags = true }, | 119663 | .clobbers = .{ .eflags = true }, |
| 119108 | .each = .{ .once = &.{ | 119664 | .each = .{ .once = &.{ |
| 119109 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, | 119665 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size_up_16), ._, ._ }, |
| 119110 | .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, | 119666 | .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, |
| 119111 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, | 119667 | .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ }, |
| 119112 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, | 119668 | .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, |
| ... | @@ -119135,7 +119691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -119135,7 +119691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 119135 | .dst_temps = .{ .mem, .unused }, | 119691 | .dst_temps = .{ .mem, .unused }, |
| 119136 | .clobbers = .{ .eflags = true }, | 119692 | .clobbers = .{ .eflags = true }, |
| 119137 | .each = .{ .once = &.{ | 119693 | .each = .{ .once = &.{ |
| 119138 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 119694 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 119139 | .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 119695 | .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 119140 | .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 119696 | .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| 119141 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, | 119697 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| ... | @@ -119164,7 +119720,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -119164,7 +119720,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 119164 | .dst_temps = .{ .mem, .unused }, | 119720 | .dst_temps = .{ .mem, .unused }, |
| 119165 | .clobbers = .{ .eflags = true }, | 119721 | .clobbers = .{ .eflags = true }, |
| 119166 | .each = .{ .once = &.{ | 119722 | .each = .{ .once = &.{ |
| 119167 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, | 119723 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size_up_8), ._, ._ }, |
| 119168 | .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, | 119724 | .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ }, |
| 119169 | .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, | 119725 | .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ }, |
| 119170 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, | 119726 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| ... | @@ -168582,7 +169138,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -168582,7 +169138,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 168582 | .dst_temps = .{ .mem, .unused }, | 169138 | .dst_temps = .{ .mem, .unused }, |
| 168583 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, | 169139 | .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, |
| 168584 | .each = .{ .once = &.{ | 169140 | .each = .{ .once = &.{ |
| 168585 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .sub_unaligned_size), ._, ._ }, | 169141 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, |
| 168586 | .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, | 169142 | .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, |
| 168587 | .{ ._, ._ps, .mova, .tmp2x, .memi(.src1x, .tmp0), ._, ._ }, | 169143 | .{ ._, ._ps, .mova, .tmp2x, .memi(.src1x, .tmp0), ._, ._ }, |
| 168588 | .{ ._, ._ps, .mova, .tmp3x, .memi(.src2x, .tmp0), ._, ._ }, | 169144 | .{ ._, ._ps, .mova, .tmp3x, .memi(.src2x, .tmp0), ._, ._ }, |
| ... | @@ -182106,68 +182662,135 @@ fn genSetMem( | ... | @@ -182106,68 +182662,135 @@ fn genSetMem( |
| 182106 | } | 182662 | } |
| 182107 | } | 182663 | } |
| 182108 | | 182664 | |
| 182109 | fn genInlineMemcpy(self: *CodeGen, dst_ptr: MCValue, src_ptr: MCValue, len: MCValue, opts: struct { | 182665 | fn genInlineMemcpy(cg: *CodeGen, dst_ptr: MCValue, src_ptr: MCValue, len: MCValue, opts: struct { |
| 182110 | no_alias: bool, | 182666 | no_alias: bool, |
| 182111 | }) InnerError!void { | 182667 | }) InnerError!void { |
| 182112 | if (opts.no_alias and dst_ptr.isAddress() and src_ptr.isAddress()) switch (len) { | 182668 | if (opts.no_alias and len == .immediate and cg.useConstMemcpyForSize(len.immediate)) { |
| 182113 | else => {}, | 182669 | if (try cg.genConstMemcpy(dst_ptr, src_ptr, len.immediate)) { |
| 182114 | .immediate => |len_imm| switch (len_imm) { | 182670 | return; |
| 182115 | else => {}, | 182671 | } |
| 182116 | 1 => if (self.register_manager.tryAllocReg(null, abi.RegisterClass.gp)) |reg| { | 182672 | } |
| 182117 | try self.asmRegisterMemory(.{ ._, .mov }, reg.to8(), try src_ptr.deref().mem(self, .{ .size = .byte })); | 182673 | |
| 182118 | try self.asmMemoryRegister(.{ ._, .mov }, try dst_ptr.deref().mem(self, .{ .size = .byte }), reg.to8()); | 182674 | try cg.spillRegisters(&.{ .rsi, .rdi, .rcx }); |
| 182119 | return; | 182675 | try cg.genSetReg(.rsi, .usize, src_ptr, .{}); |
| 182120 | }, | 182676 | try cg.genSetReg(.rdi, .usize, dst_ptr, .{}); |
| 182121 | 2 => if (self.register_manager.tryAllocReg(null, abi.RegisterClass.gp)) |reg| { | 182677 | try cg.genSetReg(.rcx, .usize, len, .{}); |
| 182122 | try self.asmRegisterMemory(.{ ._, .mov }, reg.to16(), try src_ptr.deref().mem(self, .{ .size = .word })); | 182678 | try cg.asmOpOnly(.{ .@"rep _sb", .mov }); |
| 182123 | try self.asmMemoryRegister(.{ ._, .mov }, try dst_ptr.deref().mem(self, .{ .size = .word }), reg.to16()); | 182679 | } |
| 182124 | return; | 182680 | |
| 182125 | }, | 182681 | /// Returns `true` iff it would be efficient to use `genConstMemcpy` for a copy |
| 182126 | 4 => if (self.register_manager.tryAllocReg(null, abi.RegisterClass.gp)) |reg| { | 182682 | /// of `len` bytes instead of using `rep movsb`. |
| 182127 | try self.asmRegisterMemory(.{ ._, .mov }, reg.to32(), try src_ptr.deref().mem(self, .{ .size = .dword })); | 182683 | fn useConstMemcpyForSize(cg: *CodeGen, len: u64) bool { |
| 182128 | try self.asmMemoryRegister(.{ ._, .mov }, try dst_ptr.deref().mem(self, .{ .size = .dword }), reg.to32()); | 182684 | // LLVM's threshold here is 8 load/store pairs. However, after that threshold, it typically |
| 182129 | return; | 182685 | // calls through to `memcpy` instead of emitting `rep movsb`; if we don't have the `fsrm` CPU |
| 182130 | }, | 182686 | // feature, `rep movsb` has a high startup cost, so is inefficient for small copies. Since we |
| 182131 | 8 => if (self.target.cpu.arch == .x86_64) { | 182687 | // don't currently call compiler_rt in the case of longer copies, we use a higher threshold if |
| 182132 | if (self.register_manager.tryAllocReg(null, abi.RegisterClass.gp)) |reg| { | 182688 | // we don't have the `fsrm` feature. |
| 182133 | try self.asmRegisterMemory(.{ ._, .mov }, reg.to64(), try src_ptr.deref().mem(self, .{ .size = .qword })); | 182689 | return switch (len) { |
| 182134 | try self.asmMemoryRegister(.{ ._, .mov }, try dst_ptr.deref().mem(self, .{ .size = .qword }), reg.to64()); | 182690 | 0...128 => true, |
| 182135 | return; | 182691 | 129...256 => cg.hasFeature(.avx) or !cg.hasFeature(.fsrm), // if we have AVX, each pair is 32 bytes |
| 182136 | } | 182692 | 257...512 => !cg.hasFeature(.fsrm), // the threshold should probably be higher, but I'm being cautious |
| 182137 | }, | 182693 | else => false, |
| 182138 | 16 => if (self.hasFeature(.avx)) { | | |
| 182139 | if (self.register_manager.tryAllocReg(null, abi.RegisterClass.sse)) |reg| { | | |
| 182140 | try self.asmRegisterMemory(.{ .v_dqu, .mov }, reg.to128(), try src_ptr.deref().mem(self, .{ .size = .xword })); | | |
| 182141 | try self.asmMemoryRegister(.{ .v_dqu, .mov }, try dst_ptr.deref().mem(self, .{ .size = .xword }), reg.to128()); | | |
| 182142 | return; | | |
| 182143 | } | | |
| 182144 | } else if (self.hasFeature(.sse2)) { | | |
| 182145 | if (self.register_manager.tryAllocReg(null, abi.RegisterClass.sse)) |reg| { | | |
| 182146 | try self.asmRegisterMemory(.{ ._dqu, .mov }, reg.to128(), try src_ptr.deref().mem(self, .{ .size = .xword })); | | |
| 182147 | try self.asmMemoryRegister(.{ ._dqu, .mov }, try dst_ptr.deref().mem(self, .{ .size = .xword }), reg.to128()); | | |
| 182148 | return; | | |
| 182149 | } | | |
| 182150 | } else if (self.hasFeature(.sse)) { | | |
| 182151 | if (self.register_manager.tryAllocReg(null, abi.RegisterClass.sse)) |reg| { | | |
| 182152 | try self.asmRegisterMemory(.{ ._ps, .movu }, reg.to128(), try src_ptr.deref().mem(self, .{ .size = .xword })); | | |
| 182153 | try self.asmMemoryRegister(.{ ._ps, .movu }, try dst_ptr.deref().mem(self, .{ .size = .xword }), reg.to128()); | | |
| 182154 | return; | | |
| 182155 | } | | |
| 182156 | }, | | |
| 182157 | 32 => if (self.hasFeature(.avx)) { | | |
| 182158 | if (self.register_manager.tryAllocReg(null, abi.RegisterClass.sse)) |reg| { | | |
| 182159 | try self.asmRegisterMemory(.{ .v_dqu, .mov }, reg.to256(), try src_ptr.deref().mem(self, .{ .size = .yword })); | | |
| 182160 | try self.asmMemoryRegister(.{ .v_dqu, .mov }, try dst_ptr.deref().mem(self, .{ .size = .yword }), reg.to256()); | | |
| 182161 | return; | | |
| 182162 | } | | |
| 182163 | }, | | |
| 182164 | }, | | |
| 182165 | }; | 182694 | }; |
| 182166 | try self.spillRegisters(&.{ .rsi, .rdi, .rcx }); | 182695 | } |
| 182167 | try self.genSetReg(.rsi, .usize, src_ptr, .{}); | 182696 | /// If we can trivially copy `len` bytes from `orig_src_ptr` to `dst_ptr` using simple loads and |
| 182168 | try self.genSetReg(.rdi, .usize, dst_ptr, .{}); | 182697 | /// stored through already-free register[s] (i.e. without spilling anything), emits that code and |
| 182169 | try self.genSetReg(.rcx, .usize, len, .{}); | 182698 | /// returns `true`. Otherwise, returns `false`, and the caller must lower the operation themselves, |
| 182170 | try self.asmOpOnly(.{ .@"rep _sb", .mov }); | 182699 | /// for instance with `rep movsb`. |
| | 182700 | fn genConstMemcpy( |
| | 182701 | cg: *CodeGen, |
| | 182702 | dst_ptr: MCValue, |
| | 182703 | orig_src_ptr: MCValue, |
| | 182704 | len: u64, |
| | 182705 | ) !bool { |
| | 182706 | if (!dst_ptr.isAddress()) return false; |
| | 182707 | |
| | 182708 | const src_reg: ?Register = r: { |
| | 182709 | if (orig_src_ptr.isAddress()) break :r null; |
| | 182710 | if (orig_src_ptr == .lea_uav or orig_src_ptr == .lea_nav) { |
| | 182711 | // To "hack around linker relocation bugs", a `lea_uav` isn't considered an address, but |
| | 182712 | // we want to avoid pessimising that case because it's common (e.g. returning constant |
| | 182713 | // values over 8 bytes). So if there's a register free, load the source address into it. |
| | 182714 | if (cg.register_manager.tryAllocReg(null, abi.RegisterClass.gp)) |src_reg| { |
| | 182715 | // We'll actually do the load a little later, in case another register alloc fails. |
| | 182716 | break :r src_reg; |
| | 182717 | } |
| | 182718 | } |
| | 182719 | return false; |
| | 182720 | }; |
| | 182721 | |
| | 182722 | // Prevent `src_reg` from aliasing `gp_reg` below. |
| | 182723 | const src_lock: ?RegisterLock = if (src_reg) |r| cg.register_manager.lockReg(r) else null; |
| | 182724 | defer if (src_lock) |l| cg.register_manager.unlockReg(l); |
| | 182725 | |
| | 182726 | const want_sse_reg = len >= 16 and cg.hasFeature(.sse); |
| | 182727 | const sse_reg: ?Register = if (want_sse_reg) r: { |
| | 182728 | break :r cg.register_manager.tryAllocReg(null, abi.RegisterClass.sse); |
| | 182729 | } else null; |
| | 182730 | |
| | 182731 | const need_gp_reg = len % 16 != 0 or sse_reg == null; |
| | 182732 | const gp_reg: Register = if (need_gp_reg) r: { |
| | 182733 | break :r cg.register_manager.tryAllocReg(null, abi.RegisterClass.gp) orelse return false; |
| | 182734 | } else undefined; |
| | 182735 | |
| | 182736 | const src_ptr: MCValue = src_ptr: { |
| | 182737 | const reg = src_reg orelse break :src_ptr orig_src_ptr; |
| | 182738 | try cg.asmRegisterMemory(.{ ._, .lea }, reg.to64(), switch (orig_src_ptr) { |
| | 182739 | .lea_uav => |uav| .{ .base = .{ .uav = uav } }, |
| | 182740 | .lea_nav => |nav| .{ .base = .{ .nav = nav } }, |
| | 182741 | else => unreachable, |
| | 182742 | }); |
| | 182743 | break :src_ptr .{ .register = reg.to64() }; |
| | 182744 | }; |
| | 182745 | |
| | 182746 | var offset: u64 = 0; |
| | 182747 | |
| | 182748 | if (sse_reg) |r| { |
| | 182749 | if (cg.hasFeature(.avx)) { |
| | 182750 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ .v_dqu, .mov }, r, .yword); |
| | 182751 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ .v_dqu, .mov }, r, .xword); |
| | 182752 | } else if (cg.hasFeature(.sse2)) { |
| | 182753 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._dqu, .mov }, r, .xword); |
| | 182754 | } else if (cg.hasFeature(.sse)) { |
| | 182755 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._ps, .movu }, r, .xword); |
| | 182756 | } |
| | 182757 | } |
| | 182758 | |
| | 182759 | if (need_gp_reg) { |
| | 182760 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._, .mov }, gp_reg, .qword); |
| | 182761 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._, .mov }, gp_reg, .dword); |
| | 182762 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._, .mov }, gp_reg, .word); |
| | 182763 | try cg.memcpyPart(dst_ptr, src_ptr, len, &offset, .{ ._, .mov }, gp_reg, .byte); |
| | 182764 | } |
| | 182765 | |
| | 182766 | assert(offset == len); |
| | 182767 | |
| | 182768 | return true; |
| | 182769 | } |
| | 182770 | fn memcpyPart( |
| | 182771 | cg: *CodeGen, |
| | 182772 | dst_ptr: MCValue, |
| | 182773 | src_ptr: MCValue, |
| | 182774 | len: u64, |
| | 182775 | offset: *u64, |
| | 182776 | tag: Mir.Inst.FixedTag, |
| | 182777 | temp_reg: Register, |
| | 182778 | size: Memory.Size, |
| | 182779 | ) !void { |
| | 182780 | const bytes_len = @divExact(size.bitSize(cg.target), 8); |
| | 182781 | while (len - offset.* >= bytes_len) { |
| | 182782 | try cg.asmRegisterMemory( |
| | 182783 | tag, |
| | 182784 | temp_reg.toSize(size, cg.target), |
| | 182785 | try src_ptr.deref().mem(cg, .{ .size = size, .disp = @intCast(offset.*) }), |
| | 182786 | ); |
| | 182787 | try cg.asmMemoryRegister( |
| | 182788 | tag, |
| | 182789 | try dst_ptr.deref().mem(cg, .{ .size = size, .disp = @intCast(offset.*) }), |
| | 182790 | temp_reg.toSize(size, cg.target), |
| | 182791 | ); |
| | 182792 | offset.* += bytes_len; |
| | 182793 | } |
| 182171 | } | 182794 | } |
| 182172 | | 182795 | |
| 182173 | fn genInlineMemset( | 182796 | fn genInlineMemset( |
| ... | @@ -186834,10 +187457,8 @@ const Temp = struct { | ... | @@ -186834,10 +187457,8 @@ const Temp = struct { |
| 186834 | }, | 187457 | }, |
| 186835 | .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => { | 187458 | .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => { |
| 186836 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); | 187459 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); |
| 186837 | var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) }); | 187460 | try val_ptr.memcpy(ptr, val_ty.abiSize(cg.pt.zcu), cg); |
| 186838 | try val_ptr.memcpy(ptr, &len, cg); | | |
| 186839 | try val_ptr.die(cg); | 187461 | try val_ptr.die(cg); |
| 186840 | try len.die(cg); | | |
| 186841 | }, | 187462 | }, |
| 186842 | } | 187463 | } |
| 186843 | return val; | 187464 | return val; |
| ... | @@ -186939,10 +187560,8 @@ const Temp = struct { | ... | @@ -186939,10 +187560,8 @@ const Temp = struct { |
| 186939 | .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr, | 187560 | .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr, |
| 186940 | .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => { | 187561 | .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => { |
| 186941 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); | 187562 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); |
| 186942 | var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) }); | 187563 | try ptr.memcpy(&val_ptr, val_ty.abiSize(cg.pt.zcu), cg); |
| 186943 | try ptr.memcpy(&val_ptr, &len, cg); | | |
| 186944 | try val_ptr.die(cg); | 187564 | try val_ptr.die(cg); |
| 186945 | try len.die(cg); | | |
| 186946 | }, | 187565 | }, |
| 186947 | } | 187566 | } |
| 186948 | break; | 187567 | break; |
| ... | @@ -186981,11 +187600,9 @@ const Temp = struct { | ... | @@ -186981,11 +187600,9 @@ const Temp = struct { |
| 186981 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); | 187600 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); |
| 186982 | var src_ptr = | 187601 | var src_ptr = |
| 186983 | try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp)); | 187602 | try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp)); |
| 186984 | var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) }); | 187603 | try val_ptr.memcpy(&src_ptr, val_ty.abiSize(cg.pt.zcu), cg); |
| 186985 | try val_ptr.memcpy(&src_ptr, &len, cg); | | |
| 186986 | try val_ptr.die(cg); | 187604 | try val_ptr.die(cg); |
| 186987 | try src_ptr.die(cg); | 187605 | try src_ptr.die(cg); |
| 186988 | try len.die(cg); | | |
| 186989 | }, | 187606 | }, |
| 186990 | } | 187607 | } |
| 186991 | } | 187608 | } |
| ... | @@ -187076,11 +187693,9 @@ const Temp = struct { | ... | @@ -187076,11 +187693,9 @@ const Temp = struct { |
| 187076 | var dst_ptr = | 187693 | var dst_ptr = |
| 187077 | try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp)); | 187694 | try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp)); |
| 187078 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); | 187695 | var val_ptr = try cg.tempInit(.usize, val_mcv.address()); |
| 187079 | var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) }); | 187696 | try dst_ptr.memcpy(&val_ptr, val_ty.abiSize(cg.pt.zcu), cg); |
| 187080 | try dst_ptr.memcpy(&val_ptr, &len, cg); | | |
| 187081 | try dst_ptr.die(cg); | 187697 | try dst_ptr.die(cg); |
| 187082 | try val_ptr.die(cg); | 187698 | try val_ptr.die(cg); |
| 187083 | try len.die(cg); | | |
| 187084 | }, | 187699 | }, |
| 187085 | } | 187700 | } |
| 187086 | break; | 187701 | break; |
| ... | @@ -187182,10 +187797,8 @@ const Temp = struct { | ... | @@ -187182,10 +187797,8 @@ const Temp = struct { |
| 187182 | try ptr.toOffset(deferred_disp, cg); | 187797 | try ptr.toOffset(deferred_disp, cg); |
| 187183 | deferred_disp = 0; | 187798 | deferred_disp = 0; |
| 187184 | var src_ptr = try cg.tempInit(.usize, .{ .lea_frame = .{ .index = frame_index } }); | 187799 | var src_ptr = try cg.tempInit(.usize, .{ .lea_frame = .{ .index = frame_index } }); |
| 187185 | var len = try cg.tempInit(.usize, .{ .immediate = src_abi_size }); | 187800 | try ptr.memcpy(&src_ptr, src_abi_size, cg); |
| 187186 | try ptr.memcpy(&src_ptr, &len, cg); | | |
| 187187 | try src_ptr.die(cg); | 187801 | try src_ptr.die(cg); |
| 187188 | try len.die(cg); | | |
| 187189 | } | 187802 | } |
| 187190 | part_disp += part_size; | 187803 | part_disp += part_size; |
| 187191 | deferred_disp += part_size; | 187804 | deferred_disp += part_size; |
| ... | @@ -187224,11 +187837,9 @@ const Temp = struct { | ... | @@ -187224,11 +187837,9 @@ const Temp = struct { |
| 187224 | var dst_ptr = try cg.tempInit(.usize, dst.tracking(cg).short.address()); | 187837 | var dst_ptr = try cg.tempInit(.usize, dst.tracking(cg).short.address()); |
| 187225 | try dst_ptr.toOffset(disp, cg); | 187838 | try dst_ptr.toOffset(disp, cg); |
| 187226 | var src_ptr = try cg.tempInit(.usize, .{ .lea_frame = .{ .index = frame_index } }); | 187839 | var src_ptr = try cg.tempInit(.usize, .{ .lea_frame = .{ .index = frame_index } }); |
| 187227 | var len = try cg.tempInit(.usize, .{ .immediate = src_abi_size }); | 187840 | try dst_ptr.memcpy(&src_ptr, src_abi_size, cg); |
| 187228 | try dst_ptr.memcpy(&src_ptr, &len, cg); | | |
| 187229 | try dst_ptr.die(cg); | 187841 | try dst_ptr.die(cg); |
| 187230 | try src_ptr.die(cg); | 187842 | try src_ptr.die(cg); |
| 187231 | try len.die(cg); | | |
| 187232 | } | 187843 | } |
| 187233 | } | 187844 | } |
| 187234 | | 187845 | |
| ... | @@ -187273,11 +187884,21 @@ const Temp = struct { | ... | @@ -187273,11 +187884,21 @@ const Temp = struct { |
| 187273 | assert(next_class_index == classes.len); | 187884 | assert(next_class_index == classes.len); |
| 187274 | } | 187885 | } |
| 187275 | | 187886 | |
| 187276 | fn memcpy(dst: *Temp, src: *Temp, len: *Temp, cg: *CodeGen) InnerError!void { | 187887 | fn memcpy(dst: *Temp, src: *Temp, len: u64, cg: *CodeGen) InnerError!void { |
| 187277 | while (true) for ([_]*Temp{ dst, src, len }, [_]Register{ .rdi, .rsi, .rcx }) |temp, reg| { | 187888 | if (cg.useConstMemcpyForSize(len)) { |
| 187278 | if (try temp.toReg(reg, cg)) break; | 187889 | while (try dst.toLea(cg) or try src.toLea(cg)) {} // `genConstMemcpy` wants these values to be address operands |
| 187279 | } else break; | 187890 | if (try cg.genConstMemcpy(dst.tracking(cg).short, src.tracking(cg).short, len)) { |
| | 187891 | return; |
| | 187892 | } |
| | 187893 | } |
| | 187894 | var temp = try cg.tempAllocReg(.usize, abi.RegisterClass.gp); |
| | 187895 | while (try dst.toReg(.rdi, cg) or |
| | 187896 | try src.toReg(.rsi, cg) or |
| | 187897 | try temp.toReg(.rcx, cg)) |
| | 187898 | {} |
| | 187899 | try cg.asmRegisterImmediate(.{ ._, .mov }, .rcx, .{ .unsigned = len }); |
| 187280 | try cg.asmOpOnly(.{ .@"rep _sb", .mov }); | 187900 | try cg.asmOpOnly(.{ .@"rep _sb", .mov }); |
| | 187901 | try temp.die(cg); |
| 187281 | } | 187902 | } |
| 187282 | | 187903 | |
| 187283 | fn memset(dst: *Temp, val: *Temp, len: *Temp, cg: *CodeGen) InnerError!void { | 187904 | fn memset(dst: *Temp, val: *Temp, len: *Temp, cg: *CodeGen) InnerError!void { |
| ... | @@ -190139,9 +190760,9 @@ const Temp = struct { | ... | @@ -190139,9 +190760,9 @@ const Temp = struct { |
| 190139 | .required_features = .{ .sse, .mmx, null, null }, | 190760 | .required_features = .{ .sse, .mmx, null, null }, |
| 190140 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, | 190761 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 190141 | .patterns = &.{ | 190762 | .patterns = &.{ |
| 190142 | .{ .src = .{ .to_mut_mm, .mem, .none } }, | 190763 | .{ .src = .{ .to_mut_mmx, .mem, .none } }, |
| 190143 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, | 190764 | .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, |
| 190144 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, | 190765 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 190145 | }, | 190766 | }, |
| 190146 | .extra_temps = .{ | 190767 | .extra_temps = .{ |
| 190147 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 190768 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -190169,9 +190790,9 @@ const Temp = struct { | ... | @@ -190169,9 +190790,9 @@ const Temp = struct { |
| 190169 | .required_features = .{ .avx, null, null, null }, | 190790 | .required_features = .{ .avx, null, null, null }, |
| 190170 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, | 190791 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 190171 | .patterns = &.{ | 190792 | .patterns = &.{ |
| 190172 | .{ .src = .{ .to_xmm, .mem, .none } }, | 190793 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 190173 | .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, | 190794 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 190174 | .{ .src = .{ .to_xmm, .to_xmm, .none } }, | 190795 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 190175 | }, | 190796 | }, |
| 190176 | .extra_temps = .{ | 190797 | .extra_temps = .{ |
| 190177 | .{ .kind = .{ .rc = .sse } }, | 190798 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -190196,9 +190817,9 @@ const Temp = struct { | ... | @@ -190196,9 +190817,9 @@ const Temp = struct { |
| 190196 | .required_features = .{ .sse4_1, null, null, null }, | 190817 | .required_features = .{ .sse4_1, null, null, null }, |
| 190197 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, | 190818 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 190198 | .patterns = &.{ | 190819 | .patterns = &.{ |
| 190199 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, | 190820 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 190200 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, | 190821 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 190201 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, | 190822 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 190202 | }, | 190823 | }, |
| 190203 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 190824 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 190204 | .clobbers = .{ .eflags = true }, | 190825 | .clobbers = .{ .eflags = true }, |
| ... | @@ -190210,9 +190831,9 @@ const Temp = struct { | ... | @@ -190210,9 +190831,9 @@ const Temp = struct { |
| 190210 | .required_features = .{ .sse2, .fast_imm16, null, null }, | 190831 | .required_features = .{ .sse2, .fast_imm16, null, null }, |
| 190211 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, | 190832 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 190212 | .patterns = &.{ | 190833 | .patterns = &.{ |
| 190213 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, | 190834 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 190214 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, | 190835 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 190215 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, | 190836 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 190216 | }, | 190837 | }, |
| 190217 | .extra_temps = .{ | 190838 | .extra_temps = .{ |
| 190218 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 190839 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -190240,9 +190861,9 @@ const Temp = struct { | ... | @@ -190240,9 +190861,9 @@ const Temp = struct { |
| 190240 | .required_features = .{ .sse2, null, null, null }, | 190861 | .required_features = .{ .sse2, null, null, null }, |
| 190241 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, | 190862 | .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, |
| 190242 | .patterns = &.{ | 190863 | .patterns = &.{ |
| 190243 | .{ .src = .{ .to_mut_xmm, .mem, .none } }, | 190864 | .{ .src = .{ .to_mut_sse, .mem, .none } }, |
| 190244 | .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, | 190865 | .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, |
| 190245 | .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, | 190866 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 190246 | }, | 190867 | }, |
| 190247 | .extra_temps = .{ | 190868 | .extra_temps = .{ |
| 190248 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, | 190869 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -190270,9 +190891,9 @@ const Temp = struct { | ... | @@ -190270,9 +190891,9 @@ const Temp = struct { |
| 190270 | .required_features = .{ .avx2, null, null, null }, | 190891 | .required_features = .{ .avx2, null, null, null }, |
| 190271 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, | 190892 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, |
| 190272 | .patterns = &.{ | 190893 | .patterns = &.{ |
| 190273 | .{ .src = .{ .to_ymm, .mem, .none } }, | 190894 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 190274 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, | 190895 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 190275 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, | 190896 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 190276 | }, | 190897 | }, |
| 190277 | .extra_temps = .{ | 190898 | .extra_temps = .{ |
| 190278 | .{ .kind = .{ .rc = .sse } }, | 190899 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -190297,9 +190918,9 @@ const Temp = struct { | ... | @@ -190297,9 +190918,9 @@ const Temp = struct { |
| 190297 | .required_features = .{ .avx, null, null, null }, | 190918 | .required_features = .{ .avx, null, null, null }, |
| 190298 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, | 190919 | .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, |
| 190299 | .patterns = &.{ | 190920 | .patterns = &.{ |
| 190300 | .{ .src = .{ .to_ymm, .mem, .none } }, | 190921 | .{ .src = .{ .to_sse, .mem, .none } }, |
| 190301 | .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, | 190922 | .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, |
| 190302 | .{ .src = .{ .to_ymm, .to_ymm, .none } }, | 190923 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 190303 | }, | 190924 | }, |
| 190304 | .extra_temps = .{ | 190925 | .extra_temps = .{ |
| 190305 | .{ .kind = .{ .rc = .sse } }, | 190926 | .{ .kind = .{ .rc = .sse } }, |
| ... | @@ -192279,6 +192900,7 @@ const Select = struct { | ... | @@ -192279,6 +192900,7 @@ const Select = struct { |
| 192279 | any_scalar_int, | 192900 | any_scalar_int, |
| 192280 | any_scalar_signed_int, | 192901 | any_scalar_signed_int, |
| 192281 | any_scalar_unsigned_int, | 192902 | any_scalar_unsigned_int, |
| | 192903 | any_signed_int_or_full_vec, |
| 192282 | any_float, | 192904 | any_float, |
| 192283 | po2_any, | 192905 | po2_any, |
| 192284 | bool, | 192906 | bool, |
| ... | @@ -192375,6 +192997,11 @@ const Select = struct { | ... | @@ -192375,6 +192997,11 @@ const Select = struct { |
| 192375 | .any_scalar_int => cg.intInfo(ty.scalarType(zcu)) != null, | 192997 | .any_scalar_int => cg.intInfo(ty.scalarType(zcu)) != null, |
| 192376 | .any_scalar_signed_int => if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed else false, | 192998 | .any_scalar_signed_int => if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed else false, |
| 192377 | .any_scalar_unsigned_int => if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned else false, | 192999 | .any_scalar_unsigned_int => if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned else false, |
| | 193000 | .any_signed_int_or_full_vec => ty.isVector(zcu) and |
| | 193001 | if (cg.intInfo(ty.childType(zcu))) |int_info| switch (int_info.signedness) { |
| | 193002 | .signed => true, |
| | 193003 | .unsigned => (int_info.bits >= 8 and std.math.isPowerOfTwo(int_info.bits)) or int_info.bits % 128 == 0, |
| | 193004 | } else false, |
| 192378 | .any_float => ty.isRuntimeFloat(), | 193005 | .any_float => ty.isRuntimeFloat(), |
| 192379 | .po2_any => std.math.isPowerOfTwo(ty.abiSize(zcu)), | 193006 | .po2_any => std.math.isPowerOfTwo(ty.abiSize(zcu)), |
| 192380 | .bool => ty.toIntern() == .bool_type, | 193007 | .bool => ty.toIntern() == .bool_type, |
| ... | @@ -192415,7 +193042,7 @@ const Select = struct { | ... | @@ -192415,7 +193042,7 @@ const Select = struct { |
| 192415 | .signed_int_or_full_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and | 193042 | .signed_int_or_full_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 192416 | if (cg.intInfo(ty.childType(zcu))) |int_info| switch (int_info.signedness) { | 193043 | if (cg.intInfo(ty.childType(zcu))) |int_info| switch (int_info.signedness) { |
| 192417 | .signed => true, | 193044 | .signed => true, |
| 192418 | .unsigned => int_info.bits >= 8 and std.math.isPowerOfTwo(int_info.bits), | 193045 | .unsigned => (int_info.bits >= 8 and std.math.isPowerOfTwo(int_info.bits)) or int_info.bits % 128 == 0, |
| 192419 | } else false, | 193046 | } else false, |
| 192420 | .unsigned_int_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and | 193047 | .unsigned_int_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and |
| 192421 | if (cg.intInfo(ty.childType(zcu))) |int_info| int_info.signedness == .unsigned else false, | 193048 | if (cg.intInfo(ty.childType(zcu))) |int_info| int_info.signedness == .unsigned else false, |
| ... | @@ -192664,22 +193291,10 @@ const Select = struct { | ... | @@ -192664,22 +193291,10 @@ const Select = struct { |
| 192664 | to_mmx, | 193291 | to_mmx, |
| 192665 | mut_mmx, | 193292 | mut_mmx, |
| 192666 | to_mut_mmx, | 193293 | to_mut_mmx, |
| 192667 | mm, | | |
| 192668 | to_mm, | | |
| 192669 | mut_mm, | | |
| 192670 | to_mut_mm, | | |
| 192671 | sse, | 193294 | sse, |
| 192672 | to_sse, | 193295 | to_sse, |
| 192673 | mut_sse, | 193296 | mut_sse, |
| 192674 | to_mut_sse, | 193297 | to_mut_sse, |
| 192675 | xmm, | | |
| 192676 | to_xmm, | | |
| 192677 | mut_xmm, | | |
| 192678 | to_mut_xmm, | | |
| 192679 | ymm, | | |
| 192680 | to_ymm, | | |
| 192681 | mut_ymm, | | |
| 192682 | to_mut_ymm, | | |
| 192683 | reg_mask: RegMaskSpec, | 193298 | reg_mask: RegMaskSpec, |
| 192684 | all_reg_mask: RegMaskSpec, | 193299 | all_reg_mask: RegMaskSpec, |
| 192685 | | 193300 | |
| ... | @@ -192769,17 +193384,6 @@ const Select = struct { | ... | @@ -192769,17 +193384,6 @@ const Select = struct { |
| 192769 | else => false, | 193384 | else => false, |
| 192770 | }, | 193385 | }, |
| 192771 | .to_mmx, .to_mut_mmx => true, | 193386 | .to_mmx, .to_mut_mmx => true, |
| 192772 | .mm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 8 and switch (temp.tracking(cg).short) { | | |
| 192773 | .register => |reg| reg.isClass(.mmx), | | |
| 192774 | .register_offset => |reg_off| reg_off.reg.isClass(.mmx) and reg_off.off == 0, | | |
| 192775 | else => false, | | |
| 192776 | }, | | |
| 192777 | .mut_mm => temp.isMut(cg) and temp.typeOf(cg).abiSize(cg.pt.zcu) == 8 and switch (temp.tracking(cg).short) { | | |
| 192778 | .register => |reg| reg.isClass(.mmx), | | |
| 192779 | .register_offset => |reg_off| reg_off.reg.isClass(.mmx) and reg_off.off == 0, | | |
| 192780 | else => false, | | |
| 192781 | }, | | |
| 192782 | .to_mm, .to_mut_mm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 8, | | |
| 192783 | .sse => switch (temp.tracking(cg).short) { | 193387 | .sse => switch (temp.tracking(cg).short) { |
| 192784 | .register => |reg| reg.isClass(.sse), | 193388 | .register => |reg| reg.isClass(.sse), |
| 192785 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, | 193389 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, |
| ... | @@ -192791,28 +193395,6 @@ const Select = struct { | ... | @@ -192791,28 +193395,6 @@ const Select = struct { |
| 192791 | else => false, | 193395 | else => false, |
| 192792 | }, | 193396 | }, |
| 192793 | .to_sse, .to_mut_sse => true, | 193397 | .to_sse, .to_mut_sse => true, |
| 192794 | .xmm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 16 and switch (temp.tracking(cg).short) { | | |
| 192795 | .register => |reg| reg.isClass(.sse), | | |
| 192796 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, | | |
| 192797 | else => false, | | |
| 192798 | }, | | |
| 192799 | .mut_xmm => temp.isMut(cg) and temp.typeOf(cg).abiSize(cg.pt.zcu) == 16 and switch (temp.tracking(cg).short) { | | |
| 192800 | .register => |reg| reg.isClass(.sse), | | |
| 192801 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, | | |
| 192802 | else => false, | | |
| 192803 | }, | | |
| 192804 | .to_xmm, .to_mut_xmm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 16, | | |
| 192805 | .ymm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 32 and switch (temp.tracking(cg).short) { | | |
| 192806 | .register => |reg| reg.isClass(.sse), | | |
| 192807 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, | | |
| 192808 | else => false, | | |
| 192809 | }, | | |
| 192810 | .mut_ymm => temp.isMut(cg) and temp.typeOf(cg).abiSize(cg.pt.zcu) == 32 and switch (temp.tracking(cg).short) { | | |
| 192811 | .register => |reg| reg.isClass(.sse), | | |
| 192812 | .register_offset => |reg_off| reg_off.reg.isClass(.sse) and reg_off.off == 0, | | |
| 192813 | else => false, | | |
| 192814 | }, | | |
| 192815 | .to_ymm, .to_mut_ymm => temp.typeOf(cg).abiSize(cg.pt.zcu) == 32, | | |
| 192816 | .reg_mask => |mask_spec| switch (temp.tracking(cg).short) { | 193398 | .reg_mask => |mask_spec| switch (temp.tracking(cg).short) { |
| 192817 | .register_mask => |reg_mask| mask_spec.size.bitSize(cg.target) >= | 193399 | .register_mask => |reg_mask| mask_spec.size.bitSize(cg.target) >= |
| 192818 | reg_mask.info.scalar.bitSize(cg.target) * temp.typeOf(cg).vectorLen(cg.pt.zcu) and | 193400 | reg_mask.info.scalar.bitSize(cg.target) * temp.typeOf(cg).vectorLen(cg.pt.zcu) and |
| ... | @@ -192846,10 +193428,10 @@ const Select = struct { | ... | @@ -192846,10 +193428,10 @@ const Select = struct { |
| 192846 | .to_mut_gphi => try temp.toRegClass(true, .gphi, cg), | 193428 | .to_mut_gphi => try temp.toRegClass(true, .gphi, cg), |
| 192847 | .x87, .to_x87 => try temp.toRegClass(false, .x87, cg), | 193429 | .x87, .to_x87 => try temp.toRegClass(false, .x87, cg), |
| 192848 | .mut_x87, .to_mut_x87 => try temp.toRegClass(true, .x87, cg), | 193430 | .mut_x87, .to_mut_x87 => try temp.toRegClass(true, .x87, cg), |
| 192849 | .mmx, .to_mmx, .mm, .to_mm => try temp.toRegClass(false, .mmx, cg), | 193431 | .mmx, .to_mmx => try temp.toRegClass(false, .mmx, cg), |
| 192850 | .mut_mmx, .to_mut_mmx, .mut_mm, .to_mut_mm => try temp.toRegClass(true, .mmx, cg), | 193432 | .mut_mmx, .to_mut_mmx => try temp.toRegClass(true, .mmx, cg), |
| 192851 | .sse, .to_sse, .xmm, .to_xmm, .ymm, .to_ymm => try temp.toRegClass(false, .sse, cg), | 193433 | .sse, .to_sse => try temp.toRegClass(false, .sse, cg), |
| 192852 | .mut_sse, .to_mut_sse, .mut_xmm, .to_mut_xmm, .mut_ymm, .to_mut_ymm => try temp.toRegClass(true, .sse, cg), | 193434 | .mut_sse, .to_mut_sse => try temp.toRegClass(true, .sse, cg), |
| 192853 | }; | 193435 | }; |
| 192854 | } | 193436 | } |
| 192855 | }; | 193437 | }; |
| ... | @@ -193399,7 +193981,7 @@ const Select = struct { | ... | @@ -193399,7 +193981,7 @@ const Select = struct { |
| 193399 | ref: Ref, | 193981 | ref: Ref, |
| 193400 | scale: Memory.Scale = .@"1", | 193982 | scale: Memory.Scale = .@"1", |
| 193401 | } = .{ .ref = .none }, | 193983 | } = .{ .ref = .none }, |
| 193402 | unused: u2 = 0, | 193984 | unused: u1 = 0, |
| 193403 | }, | 193985 | }, |
| 193404 | imm: i32 = 0, | 193986 | imm: i32 = 0, |
| 193405 | | 193987 | |
| ... | @@ -193412,7 +193994,7 @@ const Select = struct { | ... | @@ -193412,7 +193994,7 @@ const Select = struct { |
| 193412 | lea, | 193994 | lea, |
| 193413 | mem, | 193995 | mem, |
| 193414 | }; | 193996 | }; |
| 193415 | const Adjust = packed struct(u11) { | 193997 | const Adjust = packed struct(u12) { |
| 193416 | sign: enum(u1) { neg, pos }, | 193998 | sign: enum(u1) { neg, pos }, |
| 193417 | lhs: enum(u6) { | 193999 | lhs: enum(u6) { |
| 193418 | none, | 194000 | none, |
| ... | @@ -193449,7 +194031,7 @@ const Select = struct { | ... | @@ -193449,7 +194031,7 @@ const Select = struct { |
| 193449 | umax_shr_src1, | 194031 | umax_shr_src1, |
| 193450 | repeat, | 194032 | repeat, |
| 193451 | }, | 194033 | }, |
| 193452 | op: enum(u2) { mul, div, div_8_down, rem_8_mul }, | 194034 | op: enum(u3) { mul, div, div_8_down, rem_8_mul, up_2_mul, up_32_mul }, |
| 193453 | rhs: Memory.Scale, | 194035 | rhs: Memory.Scale, |
| 193454 | | 194036 | |
| 193455 | const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" }; | 194037 | const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" }; |
| ... | @@ -193470,6 +194052,11 @@ const Select = struct { | ... | @@ -193470,6 +194052,11 @@ const Select = struct { |
| 193470 | const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" }; | 194052 | const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" }; |
| 193471 | const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" }; | 194053 | const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" }; |
| 193472 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; | 194054 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| | 194055 | const add_unaligned_size_up_2: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .up_2_mul, .rhs = .@"1" }; |
| | 194056 | const add_unaligned_size_up_4: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .up_2_mul, .rhs = .@"2" }; |
| | 194057 | const add_unaligned_size_up_8: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .up_2_mul, .rhs = .@"4" }; |
| | 194058 | const add_unaligned_size_up_16: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .up_2_mul, .rhs = .@"8" }; |
| | 194059 | const add_unaligned_size_up_32: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .up_32_mul, .rhs = .@"1" }; |
| 193473 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; | 194060 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 193474 | const add_unaligned_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_add_elem_size, .op = .mul, .rhs = .@"1" }; | 194061 | const add_unaligned_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_add_elem_size, .op = .mul, .rhs = .@"1" }; |
| 193475 | const add_unaligned_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_sub_elem_size, .op = .mul, .rhs = .@"1" }; | 194062 | const add_unaligned_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_sub_elem_size, .op = .mul, .rhs = .@"1" }; |
| ... | @@ -194482,7 +195069,9 @@ const Select = struct { | ... | @@ -194482,7 +195069,9 @@ const Select = struct { |
| 194482 | }, | 195069 | }, |
| 194483 | .div => @shrExact(lhs, rhs), | 195070 | .div => @shrExact(lhs, rhs), |
| 194484 | .div_8_down => lhs >> 3 & @as(SignedImm, -1) << rhs, | 195071 | .div_8_down => lhs >> 3 & @as(SignedImm, -1) << rhs, |
| 194485 | .rem_8_mul => lhs & (@as(SignedImm, 1) << @intCast(@as(u3, 3) + rhs)) - 1, | 195072 | .rem_8_mul => lhs & ((@as(SignedImm, 8) << rhs) - 1), |
| | 195073 | .up_2_mul => ((lhs - 1) & @as(SignedImm, -2) << rhs) + (@as(SignedImm, 2) << rhs), |
| | 195074 | .up_32_mul => ((lhs - 1) & @as(SignedImm, -32) << rhs) + (@as(SignedImm, 32) << rhs), |
| 194486 | }; | 195075 | }; |
| 194487 | const disp: SignedImm = @bitCast(@as(UnsignedImm, @as(u32, @bitCast(op.imm)))); | 195076 | const disp: SignedImm = @bitCast(@as(UnsignedImm, @as(u32, @bitCast(op.imm)))); |
| 194488 | return switch (op.flags.adjust.sign) { | 195077 | return switch (op.flags.adjust.sign) { |