[LLVMbugs] [Bug 6664] New: llvm.atomic.load.nand poorly documented

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Mar 20 17:01:09 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=6664

           Summary: llvm.atomic.load.nand poorly documented
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: eschew at gmail.com
                CC: dalej at apple.com, llvmbugs at cs.uiuc.edu


Most programmers would expect an operation called "nand" to perform ~(A & B),
but llvm.atomic.load.nand performs (A & ~B). According to ddunbar, this was
done for compatibility with gcc, but gcc has changed its behavior in version
4.4 to match the intended semantics:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37908#c6

To further confuse matters, example code given at
http://llvm.org/docs/LangRef.html#int_atomic_load_nand implies that
llvm.atomic.load.nand performs a traditional NAND operation, rather than (A &
~B).

It seems like either:
1) The behavior of llvm.atomic.load.nand should be changed to match GCC 4.4
(and its name), or
2) llvm.atomic.load.nand should be renamed to something like
llvm.atomic.load.andn, and the documentation updated to reflect its true
semantics.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list