Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll

Issue 2656723003: [SubZero] Fix code generation of AtomicCmpxchg (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698