diff options
author | brooks <brooks@FreeBSD.org> | 2010-12-08 07:00:44 +0800 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2010-12-08 07:00:44 +0800 |
commit | fc6926096dd6ba2ccbf7134877f89b321dc99907 (patch) | |
tree | 995f84c17879ef7dc582804834d364ac4d304ef2 /devel/llvm | |
parent | 72980fc0a645d827e0b0e347b0051271dd90b6cc (diff) | |
download | freebsd-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/Makefile | 1 | ||||
-rw-r--r-- | devel/llvm/distinfo | 1 | ||||
-rw-r--r-- | devel/llvm/files/patch-lib_Target_X86_X86ISelLowering.cpp | 27 |
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); + |