llvm/test
Michael Liao b118a073d7 Re-work X86 code generation of atomic ops with spin-loop
- Rewrite/merge pseudo-atomic instruction emitters to address the
  following issue:
  * Reduce one unnecessary load in spin-loop

    previously the spin-loop looks like

        thisMBB:
        newMBB:
          ld  t1 = [bitinstr.addr]
          op  t2 = t1, [bitinstr.val]
          not t3 = t2  (if Invert)
          mov EAX = t1
          lcs dest = [bitinstr.addr], t3  [EAX is implicit]
          bz  newMBB
          fallthrough -->nextMBB

    the 'ld' at the beginning of newMBB should be lift out of the loop
    as lcs (or CMPXCHG on x86) will load the current memory value into
    EAX. This loop is refined as:

        thisMBB:
          EAX = LOAD [MI.addr]
        mainMBB:
          t1 = OP [MI.val], EAX
          LCMPXCHG [MI.addr], t1, [EAX is implicitly used & defined]
          JNE mainMBB
        sinkMBB:

  * Remove immopc as, so far, all pseudo-atomic instructions has
    all-register form only, there is no immedidate operand.

  * Remove unnecessary attributes/modifiers in pseudo-atomic instruction
    td

  * Fix issues in PR13458

- Add comprehensive tests on atomic ops on various data types.
  NOTE: Some of them are turned off due to missing functionality.

- Revise tests due to the new spin-loop generated.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164281 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-20 03:06:15 +00:00
..
Analysis BasicAA: Recognize cyclic NoAlias phis 2012-09-06 14:41:53 +00:00
Archive
Assembler
Bindings/Ocaml fix test's RUN lines 2012-09-02 15:07:25 +00:00
Bitcode
BugPoint
CodeGen Re-work X86 code generation of atomic ops with spin-loop 2012-09-20 03:06:15 +00:00
DebugInfo llvm/test/DebugInfo: Move two tests, 2010-04-13-PubType.ll and linkage-name.ll to X86. 2012-09-18 14:57:11 +00:00
ExecutionEngine Revert "Enable MCJIT tests on Darwin." 2012-09-06 03:24:09 +00:00
Feature
Instrumentation
Integer
Linker
MC Add support for macro parameters/arguments delimited by spaces, 2012-09-19 20:36:12 +00:00
Object Add missing file for test. 2012-09-05 23:52:20 +00:00
Other FileCheck: Fix off-by-one bug that made CHECK-NOT: ignore the next character after the colon. 2012-09-18 20:51:39 +00:00
Scripts
TableGen Re-work bit/bits value resolving in tblgen 2012-09-06 23:32:48 +00:00
Transforms SimplifyCFG: Don't generate invalid code for switch used to initialize 2012-09-19 14:24:21 +00:00
Unit
Verifier
YAMLParser
CMakeLists.txt llvm/test: [CMake] Add profile_rt-shared to deps. 2012-08-29 00:37:56 +00:00
lit.cfg
lit.site.cfg.in
Makefile yet another attempt at fixing @OCAMLOPT@ for sed. 2012-09-07 09:24:13 +00:00
Makefile.tests
TestRunner.sh