| ... | @@ -164,7 +164,7 @@ next_temp_index: Temp.Index = @enumFromInt(0), | ... | @@ -164,7 +164,7 @@ next_temp_index: Temp.Index = @enumFromInt(0), |
| 164 | temp_type: [Temp.Index.max]Type = undefined, | 164 | temp_type: [Temp.Index.max]Type = undefined, |
| 165 | | 165 | |
| 166 | const MaskInfo = packed struct { | 166 | const MaskInfo = packed struct { |
| 167 | kind: enum(u1) { sign, all }, | 167 | kind: enum(u2) { lsb, msb, zero_extend, sign_extend }, |
| 168 | inverted: bool = false, | 168 | inverted: bool = false, |
| 169 | scalar: Memory.Size, | 169 | scalar: Memory.Size, |
| 170 | }; | 170 | }; |
| ... | @@ -204,13 +204,15 @@ pub const MCValue = union(enum) { | ... | @@ -204,13 +204,15 @@ pub const MCValue = union(enum) { |
| 204 | /// The value is a tuple { wrapped, overflow } where wrapped value is stored in the GP register. | 204 | /// The value is a tuple { wrapped, overflow } where wrapped value is stored in the GP register. |
| 205 | register_overflow: struct { reg: Register, eflags: Condition }, | 205 | register_overflow: struct { reg: Register, eflags: Condition }, |
| 206 | /// The value is a bool vector stored in a vector register with a different scalar type. | 206 | /// The value is a bool vector stored in a vector register with a different scalar type. |
| 207 | register_mask: struct { reg: Register, info: MaskInfo }, | 207 | register_mask: Mask, |
| 208 | /// The value is in memory at a hard-coded address. | 208 | /// The value is in memory at a hard-coded address. |
| 209 | /// If the type is a pointer, it means the pointer address is stored at this memory location. | 209 | /// If the type is a pointer, it means the pointer address is stored at this memory location. |
| 210 | memory: u64, | 210 | memory: u64, |
| 211 | /// The value is in memory at a constant offset from the address in a register. | 211 | /// The value is in memory at a constant offset from the address in a register. |
| 212 | indirect: bits.RegisterOffset, | 212 | indirect: bits.RegisterOffset, |
| 213 | indirect_load_frame: bits.FrameAddr, | 213 | indirect_load_frame: bits.FrameAddr, |
| | 214 | /// The value is a bool vector stored in memory with a different scalar type at the address in a register. |
| | 215 | indirect_mask: Mask, |
| 214 | /// The value stored at an offset from a frame index. | 216 | /// The value stored at an offset from a frame index. |
| 215 | /// Payload is a frame address. | 217 | /// Payload is a frame address. |
| 216 | load_frame: bits.FrameAddr, | 218 | load_frame: bits.FrameAddr, |
| ... | @@ -243,6 +245,8 @@ pub const MCValue = union(enum) { | ... | @@ -243,6 +245,8 @@ pub const MCValue = union(enum) { |
| 243 | reserved_frame: FrameIndex, | 245 | reserved_frame: FrameIndex, |
| 244 | air_ref: Air.Inst.Ref, | 246 | air_ref: Air.Inst.Ref, |
| 245 | | 247 | |
| | 248 | const Mask = struct { reg: Register, info: MaskInfo }; |
| | 249 | |
| 246 | fn isModifiable(mcv: MCValue) bool { | 250 | fn isModifiable(mcv: MCValue) bool { |
| 247 | return switch (mcv) { | 251 | return switch (mcv) { |
| 248 | .none, | 252 | .none, |
| ... | @@ -278,6 +282,7 @@ pub const MCValue = union(enum) { | ... | @@ -278,6 +282,7 @@ pub const MCValue = union(enum) { |
| 278 | .register_quadruple, | 282 | .register_quadruple, |
| 279 | .memory, | 283 | .memory, |
| 280 | .indirect, | 284 | .indirect, |
| | 285 | .indirect_mask, |
| 281 | .load_nav, | 286 | .load_nav, |
| 282 | => true, | 287 | => true, |
| 283 | .load_frame => |frame_addr| !frame_addr.index.isNamed(), | 288 | .load_frame => |frame_addr| !frame_addr.index.isNamed(), |
| ... | @@ -346,9 +351,10 @@ pub const MCValue = union(enum) { | ... | @@ -346,9 +351,10 @@ pub const MCValue = union(enum) { |
| 346 | .register_quadruple, | 351 | .register_quadruple, |
| 347 | => |*regs| regs, | 352 | => |*regs| regs, |
| 348 | inline .register_offset, | 353 | inline .register_offset, |
| 349 | .indirect, | | |
| 350 | .register_overflow, | 354 | .register_overflow, |
| 351 | .register_mask, | 355 | .register_mask, |
| | 356 | .indirect, |
| | 357 | .indirect_mask, |
| 352 | => |*pl| (&pl.reg)[0..1], | 358 | => |*pl| (&pl.reg)[0..1], |
| 353 | else => &.{}, | 359 | else => &.{}, |
| 354 | }; | 360 | }; |
| ... | @@ -384,6 +390,7 @@ pub const MCValue = union(enum) { | ... | @@ -384,6 +390,7 @@ pub const MCValue = union(enum) { |
| 384 | .register_offset, | 390 | .register_offset, |
| 385 | .register_overflow, | 391 | .register_overflow, |
| 386 | .register_mask, | 392 | .register_mask, |
| | 393 | .indirect_mask, |
| 387 | .lea_frame, | 394 | .lea_frame, |
| 388 | .lea_nav, | 395 | .lea_nav, |
| 389 | .lea_uav, | 396 | .lea_uav, |
| ... | @@ -427,6 +434,7 @@ pub const MCValue = union(enum) { | ... | @@ -427,6 +434,7 @@ pub const MCValue = union(enum) { |
| 427 | .memory, | 434 | .memory, |
| 428 | .indirect, | 435 | .indirect, |
| 429 | .indirect_load_frame, | 436 | .indirect_load_frame, |
| | 437 | .indirect_mask, |
| 430 | .load_nav, | 438 | .load_nav, |
| 431 | .load_uav, | 439 | .load_uav, |
| 432 | .load_lazy_sym, | 440 | .load_lazy_sym, |
| ... | @@ -476,6 +484,7 @@ pub const MCValue = union(enum) { | ... | @@ -476,6 +484,7 @@ pub const MCValue = union(enum) { |
| 476 | .memory, | 484 | .memory, |
| 477 | .indirect, | 485 | .indirect, |
| 478 | .indirect_load_frame, | 486 | .indirect_load_frame, |
| | 487 | .indirect_mask, |
| 479 | .load_frame, | 488 | .load_frame, |
| 480 | .load_nav, | 489 | .load_nav, |
| 481 | .lea_nav, | 490 | .lea_nav, |
| ... | @@ -547,6 +556,10 @@ pub const MCValue = union(enum) { | ... | @@ -547,6 +556,10 @@ pub const MCValue = union(enum) { |
| 547 | .disp = reg_off.off + mod_rm.disp, | 556 | .disp = reg_off.off + mod_rm.disp, |
| 548 | } }, | 557 | } }, |
| 549 | }, | 558 | }, |
| | 559 | .indirect_mask => |reg_mask| .{ |
| | 560 | .base = .{ .reg = reg_mask.reg.toSize(.ptr, function.target) }, |
| | 561 | .mod = .{ .rm = mod_rm }, |
| | 562 | }, |
| 550 | .load_frame => |frame_addr| .{ | 563 | .load_frame => |frame_addr| .{ |
| 551 | .base = .{ .frame = frame_addr.index }, | 564 | .base = .{ .frame = frame_addr.index }, |
| 552 | .mod = .{ .rm = .{ | 565 | .mod = .{ .rm = .{ |
| ... | @@ -568,7 +581,6 @@ pub const MCValue = union(enum) { | ... | @@ -568,7 +581,6 @@ pub const MCValue = union(enum) { |
| 568 | switch (mcv) { | 581 | switch (mcv) { |
| 569 | .none, .unreach, .dead, .undef => try w.print("({s})", .{@tagName(mcv)}), | 582 | .none, .unreach, .dead, .undef => try w.print("({s})", .{@tagName(mcv)}), |
| 570 | .immediate => |pl| try w.print("0x{x}", .{pl}), | 583 | .immediate => |pl| try w.print("0x{x}", .{pl}), |
| 571 | .memory => |pl| try w.print("[ds:0x{x}]", .{pl}), | | |
| 572 | inline .eflags, .register => |pl| try w.print("{s}", .{@tagName(pl)}), | 584 | inline .eflags, .register => |pl| try w.print("{s}", .{@tagName(pl)}), |
| 573 | .register_pair => |pl| try w.print("{s}:{s}", .{ @tagName(pl[1]), @tagName(pl[0]) }), | 585 | .register_pair => |pl| try w.print("{s}:{s}", .{ @tagName(pl[1]), @tagName(pl[0]) }), |
| 574 | .register_triple => |pl| try w.print("{s}:{s}:{s}", .{ | 586 | .register_triple => |pl| try w.print("{s}:{s}:{s}", .{ |
| ... | @@ -582,14 +594,21 @@ pub const MCValue = union(enum) { | ... | @@ -582,14 +594,21 @@ pub const MCValue = union(enum) { |
| 582 | @tagName(pl.eflags), | 594 | @tagName(pl.eflags), |
| 583 | @tagName(pl.reg), | 595 | @tagName(pl.reg), |
| 584 | }), | 596 | }), |
| 585 | .register_mask => |pl| try w.print("mask({s},{f}):{c}{s}", .{ | 597 | .register_mask => |pl| try w.print("mask({s},{f}):{s}{s}", .{ |
| 586 | @tagName(pl.info.kind), | 598 | @tagName(pl.info.kind), |
| 587 | pl.info.scalar, | 599 | pl.info.scalar, |
| 588 | @as(u8, if (pl.info.inverted) '!' else ' '), | 600 | if (pl.info.inverted) "!" else "", |
| 589 | @tagName(pl.reg), | 601 | @tagName(pl.reg), |
| 590 | }), | 602 | }), |
| | 603 | .memory => |pl| try w.print("[ds:0x{x}]", .{pl}), |
| 591 | .indirect => |pl| try w.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }), | 604 | .indirect => |pl| try w.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }), |
| 592 | .indirect_load_frame => |pl| try w.print("[[{f} + 0x{x}]]", .{ pl.index, pl.off }), | 605 | .indirect_load_frame => |pl| try w.print("[[{f} + 0x{x}]]", .{ pl.index, pl.off }), |
| | 606 | .indirect_mask => |pl| try w.print("[mask({s},{f}):{s}{s}]", .{ |
| | 607 | @tagName(pl.info.kind), |
| | 608 | pl.info.scalar, |
| | 609 | if (pl.info.inverted) "!" else "", |
| | 610 | @tagName(pl.reg), |
| | 611 | }), |
| 593 | .load_frame => |pl| try w.print("[{f} + 0x{x}]", .{ pl.index, pl.off }), | 612 | .load_frame => |pl| try w.print("[{f} + 0x{x}]", .{ pl.index, pl.off }), |
| 594 | .lea_frame => |pl| try w.print("{f} + 0x{x}", .{ pl.index, pl.off }), | 613 | .lea_frame => |pl| try w.print("{f} + 0x{x}", .{ pl.index, pl.off }), |
| 595 | .load_nav => |pl| try w.print("[nav:{d}]", .{@intFromEnum(pl)}), | 614 | .load_nav => |pl| try w.print("[nav:{d}]", .{@intFromEnum(pl)}), |
| ... | @@ -666,6 +685,7 @@ const InstTracking = struct { | ... | @@ -666,6 +685,7 @@ const InstTracking = struct { |
| 666 | .register_overflow, | 685 | .register_overflow, |
| 667 | .register_mask, | 686 | .register_mask, |
| 668 | .indirect, | 687 | .indirect, |
| | 688 | .indirect_mask, |
| 669 | => .none, | 689 | => .none, |
| 670 | }, .short = result }; | 690 | }, .short = result }; |
| 671 | } | 691 | } |
| ... | @@ -765,6 +785,7 @@ const InstTracking = struct { | ... | @@ -765,6 +785,7 @@ const InstTracking = struct { |
| 765 | .register_overflow, | 785 | .register_overflow, |
| 766 | .register_mask, | 786 | .register_mask, |
| 767 | .indirect, | 787 | .indirect, |
| | 788 | .indirect_mask, |
| 768 | .register_tee, | 789 | .register_tee, |
| 769 | .elementwise_gpr, | 790 | .elementwise_gpr, |
| 770 | .elementwise_sse, | 791 | .elementwise_sse, |
| ... | @@ -72517,7 +72538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72517,7 +72538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72517 | .{ .src = .{ .to_sse, .none, .none } }, | 72538 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72518 | }, | 72539 | }, |
| 72519 | .extra_temps = .{ | 72540 | .extra_temps = .{ |
| 72520 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72541 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72521 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72542 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72522 | .unused, | 72543 | .unused, |
| 72523 | .unused, | 72544 | .unused, |
| ... | @@ -72541,7 +72562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72541,7 +72562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72541 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72562 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72542 | }, | 72563 | }, |
| 72543 | .extra_temps = .{ | 72564 | .extra_temps = .{ |
| 72544 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72565 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72545 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72566 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72546 | .unused, | 72567 | .unused, |
| 72547 | .unused, | 72568 | .unused, |
| ... | @@ -72565,7 +72586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72565,7 +72586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72565 | .{ .src = .{ .to_sse, .none, .none } }, | 72586 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72566 | }, | 72587 | }, |
| 72567 | .extra_temps = .{ | 72588 | .extra_temps = .{ |
| 72568 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72589 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72569 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 72590 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 72570 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72591 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72571 | .unused, | 72592 | .unused, |
| ... | @@ -72593,7 +72614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72593,7 +72614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72593 | .{ .src = .{ .to_sse, .none, .none } }, | 72614 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72594 | }, | 72615 | }, |
| 72595 | .extra_temps = .{ | 72616 | .extra_temps = .{ |
| 72596 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72617 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72597 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 72618 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 72598 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72619 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72599 | .unused, | 72620 | .unused, |
| ... | @@ -72622,7 +72643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72622,7 +72643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72622 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72643 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72623 | }, | 72644 | }, |
| 72624 | .extra_temps = .{ | 72645 | .extra_temps = .{ |
| 72625 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72646 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72626 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72647 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72627 | .unused, | 72648 | .unused, |
| 72628 | .unused, | 72649 | .unused, |
| ... | @@ -72651,7 +72672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72651,7 +72672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72651 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72672 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72652 | }, | 72673 | }, |
| 72653 | .extra_temps = .{ | 72674 | .extra_temps = .{ |
| 72654 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72675 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72655 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72676 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72656 | .unused, | 72677 | .unused, |
| 72657 | .unused, | 72678 | .unused, |
| ... | @@ -72718,7 +72739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72718,7 +72739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72718 | .{ .src = .{ .to_sse, .none, .none } }, | 72739 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72719 | }, | 72740 | }, |
| 72720 | .extra_temps = .{ | 72741 | .extra_temps = .{ |
| 72721 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72742 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72722 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72743 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72723 | .unused, | 72744 | .unused, |
| 72724 | .unused, | 72745 | .unused, |
| ... | @@ -72744,7 +72765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72744,7 +72765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72744 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72765 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72745 | }, | 72766 | }, |
| 72746 | .extra_temps = .{ | 72767 | .extra_temps = .{ |
| 72747 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72768 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72748 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72769 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72749 | .unused, | 72770 | .unused, |
| 72750 | .unused, | 72771 | .unused, |
| ... | @@ -72770,7 +72791,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72770,7 +72791,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72770 | .{ .src = .{ .to_sse, .none, .none } }, | 72791 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72771 | }, | 72792 | }, |
| 72772 | .extra_temps = .{ | 72793 | .extra_temps = .{ |
| 72773 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72794 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72774 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 72795 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 72775 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72796 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72776 | .unused, | 72797 | .unused, |
| ... | @@ -72800,7 +72821,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72800,7 +72821,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72800 | .{ .src = .{ .to_sse, .none, .none } }, | 72821 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72801 | }, | 72822 | }, |
| 72802 | .extra_temps = .{ | 72823 | .extra_temps = .{ |
| 72803 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72824 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72804 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 72825 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 72805 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72826 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72806 | .unused, | 72827 | .unused, |
| ... | @@ -72831,7 +72852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72831,7 +72852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72831 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72852 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72832 | }, | 72853 | }, |
| 72833 | .extra_temps = .{ | 72854 | .extra_temps = .{ |
| 72834 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72855 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72835 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72856 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72836 | .unused, | 72857 | .unused, |
| 72837 | .unused, | 72858 | .unused, |
| ... | @@ -72862,7 +72883,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72862,7 +72883,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72862 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72883 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72863 | }, | 72884 | }, |
| 72864 | .extra_temps = .{ | 72885 | .extra_temps = .{ |
| 72865 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 72886 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72866 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 72887 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72867 | .unused, | 72888 | .unused, |
| 72868 | .unused, | 72889 | .unused, |
| ... | @@ -72932,7 +72953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72932,7 +72953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72932 | .{ .src = .{ .to_sse, .none, .none } }, | 72953 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72933 | }, | 72954 | }, |
| 72934 | .extra_temps = .{ | 72955 | .extra_temps = .{ |
| 72935 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72956 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72936 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72957 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72937 | .unused, | 72958 | .unused, |
| 72938 | .unused, | 72959 | .unused, |
| ... | @@ -72958,7 +72979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72958,7 +72979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72958 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 72979 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 72959 | }, | 72980 | }, |
| 72960 | .extra_temps = .{ | 72981 | .extra_temps = .{ |
| 72961 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 72982 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 72962 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 72983 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 72963 | .unused, | 72984 | .unused, |
| 72964 | .unused, | 72985 | .unused, |
| ... | @@ -72984,7 +73005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -72984,7 +73005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 72984 | .{ .src = .{ .to_sse, .none, .none } }, | 73005 | .{ .src = .{ .to_sse, .none, .none } }, |
| 72985 | }, | 73006 | }, |
| 72986 | .extra_temps = .{ | 73007 | .extra_temps = .{ |
| 72987 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73008 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 72988 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73009 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 72989 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73010 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 72990 | .unused, | 73011 | .unused, |
| ... | @@ -73014,7 +73035,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73014,7 +73035,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73014 | .{ .src = .{ .to_sse, .none, .none } }, | 73035 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73015 | }, | 73036 | }, |
| 73016 | .extra_temps = .{ | 73037 | .extra_temps = .{ |
| 73017 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73038 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73018 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73039 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73019 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73040 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73020 | .unused, | 73041 | .unused, |
| ... | @@ -73045,7 +73066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73045,7 +73066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73045 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73066 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73046 | }, | 73067 | }, |
| 73047 | .extra_temps = .{ | 73068 | .extra_temps = .{ |
| 73048 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73069 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73049 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73070 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73050 | .unused, | 73071 | .unused, |
| 73051 | .unused, | 73072 | .unused, |
| ... | @@ -73076,7 +73097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73076,7 +73097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73076 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73097 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73077 | }, | 73098 | }, |
| 73078 | .extra_temps = .{ | 73099 | .extra_temps = .{ |
| 73079 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73100 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73080 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73101 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73081 | .unused, | 73102 | .unused, |
| 73082 | .unused, | 73103 | .unused, |
| ... | @@ -73146,8 +73167,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73146,8 +73167,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73146 | .{ .src = .{ .to_sse, .none, .none } }, | 73167 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73147 | }, | 73168 | }, |
| 73148 | .extra_temps = .{ | 73169 | .extra_temps = .{ |
| 73149 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73170 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73150 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73171 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73151 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73172 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73152 | .unused, | 73173 | .unused, |
| 73153 | .unused, | 73174 | .unused, |
| ... | @@ -73172,8 +73193,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73172,8 +73193,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73172 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73193 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73173 | }, | 73194 | }, |
| 73174 | .extra_temps = .{ | 73195 | .extra_temps = .{ |
| 73175 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73196 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73176 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73197 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73177 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73198 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73178 | .unused, | 73199 | .unused, |
| 73179 | .unused, | 73200 | .unused, |
| ... | @@ -73198,7 +73219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73198,7 +73219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73198 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73219 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73199 | }, | 73220 | }, |
| 73200 | .extra_temps = .{ | 73221 | .extra_temps = .{ |
| 73201 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73222 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73202 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73223 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73203 | .unused, | 73224 | .unused, |
| 73204 | .unused, | 73225 | .unused, |
| ... | @@ -73224,8 +73245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73224,8 +73245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73224 | .{ .src = .{ .to_sse, .none, .none } }, | 73245 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73225 | }, | 73246 | }, |
| 73226 | .extra_temps = .{ | 73247 | .extra_temps = .{ |
| 73227 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73248 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73228 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73249 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73229 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73250 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73230 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73251 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73231 | .unused, | 73252 | .unused, |
| ... | @@ -73253,8 +73274,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73253,8 +73274,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73253 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73274 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73254 | }, | 73275 | }, |
| 73255 | .extra_temps = .{ | 73276 | .extra_temps = .{ |
| 73256 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73277 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73257 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73278 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73258 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73279 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73259 | .unused, | 73280 | .unused, |
| 73260 | .unused, | 73281 | .unused, |
| ... | @@ -73323,8 +73344,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73323,8 +73344,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73323 | .{ .src = .{ .to_sse, .none, .none } }, | 73344 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73324 | }, | 73345 | }, |
| 73325 | .extra_temps = .{ | 73346 | .extra_temps = .{ |
| 73326 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73347 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73327 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73348 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73328 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73349 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73329 | .unused, | 73350 | .unused, |
| 73330 | .unused, | 73351 | .unused, |
| ... | @@ -73350,8 +73371,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73350,8 +73371,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73350 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73371 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73351 | }, | 73372 | }, |
| 73352 | .extra_temps = .{ | 73373 | .extra_temps = .{ |
| 73353 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73374 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73354 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73375 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73355 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73376 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73356 | .unused, | 73377 | .unused, |
| 73357 | .unused, | 73378 | .unused, |
| ... | @@ -73377,7 +73398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73377,7 +73398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73377 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73398 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73378 | }, | 73399 | }, |
| 73379 | .extra_temps = .{ | 73400 | .extra_temps = .{ |
| 73380 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73401 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73381 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73402 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73382 | .unused, | 73403 | .unused, |
| 73383 | .unused, | 73404 | .unused, |
| ... | @@ -73404,8 +73425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73404,8 +73425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73404 | .{ .src = .{ .to_sse, .none, .none } }, | 73425 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73405 | }, | 73426 | }, |
| 73406 | .extra_temps = .{ | 73427 | .extra_temps = .{ |
| 73407 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73428 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73408 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73429 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73409 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73430 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73410 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73431 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73411 | .unused, | 73432 | .unused, |
| ... | @@ -73435,8 +73456,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73435,8 +73456,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73435 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73456 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73436 | }, | 73457 | }, |
| 73437 | .extra_temps = .{ | 73458 | .extra_temps = .{ |
| 73438 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73459 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73439 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73460 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73440 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73461 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73441 | .unused, | 73462 | .unused, |
| 73442 | .unused, | 73463 | .unused, |
| ... | @@ -73508,8 +73529,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73508,8 +73529,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73508 | .{ .src = .{ .to_sse, .none, .none } }, | 73529 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73509 | }, | 73530 | }, |
| 73510 | .extra_temps = .{ | 73531 | .extra_temps = .{ |
| 73511 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73532 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73512 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73533 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73513 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73534 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73514 | .unused, | 73535 | .unused, |
| 73515 | .unused, | 73536 | .unused, |
| ... | @@ -73535,8 +73556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73535,8 +73556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73535 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73556 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73536 | }, | 73557 | }, |
| 73537 | .extra_temps = .{ | 73558 | .extra_temps = .{ |
| 73538 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73559 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73539 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word } } }, | 73560 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word } } }, |
| 73540 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73561 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73541 | .unused, | 73562 | .unused, |
| 73542 | .unused, | 73563 | .unused, |
| ... | @@ -73562,7 +73583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73562,7 +73583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73562 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73583 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73563 | }, | 73584 | }, |
| 73564 | .extra_temps = .{ | 73585 | .extra_temps = .{ |
| 73565 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73586 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73566 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73587 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73567 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73588 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73568 | .unused, | 73589 | .unused, |
| ... | @@ -73590,8 +73611,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73590,8 +73611,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73590 | .{ .src = .{ .to_sse, .none, .none } }, | 73611 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73591 | }, | 73612 | }, |
| 73592 | .extra_temps = .{ | 73613 | .extra_temps = .{ |
| 73593 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73614 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73594 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73615 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73595 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73616 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73596 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73617 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73597 | .unused, | 73618 | .unused, |
| ... | @@ -73621,8 +73642,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73621,8 +73642,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73621 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73642 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73622 | }, | 73643 | }, |
| 73623 | .extra_temps = .{ | 73644 | .extra_temps = .{ |
| 73624 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .word, .smear = 8 } } }, | 73645 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .word, .smear = 8 } } }, |
| 73625 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .reverse } }, | 73646 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73626 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 73647 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 73627 | .unused, | 73648 | .unused, |
| 73628 | .unused, | 73649 | .unused, |
| ... | @@ -73694,8 +73715,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73694,8 +73715,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73694 | .{ .src = .{ .to_sse, .none, .none } }, | 73715 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73695 | }, | 73716 | }, |
| 73696 | .extra_temps = .{ | 73717 | .extra_temps = .{ |
| 73697 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73718 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73698 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 73719 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 73699 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73720 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73700 | .unused, | 73721 | .unused, |
| 73701 | .unused, | 73722 | .unused, |
| ... | @@ -73720,8 +73741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73720,8 +73741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73720 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73741 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73721 | }, | 73742 | }, |
| 73722 | .extra_temps = .{ | 73743 | .extra_temps = .{ |
| 73723 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73744 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73724 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 73745 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 73725 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73746 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73726 | .unused, | 73747 | .unused, |
| 73727 | .unused, | 73748 | .unused, |
| ... | @@ -73746,7 +73767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73746,7 +73767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73746 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73767 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73747 | }, | 73768 | }, |
| 73748 | .extra_temps = .{ | 73769 | .extra_temps = .{ |
| 73749 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73770 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73750 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73771 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73751 | .unused, | 73772 | .unused, |
| 73752 | .unused, | 73773 | .unused, |
| ... | @@ -73773,8 +73794,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73773,8 +73794,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73773 | .{ .src = .{ .to_sse, .none, .none } }, | 73794 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73774 | }, | 73795 | }, |
| 73775 | .extra_temps = .{ | 73796 | .extra_temps = .{ |
| 73776 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword, .smear = 8 } } }, | 73797 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword, .smear = 8 } } }, |
| 73777 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .reverse } }, | 73798 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73778 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73799 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73779 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 73800 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 73780 | .unused, | 73801 | .unused, |
| ... | @@ -73844,8 +73865,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73844,8 +73865,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73844 | .{ .src = .{ .to_sse, .none, .none } }, | 73865 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73845 | }, | 73866 | }, |
| 73846 | .extra_temps = .{ | 73867 | .extra_temps = .{ |
| 73847 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73868 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73848 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 73869 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 73849 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73870 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73850 | .unused, | 73871 | .unused, |
| 73851 | .unused, | 73872 | .unused, |
| ... | @@ -73871,8 +73892,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73871,8 +73892,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73871 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73892 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73872 | }, | 73893 | }, |
| 73873 | .extra_temps = .{ | 73894 | .extra_temps = .{ |
| 73874 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73895 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73875 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 73896 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 73876 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73897 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73877 | .unused, | 73898 | .unused, |
| 73878 | .unused, | 73899 | .unused, |
| ... | @@ -73898,7 +73919,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73898,7 +73919,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73898 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 73919 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 73899 | }, | 73920 | }, |
| 73900 | .extra_temps = .{ | 73921 | .extra_temps = .{ |
| 73901 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 73922 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 73902 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 73923 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 73903 | .unused, | 73924 | .unused, |
| 73904 | .unused, | 73925 | .unused, |
| ... | @@ -73926,8 +73947,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -73926,8 +73947,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 73926 | .{ .src = .{ .to_sse, .none, .none } }, | 73947 | .{ .src = .{ .to_sse, .none, .none } }, |
| 73927 | }, | 73948 | }, |
| 73928 | .extra_temps = .{ | 73949 | .extra_temps = .{ |
| 73929 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword, .smear = 8 } } }, | 73950 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword, .smear = 8 } } }, |
| 73930 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .reverse } }, | 73951 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 73931 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 73952 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 73932 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 73953 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 73933 | .unused, | 73954 | .unused, |
| ... | @@ -74000,8 +74021,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74000,8 +74021,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74000 | .{ .src = .{ .to_sse, .none, .none } }, | 74021 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74001 | }, | 74022 | }, |
| 74002 | .extra_temps = .{ | 74023 | .extra_temps = .{ |
| 74003 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74024 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74004 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 74025 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 74005 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74026 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74006 | .unused, | 74027 | .unused, |
| 74007 | .unused, | 74028 | .unused, |
| ... | @@ -74027,8 +74048,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74027,8 +74048,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74027 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74048 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74028 | }, | 74049 | }, |
| 74029 | .extra_temps = .{ | 74050 | .extra_temps = .{ |
| 74030 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74051 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74031 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword } } }, | 74052 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword } } }, |
| 74032 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74053 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74033 | .unused, | 74054 | .unused, |
| 74034 | .unused, | 74055 | .unused, |
| ... | @@ -74054,7 +74075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74054,7 +74075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74054 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74075 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74055 | }, | 74076 | }, |
| 74056 | .extra_temps = .{ | 74077 | .extra_temps = .{ |
| 74057 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74078 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74058 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74079 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74059 | .unused, | 74080 | .unused, |
| 74060 | .unused, | 74081 | .unused, |
| ... | @@ -74082,8 +74103,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74082,8 +74103,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74082 | .{ .src = .{ .to_sse, .none, .none } }, | 74103 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74083 | }, | 74104 | }, |
| 74084 | .extra_temps = .{ | 74105 | .extra_temps = .{ |
| 74085 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .dword, .smear = 8 } } }, | 74106 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .dword, .smear = 8 } } }, |
| 74086 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .reverse } }, | 74107 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .reverse } } }, |
| 74087 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 74108 | .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 74088 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 74109 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 74089 | .unused, | 74110 | .unused, |
| ... | @@ -74156,8 +74177,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74156,8 +74177,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74156 | .{ .src = .{ .to_sse, .none, .none } }, | 74177 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74157 | }, | 74178 | }, |
| 74158 | .extra_temps = .{ | 74179 | .extra_temps = .{ |
| 74159 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74180 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74160 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .qword } } }, | 74181 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .qword } } }, |
| 74161 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74182 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74162 | .unused, | 74183 | .unused, |
| 74163 | .unused, | 74184 | .unused, |
| ... | @@ -74182,8 +74203,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74182,8 +74203,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74182 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74203 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74183 | }, | 74204 | }, |
| 74184 | .extra_temps = .{ | 74205 | .extra_temps = .{ |
| 74185 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74206 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74186 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .qword } } }, | 74207 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .qword } } }, |
| 74187 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74208 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74188 | .unused, | 74209 | .unused, |
| 74189 | .unused, | 74210 | .unused, |
| ... | @@ -74208,7 +74229,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74208,7 +74229,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74208 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74229 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74209 | }, | 74230 | }, |
| 74210 | .extra_temps = .{ | 74231 | .extra_temps = .{ |
| 74211 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74232 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74212 | .unused, | 74233 | .unused, |
| 74213 | .unused, | 74234 | .unused, |
| 74214 | .unused, | 74235 | .unused, |
| ... | @@ -74279,7 +74300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74279,7 +74300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74279 | .{ .src = .{ .to_sse, .none, .none } }, | 74300 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74280 | }, | 74301 | }, |
| 74281 | .extra_temps = .{ | 74302 | .extra_temps = .{ |
| 74282 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74303 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74283 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 74304 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 74284 | .unused, | 74305 | .unused, |
| 74285 | .unused, | 74306 | .unused, |
| ... | @@ -74307,7 +74328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74307,7 +74328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74307 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74328 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74308 | }, | 74329 | }, |
| 74309 | .extra_temps = .{ | 74330 | .extra_temps = .{ |
| 74310 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74331 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74311 | .unused, | 74332 | .unused, |
| 74312 | .unused, | 74333 | .unused, |
| 74313 | .unused, | 74334 | .unused, |
| ... | @@ -74381,8 +74402,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74381,8 +74402,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74381 | .{ .src = .{ .to_sse, .none, .none } }, | 74402 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74382 | }, | 74403 | }, |
| 74383 | .extra_temps = .{ | 74404 | .extra_temps = .{ |
| 74384 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74405 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74385 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .qword } } }, | 74406 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .qword } } }, |
| 74386 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74407 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74387 | .unused, | 74408 | .unused, |
| 74388 | .unused, | 74409 | .unused, |
| ... | @@ -74408,8 +74429,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74408,8 +74429,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74408 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74429 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74409 | }, | 74430 | }, |
| 74410 | .extra_temps = .{ | 74431 | .extra_temps = .{ |
| 74411 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74432 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74412 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .qword } } }, | 74433 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .qword } } }, |
| 74413 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74434 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74414 | .unused, | 74435 | .unused, |
| 74415 | .unused, | 74436 | .unused, |
| ... | @@ -74435,7 +74456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74435,7 +74456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74435 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74456 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74436 | }, | 74457 | }, |
| 74437 | .extra_temps = .{ | 74458 | .extra_temps = .{ |
| 74438 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74459 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74439 | .unused, | 74460 | .unused, |
| 74440 | .unused, | 74461 | .unused, |
| 74441 | .unused, | 74462 | .unused, |
| ... | @@ -74509,8 +74530,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74509,8 +74530,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74509 | .{ .src = .{ .to_sse, .none, .none } }, | 74530 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74510 | }, | 74531 | }, |
| 74511 | .extra_temps = .{ | 74532 | .extra_temps = .{ |
| 74512 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74533 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74513 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74534 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74514 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74535 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74515 | .unused, | 74536 | .unused, |
| 74516 | .unused, | 74537 | .unused, |
| ... | @@ -74535,8 +74556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74535,8 +74556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74535 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74556 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74536 | }, | 74557 | }, |
| 74537 | .extra_temps = .{ | 74558 | .extra_temps = .{ |
| 74538 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74559 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74539 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74560 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74540 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74561 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74541 | .unused, | 74562 | .unused, |
| 74542 | .unused, | 74563 | .unused, |
| ... | @@ -74561,8 +74582,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74561,8 +74582,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74561 | .{ .src = .{ .to_sse, .none, .none } }, | 74582 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74562 | }, | 74583 | }, |
| 74563 | .extra_temps = .{ | 74584 | .extra_temps = .{ |
| 74564 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74585 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74565 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74586 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74566 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74587 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74567 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 74588 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 74568 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 74589 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -74594,8 +74615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74594,8 +74615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74594 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74615 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74595 | }, | 74616 | }, |
| 74596 | .extra_temps = .{ | 74617 | .extra_temps = .{ |
| 74597 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74618 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74598 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74619 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74599 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74620 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74600 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 74621 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 74601 | .unused, | 74622 | .unused, |
| ... | @@ -74627,8 +74648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74627,8 +74648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74627 | .{ .src = .{ .to_sse, .none, .none } }, | 74648 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74628 | }, | 74649 | }, |
| 74629 | .extra_temps = .{ | 74650 | .extra_temps = .{ |
| 74630 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74651 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74631 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74652 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74632 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74653 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74633 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, | 74654 | .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, |
| 74634 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 74655 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -74660,8 +74681,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74660,8 +74681,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74660 | .{ .src = .{ .to_mut_sse, .none, .none } }, | 74681 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 74661 | }, | 74682 | }, |
| 74662 | .extra_temps = .{ | 74683 | .extra_temps = .{ |
| 74663 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74684 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74664 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74685 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74665 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74686 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74666 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, | 74687 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 74667 | .unused, | 74688 | .unused, |
| ... | @@ -74693,8 +74714,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74693,8 +74714,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74693 | .{ .src = .{ .to_sse, .none, .none } }, | 74714 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74694 | }, | 74715 | }, |
| 74695 | .extra_temps = .{ | 74716 | .extra_temps = .{ |
| 74696 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .forward } }, | 74717 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74697 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .repeat = 2, .size = .xword } } }, | 74718 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .repeat = 2, .size = .xword } } }, |
| 74698 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74719 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74699 | .unused, | 74720 | .unused, |
| 74700 | .unused, | 74721 | .unused, |
| ... | @@ -74720,8 +74741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74720,8 +74741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74720 | .{ .src = .{ .to_sse, .none, .none } }, | 74741 | .{ .src = .{ .to_sse, .none, .none } }, |
| 74721 | }, | 74742 | }, |
| 74722 | .extra_temps = .{ | 74743 | .extra_temps = .{ |
| 74723 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .forward } }, | 74744 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74724 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74745 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74725 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74746 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74726 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 74747 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 74727 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 74748 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -74752,8 +74773,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74752,8 +74773,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74752 | .extra_temps = .{ | 74773 | .extra_temps = .{ |
| 74753 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74774 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74754 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 74775 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 74755 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .forward } }, | 74776 | .{ .type = .vector_32_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74756 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .repeat = 2, .size = .xword } } }, | 74777 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .repeat = 2, .size = .xword } } }, |
| 74757 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 74778 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 74758 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 74779 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 74759 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 74780 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -74788,8 +74809,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -74788,8 +74809,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 74788 | .extra_temps = .{ | 74809 | .extra_temps = .{ |
| 74789 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 74810 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 74790 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, | 74811 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 74791 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .forward } }, | 74812 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| 74792 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } }, | 74813 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .reverse, .size = .xword } } }, |
| 74793 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 74814 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 74794 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 74815 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 74795 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 74816 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -82067,7 +82088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82067,7 +82088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82067 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82088 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82068 | .ref = .src0, | 82089 | .ref = .src0, |
| 82069 | .rc = .sse, | 82090 | .rc = .sse, |
| 82070 | .info = .{ .kind = .all, .scalar = .dword }, | 82091 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82071 | } }, .unused }, | 82092 | } }, .unused }, |
| 82072 | .each = .{ .once = &.{ | 82093 | .each = .{ .once = &.{ |
| 82073 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 82094 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| ... | @@ -82107,7 +82128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82107,7 +82128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82107 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82128 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82108 | .ref = .src0, | 82129 | .ref = .src0, |
| 82109 | .rc = .sse, | 82130 | .rc = .sse, |
| 82110 | .info = .{ .kind = .all, .scalar = .dword }, | 82131 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82111 | } }, .unused }, | 82132 | } }, .unused }, |
| 82112 | .each = .{ .once = &.{ | 82133 | .each = .{ .once = &.{ |
| 82113 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 82134 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| ... | @@ -82147,7 +82168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82147,7 +82168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82147 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82168 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82148 | .ref = .src0, | 82169 | .ref = .src0, |
| 82149 | .rc = .sse, | 82170 | .rc = .sse, |
| 82150 | .info = .{ .kind = .all, .scalar = .dword }, | 82171 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82151 | } }, .unused }, | 82172 | } }, .unused }, |
| 82152 | .each = .{ .once = &.{ | 82173 | .each = .{ .once = &.{ |
| 82153 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | 82174 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| ... | @@ -82171,7 +82192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82171,7 +82192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82171 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82192 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82172 | .ref = .src0, | 82193 | .ref = .src0, |
| 82173 | .rc = .sse, | 82194 | .rc = .sse, |
| 82174 | .info = .{ .kind = .all, .scalar = .dword }, | 82195 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82175 | } }, .unused }, | 82196 | } }, .unused }, |
| 82176 | .each = .{ .once = &.{ | 82197 | .each = .{ .once = &.{ |
| 82177 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { | 82198 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { |
| ... | @@ -82194,7 +82215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82194,7 +82215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82194 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82215 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82195 | .ref = .src0, | 82216 | .ref = .src0, |
| 82196 | .rc = .sse, | 82217 | .rc = .sse, |
| 82197 | .info = .{ .kind = .all, .scalar = .dword }, | 82218 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82198 | } }, .unused }, | 82219 | } }, .unused }, |
| 82199 | .each = .{ .once = &.{ | 82220 | .each = .{ .once = &.{ |
| 82200 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { | 82221 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { |
| ... | @@ -82216,7 +82237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82216,7 +82237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82216 | }, | 82237 | }, |
| 82217 | .dst_temps = .{ .{ .ref_mask = .{ | 82238 | .dst_temps = .{ .{ .ref_mask = .{ |
| 82218 | .ref = .src0, | 82239 | .ref = .src0, |
| 82219 | .info = .{ .kind = .all, .scalar = .dword }, | 82240 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82220 | } }, .unused }, | 82241 | } }, .unused }, |
| 82221 | .each = .{ .once = &.{ | 82242 | .each = .{ .once = &.{ |
| 82222 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { | 82243 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { |
| ... | @@ -82238,7 +82259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82238,7 +82259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82238 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82259 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82239 | .ref = .src0, | 82260 | .ref = .src0, |
| 82240 | .rc = .sse, | 82261 | .rc = .sse, |
| 82241 | .info = .{ .kind = .all, .scalar = .dword }, | 82262 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82242 | } }, .unused }, | 82263 | } }, .unused }, |
| 82243 | .each = .{ .once = &.{ | 82264 | .each = .{ .once = &.{ |
| 82244 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 82265 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -82261,7 +82282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82261,7 +82282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82261 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82282 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82262 | .ref = .src0, | 82283 | .ref = .src0, |
| 82263 | .rc = .sse, | 82284 | .rc = .sse, |
| 82264 | .info = .{ .kind = .all, .scalar = .dword }, | 82285 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82265 | } }, .unused }, | 82286 | } }, .unused }, |
| 82266 | .each = .{ .once = &.{ | 82287 | .each = .{ .once = &.{ |
| 82267 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 82288 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -82283,7 +82304,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82283,7 +82304,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82283 | }, | 82304 | }, |
| 82284 | .dst_temps = .{ .{ .ref_mask = .{ | 82305 | .dst_temps = .{ .{ .ref_mask = .{ |
| 82285 | .ref = .src0, | 82306 | .ref = .src0, |
| 82286 | .info = .{ .kind = .all, .scalar = .dword }, | 82307 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82287 | } }, .unused }, | 82308 | } }, .unused }, |
| 82288 | .each = .{ .once = &.{ | 82309 | .each = .{ .once = &.{ |
| 82289 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { | 82310 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| ... | @@ -82305,7 +82326,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82305,7 +82326,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82305 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82326 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82306 | .ref = .src0, | 82327 | .ref = .src0, |
| 82307 | .rc = .sse, | 82328 | .rc = .sse, |
| 82308 | .info = .{ .kind = .all, .scalar = .dword }, | 82329 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82309 | } }, .unused }, | 82330 | } }, .unused }, |
| 82310 | .each = .{ .once = &.{ | 82331 | .each = .{ .once = &.{ |
| 82311 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 82332 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -82328,7 +82349,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82328,7 +82349,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82328 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82349 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82329 | .ref = .src0, | 82350 | .ref = .src0, |
| 82330 | .rc = .sse, | 82351 | .rc = .sse, |
| 82331 | .info = .{ .kind = .all, .scalar = .dword }, | 82352 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 82332 | } }, .unused }, | 82353 | } }, .unused }, |
| 82333 | .each = .{ .once = &.{ | 82354 | .each = .{ .once = &.{ |
| 82334 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 82355 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -82350,7 +82371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82350,7 +82371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82350 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82371 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82351 | .ref = .src0, | 82372 | .ref = .src0, |
| 82352 | .rc = .sse, | 82373 | .rc = .sse, |
| 82353 | .info = .{ .kind = .all, .scalar = .qword }, | 82374 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82354 | } }, .unused }, | 82375 | } }, .unused }, |
| 82355 | .each = .{ .once = &.{ | 82376 | .each = .{ .once = &.{ |
| 82356 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { | 82377 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { |
| ... | @@ -82373,7 +82394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82373,7 +82394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82373 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82394 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82374 | .ref = .src0, | 82395 | .ref = .src0, |
| 82375 | .rc = .sse, | 82396 | .rc = .sse, |
| 82376 | .info = .{ .kind = .all, .scalar = .qword }, | 82397 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82377 | } }, .unused }, | 82398 | } }, .unused }, |
| 82378 | .each = .{ .once = &.{ | 82399 | .each = .{ .once = &.{ |
| 82379 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { | 82400 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { |
| ... | @@ -82395,7 +82416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82395,7 +82416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82395 | }, | 82416 | }, |
| 82396 | .dst_temps = .{ .{ .ref_mask = .{ | 82417 | .dst_temps = .{ .{ .ref_mask = .{ |
| 82397 | .ref = .src0, | 82418 | .ref = .src0, |
| 82398 | .info = .{ .kind = .all, .scalar = .qword }, | 82419 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82399 | } }, .unused }, | 82420 | } }, .unused }, |
| 82400 | .each = .{ .once = &.{ | 82421 | .each = .{ .once = &.{ |
| 82401 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { | 82422 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { |
| ... | @@ -82417,7 +82438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82417,7 +82438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82417 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82438 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82418 | .ref = .src0, | 82439 | .ref = .src0, |
| 82419 | .rc = .sse, | 82440 | .rc = .sse, |
| 82420 | .info = .{ .kind = .all, .scalar = .qword }, | 82441 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82421 | } }, .unused }, | 82442 | } }, .unused }, |
| 82422 | .each = .{ .once = &.{ | 82443 | .each = .{ .once = &.{ |
| 82423 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 82444 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -82440,7 +82461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82440,7 +82461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82440 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82461 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82441 | .ref = .src0, | 82462 | .ref = .src0, |
| 82442 | .rc = .sse, | 82463 | .rc = .sse, |
| 82443 | .info = .{ .kind = .all, .scalar = .qword }, | 82464 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82444 | } }, .unused }, | 82465 | } }, .unused }, |
| 82445 | .each = .{ .once = &.{ | 82466 | .each = .{ .once = &.{ |
| 82446 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 82467 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -82462,7 +82483,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82462,7 +82483,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82462 | }, | 82483 | }, |
| 82463 | .dst_temps = .{ .{ .ref_mask = .{ | 82484 | .dst_temps = .{ .{ .ref_mask = .{ |
| 82464 | .ref = .src0, | 82485 | .ref = .src0, |
| 82465 | .info = .{ .kind = .all, .scalar = .qword }, | 82486 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82466 | } }, .unused }, | 82487 | } }, .unused }, |
| 82467 | .each = .{ .once = &.{ | 82488 | .each = .{ .once = &.{ |
| 82468 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { | 82489 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| ... | @@ -82484,7 +82505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82484,7 +82505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82484 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82505 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82485 | .ref = .src0, | 82506 | .ref = .src0, |
| 82486 | .rc = .sse, | 82507 | .rc = .sse, |
| 82487 | .info = .{ .kind = .all, .scalar = .qword }, | 82508 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82488 | } }, .unused }, | 82509 | } }, .unused }, |
| 82489 | .each = .{ .once = &.{ | 82510 | .each = .{ .once = &.{ |
| 82490 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 82511 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -82507,7 +82528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -82507,7 +82528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 82507 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 82528 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 82508 | .ref = .src0, | 82529 | .ref = .src0, |
| 82509 | .rc = .sse, | 82530 | .rc = .sse, |
| 82510 | .info = .{ .kind = .all, .scalar = .qword }, | 82531 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 82511 | } }, .unused }, | 82532 | } }, .unused }, |
| 82512 | .each = .{ .once = &.{ | 82533 | .each = .{ .once = &.{ |
| 82513 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 82534 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -84711,7 +84732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84711,7 +84732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84711 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 84732 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 84712 | }, | 84733 | }, |
| 84713 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 84734 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 84714 | .kind = .all, | 84735 | .kind = .sign_extend, |
| 84715 | .inverted = switch (cc) { | 84736 | .inverted = switch (cc) { |
| 84716 | else => unreachable, | 84737 | else => unreachable, |
| 84717 | .e => false, | 84738 | .e => false, |
| ... | @@ -84735,7 +84756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84735,7 +84756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84735 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 84756 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 84736 | }, | 84757 | }, |
| 84737 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 84758 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 84738 | .kind = .all, | 84759 | .kind = .sign_extend, |
| 84739 | .inverted = switch (cc) { | 84760 | .inverted = switch (cc) { |
| 84740 | else => unreachable, | 84761 | else => unreachable, |
| 84741 | .e => false, | 84762 | .e => false, |
| ... | @@ -84759,7 +84780,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84759,7 +84780,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84759 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 84780 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 84760 | }, | 84781 | }, |
| 84761 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 84782 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 84762 | .kind = .all, | 84783 | .kind = .sign_extend, |
| 84763 | .inverted = switch (cc) { | 84784 | .inverted = switch (cc) { |
| 84764 | else => unreachable, | 84785 | else => unreachable, |
| 84765 | .e => false, | 84786 | .e => false, |
| ... | @@ -84783,7 +84804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84783,7 +84804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84783 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 84804 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 84784 | }, | 84805 | }, |
| 84785 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 84806 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 84786 | .kind = .all, | 84807 | .kind = .sign_extend, |
| 84787 | .inverted = switch (cc) { | 84808 | .inverted = switch (cc) { |
| 84788 | else => unreachable, | 84809 | else => unreachable, |
| 84789 | .e => false, | 84810 | .e => false, |
| ... | @@ -84807,7 +84828,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84807,7 +84828,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84807 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, | 84828 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 84808 | }, | 84829 | }, |
| 84809 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84830 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84810 | .kind = .all, | 84831 | .kind = .sign_extend, |
| 84811 | .inverted = switch (cc) { | 84832 | .inverted = switch (cc) { |
| 84812 | else => unreachable, | 84833 | else => unreachable, |
| 84813 | .e => false, | 84834 | .e => false, |
| ... | @@ -84831,7 +84852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84831,7 +84852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84831 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, | 84852 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 84832 | }, | 84853 | }, |
| 84833 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84854 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84834 | .kind = .all, | 84855 | .kind = .sign_extend, |
| 84835 | .inverted = switch (cc) { | 84856 | .inverted = switch (cc) { |
| 84836 | else => unreachable, | 84857 | else => unreachable, |
| 84837 | .e => false, | 84858 | .e => false, |
| ... | @@ -84855,7 +84876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84855,7 +84876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84855 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, | 84876 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 84856 | }, | 84877 | }, |
| 84857 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84878 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84858 | .kind = .all, | 84879 | .kind = .sign_extend, |
| 84859 | .inverted = switch (cc) { | 84880 | .inverted = switch (cc) { |
| 84860 | else => unreachable, | 84881 | else => unreachable, |
| 84861 | .e => false, | 84882 | .e => false, |
| ... | @@ -84879,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84879,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84879 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, | 84900 | .{ .src = .{ .to_mut_sse, .to_sse, .none } }, |
| 84880 | }, | 84901 | }, |
| 84881 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84902 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84882 | .kind = .all, | 84903 | .kind = .sign_extend, |
| 84883 | .inverted = switch (cc) { | 84904 | .inverted = switch (cc) { |
| 84884 | else => unreachable, | 84905 | else => unreachable, |
| 84885 | .e => false, | 84906 | .e => false, |
| ... | @@ -84903,7 +84924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84903,7 +84924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84903 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, | 84924 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 84904 | }, | 84925 | }, |
| 84905 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84926 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84906 | .kind = .all, | 84927 | .kind = .sign_extend, |
| 84907 | .inverted = switch (cc) { | 84928 | .inverted = switch (cc) { |
| 84908 | else => unreachable, | 84929 | else => unreachable, |
| 84909 | .e => false, | 84930 | .e => false, |
| ... | @@ -84927,7 +84948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84927,7 +84948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84927 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, | 84948 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 84928 | }, | 84949 | }, |
| 84929 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84950 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84930 | .kind = .all, | 84951 | .kind = .sign_extend, |
| 84931 | .inverted = switch (cc) { | 84952 | .inverted = switch (cc) { |
| 84932 | else => unreachable, | 84953 | else => unreachable, |
| 84933 | .e => false, | 84954 | .e => false, |
| ... | @@ -84951,7 +84972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84951,7 +84972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84951 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, | 84972 | .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, |
| 84952 | }, | 84973 | }, |
| 84953 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ | 84974 | .dst_temps = .{ .{ .ref_mask = .{ .ref = .src0, .info = .{ |
| 84954 | .kind = .all, | 84975 | .kind = .sign_extend, |
| 84955 | .inverted = switch (cc) { | 84976 | .inverted = switch (cc) { |
| 84956 | else => unreachable, | 84977 | else => unreachable, |
| 84957 | .e => false, | 84978 | .e => false, |
| ... | @@ -84975,7 +84996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84975,7 +84996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84975 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 84996 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 84976 | }, | 84997 | }, |
| 84977 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 84998 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 84978 | .kind = .all, | 84999 | .kind = .sign_extend, |
| 84979 | .inverted = switch (cc) { | 85000 | .inverted = switch (cc) { |
| 84980 | else => unreachable, | 85001 | else => unreachable, |
| 84981 | .e => false, | 85002 | .e => false, |
| ... | @@ -84999,7 +85020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -84999,7 +85020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 84999 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 85020 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 85000 | }, | 85021 | }, |
| 85001 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 85022 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 85002 | .kind = .all, | 85023 | .kind = .sign_extend, |
| 85003 | .inverted = switch (cc) { | 85024 | .inverted = switch (cc) { |
| 85004 | else => unreachable, | 85025 | else => unreachable, |
| 85005 | .e => false, | 85026 | .e => false, |
| ... | @@ -85023,7 +85044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -85023,7 +85044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 85023 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 85044 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 85024 | }, | 85045 | }, |
| 85025 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 85046 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 85026 | .kind = .all, | 85047 | .kind = .sign_extend, |
| 85027 | .inverted = switch (cc) { | 85048 | .inverted = switch (cc) { |
| 85028 | else => unreachable, | 85049 | else => unreachable, |
| 85029 | .e => false, | 85050 | .e => false, |
| ... | @@ -85047,7 +85068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -85047,7 +85068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 85047 | .{ .src = .{ .to_sse, .to_sse, .none } }, | 85068 | .{ .src = .{ .to_sse, .to_sse, .none } }, |
| 85048 | }, | 85069 | }, |
| 85049 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ | 85070 | .dst_temps = .{ .{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ |
| 85050 | .kind = .all, | 85071 | .kind = .sign_extend, |
| 85051 | .inverted = switch (cc) { | 85072 | .inverted = switch (cc) { |
| 85052 | else => unreachable, | 85073 | else => unreachable, |
| 85053 | .e => false, | 85074 | .e => false, |
| ... | @@ -86699,7 +86720,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86699,7 +86720,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86699 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86720 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86700 | .ref = .src0, | 86721 | .ref = .src0, |
| 86701 | .rc = .sse, | 86722 | .rc = .sse, |
| 86702 | .info = .{ .kind = .all, .scalar = .dword }, | 86723 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86703 | } }, .unused }, | 86724 | } }, .unused }, |
| 86704 | .each = .{ .once = &.{ | 86725 | .each = .{ .once = &.{ |
| 86705 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 86726 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| ... | @@ -86739,7 +86760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86739,7 +86760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86739 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86760 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86740 | .ref = .src0, | 86761 | .ref = .src0, |
| 86741 | .rc = .sse, | 86762 | .rc = .sse, |
| 86742 | .info = .{ .kind = .all, .scalar = .dword }, | 86763 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86743 | } }, .unused }, | 86764 | } }, .unused }, |
| 86744 | .each = .{ .once = &.{ | 86765 | .each = .{ .once = &.{ |
| 86745 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, | 86766 | .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, |
| ... | @@ -86779,7 +86800,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86779,7 +86800,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86779 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86800 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86780 | .ref = .src0, | 86801 | .ref = .src0, |
| 86781 | .rc = .sse, | 86802 | .rc = .sse, |
| 86782 | .info = .{ .kind = .all, .scalar = .dword }, | 86803 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86783 | } }, .unused }, | 86804 | } }, .unused }, |
| 86784 | .each = .{ .once = &.{ | 86805 | .each = .{ .once = &.{ |
| 86785 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, | 86806 | .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, |
| ... | @@ -86805,7 +86826,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86805,7 +86826,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86805 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86826 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86806 | .ref = .src0, | 86827 | .ref = .src0, |
| 86807 | .rc = .sse, | 86828 | .rc = .sse, |
| 86808 | .info = .{ .kind = .all, .scalar = .dword }, | 86829 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86809 | } }, .unused }, | 86830 | } }, .unused }, |
| 86810 | .each = .{ .once = &.{ | 86831 | .each = .{ .once = &.{ |
| 86811 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { | 86832 | .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { |
| ... | @@ -86828,7 +86849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86828,7 +86849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86828 | }, | 86849 | }, |
| 86829 | .dst_temps = .{ .{ .ref_mask = .{ | 86850 | .dst_temps = .{ .{ .ref_mask = .{ |
| 86830 | .ref = .src0, | 86851 | .ref = .src0, |
| 86831 | .info = .{ .kind = .all, .scalar = .dword }, | 86852 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86832 | } }, .unused }, | 86853 | } }, .unused }, |
| 86833 | .each = .{ .once = &.{ | 86854 | .each = .{ .once = &.{ |
| 86834 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { | 86855 | .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { |
| ... | @@ -86852,7 +86873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86852,7 +86873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86852 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86873 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86853 | .ref = .src0, | 86874 | .ref = .src0, |
| 86854 | .rc = .sse, | 86875 | .rc = .sse, |
| 86855 | .info = .{ .kind = .all, .scalar = .dword }, | 86876 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86856 | } }, .unused }, | 86877 | } }, .unused }, |
| 86857 | .each = .{ .once = &.{ | 86878 | .each = .{ .once = &.{ |
| 86858 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 86879 | .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -86875,7 +86896,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86875,7 +86896,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86875 | }, | 86896 | }, |
| 86876 | .dst_temps = .{ .{ .ref_mask = .{ | 86897 | .dst_temps = .{ .{ .ref_mask = .{ |
| 86877 | .ref = .src0, | 86898 | .ref = .src0, |
| 86878 | .info = .{ .kind = .all, .scalar = .dword }, | 86899 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86879 | } }, .unused }, | 86900 | } }, .unused }, |
| 86880 | .each = .{ .once = &.{ | 86901 | .each = .{ .once = &.{ |
| 86881 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { | 86902 | .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| ... | @@ -86899,7 +86920,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86899,7 +86920,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86899 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86920 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86900 | .ref = .src0, | 86921 | .ref = .src0, |
| 86901 | .rc = .sse, | 86922 | .rc = .sse, |
| 86902 | .info = .{ .kind = .all, .scalar = .dword }, | 86923 | .info = .{ .kind = .sign_extend, .scalar = .dword }, |
| 86903 | } }, .unused }, | 86924 | } }, .unused }, |
| 86904 | .each = .{ .once = &.{ | 86925 | .each = .{ .once = &.{ |
| 86905 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 86926 | .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -86923,7 +86944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86923,7 +86944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86923 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86944 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86924 | .ref = .src0, | 86945 | .ref = .src0, |
| 86925 | .rc = .sse, | 86946 | .rc = .sse, |
| 86926 | .info = .{ .kind = .all, .scalar = .qword }, | 86947 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 86927 | } }, .unused }, | 86948 | } }, .unused }, |
| 86928 | .each = .{ .once = &.{ | 86949 | .each = .{ .once = &.{ |
| 86929 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { | 86950 | .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { |
| ... | @@ -86946,7 +86967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86946,7 +86967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86946 | }, | 86967 | }, |
| 86947 | .dst_temps = .{ .{ .ref_mask = .{ | 86968 | .dst_temps = .{ .{ .ref_mask = .{ |
| 86948 | .ref = .src0, | 86969 | .ref = .src0, |
| 86949 | .info = .{ .kind = .all, .scalar = .qword }, | 86970 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 86950 | } }, .unused }, | 86971 | } }, .unused }, |
| 86951 | .each = .{ .once = &.{ | 86972 | .each = .{ .once = &.{ |
| 86952 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { | 86973 | .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { |
| ... | @@ -86970,7 +86991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86970,7 +86991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86970 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 86991 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 86971 | .ref = .src0, | 86992 | .ref = .src0, |
| 86972 | .rc = .sse, | 86993 | .rc = .sse, |
| 86973 | .info = .{ .kind = .all, .scalar = .qword }, | 86994 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 86974 | } }, .unused }, | 86995 | } }, .unused }, |
| 86975 | .each = .{ .once = &.{ | 86996 | .each = .{ .once = &.{ |
| 86976 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { | 86997 | .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { |
| ... | @@ -86993,7 +87014,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -86993,7 +87014,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 86993 | }, | 87014 | }, |
| 86994 | .dst_temps = .{ .{ .ref_mask = .{ | 87015 | .dst_temps = .{ .{ .ref_mask = .{ |
| 86995 | .ref = .src0, | 87016 | .ref = .src0, |
| 86996 | .info = .{ .kind = .all, .scalar = .qword }, | 87017 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 86997 | } }, .unused }, | 87018 | } }, .unused }, |
| 86998 | .each = .{ .once = &.{ | 87019 | .each = .{ .once = &.{ |
| 86999 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { | 87020 | .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { |
| ... | @@ -87017,7 +87038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -87017,7 +87038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 87017 | .dst_temps = .{ .{ .mut_rc_mask = .{ | 87038 | .dst_temps = .{ .{ .mut_rc_mask = .{ |
| 87018 | .ref = .src0, | 87039 | .ref = .src0, |
| 87019 | .rc = .sse, | 87040 | .rc = .sse, |
| 87020 | .info = .{ .kind = .all, .scalar = .qword }, | 87041 | .info = .{ .kind = .sign_extend, .scalar = .qword }, |
| 87021 | } }, .unused }, | 87042 | } }, .unused }, |
| 87022 | .each = .{ .once = &.{ | 87043 | .each = .{ .once = &.{ |
| 87023 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { | 87044 | .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { |
| ... | @@ -89392,6 +89413,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -89392,6 +89413,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 89392 | .store, .store_safe => |air_tag| { | 89413 | .store, .store_safe => |air_tag| { |
| 89393 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; | 89414 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 89394 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); | 89415 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| | 89416 | switch (ops[1].tracking(cg).short) { |
| | 89417 | else => {}, |
| | 89418 | .register_mask => |src_reg_mask| { |
| | 89419 | const ty = ops[1].typeOf(cg); |
| | 89420 | const new_op1 = try cg.tempAllocReg(ty, abi.RegisterClass.gp); |
| | 89421 | try cg.genSetReg( |
| | 89422 | new_op1.tracking(cg).short.register, |
| | 89423 | ty, |
| | 89424 | .{ .register_mask = src_reg_mask }, |
| | 89425 | .{ .safety = switch (air_tag) { |
| | 89426 | else => unreachable, |
| | 89427 | .store => false, |
| | 89428 | .store_safe => true, |
| | 89429 | } }, |
| | 89430 | ); |
| | 89431 | try ops[1].die(cg); |
| | 89432 | ops[1] = new_op1; |
| | 89433 | }, |
| | 89434 | } |
| 89395 | cg.select(&.{}, &.{}, &ops, comptime &.{ .{ | 89435 | cg.select(&.{}, &.{}, &ops, comptime &.{ .{ |
| 89396 | .src_constraints = .{ .{ .ptr_bool_vec_elem = .byte }, .bool, .any }, | 89436 | .src_constraints = .{ .{ .ptr_bool_vec_elem = .byte }, .bool, .any }, |
| 89397 | .patterns = &.{ | 89437 | .patterns = &.{ |
| ... | @@ -127167,7 +127207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127167,7 +127207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127167 | .dst_constraints = .{ .bool, .any }, | 127207 | .dst_constraints = .{ .bool, .any }, |
| 127168 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127208 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127169 | .patterns = &.{ | 127209 | .patterns = &.{ |
| 127170 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword, .is = .inverted } }, .none, .none } }, | 127210 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend, .is = .inverted } }, .none, .none } }, |
| 127171 | }, | 127211 | }, |
| 127172 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 127212 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 127173 | .clobbers = .{ .eflags = true }, | 127213 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127179,7 +127219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127179,7 +127219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127179 | .dst_constraints = .{ .bool, .any }, | 127219 | .dst_constraints = .{ .bool, .any }, |
| 127180 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127220 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127181 | .patterns = &.{ | 127221 | .patterns = &.{ |
| 127182 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword, .is = .inverted } }, .none, .none } }, | 127222 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend, .is = .inverted } }, .none, .none } }, |
| 127183 | }, | 127223 | }, |
| 127184 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 127224 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 127185 | .clobbers = .{ .eflags = true }, | 127225 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127191,7 +127231,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127191,7 +127231,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127191 | .dst_constraints = .{ .bool, .any }, | 127231 | .dst_constraints = .{ .bool, .any }, |
| 127192 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127232 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127193 | .patterns = &.{ | 127233 | .patterns = &.{ |
| 127194 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword } }, .none, .none } }, | 127234 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend } }, .none, .none } }, |
| 127195 | }, | 127235 | }, |
| 127196 | .extra_temps = .{ | 127236 | .extra_temps = .{ |
| 127197 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 127237 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127217,7 +127257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127217,7 +127257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127217 | .dst_constraints = .{ .bool, .any }, | 127257 | .dst_constraints = .{ .bool, .any }, |
| 127218 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127258 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127219 | .patterns = &.{ | 127259 | .patterns = &.{ |
| 127220 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword } }, .none, .none } }, | 127260 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend } }, .none, .none } }, |
| 127221 | }, | 127261 | }, |
| 127222 | .extra_temps = .{ | 127262 | .extra_temps = .{ |
| 127223 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 127263 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127243,7 +127283,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127243,7 +127283,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127243 | .dst_constraints = .{ .bool, .any }, | 127283 | .dst_constraints = .{ .bool, .any }, |
| 127244 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127284 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127245 | .patterns = &.{ | 127285 | .patterns = &.{ |
| 127246 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword } }, .none, .none } }, | 127286 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .msb } }, .none, .none } }, |
| 127247 | }, | 127287 | }, |
| 127248 | .extra_temps = .{ | 127288 | .extra_temps = .{ |
| 127249 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127289 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -127269,7 +127309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127269,7 +127309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127269 | .dst_constraints = .{ .bool, .any }, | 127309 | .dst_constraints = .{ .bool, .any }, |
| 127270 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127310 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127271 | .patterns = &.{ | 127311 | .patterns = &.{ |
| 127272 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword } }, .none, .none } }, | 127312 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .msb } }, .none, .none } }, |
| 127273 | }, | 127313 | }, |
| 127274 | .extra_temps = .{ | 127314 | .extra_temps = .{ |
| 127275 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127315 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -127295,7 +127335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127295,7 +127335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127295 | .dst_constraints = .{ .bool, .any }, | 127335 | .dst_constraints = .{ .bool, .any }, |
| 127296 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127336 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127297 | .patterns = &.{ | 127337 | .patterns = &.{ |
| 127298 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword, .is = .inverted } }, .none, .none } }, | 127338 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend, .is = .inverted } }, .none, .none } }, |
| 127299 | }, | 127339 | }, |
| 127300 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 127340 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 127301 | .clobbers = .{ .eflags = true }, | 127341 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127307,7 +127347,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127307,7 +127347,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127307 | .dst_constraints = .{ .bool, .any }, | 127347 | .dst_constraints = .{ .bool, .any }, |
| 127308 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127348 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127309 | .patterns = &.{ | 127349 | .patterns = &.{ |
| 127310 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword, .is = .inverted } }, .none, .none } }, | 127350 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend, .is = .inverted } }, .none, .none } }, |
| 127311 | }, | 127351 | }, |
| 127312 | .dst_temps = .{ .{ .cc = .z }, .unused }, | 127352 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 127313 | .clobbers = .{ .eflags = true }, | 127353 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127319,7 +127359,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127319,7 +127359,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127319 | .dst_constraints = .{ .bool, .any }, | 127359 | .dst_constraints = .{ .bool, .any }, |
| 127320 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127360 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127321 | .patterns = &.{ | 127361 | .patterns = &.{ |
| 127322 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword } }, .none, .none } }, | 127362 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend } }, .none, .none } }, |
| 127323 | }, | 127363 | }, |
| 127324 | .extra_temps = .{ | 127364 | .extra_temps = .{ |
| 127325 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 127365 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127345,7 +127385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127345,7 +127385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127345 | .dst_constraints = .{ .bool, .any }, | 127385 | .dst_constraints = .{ .bool, .any }, |
| 127346 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127386 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127347 | .patterns = &.{ | 127387 | .patterns = &.{ |
| 127348 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword } }, .none, .none } }, | 127388 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend } }, .none, .none } }, |
| 127349 | }, | 127389 | }, |
| 127350 | .extra_temps = .{ | 127390 | .extra_temps = .{ |
| 127351 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 127391 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -127371,7 +127411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127371,7 +127411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127371 | .dst_constraints = .{ .bool, .any }, | 127411 | .dst_constraints = .{ .bool, .any }, |
| 127372 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127412 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127373 | .patterns = &.{ | 127413 | .patterns = &.{ |
| 127374 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword } }, .none, .none } }, | 127414 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .msb } }, .none, .none } }, |
| 127375 | }, | 127415 | }, |
| 127376 | .extra_temps = .{ | 127416 | .extra_temps = .{ |
| 127377 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127417 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -127572,7 +127612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127572,7 +127612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127572 | .dst_constraints = .{ .bool, .any }, | 127612 | .dst_constraints = .{ .bool, .any }, |
| 127573 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127613 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127574 | .patterns = &.{ | 127614 | .patterns = &.{ |
| 127575 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword, .is = .uninverted } }, .none, .none } }, | 127615 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend, .is = .uninverted } }, .none, .none } }, |
| 127576 | }, | 127616 | }, |
| 127577 | .dst_temps = .{ .{ .cc = .nz }, .unused }, | 127617 | .dst_temps = .{ .{ .cc = .nz }, .unused }, |
| 127578 | .clobbers = .{ .eflags = true }, | 127618 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127584,7 +127624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127584,7 +127624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127584 | .dst_constraints = .{ .bool, .any }, | 127624 | .dst_constraints = .{ .bool, .any }, |
| 127585 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127625 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127586 | .patterns = &.{ | 127626 | .patterns = &.{ |
| 127587 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword, .is = .uninverted } }, .none, .none } }, | 127627 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend, .is = .uninverted } }, .none, .none } }, |
| 127588 | }, | 127628 | }, |
| 127589 | .dst_temps = .{ .{ .cc = .nz }, .unused }, | 127629 | .dst_temps = .{ .{ .cc = .nz }, .unused }, |
| 127590 | .clobbers = .{ .eflags = true }, | 127630 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127596,7 +127636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127596,7 +127636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127596 | .dst_constraints = .{ .bool, .any }, | 127636 | .dst_constraints = .{ .bool, .any }, |
| 127597 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127637 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127598 | .patterns = &.{ | 127638 | .patterns = &.{ |
| 127599 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword } }, .none, .none } }, | 127639 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend } }, .none, .none } }, |
| 127600 | }, | 127640 | }, |
| 127601 | .extra_temps = .{ | 127641 | .extra_temps = .{ |
| 127602 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 127642 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127622,7 +127662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127622,7 +127662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127622 | .dst_constraints = .{ .bool, .any }, | 127662 | .dst_constraints = .{ .bool, .any }, |
| 127623 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127663 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127624 | .patterns = &.{ | 127664 | .patterns = &.{ |
| 127625 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .xword } }, .none, .none } }, | 127665 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .sign_extend } }, .none, .none } }, |
| 127626 | }, | 127666 | }, |
| 127627 | .extra_temps = .{ | 127667 | .extra_temps = .{ |
| 127628 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, | 127668 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127648,7 +127688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127648,7 +127688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127648 | .dst_constraints = .{ .bool, .any }, | 127688 | .dst_constraints = .{ .bool, .any }, |
| 127649 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127689 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127650 | .patterns = &.{ | 127690 | .patterns = &.{ |
| 127651 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword } }, .none, .none } }, | 127691 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .msb } }, .none, .none } }, |
| 127652 | }, | 127692 | }, |
| 127653 | .extra_temps = .{ | 127693 | .extra_temps = .{ |
| 127654 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127694 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -127674,7 +127714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127674,7 +127714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127674 | .dst_constraints = .{ .bool, .any }, | 127714 | .dst_constraints = .{ .bool, .any }, |
| 127675 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127715 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127676 | .patterns = &.{ | 127716 | .patterns = &.{ |
| 127677 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword } }, .none, .none } }, | 127717 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .msb } }, .none, .none } }, |
| 127678 | }, | 127718 | }, |
| 127679 | .extra_temps = .{ | 127719 | .extra_temps = .{ |
| 127680 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127720 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -127700,7 +127740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127700,7 +127740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127700 | .dst_constraints = .{ .bool, .any }, | 127740 | .dst_constraints = .{ .bool, .any }, |
| 127701 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127741 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127702 | .patterns = &.{ | 127742 | .patterns = &.{ |
| 127703 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword, .is = .uninverted } }, .none, .none } }, | 127743 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend, .is = .uninverted } }, .none, .none } }, |
| 127704 | }, | 127744 | }, |
| 127705 | .dst_temps = .{ .{ .cc = .nz }, .unused }, | 127745 | .dst_temps = .{ .{ .cc = .nz }, .unused }, |
| 127706 | .clobbers = .{ .eflags = true }, | 127746 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127712,7 +127752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127712,7 +127752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127712 | .dst_constraints = .{ .bool, .any }, | 127752 | .dst_constraints = .{ .bool, .any }, |
| 127713 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127753 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127714 | .patterns = &.{ | 127754 | .patterns = &.{ |
| 127715 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword, .is = .uninverted } }, .none, .none } }, | 127755 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend, .is = .uninverted } }, .none, .none } }, |
| 127716 | }, | 127756 | }, |
| 127717 | .dst_temps = .{ .{ .cc = .nz }, .unused }, | 127757 | .dst_temps = .{ .{ .cc = .nz }, .unused }, |
| 127718 | .clobbers = .{ .eflags = true }, | 127758 | .clobbers = .{ .eflags = true }, |
| ... | @@ -127724,7 +127764,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127724,7 +127764,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127724 | .dst_constraints = .{ .bool, .any }, | 127764 | .dst_constraints = .{ .bool, .any }, |
| 127725 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127765 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127726 | .patterns = &.{ | 127766 | .patterns = &.{ |
| 127727 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword } }, .none, .none } }, | 127767 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend } }, .none, .none } }, |
| 127728 | }, | 127768 | }, |
| 127729 | .extra_temps = .{ | 127769 | .extra_temps = .{ |
| 127730 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, | 127770 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| ... | @@ -127750,7 +127790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127750,7 +127790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127750 | .dst_constraints = .{ .bool, .any }, | 127790 | .dst_constraints = .{ .bool, .any }, |
| 127751 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127791 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127752 | .patterns = &.{ | 127792 | .patterns = &.{ |
| 127753 | .{ .src = .{ .{ .all_reg_mask = .{ .size = .yword } }, .none, .none } }, | 127793 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .sign_extend } }, .none, .none } }, |
| 127754 | }, | 127794 | }, |
| 127755 | .extra_temps = .{ | 127795 | .extra_temps = .{ |
| 127756 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, | 127796 | .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, |
| ... | @@ -127776,7 +127816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { | ... | @@ -127776,7 +127816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 127776 | .dst_constraints = .{ .bool, .any }, | 127816 | .dst_constraints = .{ .bool, .any }, |
| 127777 | .src_constraints = .{ .any_bool_vec, .any, .any }, | 127817 | .src_constraints = .{ .any_bool_vec, .any, .any }, |
| 127778 | .patterns = &.{ | 127818 | .patterns = &.{ |
| 127779 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword } }, .none, .none } }, | 127819 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .msb } }, .none, .none } }, |
| 127780 | }, | 127820 | }, |
| 127781 | .extra_temps = .{ | 127821 | .extra_temps = .{ |
| 127782 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, | 127822 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| ... | @@ -174528,6 +174568,7 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE | ... | @@ -174528,6 +174568,7 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE |
| 174528 | .register_overflow, | 174568 | .register_overflow, |
| 174529 | .register_mask, | 174569 | .register_mask, |
| 174530 | .indirect_load_frame, | 174570 | .indirect_load_frame, |
| | 174571 | .indirect_mask, |
| 174531 | .register_tee, | 174572 | .register_tee, |
| 174532 | .elementwise_gpr, | 174573 | .elementwise_gpr, |
| 174533 | .elementwise_sse, | 174574 | .elementwise_sse, |
| ... | @@ -174586,6 +174627,7 @@ fn store( | ... | @@ -174586,6 +174627,7 @@ fn store( |
| 174586 | .register_overflow, | 174627 | .register_overflow, |
| 174587 | .register_mask, | 174628 | .register_mask, |
| 174588 | .indirect_load_frame, | 174629 | .indirect_load_frame, |
| | 174630 | .indirect_mask, |
| 174589 | .register_tee, | 174631 | .register_tee, |
| 174590 | .elementwise_gpr, | 174632 | .elementwise_gpr, |
| 174591 | .elementwise_sse, | 174633 | .elementwise_sse, |
| ... | @@ -174636,6 +174678,7 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv: | ... | @@ -174636,6 +174678,7 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv: |
| 174636 | .register_overflow, | 174678 | .register_overflow, |
| 174637 | .register_mask, | 174679 | .register_mask, |
| 174638 | .indirect_load_frame, | 174680 | .indirect_load_frame, |
| | 174681 | .indirect_mask, |
| 174639 | .lea_frame, | 174682 | .lea_frame, |
| 174640 | .lea_nav, | 174683 | .lea_nav, |
| 174641 | .lea_uav, | 174684 | .lea_uav, |
| ... | @@ -175336,6 +175379,7 @@ fn genBinOpMir( | ... | @@ -175336,6 +175379,7 @@ fn genBinOpMir( |
| 175336 | .lea_lazy_sym, | 175379 | .lea_lazy_sym, |
| 175337 | .lea_extern_func, | 175380 | .lea_extern_func, |
| 175338 | .indirect_load_frame, | 175381 | .indirect_load_frame, |
| | 175382 | .indirect_mask, |
| 175339 | .register_tee, | 175383 | .register_tee, |
| 175340 | .elementwise_gpr, | 175384 | .elementwise_gpr, |
| 175341 | .elementwise_sse, | 175385 | .elementwise_sse, |
| ... | @@ -175378,6 +175422,7 @@ fn genBinOpMir( | ... | @@ -175378,6 +175422,7 @@ fn genBinOpMir( |
| 175378 | .register_overflow, | 175422 | .register_overflow, |
| 175379 | .register_mask, | 175423 | .register_mask, |
| 175380 | .indirect_load_frame, | 175424 | .indirect_load_frame, |
| | 175425 | .indirect_mask, |
| 175381 | .register_tee, | 175426 | .register_tee, |
| 175382 | .elementwise_gpr, | 175427 | .elementwise_gpr, |
| 175383 | .elementwise_sse, | 175428 | .elementwise_sse, |
| ... | @@ -175555,6 +175600,7 @@ fn genBinOpMir( | ... | @@ -175555,6 +175600,7 @@ fn genBinOpMir( |
| 175555 | .register_overflow, | 175600 | .register_overflow, |
| 175556 | .register_mask, | 175601 | .register_mask, |
| 175557 | .indirect_load_frame, | 175602 | .indirect_load_frame, |
| | 175603 | .indirect_mask, |
| 175558 | .register_tee, | 175604 | .register_tee, |
| 175559 | .elementwise_gpr, | 175605 | .elementwise_gpr, |
| 175560 | .elementwise_sse, | 175606 | .elementwise_sse, |
| ... | @@ -175664,6 +175710,7 @@ fn genBinOpMir( | ... | @@ -175664,6 +175710,7 @@ fn genBinOpMir( |
| 175664 | .register_overflow, | 175710 | .register_overflow, |
| 175665 | .register_mask, | 175711 | .register_mask, |
| 175666 | .indirect_load_frame, | 175712 | .indirect_load_frame, |
| | 175713 | .indirect_mask, |
| 175667 | .register_tee, | 175714 | .register_tee, |
| 175668 | .elementwise_gpr, | 175715 | .elementwise_gpr, |
| 175669 | .elementwise_sse, | 175716 | .elementwise_sse, |
| ... | @@ -175793,7 +175840,13 @@ fn airArg(cg: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -175793,7 +175840,13 @@ fn airArg(cg: *CodeGen, inst: Air.Inst.Index) !void { |
| 175793 | const result: MCValue = if (cg.mod.strip and cg.liveness.isUnused(inst)) .unreach else result: { | 175840 | const result: MCValue = if (cg.mod.strip and cg.liveness.isUnused(inst)) .unreach else result: { |
| 175794 | const arg_ty = cg.typeOfIndex(inst); | 175841 | const arg_ty = cg.typeOfIndex(inst); |
| 175795 | switch (src_mcv) { | 175842 | switch (src_mcv) { |
| 175796 | .register, .register_pair, .load_frame => { | 175843 | .register, |
| | 175844 | .register_pair, |
| | 175845 | .register_triple, |
| | 175846 | .register_quadruple, |
| | 175847 | .register_mask, |
| | 175848 | .load_frame, |
| | 175849 | => { |
| 175797 | for (src_mcv.getRegs()) |reg| cg.register_manager.getRegAssumeFree(reg, inst); | 175850 | for (src_mcv.getRegs()) |reg| cg.register_manager.getRegAssumeFree(reg, inst); |
| 175798 | break :result src_mcv; | 175851 | break :result src_mcv; |
| 175799 | }, | 175852 | }, |
| ... | @@ -175803,6 +175856,22 @@ fn airArg(cg: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -175803,6 +175856,22 @@ fn airArg(cg: *CodeGen, inst: Air.Inst.Index) !void { |
| 175803 | try cg.genCopy(arg_ty, dst_mcv, src_mcv, .{}); | 175856 | try cg.genCopy(arg_ty, dst_mcv, src_mcv, .{}); |
| 175804 | break :result dst_mcv; | 175857 | break :result dst_mcv; |
| 175805 | }, | 175858 | }, |
| | 175859 | .indirect_mask => |reg_mask| { |
| | 175860 | cg.register_manager.getRegAssumeFree(reg_mask.reg, null); |
| | 175861 | const dst_reg = try cg.register_manager.allocReg(inst, abi.RegisterClass.sse); |
| | 175862 | const mask_size: u32 = @intCast( |
| | 175863 | @divExact(reg_mask.info.scalar.bitSize(cg.target), 8) * arg_ty.vectorLen(zcu), |
| | 175864 | ); |
| | 175865 | try cg.asmRegisterMemory( |
| | 175866 | .{ if (cg.hasFeature(.avx)) .v_dqa else ._dqa, .mov }, |
| | 175867 | registerAlias(dst_reg, mask_size), |
| | 175868 | .{ |
| | 175869 | .base = .{ .reg = reg_mask.reg }, |
| | 175870 | .mod = .{ .rm = .{ .size = .fromSize(mask_size) } }, |
| | 175871 | }, |
| | 175872 | ); |
| | 175873 | break :result .{ .register_mask = .{ .reg = dst_reg, .info = reg_mask.info } }; |
| | 175874 | }, |
| 175806 | .indirect_load_frame => |frame_addr| { | 175875 | .indirect_load_frame => |frame_addr| { |
| 175807 | const dst_mcv = try cg.allocRegOrMem(inst, false); | 175876 | const dst_mcv = try cg.allocRegOrMem(inst, false); |
| 175808 | const ptr_reg = try cg.register_manager.allocReg(null, abi.RegisterClass.gp); | 175877 | const ptr_reg = try cg.register_manager.allocReg(null, abi.RegisterClass.gp); |
| ... | @@ -176265,6 +176334,10 @@ fn genCall(cg: *CodeGen, info: union(enum) { | ... | @@ -176265,6 +176334,10 @@ fn genCall(cg: *CodeGen, info: union(enum) { |
| 176265 | for (regs) |reg| try cg.register_manager.getReg(reg, null); | 176334 | for (regs) |reg| try cg.register_manager.getReg(reg, null); |
| 176266 | try reg_locks.appendSlice(allocator, &cg.register_manager.lockRegs(regs.len, regs)); | 176335 | try reg_locks.appendSlice(allocator, &cg.register_manager.lockRegs(regs.len, regs)); |
| 176267 | }, | 176336 | }, |
| | 176337 | .register_mask => |reg_mask| { |
| | 176338 | try cg.register_manager.getReg(reg_mask.reg, null); |
| | 176339 | try reg_locks.append(allocator, cg.register_manager.lockReg(reg_mask.reg)); |
| | 176340 | }, |
| 176268 | .indirect => |reg_off| { | 176341 | .indirect => |reg_off| { |
| 176269 | frame_index.* = try cg.allocFrameIndex(.initType(arg_ty, zcu)); | 176342 | frame_index.* = try cg.allocFrameIndex(.initType(arg_ty, zcu)); |
| 176270 | try cg.genSetMem(.{ .frame = frame_index.* }, 0, arg_ty, src_arg, opts); | 176343 | try cg.genSetMem(.{ .frame = frame_index.* }, 0, arg_ty, src_arg, opts); |
| ... | @@ -176282,6 +176355,44 @@ fn genCall(cg: *CodeGen, info: union(enum) { | ... | @@ -176282,6 +176355,44 @@ fn genCall(cg: *CodeGen, info: union(enum) { |
| 176282 | opts, | 176355 | opts, |
| 176283 | ); | 176356 | ); |
| 176284 | }, | 176357 | }, |
| | 176358 | .indirect_mask => |reg_mask| { |
| | 176359 | var src = switch (src_arg) { |
| | 176360 | else => try cg.tempInit(arg_ty, src_arg), |
| | 176361 | .air_ref => |src_ref| try cg.tempFromOperand(src_ref, false), |
| | 176362 | }; |
| | 176363 | var dst = try cg.tempInit(arg_ty, .{ .register_mask = .{ |
| | 176364 | .reg = try cg.register_manager.allocReg(null, abi.RegisterClass.sse), |
| | 176365 | .info = reg_mask.info, |
| | 176366 | } }); |
| | 176367 | dst.copyToMask(&src, cg) catch |err| switch (err) { |
| | 176368 | error.SelectFailed => return cg.fail("failed to select arg {f} {f} {f}", .{ |
| | 176369 | arg_ty.fmt(pt), |
| | 176370 | dst.tracking(cg), |
| | 176371 | src.tracking(cg), |
| | 176372 | }), |
| | 176373 | else => |e| return e, |
| | 176374 | }; |
| | 176375 | try src.die(cg); |
| | 176376 | const mask_size: u32 = @intCast( |
| | 176377 | @divExact(reg_mask.info.scalar.bitSize(cg.target), 8) * arg_ty.vectorLen(zcu), |
| | 176378 | ); |
| | 176379 | frame_index.* = try cg.allocFrameIndex(.init(.{ |
| | 176380 | .size = mask_size, |
| | 176381 | .alignment = .fromByteUnits(std.math.ceilPowerOfTwoAssert(u32, mask_size)), |
| | 176382 | })); |
| | 176383 | try cg.asmMemoryRegister( |
| | 176384 | .{ if (cg.hasFeature(.avx)) .v_dqa else ._dqa, .mov }, |
| | 176385 | .{ |
| | 176386 | .base = .{ .frame = frame_index.* }, |
| | 176387 | .mod = .{ .rm = .{ .size = .fromSize(mask_size) } }, |
| | 176388 | }, |
| | 176389 | registerAlias(dst.tracking(cg).short.register_mask.reg, mask_size), |
| | 176390 | ); |
| | 176391 | try dst.die(cg); |
| | 176392 | |
| | 176393 | try cg.register_manager.getReg(reg_mask.reg, null); |
| | 176394 | try reg_locks.append(allocator, cg.register_manager.lockReg(reg_mask.reg)); |
| | 176395 | }, |
| 176285 | .load_frame => { | 176396 | .load_frame => { |
| 176286 | try cg.genCopy(arg_ty, dst_arg, src_arg, opts); | 176397 | try cg.genCopy(arg_ty, dst_arg, src_arg, opts); |
| 176287 | try cg.freeValue(src_arg, .{}); | 176398 | try cg.freeValue(src_arg, .{}); |
| ... | @@ -176396,7 +176507,7 @@ fn genCall(cg: *CodeGen, info: union(enum) { | ... | @@ -176396,7 +176507,7 @@ fn genCall(cg: *CodeGen, info: union(enum) { |
| 176396 | | 176507 | |
| 176397 | var frame_offset: i32 = regs_frame_addr.info.frame_off; | 176508 | var frame_offset: i32 = regs_frame_addr.info.frame_off; |
| 176398 | var arg_offset = elem_size * param_gpr_len; | 176509 | var arg_offset = elem_size * param_gpr_len; |
| 176399 | while (arg_size - arg_offset != 0) : ({ | 176510 | while (arg_size - arg_offset > 0) : ({ |
| 176400 | frame_offset += 8; | 176511 | frame_offset += 8; |
| 176401 | arg_offset += elem_size; | 176512 | arg_offset += elem_size; |
| 176402 | }) try cg.genSetMem( | 176513 | }) try cg.genSetMem( |
| ... | @@ -176458,8 +176569,28 @@ fn genCall(cg: *CodeGen, info: union(enum) { | ... | @@ -176458,8 +176569,28 @@ fn genCall(cg: *CodeGen, info: union(enum) { |
| 176458 | .register_triple, | 176569 | .register_triple, |
| 176459 | .register_quadruple, | 176570 | .register_quadruple, |
| 176460 | => try cg.genCopy(arg_ty, dst_arg, src_arg, opts), | 176571 | => try cg.genCopy(arg_ty, dst_arg, src_arg, opts), |
| 176461 | .indirect => |reg_off| try cg.genSetReg(reg_off.reg, .usize, .{ | 176572 | .register_mask => { |
| 176462 | .lea_frame = .{ .index = frame_index, .off = -reg_off.off }, | 176573 | var src = switch (src_arg) { |
| | 176574 | else => try cg.tempInit(arg_ty, src_arg), |
| | 176575 | .air_ref => |src_ref| try cg.tempFromOperand(src_ref, false), |
| | 176576 | }; |
| | 176577 | var dst = try cg.tempInit(arg_ty, dst_arg); |
| | 176578 | dst.copyToMask(&src, cg) catch |err| switch (err) { |
| | 176579 | error.SelectFailed => return cg.fail("failed to select arg {f} {f} {f}", .{ |
| | 176580 | arg_ty.fmt(pt), |
| | 176581 | dst.tracking(cg), |
| | 176582 | src.tracking(cg), |
| | 176583 | }), |
| | 176584 | else => |e| return e, |
| | 176585 | }; |
| | 176586 | try src.die(cg); |
| | 176587 | try dst.die(cg); |
| | 176588 | }, |
| | 176589 | .indirect => |dst_reg_off| try cg.genSetReg(dst_reg_off.reg, .usize, .{ |
| | 176590 | .lea_frame = .{ .index = frame_index, .off = -dst_reg_off.off }, |
| | 176591 | }, opts), |
| | 176592 | .indirect_mask => |dst_reg_mask| try cg.genSetReg(dst_reg_mask.reg, .usize, .{ |
| | 176593 | .lea_frame = .{ .index = frame_index }, |
| 176463 | }, opts), | 176594 | }, opts), |
| 176464 | .register_tee => |dst_regs| { | 176595 | .register_tee => |dst_regs| { |
| 176465 | try cg.genSetReg(dst_regs[0], arg_ty, src_arg, opts); | 176596 | try cg.genSetReg(dst_regs[0], arg_ty, src_arg, opts); |
| ... | @@ -176570,31 +176701,43 @@ fn genCall(cg: *CodeGen, info: union(enum) { | ... | @@ -176570,31 +176701,43 @@ fn genCall(cg: *CodeGen, info: union(enum) { |
| 176570 | return call_info.return_value.short; | 176701 | return call_info.return_value.short; |
| 176571 | } | 176702 | } |
| 176572 | | 176703 | |
| 176573 | fn airRet(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void { | 176704 | fn airRet(cg: *CodeGen, inst: Air.Inst.Index, safety: bool) !void { |
| 176574 | const pt = self.pt; | 176705 | const un_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].un_op; |
| 176575 | const zcu = pt.zcu; | | |
| 176576 | const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op; | | |
| 176577 | | 176706 | |
| 176578 | const ret_ty = self.fn_type.fnReturnType(zcu); | 176707 | const ret_ty = cg.fn_type.fnReturnType(cg.pt.zcu); |
| 176579 | switch (self.ret_mcv.short) { | 176708 | switch (cg.ret_mcv.short) { |
| 176580 | .none => {}, | 176709 | .none => {}, |
| 176581 | .register => |reg| { | 176710 | .register => |reg| { |
| 176582 | const reg_lock = self.register_manager.lockRegAssumeUnused(reg); | 176711 | const reg_lock = cg.register_manager.lockRegAssumeUnused(reg); |
| 176583 | defer self.register_manager.unlockReg(reg_lock); | 176712 | defer cg.register_manager.unlockReg(reg_lock); |
| 176584 | try self.genCopy(ret_ty, self.ret_mcv.short, .{ .air_ref = un_op }, .{ .safety = safety }); | 176713 | try cg.genCopy(ret_ty, cg.ret_mcv.short, .{ .air_ref = un_op }, .{ .safety = safety }); |
| 176585 | }, | 176714 | }, |
| 176586 | inline .register_pair, .register_triple, .register_quadruple => |regs| { | 176715 | inline .register_pair, .register_triple, .register_quadruple => |regs| { |
| 176587 | const reg_locks = self.register_manager.lockRegsAssumeUnused(regs.len, regs); | 176716 | const reg_locks = cg.register_manager.lockRegsAssumeUnused(regs.len, regs); |
| 176588 | defer for (reg_locks) |reg_lock| self.register_manager.unlockReg(reg_lock); | 176717 | defer for (reg_locks) |reg_lock| cg.register_manager.unlockReg(reg_lock); |
| 176589 | try self.genCopy(ret_ty, self.ret_mcv.short, .{ .air_ref = un_op }, .{ .safety = safety }); | 176718 | try cg.genCopy(ret_ty, cg.ret_mcv.short, .{ .air_ref = un_op }, .{ .safety = safety }); |
| | 176719 | }, |
| | 176720 | .register_mask => { |
| | 176721 | var src = try cg.tempFromOperand(un_op, true); |
| | 176722 | var dst = try cg.tempInit(ret_ty, cg.ret_mcv.short); |
| | 176723 | dst.copyToMask(&src, cg) catch |err| switch (err) { |
| | 176724 | error.SelectFailed => return cg.fail("failed to select ret {f} {f} {f}", .{ |
| | 176725 | ret_ty.fmt(cg.pt), |
| | 176726 | dst.tracking(cg), |
| | 176727 | src.tracking(cg), |
| | 176728 | }), |
| | 176729 | else => |e| return e, |
| | 176730 | }; |
| | 176731 | try src.die(cg); |
| | 176732 | try dst.die(cg); |
| 176590 | }, | 176733 | }, |
| 176591 | .indirect => |reg_off| { | 176734 | .indirect => |reg_off| { |
| 176592 | try self.register_manager.getReg(reg_off.reg, null); | 176735 | try cg.register_manager.getReg(reg_off.reg, null); |
| 176593 | const lock = self.register_manager.lockRegAssumeUnused(reg_off.reg); | 176736 | const lock = cg.register_manager.lockRegAssumeUnused(reg_off.reg); |
| 176594 | defer self.register_manager.unlockReg(lock); | 176737 | defer cg.register_manager.unlockReg(lock); |
| 176595 | | 176738 | |
| 176596 | try self.genSetReg(reg_off.reg, .usize, self.ret_mcv.long, .{}); | 176739 | try cg.genSetReg(reg_off.reg, .usize, cg.ret_mcv.long, .{}); |
| 176597 | try self.genSetMem( | 176740 | try cg.genSetMem( |
| 176598 | .{ .reg = reg_off.reg }, | 176741 | .{ .reg = reg_off.reg }, |
| 176599 | reg_off.off, | 176742 | reg_off.off, |
| 176600 | ret_ty, | 176743 | ret_ty, |
| ... | @@ -176604,59 +176747,78 @@ fn airRet(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void { | ... | @@ -176604,59 +176747,78 @@ fn airRet(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void { |
| 176604 | }, | 176747 | }, |
| 176605 | else => unreachable, | 176748 | else => unreachable, |
| 176606 | } | 176749 | } |
| 176607 | self.ret_mcv.liveOut(self, inst); | 176750 | cg.ret_mcv.liveOut(cg, inst); |
| 176608 | | 176751 | |
| 176609 | if (self.err_ret_trace_reg != .none) { | 176752 | if (cg.err_ret_trace_reg != .none) { |
| 176610 | if (self.inst_tracking.getPtr(err_ret_trace_index)) |err_ret_trace| { | 176753 | if (cg.inst_tracking.getPtr(err_ret_trace_index)) |err_ret_trace| { |
| 176611 | if (switch (err_ret_trace.short) { | 176754 | if (switch (err_ret_trace.short) { |
| 176612 | .register => |reg| self.err_ret_trace_reg != reg, | 176755 | .register => |reg| cg.err_ret_trace_reg != reg, |
| 176613 | else => true, | 176756 | else => true, |
| 176614 | }) try self.genSetReg(self.err_ret_trace_reg, .usize, err_ret_trace.short, .{}); | 176757 | }) try cg.genSetReg(cg.err_ret_trace_reg, .usize, err_ret_trace.short, .{}); |
| 176615 | err_ret_trace.liveOut(self, err_ret_trace_index); | 176758 | err_ret_trace.liveOut(cg, err_ret_trace_index); |
| 176616 | } | 176759 | } |
| 176617 | } | 176760 | } |
| 176618 | | 176761 | |
| 176619 | try self.finishAir(inst, .unreach, .{ un_op, .none, .none }); | 176762 | try cg.finishAir(inst, .unreach, .{ un_op, .none, .none }); |
| 176620 | | 176763 | |
| 176621 | // TODO optimization opportunity: figure out when we can emit this as a 2 byte instruction | 176764 | // TODO optimization opportunity: figure out when we can emit this as a 2 byte instruction |
| 176622 | // which is available if the jump is 127 bytes or less forward. | 176765 | // which is available if the jump is 127 bytes or less forward. |
| 176623 | const jmp_reloc = try self.asmJmpReloc(undefined); | 176766 | const jmp_reloc = try cg.asmJmpReloc(undefined); |
| 176624 | try self.epilogue_relocs.append(self.gpa, jmp_reloc); | 176767 | try cg.epilogue_relocs.append(cg.gpa, jmp_reloc); |
| 176625 | } | 176768 | } |
| 176626 | | 176769 | |
| 176627 | fn airRetLoad(self: *CodeGen, inst: Air.Inst.Index) !void { | 176770 | fn airRetLoad(cg: *CodeGen, inst: Air.Inst.Index) !void { |
| 176628 | const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op; | 176771 | const un_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].un_op; |
| 176629 | const ptr = try self.resolveInst(un_op); | 176772 | switch (cg.ret_mcv.short) { |
| 176630 | | | |
| 176631 | const ptr_ty = self.typeOf(un_op); | | |
| 176632 | switch (self.ret_mcv.short) { | | |
| 176633 | .none => {}, | 176773 | .none => {}, |
| 176634 | .register, | 176774 | .register, |
| 176635 | .register_pair, | 176775 | .register_pair, |
| 176636 | .register_triple, | 176776 | .register_triple, |
| 176637 | .register_quadruple, | 176777 | .register_quadruple, |
| 176638 | => try self.load(self.ret_mcv.short, ptr_ty, ptr), | 176778 | => try cg.load(cg.ret_mcv.short, cg.typeOf(un_op), try cg.resolveInst(un_op)), |
| 176639 | .indirect => |reg_off| try self.genSetReg(reg_off.reg, ptr_ty, ptr, .{}), | 176779 | .register_mask => { |
| | 176780 | var ptr = try cg.tempFromOperand(un_op, true); |
| | 176781 | const ret_ty = ptr.typeOf(cg).childType(cg.pt.zcu); |
| | 176782 | var src = try ptr.load(ret_ty, .{}, cg); |
| | 176783 | try ptr.die(cg); |
| | 176784 | var dst = try cg.tempInit(ret_ty, cg.ret_mcv.short); |
| | 176785 | dst.copyToMask(&src, cg) catch |err| switch (err) { |
| | 176786 | error.SelectFailed => return cg.fail("failed to select ret_load {f} {f} {f}", .{ |
| | 176787 | ret_ty.fmt(cg.pt), |
| | 176788 | dst.tracking(cg), |
| | 176789 | src.tracking(cg), |
| | 176790 | }), |
| | 176791 | else => |e| return e, |
| | 176792 | }; |
| | 176793 | try src.die(cg); |
| | 176794 | try dst.die(cg); |
| | 176795 | }, |
| | 176796 | .indirect => |dst_reg_off| try cg.genSetReg( |
| | 176797 | dst_reg_off.reg, |
| | 176798 | cg.typeOf(un_op), |
| | 176799 | try cg.resolveInst(un_op), |
| | 176800 | .{}, |
| | 176801 | ), |
| 176640 | else => unreachable, | 176802 | else => unreachable, |
| 176641 | } | 176803 | } |
| 176642 | self.ret_mcv.liveOut(self, inst); | 176804 | cg.ret_mcv.liveOut(cg, inst); |
| 176643 | | 176805 | |
| 176644 | if (self.err_ret_trace_reg != .none) { | 176806 | if (cg.err_ret_trace_reg != .none) { |
| 176645 | if (self.inst_tracking.getPtr(err_ret_trace_index)) |err_ret_trace| { | 176807 | if (cg.inst_tracking.getPtr(err_ret_trace_index)) |err_ret_trace| { |
| 176646 | if (switch (err_ret_trace.short) { | 176808 | if (switch (err_ret_trace.short) { |
| 176647 | .register => |reg| self.err_ret_trace_reg != reg, | 176809 | .register => |reg| cg.err_ret_trace_reg != reg, |
| 176648 | else => true, | 176810 | else => true, |
| 176649 | }) try self.genSetReg(self.err_ret_trace_reg, .usize, err_ret_trace.short, .{}); | 176811 | }) try cg.genSetReg(cg.err_ret_trace_reg, .usize, err_ret_trace.short, .{}); |
| 176650 | err_ret_trace.liveOut(self, err_ret_trace_index); | 176812 | err_ret_trace.liveOut(cg, err_ret_trace_index); |
| 176651 | } | 176813 | } |
| 176652 | } | 176814 | } |
| 176653 | | 176815 | |
| 176654 | try self.finishAir(inst, .unreach, .{ un_op, .none, .none }); | 176816 | try cg.finishAir(inst, .unreach, .{ un_op, .none, .none }); |
| 176655 | | 176817 | |
| 176656 | // TODO optimization opportunity: figure out when we can emit this as a 2 byte instruction | 176818 | // TODO optimization opportunity: figure out when we can emit this as a 2 byte instruction |
| 176657 | // which is available if the jump is 127 bytes or less forward. | 176819 | // which is available if the jump is 127 bytes or less forward. |
| 176658 | const jmp_reloc = try self.asmJmpReloc(undefined); | 176820 | const jmp_reloc = try cg.asmJmpReloc(undefined); |
| 176659 | try self.epilogue_relocs.append(self.gpa, jmp_reloc); | 176821 | try cg.epilogue_relocs.append(cg.gpa, jmp_reloc); |
| 176660 | } | 176822 | } |
| 176661 | | 176823 | |
| 176662 | fn airTry(self: *CodeGen, inst: Air.Inst.Index) !void { | 176824 | fn airTry(self: *CodeGen, inst: Air.Inst.Index) !void { |
| ... | @@ -178640,6 +178802,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C | ... | @@ -178640,6 +178802,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C |
| 178640 | .register_overflow, | 178802 | .register_overflow, |
| 178641 | .register_mask, | 178803 | .register_mask, |
| 178642 | .indirect_load_frame, | 178804 | .indirect_load_frame, |
| | 178805 | .indirect_mask, |
| 178643 | .lea_frame, | 178806 | .lea_frame, |
| 178644 | .lea_nav, | 178807 | .lea_nav, |
| 178645 | .lea_uav, | 178808 | .lea_uav, |
| ... | @@ -178853,6 +179016,7 @@ fn genSetReg( | ... | @@ -178853,6 +179016,7 @@ fn genSetReg( |
| 178853 | .unreach, | 179016 | .unreach, |
| 178854 | .dead, | 179017 | .dead, |
| 178855 | .indirect_load_frame, | 179018 | .indirect_load_frame, |
| | 179019 | .indirect_mask, |
| 178856 | .register_tee, | 179020 | .register_tee, |
| 178857 | .elementwise_gpr, | 179021 | .elementwise_gpr, |
| 178858 | .elementwise_sse, | 179022 | .elementwise_sse, |
| ... | @@ -179282,33 +179446,105 @@ fn genSetReg( | ... | @@ -179282,33 +179446,105 @@ fn genSetReg( |
| 179282 | const bits_lock = cg.register_manager.lockReg(bits_reg); | 179446 | const bits_lock = cg.register_manager.lockReg(bits_reg); |
| 179283 | defer if (bits_lock) |lock| cg.register_manager.unlockReg(lock); | 179447 | defer if (bits_lock) |lock| cg.register_manager.unlockReg(lock); |
| 179284 | | 179448 | |
| 179285 | const pack_reg = switch (src_reg_mask.info.scalar) { | 179449 | var mask_size: u32 = @intCast( |
| 179286 | else => src_reg_mask.reg, | 179450 | @divExact(src_reg_mask.info.scalar.bitSize(cg.target), 8) * ty.vectorLen(zcu), |
| 179287 | .word => try cg.register_manager.allocReg(null, abi.RegisterClass.sse), | 179451 | ); |
| | 179452 | const sign_reg = switch (src_reg_mask.info.kind) { |
| | 179453 | .lsb => sign_reg: { |
| | 179454 | const sign_reg = try cg.register_manager.allocReg(null, abi.RegisterClass.sse); |
| | 179455 | const src_alias = registerAlias(src_reg_mask.reg, mask_size); |
| | 179456 | const sign_alias = registerAlias(sign_reg, mask_size); |
| | 179457 | if (cg.hasFeature(.avx2)) try cg.asmRegisterRegisterImmediate( |
| | 179458 | .{ switch (src_reg_mask.info.scalar) { |
| | 179459 | else => unreachable, |
| | 179460 | .byte, .word => .vp_w, |
| | 179461 | .dword => .vp_d, |
| | 179462 | .qword => .vp_q, |
| | 179463 | }, .sll }, |
| | 179464 | sign_alias, |
| | 179465 | src_alias, |
| | 179466 | .u(src_reg_mask.info.scalar.bitSize(cg.target) - 1), |
| | 179467 | ) else { |
| | 179468 | if (sign_alias != src_alias) try cg.asmRegisterRegister( |
| | 179469 | .{ ._dqa, .mov }, |
| | 179470 | sign_alias, |
| | 179471 | src_alias, |
| | 179472 | ); |
| | 179473 | try cg.asmRegisterImmediate( |
| | 179474 | .{ switch (src_reg_mask.info.scalar) { |
| | 179475 | else => unreachable, |
| | 179476 | .byte, .word => .p_w, |
| | 179477 | .dword => .p_d, |
| | 179478 | .qword => .p_q, |
| | 179479 | }, .sll }, |
| | 179480 | sign_alias, |
| | 179481 | .u(src_reg_mask.info.scalar.bitSize(cg.target) - 1), |
| | 179482 | ); |
| | 179483 | } |
| | 179484 | break :sign_reg sign_reg; |
| | 179485 | }, |
| | 179486 | .zero_extend => sign_reg: { |
| | 179487 | const sign_reg = try cg.register_manager.allocReg(null, abi.RegisterClass.sse); |
| | 179488 | const src_alias = registerAlias(src_reg_mask.reg, mask_size); |
| | 179489 | const sign_alias = registerAlias(sign_reg, mask_size); |
| | 179490 | if (has_avx) { |
| | 179491 | try cg.asmRegisterRegisterRegister( |
| | 179492 | .{ .vp_, .xor }, |
| | 179493 | sign_alias, |
| | 179494 | sign_alias, |
| | 179495 | sign_alias, |
| | 179496 | ); |
| | 179497 | try cg.asmRegisterRegisterRegister(.{ switch (src_reg_mask.info.scalar) { |
| | 179498 | else => unreachable, |
| | 179499 | .byte => .vp_b, |
| | 179500 | .word => .vp_w, |
| | 179501 | .dword => .vp_d, |
| | 179502 | .qword => .vp_q, |
| | 179503 | }, .sub }, sign_alias, sign_alias, src_alias); |
| | 179504 | } else { |
| | 179505 | try cg.asmRegisterRegister(.{ .p_, .xor }, sign_alias, sign_alias); |
| | 179506 | try cg.asmRegisterRegister(.{ switch (src_reg_mask.info.scalar) { |
| | 179507 | else => unreachable, |
| | 179508 | .byte => .p_b, |
| | 179509 | .word => .p_w, |
| | 179510 | .dword => .p_d, |
| | 179511 | .qword => .p_q, |
| | 179512 | }, .sub }, sign_alias, src_alias); |
| | 179513 | } |
| | 179514 | break :sign_reg sign_reg; |
| | 179515 | }, |
| | 179516 | .msb, .sign_extend => src_reg_mask.reg, |
| 179288 | }; | 179517 | }; |
| 179289 | const pack_lock = cg.register_manager.lockReg(pack_reg); | 179518 | const sign_lock = cg.register_manager.lockReg(sign_reg); |
| 179290 | defer if (pack_lock) |lock| cg.register_manager.unlockReg(lock); | 179519 | defer if (sign_lock) |lock| cg.register_manager.unlockReg(lock); |
| 179291 | | 179520 | |
| 179292 | var mask_size: u32 = @intCast(ty.vectorLen(zcu) * @divExact(src_reg_mask.info.scalar.bitSize(cg.target), 8)); | 179521 | const pack_reg = switch (src_reg_mask.info.scalar) { |
| 179293 | switch (src_reg_mask.info.scalar) { | 179522 | else => sign_reg, |
| 179294 | else => {}, | 179523 | .word => pack_reg: { |
| 179295 | .word => { | 179524 | const pack_reg = if (sign_reg == src_reg_mask.reg) |
| 179296 | const src_alias = registerAlias(src_reg_mask.reg, mask_size); | 179525 | try cg.register_manager.allocReg(null, abi.RegisterClass.sse) |
| | 179526 | else |
| | 179527 | sign_reg; |
| | 179528 | const sign_alias = registerAlias(sign_reg, mask_size); |
| 179297 | const pack_alias = registerAlias(pack_reg, mask_size); | 179529 | const pack_alias = registerAlias(pack_reg, mask_size); |
| 179298 | if (has_avx) { | 179530 | if (has_avx) { |
| 179299 | try cg.asmRegisterRegisterRegister(.{ .vp_b, .ackssw }, pack_alias, src_alias, src_alias); | 179531 | try cg.asmRegisterRegisterRegister(.{ .vp_b, .ackssw }, pack_alias, sign_alias, sign_alias); |
| 179300 | } else { | 179532 | } else { |
| 179301 | try cg.asmRegisterRegister(.{ ._dqa, .mov }, pack_alias, src_alias); | 179533 | if (pack_alias != sign_alias) try cg.asmRegisterRegister(.{ ._dqa, .mov }, pack_alias, sign_alias); |
| 179302 | try cg.asmRegisterRegister(.{ .p_b, .ackssw }, pack_alias, pack_alias); | 179534 | try cg.asmRegisterRegister(.{ .p_b, .ackssw }, pack_alias, pack_alias); |
| 179303 | } | 179535 | } |
| 179304 | mask_size = std.math.divCeil(u32, mask_size, 2) catch unreachable; | 179536 | mask_size = std.math.divCeil(u32, mask_size, 2) catch unreachable; |
| | 179537 | break :pack_reg pack_reg; |
| 179305 | }, | 179538 | }, |
| 179306 | } | 179539 | }; |
| | 179540 | const pack_lock = cg.register_manager.lockReg(pack_reg); |
| | 179541 | defer if (pack_lock) |lock| cg.register_manager.unlockReg(lock); |
| | 179542 | |
| 179307 | try cg.asmRegisterRegister(.{ switch (src_reg_mask.info.scalar) { | 179543 | try cg.asmRegisterRegister(.{ switch (src_reg_mask.info.scalar) { |
| | 179544 | else => unreachable, |
| 179308 | .byte, .word => if (has_avx) .vp_b else .p_b, | 179545 | .byte, .word => if (has_avx) .vp_b else .p_b, |
| 179309 | .dword => if (has_avx) .v_ps else ._ps, | 179546 | .dword => if (has_avx) .v_ps else ._ps, |
| 179310 | .qword => if (has_avx) .v_pd else ._pd, | 179547 | .qword => if (has_avx) .v_pd else ._pd, |
| 179311 | else => unreachable, | | |
| 179312 | }, .movmsk }, bits_reg.to32(), registerAlias(pack_reg, mask_size)); | 179548 | }, .movmsk }, bits_reg.to32(), registerAlias(pack_reg, mask_size)); |
| 179313 | if (src_reg_mask.info.inverted) try cg.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size)); | 179549 | if (src_reg_mask.info.inverted) try cg.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size)); |
| 179314 | try cg.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{}); | 179550 | try cg.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{}); |
| ... | @@ -179432,6 +179668,7 @@ fn genSetMem( | ... | @@ -179432,6 +179668,7 @@ fn genSetMem( |
| 179432 | .unreach, | 179668 | .unreach, |
| 179433 | .dead, | 179669 | .dead, |
| 179434 | .indirect_load_frame, | 179670 | .indirect_load_frame, |
| | 179671 | .indirect_mask, |
| 179435 | .register_tee, | 179672 | .register_tee, |
| 179436 | .elementwise_gpr, | 179673 | .elementwise_gpr, |
| 179437 | .elementwise_sse, | 179674 | .elementwise_sse, |
| ... | @@ -180697,32 +180934,32 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void { | ... | @@ -180697,32 +180934,32 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void { |
| 180697 | const dst_lock = self.register_manager.lockReg(dst_reg); | 180934 | const dst_lock = self.register_manager.lockReg(dst_reg); |
| 180698 | defer if (dst_lock) |lock| self.register_manager.unlockReg(lock); | 180935 | defer if (dst_lock) |lock| self.register_manager.unlockReg(lock); |
| 180699 | | 180936 | |
| 180700 | const mir_tag = @as(?Mir.Inst.FixedTag, if ((pred_reg_mask.info.kind == .all and | 180937 | const mir_tag = @as(?Mir.Inst.FixedTag, if ((pred_reg_mask.info.kind == .sign_extend and |
| 180701 | elem_ty.toIntern() != .f32_type and elem_ty.toIntern() != .f64_type) or pred_reg_mask.info.scalar == .byte) | 180938 | elem_ty.toIntern() != .f32_type and elem_ty.toIntern() != .f64_type) or pred_reg_mask.info.scalar == .byte) |
| 180702 | if (has_avx) | 180939 | if (has_avx) |
| 180703 | .{ .vp_b, .blendv } | 180940 | .{ .vp_b, .blendv } |
| 180704 | else if (has_blend) | 180941 | else if (has_blend) |
| 180705 | .{ .p_b, .blendv } | 180942 | .{ .p_b, .blendv } |
| 180706 | else if (pred_reg_mask.info.kind == .all) | 180943 | else if (pred_reg_mask.info.kind == .sign_extend) |
| 180707 | .{ .p_, undefined } | 180944 | .{ .p_, undefined } |
| 180708 | else | 180945 | else |
| 180709 | null | 180946 | null |
| 180710 | else if ((pred_reg_mask.info.kind == .all and (elem_ty.toIntern() != .f64_type or !self.hasFeature(.sse2))) or | 180947 | else if ((pred_reg_mask.info.kind == .sign_extend and (elem_ty.toIntern() != .f64_type or !self.hasFeature(.sse2))) or |
| 180711 | pred_reg_mask.info.scalar == .dword) | 180948 | pred_reg_mask.info.scalar == .dword) |
| 180712 | if (has_avx) | 180949 | if (has_avx) |
| 180713 | .{ .v_ps, .blendv } | 180950 | .{ .v_ps, .blendv } |
| 180714 | else if (has_blend) | 180951 | else if (has_blend) |
| 180715 | .{ ._ps, .blendv } | 180952 | .{ ._ps, .blendv } |
| 180716 | else if (pred_reg_mask.info.kind == .all) | 180953 | else if (pred_reg_mask.info.kind == .sign_extend) |
| 180717 | .{ ._ps, undefined } | 180954 | .{ ._ps, undefined } |
| 180718 | else | 180955 | else |
| 180719 | null | 180956 | null |
| 180720 | else if (pred_reg_mask.info.kind == .all or pred_reg_mask.info.scalar == .qword) | 180957 | else if (pred_reg_mask.info.kind == .sign_extend or pred_reg_mask.info.scalar == .qword) |
| 180721 | if (has_avx) | 180958 | if (has_avx) |
| 180722 | .{ .v_pd, .blendv } | 180959 | .{ .v_pd, .blendv } |
| 180723 | else if (has_blend) | 180960 | else if (has_blend) |
| 180724 | .{ ._pd, .blendv } | 180961 | .{ ._pd, .blendv } |
| 180725 | else if (pred_reg_mask.info.kind == .all) | 180962 | else if (pred_reg_mask.info.kind == .sign_extend) |
| 180726 | .{ ._pd, undefined } | 180963 | .{ ._pd, undefined } |
| 180727 | else | 180964 | else |
| 180728 | null | 180965 | null |
| ... | @@ -181635,6 +181872,17 @@ fn resolveCallingConventionValues( | ... | @@ -181635,6 +181872,17 @@ fn resolveCallingConventionValues( |
| 181635 | ret_gpr = ret_gpr[1..]; | 181872 | ret_gpr = ret_gpr[1..]; |
| 181636 | param_gpr_index += 1; | 181873 | param_gpr_index += 1; |
| 181637 | }, | 181874 | }, |
| | 181875 | .bool_vector_mask => { |
| | 181876 | const len = ret_ty.vectorLen(zcu); |
| | 181877 | const elem_size = |
| | 181878 | @divExact(16, std.math.ceilPowerOfTwoAssert(u32, @min(len, 16))); |
| | 181879 | ret_tracking[ret_tracking_len] = .init(.{ .register_mask = .{ |
| | 181880 | .reg = registerAlias(ret_sse[0], elem_size * len), |
| | 181881 | .info = .{ .kind = .lsb, .scalar = .fromSize(elem_size) }, |
| | 181882 | } }); |
| | 181883 | ret_tracking_len += 1; |
| | 181884 | ret_sse = ret_sse[1..]; |
| | 181885 | }, |
| 181638 | .integer_per_element => { | 181886 | .integer_per_element => { |
| 181639 | const len: u32 = @intCast(ret_ty.vectorLen(zcu)); | 181887 | const len: u32 = @intCast(ret_ty.vectorLen(zcu)); |
| 181640 | const alias_size: u32 = @intCast(@min(ret_ty.childType(zcu).abiSize(zcu), 8)); | 181888 | const alias_size: u32 = @intCast(@min(ret_ty.childType(zcu).abiSize(zcu), 8)); |
| ... | @@ -181809,6 +182057,17 @@ fn resolveCallingConventionValues( | ... | @@ -181809,6 +182057,17 @@ fn resolveCallingConventionValues( |
| 181809 | else => unreachable, | 182057 | else => unreachable, |
| 181810 | }, | 182058 | }, |
| 181811 | .none => {}, | 182059 | .none => {}, |
| | 182060 | .bool_vector_mask => { |
| | 182061 | arg_mcv[arg_mcv_len] = .{ .indirect_mask = .{ |
| | 182062 | .reg = param_gpr[param_gpr_index].to64(), |
| | 182063 | .info = .{ .kind = .lsb, .scalar = .fromSize(@divExact( |
| | 182064 | 16, |
| | 182065 | std.math.ceilPowerOfTwoAssert(u32, @min(ty.vectorLen(zcu), 16)), |
| | 182066 | )) }, |
| | 182067 | } }; |
| | 182068 | arg_mcv_len += 1; |
| | 182069 | param_gpr_index += 1; |
| | 182070 | }, |
| 181812 | .integer_per_element, | 182071 | .integer_per_element, |
| 181813 | .sse_per_element, | 182072 | .sse_per_element, |
| 181814 | .sse_per_xword, | 182073 | .sse_per_xword, |
| ... | @@ -182441,6 +182700,7 @@ const Temp = struct { | ... | @@ -182441,6 +182700,7 @@ const Temp = struct { |
| 182441 | .memory, | 182700 | .memory, |
| 182442 | .indirect, | 182701 | .indirect, |
| 182443 | .indirect_load_frame, | 182702 | .indirect_load_frame, |
| | 182703 | .indirect_mask, |
| 182444 | .lea_frame, | 182704 | .lea_frame, |
| 182445 | .load_nav, | 182705 | .load_nav, |
| 182446 | .lea_nav, | 182706 | .lea_nav, |
| ... | @@ -182918,6 +183178,7 @@ const Temp = struct { | ... | @@ -182918,6 +183178,7 @@ const Temp = struct { |
| 182918 | .register_overflow, | 183178 | .register_overflow, |
| 182919 | .register_mask, | 183179 | .register_mask, |
| 182920 | .indirect_load_frame, | 183180 | .indirect_load_frame, |
| | 183181 | .indirect_mask, |
| 182921 | .register_tee, | 183182 | .register_tee, |
| 182922 | .elementwise_gpr, | 183183 | .elementwise_gpr, |
| 182923 | .elementwise_sse, | 183184 | .elementwise_sse, |
| ... | @@ -183423,6 +183684,7 @@ const Temp = struct { | ... | @@ -183423,6 +183684,7 @@ const Temp = struct { |
| 183423 | .x87up, | 183684 | .x87up, |
| 183424 | .none, | 183685 | .none, |
| 183425 | .win_i128, | 183686 | .win_i128, |
| | 183687 | .bool_vector_mask, |
| 183426 | .integer_per_element, | 183688 | .integer_per_element, |
| 183427 | .sse_per_element, | 183689 | .sse_per_element, |
| 183428 | .sse_sse_x87_per_qword, | 183690 | .sse_sse_x87_per_qword, |
| ... | @@ -183440,6 +183702,7 @@ const Temp = struct { | ... | @@ -183440,6 +183702,7 @@ const Temp = struct { |
| 183440 | .x87up, | 183702 | .x87up, |
| 183441 | .none, | 183703 | .none, |
| 183442 | .win_i128, | 183704 | .win_i128, |
| | 183705 | .bool_vector_mask, |
| 183443 | .integer_per_element, | 183706 | .integer_per_element, |
| 183444 | .sse_per_element, | 183707 | .sse_per_element, |
| 183445 | .sse_sse_x87_per_qword, | 183708 | .sse_sse_x87_per_qword, |
| ... | @@ -183464,6 +183727,7 @@ const Temp = struct { | ... | @@ -183464,6 +183727,7 @@ const Temp = struct { |
| 183464 | .memory, | 183727 | .memory, |
| 183465 | .none, | 183728 | .none, |
| 183466 | .win_i128, | 183729 | .win_i128, |
| | 183730 | .bool_vector_mask, |
| 183467 | .integer_per_element, | 183731 | .integer_per_element, |
| 183468 | .sse_per_element, | 183732 | .sse_per_element, |
| 183469 | .sse_sse_x87_per_qword, | 183733 | .sse_sse_x87_per_qword, |
| ... | @@ -183502,6 +183766,1331 @@ const Temp = struct { | ... | @@ -183502,6 +183766,1331 @@ const Temp = struct { |
| 183502 | try cg.asmOpOnly(.{ .@"rep _sb", .sto }); | 183766 | try cg.asmOpOnly(.{ .@"rep _sb", .sto }); |
| 183503 | } | 183767 | } |
| 183504 | | 183768 | |
| | 183769 | fn copyToMask(dst: *Temp, src: *Temp, cg: *CodeGen) Select.Error!void { |
| | 183770 | var ops: [2]Temp = .{ dst.*, src.* }; |
| | 183771 | try cg.select(&.{}, &.{}, &ops, comptime &.{ .{ |
| | 183772 | .required_features = .{ .avx2, null, null, null }, |
| | 183773 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183774 | .patterns = &.{ |
| | 183775 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .mem, .none } }, |
| | 183776 | }, |
| | 183777 | .extra_temps = .{ |
| | 183778 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183779 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183780 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183781 | .unused, |
| | 183782 | .unused, |
| | 183783 | .unused, |
| | 183784 | .unused, |
| | 183785 | .unused, |
| | 183786 | .unused, |
| | 183787 | .unused, |
| | 183788 | .unused, |
| | 183789 | }, |
| | 183790 | .each = .{ .once = &.{ |
| | 183791 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 183792 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183793 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183794 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183795 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183796 | } }, |
| | 183797 | }, .{ |
| | 183798 | .required_features = .{ .avx2, null, null, null }, |
| | 183799 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183800 | .patterns = &.{ |
| | 183801 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183802 | }, |
| | 183803 | .extra_temps = .{ |
| | 183804 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183805 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183806 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183807 | .unused, |
| | 183808 | .unused, |
| | 183809 | .unused, |
| | 183810 | .unused, |
| | 183811 | .unused, |
| | 183812 | .unused, |
| | 183813 | .unused, |
| | 183814 | .unused, |
| | 183815 | }, |
| | 183816 | .each = .{ .once = &.{ |
| | 183817 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 183818 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183819 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183820 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183821 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183822 | } }, |
| | 183823 | }, .{ |
| | 183824 | .required_features = .{ .avx2, null, null, null }, |
| | 183825 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183826 | .patterns = &.{ |
| | 183827 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .mem, .none } }, |
| | 183828 | }, |
| | 183829 | .extra_temps = .{ |
| | 183830 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183831 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183832 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183833 | .unused, |
| | 183834 | .unused, |
| | 183835 | .unused, |
| | 183836 | .unused, |
| | 183837 | .unused, |
| | 183838 | .unused, |
| | 183839 | .unused, |
| | 183840 | .unused, |
| | 183841 | }, |
| | 183842 | .each = .{ .once = &.{ |
| | 183843 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 183844 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183845 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183846 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183847 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183848 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 183849 | .{ ._, .vp_q, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 183850 | } }, |
| | 183851 | }, .{ |
| | 183852 | .required_features = .{ .avx2, null, null, null }, |
| | 183853 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183854 | .patterns = &.{ |
| | 183855 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183856 | }, |
| | 183857 | .extra_temps = .{ |
| | 183858 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183859 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183860 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183861 | .unused, |
| | 183862 | .unused, |
| | 183863 | .unused, |
| | 183864 | .unused, |
| | 183865 | .unused, |
| | 183866 | .unused, |
| | 183867 | .unused, |
| | 183868 | .unused, |
| | 183869 | }, |
| | 183870 | .each = .{ .once = &.{ |
| | 183871 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 183872 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183873 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183874 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183875 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183876 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 183877 | .{ ._, .vp_q, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 183878 | } }, |
| | 183879 | }, .{ |
| | 183880 | .required_features = .{ .avx, null, null, null }, |
| | 183881 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183882 | .patterns = &.{ |
| | 183883 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183884 | }, |
| | 183885 | .extra_temps = .{ |
| | 183886 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183887 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183888 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183889 | .unused, |
| | 183890 | .unused, |
| | 183891 | .unused, |
| | 183892 | .unused, |
| | 183893 | .unused, |
| | 183894 | .unused, |
| | 183895 | .unused, |
| | 183896 | .unused, |
| | 183897 | }, |
| | 183898 | .each = .{ .once = &.{ |
| | 183899 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 183900 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 183901 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183902 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183903 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183904 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183905 | } }, |
| | 183906 | }, .{ |
| | 183907 | .required_features = .{ .avx, null, null, null }, |
| | 183908 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183909 | .patterns = &.{ |
| | 183910 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183911 | }, |
| | 183912 | .extra_temps = .{ |
| | 183913 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183914 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183915 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183916 | .unused, |
| | 183917 | .unused, |
| | 183918 | .unused, |
| | 183919 | .unused, |
| | 183920 | .unused, |
| | 183921 | .unused, |
| | 183922 | .unused, |
| | 183923 | .unused, |
| | 183924 | }, |
| | 183925 | .each = .{ .once = &.{ |
| | 183926 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 183927 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 183928 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183929 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183930 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 183931 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 183932 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 183933 | .{ ._, .vp_q, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 183934 | } }, |
| | 183935 | }, .{ |
| | 183936 | .required_features = .{ .ssse3, null, null, null }, |
| | 183937 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183938 | .patterns = &.{ |
| | 183939 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183940 | }, |
| | 183941 | .extra_temps = .{ |
| | 183942 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183943 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183944 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 183945 | .unused, |
| | 183946 | .unused, |
| | 183947 | .unused, |
| | 183948 | .unused, |
| | 183949 | .unused, |
| | 183950 | .unused, |
| | 183951 | .unused, |
| | 183952 | .unused, |
| | 183953 | }, |
| | 183954 | .each = .{ .once = &.{ |
| | 183955 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 183956 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 183957 | .{ ._, .p_b, .shuf, .src0x, .tmp2x, ._, ._ }, |
| | 183958 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183959 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 183960 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 183961 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 183962 | } }, |
| | 183963 | }, .{ |
| | 183964 | .required_features = .{ .ssse3, null, null, null }, |
| | 183965 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183966 | .patterns = &.{ |
| | 183967 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_mut_sse, .none } }, |
| | 183968 | }, |
| | 183969 | .extra_temps = .{ |
| | 183970 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 183971 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 183972 | .unused, |
| | 183973 | .unused, |
| | 183974 | .unused, |
| | 183975 | .unused, |
| | 183976 | .unused, |
| | 183977 | .unused, |
| | 183978 | .unused, |
| | 183979 | .unused, |
| | 183980 | .unused, |
| | 183981 | }, |
| | 183982 | .each = .{ .once = &.{ |
| | 183983 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 183984 | .{ ._, .p_b, .shuf, .src1x, .src0x, ._, ._ }, |
| | 183985 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 183986 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 183987 | .{ ._, .p_, .@"and", .src1x, .src0x, ._, ._ }, |
| | 183988 | .{ ._, .p_b, .cmpeq, .src1x, .src0x, ._, ._ }, |
| | 183989 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 183990 | .{ ._, .p_q, .sub, .src0x, .src1x, ._, ._ }, |
| | 183991 | } }, |
| | 183992 | }, .{ |
| | 183993 | .required_features = .{ .sse2, null, null, null }, |
| | 183994 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 183995 | .patterns = &.{ |
| | 183996 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 183997 | }, |
| | 183998 | .extra_temps = .{ |
| | 183999 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 184000 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184001 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184002 | .unused, |
| | 184003 | .unused, |
| | 184004 | .unused, |
| | 184005 | .unused, |
| | 184006 | .unused, |
| | 184007 | .unused, |
| | 184008 | .unused, |
| | 184009 | .unused, |
| | 184010 | }, |
| | 184011 | .each = .{ .once = &.{ |
| | 184012 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184013 | .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ }, |
| | 184014 | .{ ._, .p_, .unpcklwd, .src0x, .src0x, ._, ._ }, |
| | 184015 | .{ ._, .p_, .unpckldq, .src0x, .src0x, ._, ._ }, |
| | 184016 | .{ ._, .p_, .unpcklqdq, .src0x, .src0x, ._, ._ }, |
| | 184017 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184018 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184019 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184020 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184021 | } }, |
| | 184022 | }, .{ |
| | 184023 | .required_features = .{ .sse2, null, null, null }, |
| | 184024 | .src_constraints = .{ .{ .exact_bool_vec = 2 }, .{ .exact_bool_vec = 2 }, .any }, |
| | 184025 | .patterns = &.{ |
| | 184026 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_mut_sse, .none } }, |
| | 184027 | }, |
| | 184028 | .extra_temps = .{ |
| | 184029 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 8 } } }, |
| | 184030 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184031 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184032 | .unused, |
| | 184033 | .unused, |
| | 184034 | .unused, |
| | 184035 | .unused, |
| | 184036 | .unused, |
| | 184037 | .unused, |
| | 184038 | .unused, |
| | 184039 | .unused, |
| | 184040 | }, |
| | 184041 | .each = .{ .once = &.{ |
| | 184042 | .{ ._, ._dqa, .mov, .tmp2x, .src1x, ._, ._ }, |
| | 184043 | .{ ._, .p_, .unpcklbw, .tmp2x, .tmp2x, ._, ._ }, |
| | 184044 | .{ ._, .p_, .unpcklwd, .tmp2x, .tmp2x, ._, ._ }, |
| | 184045 | .{ ._, .p_, .unpckldq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184046 | .{ ._, .p_, .unpcklqdq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184047 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184048 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184049 | .{ ._, .p_, .@"and", .tmp2x, .src0x, ._, ._ }, |
| | 184050 | .{ ._, .p_b, .cmpeq, .tmp2x, .src0x, ._, ._ }, |
| | 184051 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184052 | .{ ._, .p_q, .sub, .src0x, .tmp2x, ._, ._ }, |
| | 184053 | } }, |
| | 184054 | }, .{ |
| | 184055 | .required_features = .{ .avx2, null, null, null }, |
| | 184056 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184057 | .patterns = &.{ |
| | 184058 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184059 | }, |
| | 184060 | .extra_temps = .{ |
| | 184061 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184062 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184063 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184064 | .unused, |
| | 184065 | .unused, |
| | 184066 | .unused, |
| | 184067 | .unused, |
| | 184068 | .unused, |
| | 184069 | .unused, |
| | 184070 | .unused, |
| | 184071 | .unused, |
| | 184072 | }, |
| | 184073 | .each = .{ .once = &.{ |
| | 184074 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 184075 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184076 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184077 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184078 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184079 | } }, |
| | 184080 | }, .{ |
| | 184081 | .required_features = .{ .avx2, null, null, null }, |
| | 184082 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184083 | .patterns = &.{ |
| | 184084 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184085 | }, |
| | 184086 | .extra_temps = .{ |
| | 184087 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184088 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184089 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184090 | .unused, |
| | 184091 | .unused, |
| | 184092 | .unused, |
| | 184093 | .unused, |
| | 184094 | .unused, |
| | 184095 | .unused, |
| | 184096 | .unused, |
| | 184097 | .unused, |
| | 184098 | }, |
| | 184099 | .each = .{ .once = &.{ |
| | 184100 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 184101 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184102 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184103 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184104 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184105 | } }, |
| | 184106 | }, .{ |
| | 184107 | .required_features = .{ .avx2, null, null, null }, |
| | 184108 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184109 | .patterns = &.{ |
| | 184110 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184111 | }, |
| | 184112 | .extra_temps = .{ |
| | 184113 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184114 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184115 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184116 | .unused, |
| | 184117 | .unused, |
| | 184118 | .unused, |
| | 184119 | .unused, |
| | 184120 | .unused, |
| | 184121 | .unused, |
| | 184122 | .unused, |
| | 184123 | .unused, |
| | 184124 | }, |
| | 184125 | .each = .{ .once = &.{ |
| | 184126 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 184127 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184128 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184129 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184130 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184131 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184132 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184133 | } }, |
| | 184134 | }, .{ |
| | 184135 | .required_features = .{ .avx2, null, null, null }, |
| | 184136 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184137 | .patterns = &.{ |
| | 184138 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184139 | }, |
| | 184140 | .extra_temps = .{ |
| | 184141 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184142 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184143 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184144 | .unused, |
| | 184145 | .unused, |
| | 184146 | .unused, |
| | 184147 | .unused, |
| | 184148 | .unused, |
| | 184149 | .unused, |
| | 184150 | .unused, |
| | 184151 | .unused, |
| | 184152 | }, |
| | 184153 | .each = .{ .once = &.{ |
| | 184154 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 184155 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184156 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184157 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184158 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184159 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184160 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184161 | } }, |
| | 184162 | }, .{ |
| | 184163 | .required_features = .{ .avx, null, null, null }, |
| | 184164 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184165 | .patterns = &.{ |
| | 184166 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184167 | }, |
| | 184168 | .extra_temps = .{ |
| | 184169 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184170 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184171 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184172 | .unused, |
| | 184173 | .unused, |
| | 184174 | .unused, |
| | 184175 | .unused, |
| | 184176 | .unused, |
| | 184177 | .unused, |
| | 184178 | .unused, |
| | 184179 | .unused, |
| | 184180 | }, |
| | 184181 | .each = .{ .once = &.{ |
| | 184182 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184183 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 184184 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184185 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184186 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184187 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184188 | } }, |
| | 184189 | }, .{ |
| | 184190 | .required_features = .{ .avx, null, null, null }, |
| | 184191 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184192 | .patterns = &.{ |
| | 184193 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184194 | }, |
| | 184195 | .extra_temps = .{ |
| | 184196 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184197 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184198 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184199 | .unused, |
| | 184200 | .unused, |
| | 184201 | .unused, |
| | 184202 | .unused, |
| | 184203 | .unused, |
| | 184204 | .unused, |
| | 184205 | .unused, |
| | 184206 | .unused, |
| | 184207 | }, |
| | 184208 | .each = .{ .once = &.{ |
| | 184209 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184210 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 184211 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184212 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184213 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184214 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184215 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184216 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184217 | } }, |
| | 184218 | }, .{ |
| | 184219 | .required_features = .{ .ssse3, null, null, null }, |
| | 184220 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184221 | .patterns = &.{ |
| | 184222 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184223 | }, |
| | 184224 | .extra_temps = .{ |
| | 184225 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184226 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184227 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184228 | .unused, |
| | 184229 | .unused, |
| | 184230 | .unused, |
| | 184231 | .unused, |
| | 184232 | .unused, |
| | 184233 | .unused, |
| | 184234 | .unused, |
| | 184235 | .unused, |
| | 184236 | }, |
| | 184237 | .each = .{ .once = &.{ |
| | 184238 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 184239 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184240 | .{ ._, .p_b, .shuf, .src0x, .tmp2x, ._, ._ }, |
| | 184241 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184242 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184243 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184244 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184245 | } }, |
| | 184246 | }, .{ |
| | 184247 | .required_features = .{ .ssse3, null, null, null }, |
| | 184248 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184249 | .patterns = &.{ |
| | 184250 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_mut_sse, .none } }, |
| | 184251 | }, |
| | 184252 | .extra_temps = .{ |
| | 184253 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184254 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184255 | .unused, |
| | 184256 | .unused, |
| | 184257 | .unused, |
| | 184258 | .unused, |
| | 184259 | .unused, |
| | 184260 | .unused, |
| | 184261 | .unused, |
| | 184262 | .unused, |
| | 184263 | .unused, |
| | 184264 | }, |
| | 184265 | .each = .{ .once = &.{ |
| | 184266 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184267 | .{ ._, .p_b, .shuf, .src1x, .src0x, ._, ._ }, |
| | 184268 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184269 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184270 | .{ ._, .p_, .@"and", .src1x, .src0x, ._, ._ }, |
| | 184271 | .{ ._, .p_b, .cmpeq, .src1x, .src0x, ._, ._ }, |
| | 184272 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184273 | .{ ._, .p_b, .sub, .src0x, .src1x, ._, ._ }, |
| | 184274 | } }, |
| | 184275 | }, .{ |
| | 184276 | .required_features = .{ .sse2, null, null, null }, |
| | 184277 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184278 | .patterns = &.{ |
| | 184279 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184280 | }, |
| | 184281 | .extra_temps = .{ |
| | 184282 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184283 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184284 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184285 | .unused, |
| | 184286 | .unused, |
| | 184287 | .unused, |
| | 184288 | .unused, |
| | 184289 | .unused, |
| | 184290 | .unused, |
| | 184291 | .unused, |
| | 184292 | .unused, |
| | 184293 | }, |
| | 184294 | .each = .{ .once = &.{ |
| | 184295 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184296 | .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ }, |
| | 184297 | .{ ._, .p_, .unpcklwd, .src0x, .src0x, ._, ._ }, |
| | 184298 | .{ ._, .p_, .unpckldq, .src0x, .src0x, ._, ._ }, |
| | 184299 | .{ ._, .p_, .unpcklqdq, .src0x, .src0x, ._, ._ }, |
| | 184300 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184301 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184302 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184303 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184304 | } }, |
| | 184305 | }, .{ |
| | 184306 | .required_features = .{ .sse2, null, null, null }, |
| | 184307 | .src_constraints = .{ .{ .exact_bool_vec = 4 }, .{ .exact_bool_vec = 4 }, .any }, |
| | 184308 | .patterns = &.{ |
| | 184309 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184310 | }, |
| | 184311 | .extra_temps = .{ |
| | 184312 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 4 } } }, |
| | 184313 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184314 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184315 | .unused, |
| | 184316 | .unused, |
| | 184317 | .unused, |
| | 184318 | .unused, |
| | 184319 | .unused, |
| | 184320 | .unused, |
| | 184321 | .unused, |
| | 184322 | .unused, |
| | 184323 | }, |
| | 184324 | .each = .{ .once = &.{ |
| | 184325 | .{ ._, ._dqa, .mov, .tmp2x, .src1x, ._, ._ }, |
| | 184326 | .{ ._, .p_, .unpcklbw, .tmp2x, .tmp2x, ._, ._ }, |
| | 184327 | .{ ._, .p_, .unpcklwd, .tmp2x, .tmp2x, ._, ._ }, |
| | 184328 | .{ ._, .p_, .unpckldq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184329 | .{ ._, .p_, .unpcklqdq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184330 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184331 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184332 | .{ ._, .p_, .@"and", .tmp2x, .src0x, ._, ._ }, |
| | 184333 | .{ ._, .p_b, .cmpeq, .tmp2x, .src0x, ._, ._ }, |
| | 184334 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184335 | .{ ._, .p_b, .sub, .src0x, .tmp2x, ._, ._ }, |
| | 184336 | } }, |
| | 184337 | }, .{ |
| | 184338 | .required_features = .{ .avx2, null, null, null }, |
| | 184339 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184340 | .patterns = &.{ |
| | 184341 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184342 | }, |
| | 184343 | .extra_temps = .{ |
| | 184344 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184345 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184346 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184347 | .unused, |
| | 184348 | .unused, |
| | 184349 | .unused, |
| | 184350 | .unused, |
| | 184351 | .unused, |
| | 184352 | .unused, |
| | 184353 | .unused, |
| | 184354 | .unused, |
| | 184355 | }, |
| | 184356 | .each = .{ .once = &.{ |
| | 184357 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 184358 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184359 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184360 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184361 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184362 | } }, |
| | 184363 | }, .{ |
| | 184364 | .required_features = .{ .avx2, null, null, null }, |
| | 184365 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184366 | .patterns = &.{ |
| | 184367 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184368 | }, |
| | 184369 | .extra_temps = .{ |
| | 184370 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184371 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184372 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184373 | .unused, |
| | 184374 | .unused, |
| | 184375 | .unused, |
| | 184376 | .unused, |
| | 184377 | .unused, |
| | 184378 | .unused, |
| | 184379 | .unused, |
| | 184380 | .unused, |
| | 184381 | }, |
| | 184382 | .each = .{ .once = &.{ |
| | 184383 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 184384 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184385 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184386 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184387 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184388 | } }, |
| | 184389 | }, .{ |
| | 184390 | .required_features = .{ .avx2, null, null, null }, |
| | 184391 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184392 | .patterns = &.{ |
| | 184393 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184394 | }, |
| | 184395 | .extra_temps = .{ |
| | 184396 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184397 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184398 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184399 | .unused, |
| | 184400 | .unused, |
| | 184401 | .unused, |
| | 184402 | .unused, |
| | 184403 | .unused, |
| | 184404 | .unused, |
| | 184405 | .unused, |
| | 184406 | .unused, |
| | 184407 | }, |
| | 184408 | .each = .{ .once = &.{ |
| | 184409 | .{ ._, .vp_b, .broadcast, .src0x, .src1b, ._, ._ }, |
| | 184410 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184411 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184412 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184413 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184414 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184415 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184416 | } }, |
| | 184417 | }, .{ |
| | 184418 | .required_features = .{ .avx2, null, null, null }, |
| | 184419 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184420 | .patterns = &.{ |
| | 184421 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184422 | }, |
| | 184423 | .extra_temps = .{ |
| | 184424 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184425 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184426 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184427 | .unused, |
| | 184428 | .unused, |
| | 184429 | .unused, |
| | 184430 | .unused, |
| | 184431 | .unused, |
| | 184432 | .unused, |
| | 184433 | .unused, |
| | 184434 | .unused, |
| | 184435 | }, |
| | 184436 | .each = .{ .once = &.{ |
| | 184437 | .{ ._, .vp_b, .broadcast, .src0x, .src1x, ._, ._ }, |
| | 184438 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184439 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184440 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184441 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184442 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184443 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184444 | } }, |
| | 184445 | }, .{ |
| | 184446 | .required_features = .{ .avx, null, null, null }, |
| | 184447 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184448 | .patterns = &.{ |
| | 184449 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184450 | }, |
| | 184451 | .extra_temps = .{ |
| | 184452 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184453 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184454 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184455 | .unused, |
| | 184456 | .unused, |
| | 184457 | .unused, |
| | 184458 | .unused, |
| | 184459 | .unused, |
| | 184460 | .unused, |
| | 184461 | .unused, |
| | 184462 | .unused, |
| | 184463 | }, |
| | 184464 | .each = .{ .once = &.{ |
| | 184465 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184466 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 184467 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184468 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184469 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184470 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184471 | } }, |
| | 184472 | }, .{ |
| | 184473 | .required_features = .{ .avx, null, null, null }, |
| | 184474 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184475 | .patterns = &.{ |
| | 184476 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184477 | }, |
| | 184478 | .extra_temps = .{ |
| | 184479 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184480 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184481 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184482 | .unused, |
| | 184483 | .unused, |
| | 184484 | .unused, |
| | 184485 | .unused, |
| | 184486 | .unused, |
| | 184487 | .unused, |
| | 184488 | .unused, |
| | 184489 | .unused, |
| | 184490 | }, |
| | 184491 | .each = .{ .once = &.{ |
| | 184492 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184493 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .tmp2x, ._ }, |
| | 184494 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184495 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184496 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp2x, ._ }, |
| | 184497 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp2x, ._ }, |
| | 184498 | .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, |
| | 184499 | .{ ._, .vp_b, .sub, .src0x, .tmp2x, .src0x, ._ }, |
| | 184500 | } }, |
| | 184501 | }, .{ |
| | 184502 | .required_features = .{ .ssse3, null, null, null }, |
| | 184503 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184504 | .patterns = &.{ |
| | 184505 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184506 | }, |
| | 184507 | .extra_temps = .{ |
| | 184508 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184509 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184510 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184511 | .unused, |
| | 184512 | .unused, |
| | 184513 | .unused, |
| | 184514 | .unused, |
| | 184515 | .unused, |
| | 184516 | .unused, |
| | 184517 | .unused, |
| | 184518 | .unused, |
| | 184519 | }, |
| | 184520 | .each = .{ .once = &.{ |
| | 184521 | .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, |
| | 184522 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184523 | .{ ._, .p_b, .shuf, .src0x, .tmp2x, ._, ._ }, |
| | 184524 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184525 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184526 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184527 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184528 | } }, |
| | 184529 | }, .{ |
| | 184530 | .required_features = .{ .ssse3, null, null, null }, |
| | 184531 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184532 | .patterns = &.{ |
| | 184533 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_mut_sse, .none } }, |
| | 184534 | }, |
| | 184535 | .extra_temps = .{ |
| | 184536 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184537 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184538 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184539 | .unused, |
| | 184540 | .unused, |
| | 184541 | .unused, |
| | 184542 | .unused, |
| | 184543 | .unused, |
| | 184544 | .unused, |
| | 184545 | .unused, |
| | 184546 | .unused, |
| | 184547 | }, |
| | 184548 | .each = .{ .once = &.{ |
| | 184549 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184550 | .{ ._, .p_b, .shuf, .src1x, .src0x, ._, ._ }, |
| | 184551 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184552 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184553 | .{ ._, .p_, .@"and", .src1x, .src0x, ._, ._ }, |
| | 184554 | .{ ._, .p_b, .cmpeq, .src1x, .src0x, ._, ._ }, |
| | 184555 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184556 | .{ ._, .p_b, .sub, .src0x, .src1x, ._, ._ }, |
| | 184557 | } }, |
| | 184558 | }, .{ |
| | 184559 | .required_features = .{ .sse2, null, null, null }, |
| | 184560 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184561 | .patterns = &.{ |
| | 184562 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184563 | }, |
| | 184564 | .extra_temps = .{ |
| | 184565 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184566 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184567 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184568 | .unused, |
| | 184569 | .unused, |
| | 184570 | .unused, |
| | 184571 | .unused, |
| | 184572 | .unused, |
| | 184573 | .unused, |
| | 184574 | .unused, |
| | 184575 | .unused, |
| | 184576 | }, |
| | 184577 | .each = .{ .once = &.{ |
| | 184578 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184579 | .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ }, |
| | 184580 | .{ ._, .p_, .unpcklwd, .src0x, .src0x, ._, ._ }, |
| | 184581 | .{ ._, .p_, .unpckldq, .src0x, .src0x, ._, ._ }, |
| | 184582 | .{ ._, .p_, .unpcklqdq, .src0x, .src0x, ._, ._ }, |
| | 184583 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184584 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184585 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184586 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184587 | } }, |
| | 184588 | }, .{ |
| | 184589 | .required_features = .{ .sse2, null, null, null }, |
| | 184590 | .src_constraints = .{ .{ .exact_bool_vec = 8 }, .{ .exact_bool_vec = 8 }, .any }, |
| | 184591 | .patterns = &.{ |
| | 184592 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184593 | }, |
| | 184594 | .extra_temps = .{ |
| | 184595 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward, .smear = 2 } } }, |
| | 184596 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184597 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184598 | .unused, |
| | 184599 | .unused, |
| | 184600 | .unused, |
| | 184601 | .unused, |
| | 184602 | .unused, |
| | 184603 | .unused, |
| | 184604 | .unused, |
| | 184605 | .unused, |
| | 184606 | }, |
| | 184607 | .each = .{ .once = &.{ |
| | 184608 | .{ ._, ._dqa, .mov, .tmp2x, .src1x, ._, ._ }, |
| | 184609 | .{ ._, .p_, .unpcklbw, .tmp2x, .tmp2x, ._, ._ }, |
| | 184610 | .{ ._, .p_, .unpcklwd, .tmp2x, .tmp2x, ._, ._ }, |
| | 184611 | .{ ._, .p_, .unpckldq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184612 | .{ ._, .p_, .unpcklqdq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184613 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184614 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184615 | .{ ._, .p_, .@"and", .tmp2x, .src0x, ._, ._ }, |
| | 184616 | .{ ._, .p_b, .cmpeq, .tmp2x, .src0x, ._, ._ }, |
| | 184617 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184618 | .{ ._, .p_b, .sub, .src0x, .tmp2x, ._, ._ }, |
| | 184619 | } }, |
| | 184620 | }, .{ |
| | 184621 | .required_features = .{ .avx2, null, null, null }, |
| | 184622 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184623 | .patterns = &.{ |
| | 184624 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184625 | }, |
| | 184626 | .extra_temps = .{ |
| | 184627 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184628 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184629 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184630 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184631 | .unused, |
| | 184632 | .unused, |
| | 184633 | .unused, |
| | 184634 | .unused, |
| | 184635 | .unused, |
| | 184636 | .unused, |
| | 184637 | .unused, |
| | 184638 | }, |
| | 184639 | .each = .{ .once = &.{ |
| | 184640 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184641 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lea(.tmp2x), ._ }, |
| | 184642 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184643 | .{ ._, .vp_q, .broadcast, .tmp3x, .lea(.tmp2q), ._, ._ }, |
| | 184644 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp3x, ._ }, |
| | 184645 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp3x, ._ }, |
| | 184646 | } }, |
| | 184647 | }, .{ |
| | 184648 | .required_features = .{ .avx2, null, null, null }, |
| | 184649 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184650 | .patterns = &.{ |
| | 184651 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184652 | }, |
| | 184653 | .extra_temps = .{ |
| | 184654 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184655 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184656 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184657 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184658 | .unused, |
| | 184659 | .unused, |
| | 184660 | .unused, |
| | 184661 | .unused, |
| | 184662 | .unused, |
| | 184663 | .unused, |
| | 184664 | .unused, |
| | 184665 | }, |
| | 184666 | .each = .{ .once = &.{ |
| | 184667 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184668 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lea(.tmp2x), ._ }, |
| | 184669 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184670 | .{ ._, .vp_q, .broadcast, .tmp3x, .lea(.tmp2q), ._, ._ }, |
| | 184671 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp3x, ._ }, |
| | 184672 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp3x, ._ }, |
| | 184673 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| | 184674 | .{ ._, .vp_b, .sub, .src0x, .tmp3x, .src0x, ._ }, |
| | 184675 | } }, |
| | 184676 | }, .{ |
| | 184677 | .required_features = .{ .avx, null, null, null }, |
| | 184678 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184679 | .patterns = &.{ |
| | 184680 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184681 | }, |
| | 184682 | .extra_temps = .{ |
| | 184683 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184684 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184685 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184686 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184687 | .unused, |
| | 184688 | .unused, |
| | 184689 | .unused, |
| | 184690 | .unused, |
| | 184691 | .unused, |
| | 184692 | .unused, |
| | 184693 | .unused, |
| | 184694 | }, |
| | 184695 | .each = .{ .once = &.{ |
| | 184696 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184697 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lea(.tmp2x), ._ }, |
| | 184698 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184699 | .{ ._, .v_, .movddup, .tmp3x, .lea(.tmp2q), ._, ._ }, |
| | 184700 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp3x, ._ }, |
| | 184701 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp3x, ._ }, |
| | 184702 | } }, |
| | 184703 | }, .{ |
| | 184704 | .required_features = .{ .avx, null, null, null }, |
| | 184705 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184706 | .patterns = &.{ |
| | 184707 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184708 | }, |
| | 184709 | .extra_temps = .{ |
| | 184710 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184711 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184712 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184713 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| | 184714 | .unused, |
| | 184715 | .unused, |
| | 184716 | .unused, |
| | 184717 | .unused, |
| | 184718 | .unused, |
| | 184719 | .unused, |
| | 184720 | .unused, |
| | 184721 | }, |
| | 184722 | .each = .{ .once = &.{ |
| | 184723 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184724 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lea(.tmp2x), ._ }, |
| | 184725 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184726 | .{ ._, .v_, .movddup, .tmp3x, .lea(.tmp2q), ._, ._ }, |
| | 184727 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp3x, ._ }, |
| | 184728 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp3x, ._ }, |
| | 184729 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, |
| | 184730 | .{ ._, .vp_b, .sub, .src0x, .tmp3x, .src0x, ._ }, |
| | 184731 | } }, |
| | 184732 | }, .{ |
| | 184733 | .required_features = .{ .ssse3, null, null, null }, |
| | 184734 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184735 | .patterns = &.{ |
| | 184736 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184737 | }, |
| | 184738 | .extra_temps = .{ |
| | 184739 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184740 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184741 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184742 | .{ .type = .usize, .kind = .{ .rc = .sse } }, |
| | 184743 | .unused, |
| | 184744 | .unused, |
| | 184745 | .unused, |
| | 184746 | .unused, |
| | 184747 | .unused, |
| | 184748 | .unused, |
| | 184749 | .unused, |
| | 184750 | }, |
| | 184751 | .each = .{ .once = &.{ |
| | 184752 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184753 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184754 | .{ ._, .p_b, .shuf, .src0x, .lea(.tmp2x), ._, ._ }, |
| | 184755 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184756 | .{ ._, ._, .movddup, .tmp3x, .lea(.tmp2q), ._, ._ }, |
| | 184757 | .{ ._, .p_, .@"and", .src0x, .tmp3x, ._, ._ }, |
| | 184758 | .{ ._, .p_b, .cmpeq, .src0x, .tmp3x, ._, ._ }, |
| | 184759 | } }, |
| | 184760 | }, .{ |
| | 184761 | .required_features = .{ .ssse3, null, null, null }, |
| | 184762 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184763 | .patterns = &.{ |
| | 184764 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_mut_sse, .none } }, |
| | 184765 | }, |
| | 184766 | .extra_temps = .{ |
| | 184767 | .{ .type = .vector_16_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .word, .smear = 8 } } }, |
| | 184768 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184769 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184770 | .unused, |
| | 184771 | .unused, |
| | 184772 | .unused, |
| | 184773 | .unused, |
| | 184774 | .unused, |
| | 184775 | .unused, |
| | 184776 | .unused, |
| | 184777 | .unused, |
| | 184778 | }, |
| | 184779 | .each = .{ .once = &.{ |
| | 184780 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184781 | .{ ._, .p_b, .shuf, .src1x, .lea(.tmp2x), ._, ._ }, |
| | 184782 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184783 | .{ ._, ._, .movddup, .src0x, .lea(.tmp2q), ._, ._ }, |
| | 184784 | .{ ._, .p_, .@"and", .src1x, .src0x, ._, ._ }, |
| | 184785 | .{ ._, .p_b, .cmpeq, .src1x, .src0x, ._, ._ }, |
| | 184786 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184787 | .{ ._, .p_b, .sub, .src0x, .src1x, ._, ._ }, |
| | 184788 | } }, |
| | 184789 | }, .{ |
| | 184790 | .required_features = .{ .sse3, null, null, null }, |
| | 184791 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184792 | .patterns = &.{ |
| | 184793 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184794 | }, |
| | 184795 | .extra_temps = .{ |
| | 184796 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184797 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184798 | .{ .type = .usize, .kind = .{ .rc = .sse } }, |
| | 184799 | .unused, |
| | 184800 | .unused, |
| | 184801 | .unused, |
| | 184802 | .unused, |
| | 184803 | .unused, |
| | 184804 | .unused, |
| | 184805 | .unused, |
| | 184806 | .unused, |
| | 184807 | }, |
| | 184808 | .each = .{ .once = &.{ |
| | 184809 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184810 | .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ }, |
| | 184811 | .{ ._, .p_, .unpcklwd, .src0x, .src0x, ._, ._ }, |
| | 184812 | .{ ._, .p_, .unpckldq, .src0x, .src0x, ._, ._ }, |
| | 184813 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184814 | .{ ._, ._, .movddup, .tmp2x, .lea(.tmp1q), ._, ._ }, |
| | 184815 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184816 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184817 | } }, |
| | 184818 | }, .{ |
| | 184819 | .required_features = .{ .sse3, null, null, null }, |
| | 184820 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184821 | .patterns = &.{ |
| | 184822 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184823 | }, |
| | 184824 | .extra_temps = .{ |
| | 184825 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184826 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184827 | .{ .type = .usize, .kind = .{ .rc = .sse } }, |
| | 184828 | .unused, |
| | 184829 | .unused, |
| | 184830 | .unused, |
| | 184831 | .unused, |
| | 184832 | .unused, |
| | 184833 | .unused, |
| | 184834 | .unused, |
| | 184835 | .unused, |
| | 184836 | }, |
| | 184837 | .each = .{ .once = &.{ |
| | 184838 | .{ ._, ._dqa, .mov, .tmp2x, .src1x, ._, ._ }, |
| | 184839 | .{ ._, .p_, .unpcklbw, .tmp2x, .tmp2x, ._, ._ }, |
| | 184840 | .{ ._, .p_, .unpcklwd, .tmp2x, .tmp2x, ._, ._ }, |
| | 184841 | .{ ._, .p_, .unpckldq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184842 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184843 | .{ ._, ._, .movddup, .src0x, .lea(.tmp1q), ._, ._ }, |
| | 184844 | .{ ._, .p_, .@"and", .tmp2x, .src0x, ._, ._ }, |
| | 184845 | .{ ._, .p_b, .cmpeq, .tmp2x, .src0x, ._, ._ }, |
| | 184846 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184847 | .{ ._, .p_b, .sub, .src0x, .tmp2x, ._, ._ }, |
| | 184848 | } }, |
| | 184849 | }, .{ |
| | 184850 | .required_features = .{ .sse2, null, null, null }, |
| | 184851 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184852 | .patterns = &.{ |
| | 184853 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184854 | }, |
| | 184855 | .extra_temps = .{ |
| | 184856 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184857 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184858 | .{ .type = .usize, .kind = .{ .rc = .sse } }, |
| | 184859 | .unused, |
| | 184860 | .unused, |
| | 184861 | .unused, |
| | 184862 | .unused, |
| | 184863 | .unused, |
| | 184864 | .unused, |
| | 184865 | .unused, |
| | 184866 | .unused, |
| | 184867 | }, |
| | 184868 | .each = .{ .once = &.{ |
| | 184869 | .{ ._, ._dqa, .mov, .src0x, .src1x, ._, ._ }, |
| | 184870 | .{ ._, .p_, .unpcklbw, .src0x, .src0x, ._, ._ }, |
| | 184871 | .{ ._, .p_, .unpcklwd, .src0x, .src0x, ._, ._ }, |
| | 184872 | .{ ._, .p_, .unpckldq, .src0x, .src0x, ._, ._ }, |
| | 184873 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184874 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp1x), ._, ._ }, |
| | 184875 | .{ ._, .p_, .@"and", .src0x, .tmp2x, ._, ._ }, |
| | 184876 | .{ ._, .p_b, .cmpeq, .src0x, .tmp2x, ._, ._ }, |
| | 184877 | } }, |
| | 184878 | }, .{ |
| | 184879 | .required_features = .{ .sse2, null, null, null }, |
| | 184880 | .src_constraints = .{ .{ .exact_bool_vec = 16 }, .{ .exact_bool_vec = 16 }, .any }, |
| | 184881 | .patterns = &.{ |
| | 184882 | .{ .src = .{ .{ .reg_mask = .{ .size = .xword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184883 | }, |
| | 184884 | .extra_temps = .{ |
| | 184885 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184886 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184887 | .{ .type = .usize, .kind = .{ .rc = .sse } }, |
| | 184888 | .unused, |
| | 184889 | .unused, |
| | 184890 | .unused, |
| | 184891 | .unused, |
| | 184892 | .unused, |
| | 184893 | .unused, |
| | 184894 | .unused, |
| | 184895 | .unused, |
| | 184896 | }, |
| | 184897 | .each = .{ .once = &.{ |
| | 184898 | .{ ._, ._dqa, .mov, .tmp2x, .src1x, ._, ._ }, |
| | 184899 | .{ ._, .p_, .unpcklbw, .tmp2x, .tmp2x, ._, ._ }, |
| | 184900 | .{ ._, .p_, .unpcklwd, .tmp2x, .tmp2x, ._, ._ }, |
| | 184901 | .{ ._, .p_, .unpckldq, .tmp2x, .tmp2x, ._, ._ }, |
| | 184902 | .{ ._, ._, .lea, .tmp1p, .mem(.tmp0), ._, ._ }, |
| | 184903 | .{ ._, ._dqa, .mov, .src0x, .lea(.tmp1x), ._, ._ }, |
| | 184904 | .{ ._, .p_, .@"and", .tmp2x, .src0x, ._, ._ }, |
| | 184905 | .{ ._, .p_b, .cmpeq, .tmp2x, .src0x, ._, ._ }, |
| | 184906 | .{ ._, .p_, .xor, .src0x, .src0x, ._, ._ }, |
| | 184907 | .{ ._, .p_b, .sub, .src0x, .tmp2x, ._, ._ }, |
| | 184908 | } }, |
| | 184909 | }, .{ |
| | 184910 | .required_features = .{ .avx2, null, null, null }, |
| | 184911 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 184912 | .patterns = &.{ |
| | 184913 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_sign_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184914 | }, |
| | 184915 | .extra_temps = .{ |
| | 184916 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 184917 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184918 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184919 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 184920 | .unused, |
| | 184921 | .unused, |
| | 184922 | .unused, |
| | 184923 | .unused, |
| | 184924 | .unused, |
| | 184925 | .unused, |
| | 184926 | .unused, |
| | 184927 | }, |
| | 184928 | .each = .{ .once = &.{ |
| | 184929 | .{ ._, .vp_d, .broadcast, .src0y, .src1d, ._, ._ }, |
| | 184930 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184931 | .{ ._, .vp_b, .shuf, .src0y, .src0y, .lea(.tmp2y), ._ }, |
| | 184932 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184933 | .{ ._, .vp_q, .broadcast, .tmp3y, .lea(.tmp2q), ._, ._ }, |
| | 184934 | .{ ._, .vp_, .@"and", .src0y, .src0y, .tmp3y, ._ }, |
| | 184935 | .{ ._, .vp_b, .cmpeq, .src0y, .src0y, .tmp3y, ._ }, |
| | 184936 | } }, |
| | 184937 | }, .{ |
| | 184938 | .required_features = .{ .avx2, null, null, null }, |
| | 184939 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 184940 | .patterns = &.{ |
| | 184941 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 184942 | }, |
| | 184943 | .extra_temps = .{ |
| | 184944 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 184945 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184946 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184947 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 184948 | .unused, |
| | 184949 | .unused, |
| | 184950 | .unused, |
| | 184951 | .unused, |
| | 184952 | .unused, |
| | 184953 | .unused, |
| | 184954 | .unused, |
| | 184955 | }, |
| | 184956 | .each = .{ .once = &.{ |
| | 184957 | .{ ._, .vp_d, .broadcast, .src0y, .src1x, ._, ._ }, |
| | 184958 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184959 | .{ ._, .vp_b, .shuf, .src0y, .src0y, .lea(.tmp2y), ._ }, |
| | 184960 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184961 | .{ ._, .vp_q, .broadcast, .tmp3y, .lea(.tmp2q), ._, ._ }, |
| | 184962 | .{ ._, .vp_, .@"and", .src0y, .src0y, .tmp3y, ._ }, |
| | 184963 | .{ ._, .vp_b, .cmpeq, .src0y, .src0y, .tmp3y, ._ }, |
| | 184964 | } }, |
| | 184965 | }, .{ |
| | 184966 | .required_features = .{ .avx2, null, null, null }, |
| | 184967 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 184968 | .patterns = &.{ |
| | 184969 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_zero_extend, .is = .uninverted } }, .mem, .none } }, |
| | 184970 | }, |
| | 184971 | .extra_temps = .{ |
| | 184972 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 184973 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 184974 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 184975 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 184976 | .unused, |
| | 184977 | .unused, |
| | 184978 | .unused, |
| | 184979 | .unused, |
| | 184980 | .unused, |
| | 184981 | .unused, |
| | 184982 | .unused, |
| | 184983 | }, |
| | 184984 | .each = .{ .once = &.{ |
| | 184985 | .{ ._, .vp_d, .broadcast, .src0y, .src1d, ._, ._ }, |
| | 184986 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 184987 | .{ ._, .vp_b, .shuf, .src0y, .src0y, .lea(.tmp2y), ._ }, |
| | 184988 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 184989 | .{ ._, .vp_q, .broadcast, .tmp3y, .lea(.tmp2q), ._, ._ }, |
| | 184990 | .{ ._, .vp_, .@"and", .src0y, .src0y, .tmp3y, ._ }, |
| | 184991 | .{ ._, .vp_b, .cmpeq, .src0y, .src0y, .tmp3y, ._ }, |
| | 184992 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp3y, ._ }, |
| | 184993 | .{ ._, .vp_b, .sub, .src0y, .tmp3y, .src0y, ._ }, |
| | 184994 | } }, |
| | 184995 | }, .{ |
| | 184996 | .required_features = .{ .avx2, null, null, null }, |
| | 184997 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 184998 | .patterns = &.{ |
| | 184999 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 185000 | }, |
| | 185001 | .extra_temps = .{ |
| | 185002 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 185003 | .{ .type = .vector_8_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 185004 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 185005 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 185006 | .unused, |
| | 185007 | .unused, |
| | 185008 | .unused, |
| | 185009 | .unused, |
| | 185010 | .unused, |
| | 185011 | .unused, |
| | 185012 | .unused, |
| | 185013 | }, |
| | 185014 | .each = .{ .once = &.{ |
| | 185015 | .{ ._, .vp_d, .broadcast, .src0y, .src1x, ._, ._ }, |
| | 185016 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 185017 | .{ ._, .vp_b, .shuf, .src0y, .src0y, .lea(.tmp2y), ._ }, |
| | 185018 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 185019 | .{ ._, .vp_q, .broadcast, .tmp3y, .lea(.tmp2q), ._, ._ }, |
| | 185020 | .{ ._, .vp_, .@"and", .src0y, .src0y, .tmp3y, ._ }, |
| | 185021 | .{ ._, .vp_b, .cmpeq, .src0y, .src0y, .tmp3y, ._ }, |
| | 185022 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp3y, ._ }, |
| | 185023 | .{ ._, .vp_b, .sub, .src0y, .tmp3y, .src0y, ._ }, |
| | 185024 | } }, |
| | 185025 | }, .{ |
| | 185026 | .required_features = .{ .avx, null, null, null }, |
| | 185027 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 185028 | .patterns = &.{ |
| | 185029 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_sign_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 185030 | }, |
| | 185031 | .extra_temps = .{ |
| | 185032 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 185033 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 185034 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 185035 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 185036 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 185037 | .unused, |
| | 185038 | .unused, |
| | 185039 | .unused, |
| | 185040 | .unused, |
| | 185041 | .unused, |
| | 185042 | .unused, |
| | 185043 | }, |
| | 185044 | .each = .{ .once = &.{ |
| | 185045 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 185046 | .{ ._, .vp_b, .shuf, .tmp3x, .src1x, .lea(.tmp2y), ._ }, |
| | 185047 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lead(.tmp2y, 16), ._ }, |
| | 185048 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 185049 | .{ ._, .v_dqa, .mov, .tmp4x, .lea(.tmp2x), ._, ._ }, |
| | 185050 | .{ ._, .vp_, .@"and", .tmp3x, .tmp3x, .tmp4x, ._ }, |
| | 185051 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp4x, ._ }, |
| | 185052 | .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .tmp4x, ._ }, |
| | 185053 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp4x, ._ }, |
| | 185054 | .{ ._, .v_f128, .insert, .src0y, .tmp3y, .src0x, .ui(1) }, |
| | 185055 | } }, |
| | 185056 | }, .{ |
| | 185057 | .required_features = .{ .avx, null, null, null }, |
| | 185058 | .src_constraints = .{ .{ .exact_bool_vec = 32 }, .{ .exact_bool_vec = 32 }, .any }, |
| | 185059 | .patterns = &.{ |
| | 185060 | .{ .src = .{ .{ .reg_mask = .{ .size = .yword, .kind = .from_zero_extend, .is = .uninverted } }, .to_sse, .none } }, |
| | 185061 | }, |
| | 185062 | .extra_temps = .{ |
| | 185063 | .{ .type = .vector_32_u8, .kind = .{ .pshufb_bytes_mem = .{ .direction = .forward, .size = .dword, .smear = 8 } } }, |
| | 185064 | .{ .type = .vector_16_u8, .kind = .{ .bits_mem = .{ .direction = .forward } } }, |
| | 185065 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| | 185066 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 185067 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| | 185068 | .unused, |
| | 185069 | .unused, |
| | 185070 | .unused, |
| | 185071 | .unused, |
| | 185072 | .unused, |
| | 185073 | .unused, |
| | 185074 | }, |
| | 185075 | .each = .{ .once = &.{ |
| | 185076 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ }, |
| | 185077 | .{ ._, .vp_b, .shuf, .tmp3x, .src1x, .lea(.tmp2y), ._ }, |
| | 185078 | .{ ._, .vp_b, .shuf, .src0x, .src1x, .lead(.tmp2y, 16), ._ }, |
| | 185079 | .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ }, |
| | 185080 | .{ ._, .v_dqa, .mov, .tmp4x, .lea(.tmp2x), ._, ._ }, |
| | 185081 | .{ ._, .vp_, .@"and", .tmp3x, .tmp3x, .tmp4x, ._ }, |
| | 185082 | .{ ._, .vp_, .@"and", .src0x, .src0x, .tmp4x, ._ }, |
| | 185083 | .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .tmp4x, ._ }, |
| | 185084 | .{ ._, .vp_b, .cmpeq, .src0x, .src0x, .tmp4x, ._ }, |
| | 185085 | .{ ._, .vp_, .xor, .tmp4x, .tmp4x, .tmp4x, ._ }, |
| | 185086 | .{ ._, .vp_b, .sub, .tmp3x, .tmp4x, .tmp3x, ._ }, |
| | 185087 | .{ ._, .vp_b, .sub, .src0x, .tmp4x, .src0x, ._ }, |
| | 185088 | .{ ._, .v_f128, .insert, .src0y, .tmp3y, .src0x, .ui(1) }, |
| | 185089 | } }, |
| | 185090 | } }); |
| | 185091 | dst.*, src.* = ops; |
| | 185092 | } |
| | 185093 | |
| 183505 | fn wrapInt(temp: *Temp, cg: *CodeGen) Select.Error!void { | 185094 | fn wrapInt(temp: *Temp, cg: *CodeGen) Select.Error!void { |
| 183506 | var ops: [1]Temp = .{temp.*}; | 185095 | var ops: [1]Temp = .{temp.*}; |
| 183507 | var res: [1]Temp = undefined; | 185096 | var res: [1]Temp = undefined; |
| ... | @@ -188030,6 +189619,7 @@ const Temp = struct { | ... | @@ -188030,6 +189619,7 @@ const Temp = struct { |
| 188030 | .unreach, | 189619 | .unreach, |
| 188031 | .dead, | 189620 | .dead, |
| 188032 | .indirect_load_frame, | 189621 | .indirect_load_frame, |
| | 189622 | .indirect_mask, |
| 188033 | .register_tee, | 189623 | .register_tee, |
| 188034 | .elementwise_gpr, | 189624 | .elementwise_gpr, |
| 188035 | .elementwise_sse, | 189625 | .elementwise_sse, |
| ... | @@ -188885,25 +190475,60 @@ const Select = struct { | ... | @@ -188885,25 +190475,60 @@ const Select = struct { |
| 188885 | to_sse, | 190475 | to_sse, |
| 188886 | mut_sse, | 190476 | mut_sse, |
| 188887 | to_mut_sse, | 190477 | to_mut_sse, |
| 188888 | reg_mask: RegMaskSpec, | 190478 | reg_mask: struct { |
| 188889 | all_reg_mask: RegMaskSpec, | | |
| 188890 | | | |
| 188891 | const RegMaskSpec = struct { | | |
| 188892 | size: Memory.Size, | 190479 | size: Memory.Size, |
| | 190480 | kind: enum { |
| | 190481 | any, |
| | 190482 | lsb, |
| | 190483 | msb, |
| | 190484 | zero_extend, |
| | 190485 | sign_extend, |
| | 190486 | from_lsb, |
| | 190487 | from_msb, |
| | 190488 | from_zero_extend, |
| | 190489 | from_sign_extend, |
| | 190490 | }, |
| 188893 | is: enum { | 190491 | is: enum { |
| 188894 | any, | 190492 | any, |
| 188895 | uninverted, | 190493 | uninverted, |
| 188896 | inverted, | 190494 | inverted, |
| 188897 | | | |
| 188898 | fn matches(is: @This(), inverted: bool) bool { | | |
| 188899 | return switch (is) { | | |
| 188900 | .any => true, | | |
| 188901 | .uninverted => !inverted, | | |
| 188902 | .inverted => inverted, | | |
| 188903 | }; | | |
| 188904 | } | | |
| 188905 | } = .any, | 190495 | } = .any, |
| 188906 | }; | 190496 | |
| | 190497 | fn matches(spec: @This(), info: MaskInfo) bool { |
| | 190498 | return switch (spec.kind) { |
| | 190499 | .any => true, |
| | 190500 | .lsb => switch (info.kind) { |
| | 190501 | .lsb, .msb, .zero_extend, .sign_extend => true, |
| | 190502 | }, |
| | 190503 | .msb => switch (info.kind) { |
| | 190504 | .lsb, .zero_extend => false, |
| | 190505 | .msb, .sign_extend => true, |
| | 190506 | }, |
| | 190507 | .zero_extend => info.kind == .zero_extend, |
| | 190508 | .sign_extend => info.kind == .sign_extend, |
| | 190509 | .from_lsb => switch (info.kind) { |
| | 190510 | .lsb => true, |
| | 190511 | .msb, .zero_extend, .sign_extend => false, |
| | 190512 | }, |
| | 190513 | .from_msb => switch (info.kind) { |
| | 190514 | .lsb, .msb => true, |
| | 190515 | .zero_extend, .sign_extend => false, |
| | 190516 | }, |
| | 190517 | .from_sign_extend => switch (info.kind) { |
| | 190518 | .lsb, .msb, .sign_extend => true, |
| | 190519 | .zero_extend => false, |
| | 190520 | }, |
| | 190521 | .from_zero_extend => switch (info.kind) { |
| | 190522 | .lsb, .zero_extend => true, |
| | 190523 | .msb, .sign_extend => false, |
| | 190524 | }, |
| | 190525 | } and switch (spec.is) { |
| | 190526 | .any => true, |
| | 190527 | .uninverted => !info.inverted, |
| | 190528 | .inverted => info.inverted, |
| | 190529 | }; |
| | 190530 | } |
| | 190531 | }, |
| 188907 | | 190532 | |
| 188908 | fn matches(src: Src, temp: Temp, cg: *CodeGen) bool { | 190533 | fn matches(src: Src, temp: Temp, cg: *CodeGen) bool { |
| 188909 | return switch (src) { | 190534 | return switch (src) { |
| ... | @@ -188988,13 +190613,7 @@ const Select = struct { | ... | @@ -188988,13 +190613,7 @@ const Select = struct { |
| 188988 | .reg_mask => |mask_spec| switch (temp.tracking(cg).short) { | 190613 | .reg_mask => |mask_spec| switch (temp.tracking(cg).short) { |
| 188989 | .register_mask => |reg_mask| mask_spec.size.bitSize(cg.target) >= | 190614 | .register_mask => |reg_mask| mask_spec.size.bitSize(cg.target) >= |
| 188990 | reg_mask.info.scalar.bitSize(cg.target) * temp.typeOf(cg).vectorLen(cg.pt.zcu) and | 190615 | reg_mask.info.scalar.bitSize(cg.target) * temp.typeOf(cg).vectorLen(cg.pt.zcu) and |
| 188991 | mask_spec.is.matches(reg_mask.info.inverted), | 190616 | mask_spec.matches(reg_mask.info), |
| 188992 | else => false, | | |
| 188993 | }, | | |
| 188994 | .all_reg_mask => |mask_spec| switch (temp.tracking(cg).short) { | | |
| 188995 | .register_mask => |reg_mask| mask_spec.size.bitSize(cg.target) == | | |
| 188996 | reg_mask.info.scalar.bitSize(cg.target) * temp.typeOf(cg).vectorLen(cg.pt.zcu) and | | |
| 188997 | reg_mask.info.kind == .all and mask_spec.is.matches(reg_mask.info.inverted), | | |
| 188998 | else => false, | 190617 | else => false, |
| 188999 | }, | 190618 | }, |
| 189000 | }; | 190619 | }; |
| ... | @@ -189002,7 +190621,7 @@ const Select = struct { | ... | @@ -189002,7 +190621,7 @@ const Select = struct { |
| 189002 | | 190621 | |
| 189003 | fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool { | 190622 | fn convert(src: Src, temp: *Temp, cg: *CodeGen) InnerError!bool { |
| 189004 | return switch (src) { | 190623 | return switch (src) { |
| 189005 | .none, .any, .imm, .imm8, .imm16, .imm32, .simm32, .reg_mask, .all_reg_mask => false, | 190624 | .none, .any, .imm, .imm8, .imm16, .imm32, .simm32, .reg_mask => false, |
| 189006 | .mem, .to_mem => try temp.toBase(false, cg), | 190625 | .mem, .to_mem => try temp.toBase(false, cg), |
| 189007 | .mut_mem, .to_mut_mem => try temp.toBase(true, cg), | 190626 | .mut_mem, .to_mut_mem => try temp.toBase(true, cg), |
| 189008 | .to_reg => |reg| try temp.toReg(reg, cg), | 190627 | .to_reg => |reg| try temp.toReg(reg, cg), |
| ... | @@ -189073,8 +190692,8 @@ const Select = struct { | ... | @@ -189073,8 +190692,8 @@ const Select = struct { |
| 189073 | pand_trunc_mem: struct { from: Memory.Size, to: Memory.Size }, | 190692 | pand_trunc_mem: struct { from: Memory.Size, to: Memory.Size }, |
| 189074 | pand_mask_mem: struct { ref: Select.Operand.Ref, invert: bool = false }, | 190693 | pand_mask_mem: struct { ref: Select.Operand.Ref, invert: bool = false }, |
| 189075 | ptest_mask_mem: Select.Operand.Ref, | 190694 | ptest_mask_mem: Select.Operand.Ref, |
| 189076 | pshufb_bswap_mem: struct { repeat: u4 = 1, size: Memory.Size, smear: u4 = 1 }, | 190695 | pshufb_bytes_mem: struct { direction: Direction, repeat: u4 = 1, size: Memory.Size, smear: u4 = 1 }, |
| 189077 | bits_mem: enum { forward, reverse }, | 190696 | bits_mem: struct { direction: Direction, smear: u4 = 1 }, |
| 189078 | splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } }, | 190697 | splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } }, |
| 189079 | splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 }, | 190698 | splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 }, |
| 189080 | frame: FrameIndex, | 190699 | frame: FrameIndex, |
| ... | @@ -189109,6 +190728,8 @@ const Select = struct { | ... | @@ -189109,6 +190728,8 @@ const Select = struct { |
| 189109 | } | 190728 | } |
| 189110 | }; | 190729 | }; |
| 189111 | | 190730 | |
| | 190731 | const Direction = enum { forward, reverse }; |
| | 190732 | |
| 189112 | fn lock(kind: Kind, cg: *CodeGen) ![2]?RegisterLock { | 190733 | fn lock(kind: Kind, cg: *CodeGen) ![2]?RegisterLock { |
| 189113 | var reg_locks: [2]?RegisterLock = @splat(null); | 190734 | var reg_locks: [2]?RegisterLock = @splat(null); |
| 189114 | const regs: [2]Register = switch (kind) { | 190735 | const regs: [2]Register = switch (kind) { |
| ... | @@ -189430,11 +191051,15 @@ const Select = struct { | ... | @@ -189430,11 +191051,15 @@ const Select = struct { |
| 189430 | var index: u7 = 0; | 191051 | var index: u7 = 0; |
| 189431 | for (0..@intCast(ref_ty.vectorLen(zcu))) |_| { | 191052 | for (0..@intCast(ref_ty.vectorLen(zcu))) |_| { |
| 189432 | switch (mask_info.kind) { | 191053 | switch (mask_info.kind) { |
| 189433 | .sign => { | 191054 | .lsb, .zero_extend => { |
| | 191055 | elems[index] = 1; |
| | 191056 | @memset(elems[index + 1 ..][0 .. elem_bytes - 1], std.math.minInt(u8)); |
| | 191057 | }, |
| | 191058 | .msb => { |
| 189434 | @memset(elems[index..][0 .. elem_bytes - 1], std.math.minInt(u8)); | 191059 | @memset(elems[index..][0 .. elem_bytes - 1], std.math.minInt(u8)); |
| 189435 | elems[index + elem_bytes - 1] = @bitCast(@as(i8, std.math.minInt(i8))); | 191060 | elems[index + elem_bytes - 1] = @bitCast(@as(i8, std.math.minInt(i8))); |
| 189436 | }, | 191061 | }, |
| 189437 | .all => @memset(elems[index..][0..elem_bytes], std.math.maxInt(u8)), | 191062 | .sign_extend => @memset(elems[index..][0..elem_bytes], std.math.maxInt(u8)), |
| 189438 | } | 191063 | } |
| 189439 | index += elem_bytes; | 191064 | index += elem_bytes; |
| 189440 | } | 191065 | } |
| ... | @@ -189443,31 +191068,40 @@ const Select = struct { | ... | @@ -189443,31 +191068,40 @@ const Select = struct { |
| 189443 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, | 191068 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, |
| 189444 | } }))), true }; | 191069 | } }))), true }; |
| 189445 | }, | 191070 | }, |
| 189446 | .pshufb_bswap_mem => |bswap_spec| { | 191071 | .pshufb_bytes_mem => |bytes_spec| { |
| 189447 | const zcu = pt.zcu; | 191072 | const zcu = pt.zcu; |
| 189448 | assert(spec.type.isVector(zcu) and spec.type.childType(zcu).toIntern() == .u8_type); | 191073 | assert(spec.type.isVector(zcu) and spec.type.childType(zcu).toIntern() == .u8_type); |
| 189449 | var elem_buf: [32]u8 = @splat(1 << 7); | 191074 | var elem_buf: [32]u8 = @splat(1 << 7); |
| 189450 | const elems = elem_buf[0..spec.type.vectorLen(zcu)]; | 191075 | const elems = elem_buf[0..spec.type.vectorLen(zcu)]; |
| 189451 | const len: usize = @intCast(@divExact(bswap_spec.size.bitSize(cg.target), 8)); | 191076 | const len: usize = @intCast(@divExact(bytes_spec.size.bitSize(cg.target), 8)); |
| 189452 | var to_index: u6 = 0; | 191077 | var to_index: u6 = 0; |
| 189453 | for (0..bswap_spec.repeat) |_| for (0..len) |from_index| { | 191078 | for (0..bytes_spec.repeat) |_| for (0..len) |from_index| { |
| 189454 | @memset(elems[to_index..][0..bswap_spec.smear], @intCast(len - 1 - from_index)); | 191079 | @memset(elems[to_index..][0..bytes_spec.smear], @intCast(switch (bytes_spec.direction) { |
| 189455 | to_index += bswap_spec.smear; | 191080 | .forward => from_index, |
| | 191081 | .reverse => len - 1 - from_index, |
| | 191082 | })); |
| | 191083 | to_index += bytes_spec.smear; |
| 189456 | }; | 191084 | }; |
| 189457 | return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{ | 191085 | return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{ |
| 189458 | .ty = spec.type.toIntern(), | 191086 | .ty = spec.type.toIntern(), |
| 189459 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, | 191087 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, |
| 189460 | } }))), true }; | 191088 | } }))), true }; |
| 189461 | }, | 191089 | }, |
| 189462 | .bits_mem => |direction| { | 191090 | .bits_mem => |bits_spec| { |
| 189463 | const zcu = pt.zcu; | 191091 | const zcu = pt.zcu; |
| 189464 | assert(spec.type.isVector(zcu) and spec.type.childType(zcu).toIntern() == .u8_type); | 191092 | assert(spec.type.isVector(zcu) and spec.type.childType(zcu).toIntern() == .u8_type); |
| 189465 | var bytes: [32]u8 = undefined; | 191093 | var elem_buf: [32]u8 = @splat(1 << 7); |
| 189466 | const elems = bytes[0..spec.type.vectorLen(zcu)]; | 191094 | const elems = elem_buf[0..spec.type.vectorLen(zcu)]; |
| 189467 | for (elems, 0..) |*elem, index| elem.* = switch (direction) { | 191095 | var from_index: u6 = 0; |
| 189468 | .forward => @as(u8, 1 << 0) << @truncate(index), | 191096 | var to_index: u6 = 0; |
| 189469 | .reverse => @as(u8, 1 << 7) >> @truncate(index), | 191097 | while (elems.len - to_index > 0) { |
| 189470 | }; | 191098 | @memset(elems[to_index..][0..bits_spec.smear], @intCast(switch (bits_spec.direction) { |
| | 191099 | .forward => @as(u8, 1 << 0) << @truncate(from_index), |
| | 191100 | .reverse => @as(u8, 1 << 7) >> @truncate(from_index), |
| | 191101 | })); |
| | 191102 | from_index += 1; |
| | 191103 | to_index += bits_spec.smear; |
| | 191104 | } |
| 189471 | return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{ | 191105 | return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{ |
| 189472 | .ty = spec.type.toIntern(), | 191106 | .ty = spec.type.toIntern(), |
| 189473 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, | 191107 | .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, io, pt.tid, elems, .maybe_embedded_nulls) }, |