| ... | ... | @@ -11595,29 +11595,81 @@ pub const FuncGen = struct { |
| 11595 | 11595 | template: [:0]const u8, |
| 11596 | 11596 | constraints: [:0]const u8, |
| 11597 | 11597 | } = switch (target.cpu.arch) { |
| 11598 | | .x86 => .{ |
| 11598 | .arm, .armeb, .thumb, .thumbeb => .{ |
| 11599 | 11599 | .template = |
| 11600 | | \\roll $$3, %edi ; roll $$13, %edi |
| 11601 | | \\roll $$61, %edi ; roll $$51, %edi |
| 11602 | | \\xchgl %ebx,%ebx |
| 11600 | \\ mov r12, r12, ror #3 ; mov r12, r12, ror #13 |
| 11601 | \\ mov r12, r12, ror #29 ; mov r12, r12, ror #19 |
| 11602 | \\ orr r10, r10, r10 |
| 11603 | 11603 | , |
| 11604 | | .constraints = "={edx},{eax},0,~{cc},~{memory}", |
| 11604 | .constraints = "={r3},{r4},{r3},~{cc},~{memory}", |
| 11605 | 11605 | }, |
| 11606 | | .x86_64 => .{ |
| 11606 | .aarch64, .aarch64_be => .{ |
| 11607 | 11607 | .template = |
| 11608 | | \\rolq $$3, %rdi ; rolq $$13, %rdi |
| 11609 | | \\rolq $$61, %rdi ; rolq $$51, %rdi |
| 11610 | | \\xchgq %rbx,%rbx |
| 11608 | \\ ror x12, x12, #3 ; ror x12, x12, #13 |
| 11609 | \\ ror x12, x12, #51 ; ror x12, x12, #61 |
| 11610 | \\ orr x10, x10, x10 |
| 11611 | 11611 | , |
| 11612 | | .constraints = "={rdx},{rax},0,~{cc},~{memory}", |
| 11612 | .constraints = "={x3},{x4},{x3},~{cc},~{memory}", |
| 11613 | 11613 | }, |
| 11614 | | .aarch64, .aarch64_be => .{ |
| 11614 | .mips, .mipsel => .{ |
| 11615 | .template = |
| 11616 | \\ srl $$0, $$0, 13 |
| 11617 | \\ srl $$0, $$0, 29 |
| 11618 | \\ srl $$0, $$0, 3 |
| 11619 | \\ srl $$0, $$0, 19 |
| 11620 | \\ or $$13, $$13, $$13 |
| 11621 | , |
| 11622 | .constraints = "={$11},{$12},{$11},~{memory}", |
| 11623 | }, |
| 11624 | .mips64, .mips64el => .{ |
| 11625 | .template = |
| 11626 | \\ dsll $$0, $$0, 3 ; dsll $$0, $$0, 13 |
| 11627 | \\ dsll $$0, $$0, 29 ; dsll $$0, $$0, 19 |
| 11628 | \\ or $$13, $$13, $$13 |
| 11629 | , |
| 11630 | .constraints = "={$11},{$12},{$11},~{memory}", |
| 11631 | }, |
| 11632 | .powerpc, .powerpcle => .{ |
| 11633 | .template = |
| 11634 | \\ rlwinm 0, 0, 3, 0, 31 ; rlwinm 0, 0, 13, 0, 31 |
| 11635 | \\ rlwinm 0, 0, 29, 0, 31 ; rlwinm 0, 0, 19, 0, 31 |
| 11636 | \\ or 1, 1, 1 |
| 11637 | , |
| 11638 | .constraints = "={r3},{r4},{r3},~{cc},~{memory}", |
| 11639 | }, |
| 11640 | .powerpc64, .powerpc64le => .{ |
| 11641 | .template = |
| 11642 | \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13 |
| 11643 | \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51 |
| 11644 | \\ or 1, 1, 1 |
| 11645 | , |
| 11646 | .constraints = "={r3},{r4},{r3},~{cc},~{memory}", |
| 11647 | }, |
| 11648 | .s390x => .{ |
| 11649 | .template = |
| 11650 | \\ lr %r15, %r15 |
| 11651 | \\ lr %r1, %r1 |
| 11652 | \\ lr %r2, %r2 |
| 11653 | \\ lr %r3, %r3 |
| 11654 | \\ lr %r2, %r2 |
| 11655 | , |
| 11656 | .constraints = "={r3},{r2},{r3},~{cc},~{memory}", |
| 11657 | }, |
| 11658 | .x86 => .{ |
| 11659 | .template = |
| 11660 | \\ roll $$3, %edi ; roll $$13, %edi |
| 11661 | \\ roll $$61, %edi ; roll $$51, %edi |
| 11662 | \\ xchgl %ebx, %ebx |
| 11663 | , |
| 11664 | .constraints = "={edx},{eax},{edx},~{cc},~{memory}", |
| 11665 | }, |
| 11666 | .x86_64 => .{ |
| 11615 | 11667 | .template = |
| 11616 | | \\ror x12, x12, #3 ; ror x12, x12, #13 |
| 11617 | | \\ror x12, x12, #51 ; ror x12, x12, #61 |
| 11618 | | \\orr x10, x10, x10 |
| 11668 | \\ rolq $$3, %rdi ; rolq $$13, %rdi |
| 11669 | \\ rolq $$61, %rdi ; rolq $$51, %rdi |
| 11670 | \\ xchgq %rbx, %rbx |
| 11619 | 11671 | , |
| 11620 | | .constraints = "={x3},{x4},0,~{cc},~{memory}", |
| 11672 | .constraints = "={rdx},{rax},{edx},~{cc},~{memory}", |
| 11621 | 11673 | }, |
| 11622 | 11674 | else => unreachable, |
| 11623 | 11675 | }; |