Mesa (master): r600g/llvm: Don' t duplicate R600 intrinsics installed by LLVM

Tom Stellard tstellar at kemper.freedesktop.org
Thu May 3 14:02:11 UTC 2012


Module: Mesa
Branch: master
Commit: ddb4dac13341d5b33b9e129ecb0e2abec30a27b6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddb4dac13341d5b33b9e129ecb0e2abec30a27b6

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Tue Apr 24 13:31:07 2012 -0400

r600g/llvm: Don't duplicate R600 intrinsics installed by LLVM

At this point, in order for OpenCL to work correctly with r600g, OpenCL
specific intrinsics need to be defined in the LLVM tree.  So, we need
to check for these intrinsics in the LLVM include directory to make sure
not to re-define them.

---

 src/gallium/drivers/radeon/Makefile                |    9 +++++++++
 src/gallium/drivers/radeon/Makefile.sources        |    1 +
 ...R600Intrinsics.td => R600IntrinsicsNoOpenCL.td} |    0 
 src/gallium/drivers/radeon/R600IntrinsicsOpenCL.td |   16 ++++++++++++++++
 4 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeon/Makefile b/src/gallium/drivers/radeon/Makefile
index 807dc78..13aa360 100644
--- a/src/gallium/drivers/radeon/Makefile
+++ b/src/gallium/drivers/radeon/Makefile
@@ -18,6 +18,8 @@ CXXFLAGS := $(filter-out -DDEBUG, $(CXXFLAGS))
 
 tablegen = $(TBLGEN) -I $(LLVM_INCLUDEDIR) $1 $2 -o $3
 
+HAVE_LLVM_INTRINSICS = $(shell grep IntrinsicsR600.td $(LLVM_INCLUDEDIR)/llvm/Intrinsics.td)
+
 gen: $(GENERATED_SOURCES)
 
 SIRegisterInfo.td: SIGenRegisterInfo.pl
@@ -26,6 +28,13 @@ SIRegisterInfo.td: SIGenRegisterInfo.pl
 SIRegisterGetHWRegNum.inc: SIGenRegisterInfo.pl
 	$(PERL) $^ $@ > /dev/null
 
+R600Intrinsics.td: R600IntrinsicsNoOpenCL.td R600IntrinsicsOpenCL.td
+ifeq ($(HAVE_LLVM_INTRINSICS),)
+	cp R600IntrinsicsNoOpenCL.td R600Intrinsics.td
+else
+	cp R600IntrinsicsOpenCL.td R600Intrinsics.td
+endif
+
 R600ShaderPatterns.td: AMDGPUGenShaderPatterns.pl
 	$(PERL) $^ C > $@
 	
diff --git a/src/gallium/drivers/radeon/Makefile.sources b/src/gallium/drivers/radeon/Makefile.sources
index 7d2932b..6e64915 100644
--- a/src/gallium/drivers/radeon/Makefile.sources
+++ b/src/gallium/drivers/radeon/Makefile.sources
@@ -1,5 +1,6 @@
 
 GENERATED_SOURCES := \
+	R600Intrinsics.td		\
 	R600ShaderPatterns.td		\
 	R600RegisterInfo.td		\
 	AMDGPUInstrEnums.td		\
diff --git a/src/gallium/drivers/radeon/R600Intrinsics.td b/src/gallium/drivers/radeon/R600IntrinsicsNoOpenCL.td
similarity index 100%
rename from src/gallium/drivers/radeon/R600Intrinsics.td
rename to src/gallium/drivers/radeon/R600IntrinsicsNoOpenCL.td
diff --git a/src/gallium/drivers/radeon/R600IntrinsicsOpenCL.td b/src/gallium/drivers/radeon/R600IntrinsicsOpenCL.td
new file mode 100644
index 0000000..cd76135
--- /dev/null
+++ b/src/gallium/drivers/radeon/R600IntrinsicsOpenCL.td
@@ -0,0 +1,16 @@
+//===-- R600Intrinsics.td - TODO: Add brief description -------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// TODO: Add full description
+//
+//===----------------------------------------------------------------------===//
+
+let TargetPrefix = "R600", isTarget = 1 in {
+  def int_R600_load_input : Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrReadWriteArgMem]>;
+}




More information about the mesa-commit mailing list