| OLD | NEW |
| 1 ; This tests each of the supported NaCl atomic instructions for every | 1 ; This tests each of the supported NaCl atomic instructions for every |
| 2 ; size allowed. | 2 ; size allowed. |
| 3 | 3 |
| 4 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ | 4 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ |
| 5 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 5 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
| 6 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ | 6 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ |
| 7 ; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=O2 %s | 7 ; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=O2 %s |
| 8 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \ | 8 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \ |
| 9 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 9 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
| 10 | 10 |
| (...skipping 1620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 ; ARM32: dmb | 1631 ; ARM32: dmb |
| 1632 ; ARM32: ldrexb [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}} | 1632 ; ARM32: ldrexb [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}} |
| 1633 ; ARM32: lsl [[VV:r[0-9]+]], [[V]], #24 | 1633 ; ARM32: lsl [[VV:r[0-9]+]], [[V]], #24 |
| 1634 ; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #24 | 1634 ; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #24 |
| 1635 ; ARM32: movne [[SUCCESS:r[0-9]+]], | 1635 ; ARM32: movne [[SUCCESS:r[0-9]+]], |
| 1636 ; ARM32: strexbeq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}} | 1636 ; ARM32: strexbeq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}} |
| 1637 ; ARM32: cmp [[SUCCESS]], #0 | 1637 ; ARM32: cmp [[SUCCESS]], #0 |
| 1638 ; ARM32: bne | 1638 ; ARM32: bne |
| 1639 ; ARM32: dmb | 1639 ; ARM32: dmb |
| 1640 ; MIPS32-LABEL: test_atomic_cmpxchg_8 | 1640 ; MIPS32-LABEL: test_atomic_cmpxchg_8 |
| 1641 ; MIPS32: sync | |
| 1642 ; MIPS32: addiu {{.*}}, $zero, -4 | 1641 ; MIPS32: addiu {{.*}}, $zero, -4 |
| 1643 ; MIPS32: and | 1642 ; MIPS32: and |
| 1644 ; MIPS32: andi {{.*}}, {{.*}}, 3 | 1643 ; MIPS32: andi {{.*}}, {{.*}}, 3 |
| 1645 ; MIPS32: sll {{.*}}, {{.*}}, 3 | 1644 ; MIPS32: sll {{.*}}, {{.*}}, 3 |
| 1646 ; MIPS32: ori {{.*}}, $zero, 255 | 1645 ; MIPS32: ori {{.*}}, $zero, 255 |
| 1647 ; MIPS32: sllv | 1646 ; MIPS32: sllv |
| 1648 ; MIPS32: nor | 1647 ; MIPS32: nor |
| 1649 ; MIPS32: andi {{.*}}, {{.*}}, 255 | 1648 ; MIPS32: andi {{.*}}, {{.*}}, 255 |
| 1650 ; MIPS32: sllv | 1649 ; MIPS32: sllv |
| 1651 ; MIPS32: andi {{.*}}, {{.*}}, 255 | 1650 ; MIPS32: andi {{.*}}, {{.*}}, 255 |
| 1652 ; MIPS32: sllv | 1651 ; MIPS32: sllv |
| 1652 ; MIPS32: sync |
| 1653 ; MIPS32: ll | 1653 ; MIPS32: ll |
| 1654 ; MIPS32: and | 1654 ; MIPS32: and |
| 1655 ; MIPS32: bne | 1655 ; MIPS32: bne |
| 1656 ; MIPS32: and | 1656 ; MIPS32: and |
| 1657 ; MIPS32: or | 1657 ; MIPS32: or |
| 1658 ; MIPS32: sc | 1658 ; MIPS32: sc |
| 1659 ; MIPS32: beq $zero, {{.*}}, {{.*}} | 1659 ; MIPS32: beq $zero, {{.*}}, {{.*}} |
| 1660 ; MIPS32: srlv | 1660 ; MIPS32: srlv |
| 1661 ; MIPS32: sll {{.*}}, {{.*}}, 24 | 1661 ; MIPS32: sll {{.*}}, {{.*}}, 24 |
| 1662 ; MIPS32: sra {{.*}}, {{.*}}, 24 | 1662 ; MIPS32: sra {{.*}}, {{.*}}, 24 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1680 ; ARM32: dmb | 1680 ; ARM32: dmb |
| 1681 ; ARM32: ldrexh [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}} | 1681 ; ARM32: ldrexh [[V:r[0-9]+]], {{[[]}}[[A:r[0-9]+]]{{[]]}} |
| 1682 ; ARM32: lsl [[VV:r[0-9]+]], [[V]], #16 | 1682 ; ARM32: lsl [[VV:r[0-9]+]], [[V]], #16 |
| 1683 ; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #16 | 1683 ; ARM32: cmp [[VV]], {{r[0-9]+}}, lsl #16 |
| 1684 ; ARM32: movne [[SUCCESS:r[0-9]+]], | 1684 ; ARM32: movne [[SUCCESS:r[0-9]+]], |
| 1685 ; ARM32: strexheq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}} | 1685 ; ARM32: strexheq [[SUCCESS]], {{r[0-9]+}}, {{[[]}}[[A]]{{[]]}} |
| 1686 ; ARM32: cmp [[SUCCESS]], #0 | 1686 ; ARM32: cmp [[SUCCESS]], #0 |
| 1687 ; ARM32: bne | 1687 ; ARM32: bne |
| 1688 ; ARM32: dmb | 1688 ; ARM32: dmb |
| 1689 ; MIPS32-LABEL: test_atomic_cmpxchg_16 | 1689 ; MIPS32-LABEL: test_atomic_cmpxchg_16 |
| 1690 ; MIPS32: sync | |
| 1691 ; MIPS32: addiu {{.*}}, $zero, -4 | 1690 ; MIPS32: addiu {{.*}}, $zero, -4 |
| 1692 ; MIPS32: and | 1691 ; MIPS32: and |
| 1693 ; MIPS32: andi {{.*}}, {{.*}}, 3 | 1692 ; MIPS32: andi {{.*}}, {{.*}}, 3 |
| 1694 ; MIPS32: sll {{.*}}, {{.*}}, 3 | 1693 ; MIPS32: sll {{.*}}, {{.*}}, 3 |
| 1695 ; MIPS32: ori {{.*}}, {{.*}}, 65535 | 1694 ; MIPS32: ori {{.*}}, {{.*}}, 65535 |
| 1696 ; MIPS32: sllv | 1695 ; MIPS32: sllv |
| 1697 ; MIPS32: nor | 1696 ; MIPS32: nor |
| 1698 ; MIPS32: andi {{.*}}, {{.*}}, 65535 | 1697 ; MIPS32: andi {{.*}}, {{.*}}, 65535 |
| 1699 ; MIPS32: sllv | 1698 ; MIPS32: sllv |
| 1700 ; MIPS32: andi {{.*}}, {{.*}}, 65535 | 1699 ; MIPS32: andi {{.*}}, {{.*}}, 65535 |
| 1701 ; MIPS32: sllv | 1700 ; MIPS32: sllv |
| 1701 ; MIPS32: sync |
| 1702 ; MIPS32: ll | 1702 ; MIPS32: ll |
| 1703 ; MIPS32: and | 1703 ; MIPS32: and |
| 1704 ; MIPS32: bne | 1704 ; MIPS32: bne |
| 1705 ; MIPS32: and | 1705 ; MIPS32: and |
| 1706 ; MIPS32: or | 1706 ; MIPS32: or |
| 1707 ; MIPS32: sc | 1707 ; MIPS32: sc |
| 1708 ; MIPS32: beq $zero, {{.*}}, {{.*}} | 1708 ; MIPS32: beq $zero, {{.*}}, {{.*}} |
| 1709 ; MIPS32: srlv | 1709 ; MIPS32: srlv |
| 1710 ; MIPS32: sll {{.*}}, {{.*}}, 16 | 1710 ; MIPS32: sll {{.*}}, {{.*}}, 16 |
| 1711 ; MIPS32: sra {{.*}}, {{.*}}, 16 | 1711 ; MIPS32: sra {{.*}}, {{.*}}, 16 |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2155 br i1 %cmp, label %done, label %body | 2155 br i1 %cmp, label %done, label %body |
| 2156 done: | 2156 done: |
| 2157 ret void | 2157 ret void |
| 2158 } | 2158 } |
| 2159 ; O2-LABEL: test_cmpxchg8b_regalloc | 2159 ; O2-LABEL: test_cmpxchg8b_regalloc |
| 2160 ;;; eax and some other register will be used in the cmpxchg instruction. | 2160 ;;; eax and some other register will be used in the cmpxchg instruction. |
| 2161 ; O2: lock cmpxchg8b QWORD PTR | 2161 ; O2: lock cmpxchg8b QWORD PTR |
| 2162 ;;; Make sure eax/ecx/edx/ebx aren't used again, e.g. as the induction variable. | 2162 ;;; Make sure eax/ecx/edx/ebx aren't used again, e.g. as the induction variable. |
| 2163 ; O2-NOT: ,{{eax|ecx|edx|ebx}} | 2163 ; O2-NOT: ,{{eax|ecx|edx|ebx}} |
| 2164 ; O2: pop ebx | 2164 ; O2: pop ebx |
| OLD | NEW |