aboutsummaryrefslogtreecommitdiffstats
path: root/devel/llvm
diff options
context:
space:
mode:
authorbrooks <brooks@FreeBSD.org>2010-12-08 07:00:44 +0800
committerbrooks <brooks@FreeBSD.org>2010-12-08 07:00:44 +0800
commitfc6926096dd6ba2ccbf7134877f89b321dc99907 (patch)
tree995f84c17879ef7dc582804834d364ac4d304ef2 /devel/llvm
parent72980fc0a645d827e0b0e347b0051271dd90b6cc (diff)
downloadfreebsd-ports-gnome-fc6926096dd6ba2ccbf7134877f89b321dc99907.tar.gz
freebsd-ports-gnome-fc6926096dd6ba2ccbf7134877f89b321dc99907.tar.zst
freebsd-ports-gnome-fc6926096dd6ba2ccbf7134877f89b321dc99907.zip
Fix LLVM Bug 8381 - Incorrect x86/SSE code generation involving
<<8 x i16>> vector PR: ports/152814
Diffstat (limited to 'devel/llvm')
-rw-r--r--devel/llvm/Makefile1
-rw-r--r--devel/llvm/distinfo1
-rw-r--r--devel/llvm/files/patch-lib_Target_X86_X86ISelLowering.cpp27
3 files changed, 28 insertions, 1 deletions
diff --git a/devel/llvm/Makefile b/devel/llvm/Makefile
index 3935c109024c..9a36fdec23a4 100644
--- a/devel/llvm/Makefile
+++ b/devel/llvm/Makefile
@@ -7,6 +7,7 @@
PORTNAME= llvm
PORTVERSION= 2.8
+PORTREVISION= 1
CATEGORIES= devel lang
MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/
EXTRACT_SUFX= .tgz
diff --git a/devel/llvm/distinfo b/devel/llvm/distinfo
index 85b1de036148..4d8a8661e393 100644
--- a/devel/llvm/distinfo
+++ b/devel/llvm/distinfo
@@ -1,3 +1,2 @@
-MD5 (llvm-2.8.tgz) = 220d361b4d17051ff4bb21c64abe05ba
SHA256 (llvm-2.8.tgz) = 25addb742f1c6cc12877ed0ee924dda962d848368ee095be8e48342ae613d43b
SIZE (llvm-2.8.tgz) = 9112527
diff --git a/devel/llvm/files/patch-lib_Target_X86_X86ISelLowering.cpp b/devel/llvm/files/patch-lib_Target_X86_X86ISelLowering.cpp
new file mode 100644
index 000000000000..1b18d8007d66
--- /dev/null
+++ b/devel/llvm/files/patch-lib_Target_X86_X86ISelLowering.cpp
@@ -0,0 +1,27 @@
+
+$FreeBSD$
+
+--- lib/Target/X86/X86ISelLowering.cpp.orig
++++ lib/Target/X86/X86ISelLowering.cpp
+@@ -5414,11 +5414,19 @@
+ return getMOVL(DAG, dl, VT, V2, V1);
+ }
+
+- if (X86::isUNPCKL_v_undef_Mask(SVOp) || X86::isUNPCKLMask(SVOp))
++ if (X86::isUNPCKL_v_undef_Mask(SVOp))
++ return (isMMX) ?
++ Op : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V1, V1, DAG);
++
++ if (X86::isUNPCKLMask(SVOp))
+ return (isMMX) ?
+ Op : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V1, V2, DAG);
+
+- if (X86::isUNPCKH_v_undef_Mask(SVOp) || X86::isUNPCKHMask(SVOp))
++ if (X86::isUNPCKH_v_undef_Mask(SVOp))
++ return (isMMX) ?
++ Op : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V1, V1, DAG);
++
++ if (X86::isUNPCKHMask(SVOp))
+ return (isMMX) ?
+ Op : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V1, V2, DAG);
+