[llvm] r217680 - Address comments on r217622

Bill Schmidt wschmidt at linux.vnet.ibm.com
Fri Sep 12 07:26:37 PDT 2014


Author: wschmidt
Date: Fri Sep 12 09:26:36 2014
New Revision: 217680

URL: http://llvm.org/viewvc/llvm-project?rev=217680&view=rev
Log:
Address comments on r217622

Modified:
    llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
    llvm/trunk/test/CodeGen/PowerPC/asm-constraints.ll

Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp?rev=217680&r1=217679&r2=217680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Fri Sep 12 09:26:36 2014
@@ -278,10 +278,12 @@ bool PPCAsmPrinter::PrintAsmMemoryOperan
     case 'U': // Print 'u' for update form.
     case 'X': // Print 'x' for indexed form.
       {
-	// Memory constraints should always produce an MO_Register,
-	// so we never get an update or indexed form.  (In GCC, these
-	// are useful in internal code gen; not so much in inline asm.)
-	// So tolerate these but don't output anything.
+	// FIXME: Currently for PowerPC memory operands are always loaded
+	// into a register, so we never get an update or indexed form.
+	// This is bad even for offset forms, since even if we know we
+	// have a value in -16(r1), we will generate a load into r<n>
+	// and then load from 0(r<n>).  Until that issue is fixed,
+	// tolerate 'U' and 'X' but don't output anything.
 	assert(MI->getOperand(OpNo).isReg());
 	return false;
       }

Modified: llvm/trunk/test/CodeGen/PowerPC/asm-constraints.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/asm-constraints.ll?rev=217680&r1=217679&r2=217680&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/PowerPC/asm-constraints.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/asm-constraints.ll Fri Sep 12 09:26:36 2014
@@ -1,5 +1,17 @@
 ; RUN: llc < %s -mcpu=pwr8 | FileCheck %s
 
+; Generated from following C code:
+;
+; void foo (int result, char *addr) {
+;   __asm__ __volatile__ (
+;     "ld%U1%X1 %0,%1\n"
+;     "cmpw %0,%0\n"
+;     "bne- 1f\n"
+;     "1: isync\n"
+;     : "=r" (result)
+;     : "m"(*addr) : "memory", "cr0");
+; }
+
 target datalayout = "e-m:e-i64:64-n32:64"
 target triple = "powerpc64le-unknown-linux-gnu"
 





More information about the llvm-commits mailing list