summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2012-04-24 13:31:07 -0400
committerTom Stellard <[email protected]>2012-05-03 09:20:17 -0400
commitddb4dac13341d5b33b9e129ecb0e2abec30a27b6 (patch)
treef9615f8bef10678e35173a412384a034e8af1dee
parent1bd3dafeca90f1293acd9b9ab63bf617139bfacf (diff)
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.
-rw-r--r--src/gallium/drivers/radeon/Makefile9
-rw-r--r--src/gallium/drivers/radeon/Makefile.sources1
-rw-r--r--src/gallium/drivers/radeon/R600IntrinsicsNoOpenCL.td (renamed from src/gallium/drivers/radeon/R600Intrinsics.td)0
-rw-r--r--src/gallium/drivers/radeon/R600IntrinsicsOpenCL.td16
4 files changed, 26 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/Makefile b/src/gallium/drivers/radeon/Makefile
index 807dc781c7c..13aa3605dcd 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 7d2932b4dbd..6e649152120 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
index 8038fee1a3c..8038fee1a3c 100644
--- a/src/gallium/drivers/radeon/R600Intrinsics.td
+++ b/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 00000000000..cd761358475
--- /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]>;
+}