[llvm-commits] CVS: llvm/lib/Target/CBackend/Writer.cpp

Chris Lattner lattner at cs.uiuc.edu
Mon Feb 28 11:30:00 PST 2005



Changes in directory llvm/lib/Target/CBackend:

Writer.cpp updated: 1.223 -> 1.224
---
Log message:

Add support to the C backend for llvm.prefetch.  Patch contributed by
Justin Wick!


---
Diffs of the changes:  (+13 -0)

 Writer.cpp |   13 +++++++++++++
 1 files changed, 13 insertions(+)


Index: llvm/lib/Target/CBackend/Writer.cpp
diff -u llvm/lib/Target/CBackend/Writer.cpp:1.223 llvm/lib/Target/CBackend/Writer.cpp:1.224
--- llvm/lib/Target/CBackend/Writer.cpp:1.223	Mon Feb 14 23:52:14 2005
+++ llvm/lib/Target/CBackend/Writer.cpp	Mon Feb 28 13:29:46 2005
@@ -807,6 +807,7 @@
       << "#define LLVM_NANSF(NanStr) __builtin_nansf(NanStr) /* Float */\n"
       << "#define LLVM_INF           __builtin_inf()         /* Double */\n"
       << "#define LLVM_INFF          __builtin_inff()        /* Float */\n"
+      << "#define LLVM_PREFETCH(addr,rw,locality)          __builtin_prefetch(addr,rw,locality)\n"
       << "#else\n"
       << "#define LLVM_NAN(NanStr)   ((double)0.0)           /* Double */\n"
       << "#define LLVM_NANF(NanStr)  0.0F                    /* Float */\n"
@@ -814,6 +815,7 @@
       << "#define LLVM_NANSF(NanStr) 0.0F                    /* Float */\n"
       << "#define LLVM_INF           ((double)0.0)           /* Double */\n"
       << "#define LLVM_INFF          0.0F                    /* Float */\n"
+      << "#define LLVM_PREFETCH(addr,rw,locality)          \n"
       << "#endif\n";
 }
 
@@ -1430,6 +1432,7 @@
           case Intrinsic::frameaddress:
           case Intrinsic::setjmp:
           case Intrinsic::longjmp:
+          case Intrinsic::prefetch:
             // We directly implement these intrinsics
             break;
           default:
@@ -1504,6 +1507,16 @@
         writeOperand(I.getOperand(2));
         Out << ')';
         return;
+      case Intrinsic::prefetch:
+	// This is only supported on GCC for now...
+	Out << "LLVM_PREFETCH((const void *)";
+        writeOperand(I.getOperand(1));
+        Out << ", ";
+        writeOperand(I.getOperand(2));
+        Out << ", ";
+        writeOperand(I.getOperand(3));
+        Out << ")";
+	return;
       }
     }
 






More information about the llvm-commits mailing list