From stpworld at narod.ru Mon Oct 31 01:07:03 2011
From: stpworld at narod.ru (Stepan Dyatkovskiy)
Date: Mon, 31 Oct 2011 10:07:03 +0400
Subject: [llvm-commits] [LLVM, SwitchInst,
case ranges] Auxiliary patch #1
In-Reply-To: <4EAA9B5D.802@narod.ru>
References: <4EAA9B5D.802@narod.ru>
Message-ID: <4EAE3B07.2040108@narod.ru>
ping.
-Stepan
Stepan Dyatkovskiy wrote:
> Hi all. The main discussion branch of this feature is here:
> http://llvm.org/bugs/show_bug.cgi?id=1255
>
> We need change SwitchInst internals: replace case value type from
> "ConstantInt" to "APInt", then move case values out from operands
> collection. To do that we need add APInt::isInitialized feature. We also
> need extend SmallSet class adding Compare parameter to this template:
> template
Compact Unwind
@@ -1927,6 +1929,8 @@
Late Machine Code Optimizations
Modified: llvm/trunk/docs/GetElementPtr.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/GetElementPtr.html?rev=143349&r1=143348&r2=143349&view=diff
==============================================================================
--- llvm/trunk/docs/GetElementPtr.html (original)
+++ llvm/trunk/docs/GetElementPtr.html Mon Oct 31 08:04:26 2011
@@ -746,7 +746,7 @@
src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS">
- The LLVM Compiler Infrastructure
+ The LLVM Compiler Infrastructure
Last modified: $Date$
Modified: llvm/trunk/docs/LangRef.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=143349&r1=143348&r2=143349&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.html (original)
+++ llvm/trunk/docs/LangRef.html Mon Oct 31 08:04:26 2011
@@ -1903,9 +1903,6 @@
possible to have a two dimensional array, using an array as the element type
of another array.
This document contains information about adding private slave builder to + LLVM Buildbot Infrastructure: http://lab.llvm.org:8011 +
Volunters can provade there build machines to work as slave builders to + public LLVM Buildbot. Below desrcibed recommended steps to implement this + task.
+ +The steps are roughly as follows:
+ +Check the existing build configurations to make sure the one you are + interested in is not covered yet or gets built on your computer much + faster than existing one. We prefer faster builds so developers will get + feedback sooner after changes get committed.
The computer you will be registering with the LLVM buildbot + infrastructure should have all dependencies installed and you can + actually build your configuration successfully. You can build multiple + configurations on one computer.
Install buildslave (currently we are using buildbot version 0.8.5). + Depending on the platform, buildslave could be available to download and + install with your packet manager, or you can download it directly from + http://trac.buildbot.net/ and install it manually.
Create a designated user account your buildslave will be running + under.
Choose the buildslave root directory (all builds will be placed under + it), buildslave access name and password the build master will be using + to authenticate your build slave.
Then create a build slave in context of that buildslave account.
+ Point it to the lab.llvm.org port 9990
+ (see http://buildbot.net/buildbot/docs/current/full.html#creating-a-slave
+ for more details) by running the following command:
+
+ $ buildslave create-slave buildslave-root-directory lab.llvm.org: 9990 \ + buildslave-access-name buildslave-access-password +
Fill the build slave description and admin name/e-mail. + Here is an example of the build slave description: +
+ Windows 7 x64 + Core i7 (2.66GHz), 16GB of RAM + + g++.exe (TDM-1 mingw32) 4.4.0 + GNU Binutils 2.19.1 + cmake version 2.8.4 + Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 +
Make sure you can actually start the buildslave successfully. Then set + up your build slave to start automatically at the start up time. + See buildbot manual for help.
Send a patch which adds your build slave and builder to zorg.
+ * slaves are added to
+http://llvm.org/svn/llvm-project/zorg/trunk/buildbot/osuosl/master/config/slaves.py
+ * builders are added to
+http://llvm.org/svn/llvm-project/zorg/trunk/buildbot/osuosl/master/config/builders.py
Then send the buildslave access name and password directly to + Galina Kistanova + +
Finally, the end!
LLVM is very demanding of the host C++ compiler, and as such tends to expose
bugs in the compiler. In particular, several versions of GCC crash when trying
-to compile LLVM. We routinely use GCC 3.3.3, 3.4.0, and Apple 4.0.1
-successfully with them (however, see important notes below). Other versions
-of GCC will probably work as well. GCC versions listed
+to compile LLVM. We routinely use GCC 4.2 (and higher) or Clang.
+Other versions of GCC will probably work as well. GCC versions listed
here are known to not work. If you are using one of these versions, please try
to upgrade your GCC to something more recent. If you run into a problem with a
version of GCC not listed here, please let
From grosbach at apple.com Mon Oct 31 16:50:32 2011
From: grosbach at apple.com (Jim Grosbach)
Date: Mon, 31 Oct 2011 21:50:32 -0000
Subject: [llvm-commits] [llvm] r143369 - in /llvm/trunk/lib/Target/ARM:
ARMExpandPseudoInsts.cpp ARMISelDAGToDAG.cpp ARMInstrNEON.td
AsmParser/ARMAsmParser.cpp Disassembler/ARMDisassembler.cpp
Message-ID: <20111031215032.232A63524001@llvm.org>
Author: grosbach
Date: Mon Oct 31 16:50:31 2011
New Revision: 143369
URL: http://llvm.org/viewvc/llvm-project?rev=143369&view=rev
Log:
ARM VST1 w/ writeback assembly parsing and encoding.
Modified:
llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp?rev=143369&r1=143368&r2=143369&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp Mon Oct 31 16:50:31 2011
@@ -273,13 +273,17 @@
{ ARM::VST1d64TPseudo_UPD, ARM::VST1d64T_UPD, false, true, true, SingleSpc, 3, 1 ,true},
{ ARM::VST1q16Pseudo, ARM::VST1q16, false, false, false, SingleSpc, 2, 4 ,true},
-{ ARM::VST1q16Pseudo_UPD, ARM::VST1q16_UPD, false, true, true, SingleSpc, 2, 4 ,true},
+{ ARM::VST1q16PseudoWB_fixed, ARM::VST1q16wb_fixed, false, true, false, SingleSpc, 2, 4 ,false},
+{ ARM::VST1q16PseudoWB_register, ARM::VST1q16wb_register, false, true, true, SingleSpc, 2, 4 ,false},
{ ARM::VST1q32Pseudo, ARM::VST1q32, false, false, false, SingleSpc, 2, 2 ,true},
-{ ARM::VST1q32Pseudo_UPD, ARM::VST1q32_UPD, false, true, true, SingleSpc, 2, 2 ,true},
+{ ARM::VST1q32PseudoWB_fixed, ARM::VST1q32wb_fixed, false, true, false, SingleSpc, 2, 2 ,false},
+{ ARM::VST1q32PseudoWB_register, ARM::VST1q32wb_register, false, true, true, SingleSpc, 2, 2 ,false},
{ ARM::VST1q64Pseudo, ARM::VST1q64, false, false, false, SingleSpc, 2, 1 ,true},
-{ ARM::VST1q64Pseudo_UPD, ARM::VST1q64_UPD, false, true, true, SingleSpc, 2, 1 ,true},
+{ ARM::VST1q64PseudoWB_fixed, ARM::VST1q64wb_fixed, false, true, false, SingleSpc, 2, 1 ,false},
+{ ARM::VST1q64PseudoWB_register, ARM::VST1q64wb_register, false, true, true, SingleSpc, 2, 1 ,false},
{ ARM::VST1q8Pseudo, ARM::VST1q8, false, false, false, SingleSpc, 2, 8 ,true},
-{ ARM::VST1q8Pseudo_UPD, ARM::VST1q8_UPD, false, true, true, SingleSpc, 2, 8 ,true},
+{ ARM::VST1q8PseudoWB_fixed, ARM::VST1q8wb_fixed, false, true, false, SingleSpc, 2, 8 ,false},
+{ ARM::VST1q8PseudoWB_register, ARM::VST1q8wb_register, false, true, true, SingleSpc, 2, 8 ,false},
{ ARM::VST2LNd16Pseudo, ARM::VST2LNd16, false, false, false, SingleSpc, 2, 4 ,true},
{ ARM::VST2LNd16Pseudo_UPD, ARM::VST2LNd16_UPD, false, true, true, SingleSpc, 2, 4 ,true},
@@ -504,10 +508,12 @@
unsigned SrcReg = MI.getOperand(OpIdx++).getReg();
unsigned D0, D1, D2, D3;
GetDSubRegs(SrcReg, RegSpc, TRI, D0, D1, D2, D3);
- MIB.addReg(D0).addReg(D1);
- if (NumRegs > 2)
+ MIB.addReg(D0);
+ if (NumRegs > 1 && TableEntry->copyAllListRegs)
+ MIB.addReg(D1);
+ if (NumRegs > 2 && TableEntry->copyAllListRegs)
MIB.addReg(D2);
- if (NumRegs > 3)
+ if (NumRegs > 3 && TableEntry->copyAllListRegs)
MIB.addReg(D3);
// Copy the predicate operands.
@@ -1153,10 +1159,14 @@
case ARM::VST1q16Pseudo:
case ARM::VST1q32Pseudo:
case ARM::VST1q64Pseudo:
- case ARM::VST1q8Pseudo_UPD:
- case ARM::VST1q16Pseudo_UPD:
- case ARM::VST1q32Pseudo_UPD:
- case ARM::VST1q64Pseudo_UPD:
+ case ARM::VST1q8PseudoWB_fixed:
+ case ARM::VST1q16PseudoWB_fixed:
+ case ARM::VST1q32PseudoWB_fixed:
+ case ARM::VST1q64PseudoWB_fixed:
+ case ARM::VST1q8PseudoWB_register:
+ case ARM::VST1q16PseudoWB_register:
+ case ARM::VST1q32PseudoWB_register:
+ case ARM::VST1q64PseudoWB_register:
case ARM::VST2d8Pseudo:
case ARM::VST2d16Pseudo:
case ARM::VST2d32Pseudo:
Modified: llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp?rev=143369&r1=143368&r2=143369&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp Mon Oct 31 16:50:31 2011
@@ -1566,6 +1566,19 @@
case ARM::VLD1q16PseudoWB_fixed: return ARM::VLD1q16PseudoWB_register;
case ARM::VLD1q32PseudoWB_fixed: return ARM::VLD1q32PseudoWB_register;
case ARM::VLD1q64PseudoWB_fixed: return ARM::VLD1q64PseudoWB_register;
+
+ case ARM::VST1d8wb_fixed: return ARM::VST1d8wb_register;
+ case ARM::VST1d16wb_fixed: return ARM::VST1d16wb_register;
+ case ARM::VST1d32wb_fixed: return ARM::VST1d32wb_register;
+ case ARM::VST1d64wb_fixed: return ARM::VST1d64wb_register;
+ case ARM::VST1q8wb_fixed: return ARM::VST1q8wb_register;
+ case ARM::VST1q16wb_fixed: return ARM::VST1q16wb_register;
+ case ARM::VST1q32wb_fixed: return ARM::VST1q32wb_register;
+ case ARM::VST1q64wb_fixed: return ARM::VST1q64wb_register;
+ case ARM::VST1q8PseudoWB_fixed: return ARM::VST1q8PseudoWB_register;
+ case ARM::VST1q16PseudoWB_fixed: return ARM::VST1q16PseudoWB_register;
+ case ARM::VST1q32PseudoWB_fixed: return ARM::VST1q32PseudoWB_register;
+ case ARM::VST1q64PseudoWB_fixed: return ARM::VST1q64PseudoWB_register;
}
return Opc; // If not one we handle, return it unchanged.
}
@@ -1635,11 +1648,12 @@
SDValue Inc = N->getOperand(AddrOpIdx + 1);
// FIXME: VLD1 fixed increment doesn't need Reg0. Remove the reg0
// case entirely when the rest are updated to that form, too.
- // Do that before committing this change. Likewise, the opcode
- // update call will become unconditional.
if (NumVecs == 1 && !isa LuaAV is a real-time
+ audiovisual scripting environment based around the Lua language and a
+ collection of libraries for sound, graphics, and other media protocols. LuaAV
+ uses LLVM and Clang to JIT compile efficient user-defined audio synthesis
+ routines specified in a declarative syntax. Admin: Galina Kistanova gkistanova at gmail.com
+
+ Xcode 4.0 (and later): The Clang
+ parser for C, C++, and Objective-C are now deeply integrated into the Xcode
+ IDE for code completion, syntax highlighting, indexing, "Edit All In
+ Scope", and other source code sensitive features. The Clang command line
+ compiler (known as "LLVM Compiler" in Xcode) also now fully supports C++.
+ This release is the first Apple release of the LLDB Debugger.
+
+ Xcode 4.1 (and later): LLDB supports debugging iOS devices.
+
+ Mac OS X 10.7 Lion and iOS5: Virtually all of the code in these
+ operating systems were built with Clang and llvm-gcc.
+
+ Xcode 4.2 (and later): "LLVM Compiler 3.0" (aka Clang) now supports many
+ C++'11 features and libc++ is
+ supported as a modern C++ runtime library. ARC
+ is a major new Objective-C feature introduced in this release,
+ introducing automated memory management to iOS programming. Xcode 4.2
+ no longer includes GCC 4.2, only the LLVM backend is supported.
From sabre at nondot.org Tue Nov 1 15:09:20 2011
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 01 Nov 2011 20:09:20 -0000
Subject: [llvm-commits] [www] r143488 - /www/trunk/Users.html
Message-ID: <20111101200920.0ADE32A6C12C@llvm.org>
Author: lattner
Date: Tue Nov 1 15:09:19 2011
New Revision: 143488
URL: http://llvm.org/viewvc/llvm-project?rev=143488&view=rev
Log:
minor tweaks.
Modified:
www/trunk/Users.html
Modified: www/trunk/Users.html
URL: http://llvm.org/viewvc/llvm-project/www/trunk/Users.html?rev=143488&r1=143487&r2=143488&view=diff
==============================================================================
--- www/trunk/Users.html (original)
+++ www/trunk/Users.html Tue Nov 1 15:09:19 2011
@@ -112,7 +112,7 @@
IDE for code completion, syntax highlighting, indexing, "Edit All In
Scope", and other source code sensitive features. The Clang command line
compiler (known as "LLVM Compiler" in Xcode) also now fully supports C++.
- This release is the first Apple release of the LLDB Debugger.
Xcode 4.1 (and later): LLDB supports debugging iOS devices.
@@ -126,7 +126,8 @@
href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">ARC
is a major new Objective-C feature introduced in this release,
introducing automated memory management to iOS programming. Xcode 4.2
- no longer includes GCC 4.2, only the LLVM backend is supported.
+ no longer includes GCC 4.2, only the LLVM backend is supported (in the
+ Clang and llvm-gcc compilers).
From sabre at nondot.org Tue Nov 1 15:13:05 2011
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 01 Nov 2011 20:13:05 -0000
Subject: [llvm-commits] [www] r143489 - /www/trunk/Users.html
Message-ID: <20111101201305.69CC22A6C12C@llvm.org>
Author: lattner
Date: Tue Nov 1 15:13:05 2011
New Revision: 143489
URL: http://llvm.org/viewvc/llvm-project?rev=143489&view=rev
Log:
reverse the bullet order in the apple section to be newest to oldest, remove the (and later)'s.
Modified:
www/trunk/Users.html
Modified: www/trunk/Users.html
URL: http://llvm.org/viewvc/llvm-project/www/trunk/Users.html?rev=143489&r1=143488&r2=143489&view=diff
==============================================================================
--- www/trunk/Users.html (original)
+++ www/trunk/Users.html Tue Nov 1 15:13:05 2011
@@ -72,63 +72,63 @@
+
- Xcode 3.1 (and later): llvm-gcc 4.2
- compiler is now available for use in Xcode or from the command line. It
- supports PPC32/X86-32/X86-64 and includes transparent LTO integration.
+ Mac OS X 10.7 Lion and iOS5: Virtually all of the code in these
+ operating systems were built with Clang and llvm-gcc.
+
+ Xcode 4.1: LLDB supports debugging iOS devices.
+
+ Xcode 4.0: The Clang
+ parser for C, C++, and Objective-C are now deeply integrated into the Xcode
+ IDE for code completion, syntax highlighting, indexing, "Edit All In
+ Scope", and other source code sensitive features. The Clang command line
+ compiler (known as "LLVM Compiler" in Xcode) also now fully supports C++.
+ This was the first Apple release of the LLDB Debugger.
+
+ Xcode 3.2: Clang is
+ now included as a production quality C and Objective-C compiler that is
+ available for use in Xcode or from the command line. It supports X86-32/X86-64
+ and builds code 2-3x faster than GCC in "-O0 -g" mode. Many "developer tools"
+ GUI apps were shipped built with Clang, including Xcode, Interface Builder,
+ Automator, and several others.
- Mac OS X 10.6 (and later): The Xcode
+ Static Analyzer is built on the Clang static
+ analyzer, and allows Xcode users easy access to the Clang Static Analyzer as
+ well as a first class user interface to dig through and visualize results.
+
+ Mac OS X 10.6: The OpenCL GPGPU implementation is built on Clang and LLVM compiler technology. This
+ href="http://developer.apple.com/mac/library/documentation/Performance/Conceptual/OpenCL_MacProgGuide/OpenCLontheMacPlatform/OpenCLontheMacPlatform.html">built on Clang and LLVM compiler technology. This
requires parsing an extended dialect of C at runtime and JIT compiling it to run
on the CPU, GPU, or both at the same time. In addition, several performance
sensitive pieces of Mac OS X 10.6 were built with llvm-gcc such as OpenSSL
and Hotspot. Finally, the compiler_rt
library has replaced libgcc and is now a part of libsystem.dylib.
+
+ Xcode 3.1: llvm-gcc 4.2
+ compiler is now available for use in Xcode or from the command line. It
+ supports PPC32/X86-32/X86-64 and includes transparent LTO integration.
- Xcode 3.2 (and later): Clang is
- now included as a production quality C and Objective-C compiler that is
- available for use in Xcode or from the command line. It supports X86-32/X86-64
- and builds code 2-3x faster than GCC in "-O0 -g" mode. Many "developer tools"
- GUI apps were shipped built with Clang, including Xcode, Interface Builder,
- Automator, and several others.
-
- Xcode 3.2 (and later): The Xcode
- Static Analyzer is built on the Clang static
- analyzer, and allows Xcode users easy access to the Clang Static Analyzer as
- well as a first class user interface to dig through and visualize results.
-
- Xcode 4.0 (and later): The Clang
- parser for C, C++, and Objective-C are now deeply integrated into the Xcode
- IDE for code completion, syntax highlighting, indexing, "Edit All In
- Scope", and other source code sensitive features. The Clang command line
- compiler (known as "LLVM Compiler" in Xcode) also now fully supports C++.
- This was the first Apple release of the LLDB Debugger.
-
- Xcode 4.1 (and later): LLDB supports debugging iOS devices.
-
- Mac OS X 10.7 Lion and iOS5: Virtually all of the code in these
- operating systems were built with Clang and llvm-gcc.
-
- Xcode 4.2 (and later): "LLVM Compiler 3.0" (aka Clang) now supports many
- C++'11 features and libc++ is
- supported as a modern C++ runtime library. ARC
- is a major new Objective-C feature introduced in this release,
- introducing automated memory management to iOS programming. Xcode 4.2
- no longer includes GCC 4.2, only the LLVM backend is supported (in the
- Clang and llvm-gcc compilers).
-
+
The upcoming developer's meeting is on November 18, 2011. The upcoming developer's meeting is on November 18, 2011. We have had these meetings so far:LuaAV
+
+Mono
Welcome to the Buildbot
+{%- if title -%}
+ for the
+ {%- if title_url -%}
+ {{ title }}
+ {%- else -%}
+ {{ title }}
+ {%- endif -%}
+ project
+{%- endif -%}
+!
+
+
+
+ {% set item_class=cycler('alt', '') %}
+
+
+
+{%- if authz.advertiseAction('cleanShutdown') -%}
+{%- if shutting_down -%}
+Master is shutting down
+{{ forms.cancel_clean_shutdown(cancel_shutdown_url, authz) }}
+{%- else -%}
+{{ forms.clean_shutdown(shutdown_url, authz) }}
+{%- endif -%}
+{%- endif -%}
+
+
From peter_cooper at apple.com Tue Nov 1 15:37:40 2011
From: peter_cooper at apple.com (Peter Cooper)
Date: Tue, 01 Nov 2011 13:37:40 -0700
Subject: [llvm-commits] patch: partial DSE
In-Reply-To: Apple Inc.
- Mac OS X 10.4 (and later): Uses the LLVM JIT for optimizing
- many parts of the OpenGL pipeline, including emulating vertex/pixel shaders
- when hardware support is missing, performing texture format
- conversion before uploading to the GPU, efficiently packing GPU buffers
- for vertex submission, and many others.
+ Xcode 4.2: "LLVM Compiler 3.0" (aka Clang) now supports many
+ C++'11 features and libc++ is
+ supported as a modern C++ runtime library. ARC
+ is a major new Objective-C feature introduced in this release,
+ introducing automated memory management to iOS programming. Xcode 4.2
+ no longer includes GCC 4.2, only the LLVM backend is supported (in the
+ Clang and llvm-gcc compilers).
+ Mac OS X 10.4: Uses the LLVM JIT for optimizing
+ many parts of the OpenGL pipeline, including emulating vertex/pixel shaders
+ when hardware support is missing, performing texture format
+ conversion before uploading to the GPU, efficiently packing GPU buffers
+ for vertex submission, and many others.
From eli.friedman at gmail.com Tue Nov 1 16:18:40 2011
From: eli.friedman at gmail.com (Eli Friedman)
Date: Tue, 01 Nov 2011 21:18:40 -0000
Subject: [llvm-commits] [llvm] r143498 - in /llvm/trunk:
lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/x86-shifts.ll
Message-ID: <20111101211840.23C322A6C12C@llvm.org>
Author: efriedma
Date: Tue Nov 1 16:18:39 2011
New Revision: 143498
URL: http://llvm.org/viewvc/llvm-project?rev=143498&view=rev
Log:
Teach the x86 backend a couple tricks for dealing with v16i8 sra by a constant splat value. Fixes PR11289.
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/test/CodeGen/X86/x86-shifts.ll
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=143498&r1=143497&r2=143498&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Nov 1 16:18:39 2011
@@ -966,6 +966,7 @@
setOperationAction(ISD::SRA, MVT::v4i32, Custom);
setOperationAction(ISD::SRA, MVT::v8i16, Custom);
+ setOperationAction(ISD::SRA, MVT::v16i8, Custom);
}
if (Subtarget->hasSSE42() || Subtarget->hasAVX())
@@ -9994,6 +9995,23 @@
return DAG.getNode(ISD::INTRINSIC_WO_CHAIN, dl, VT,
DAG.getConstant(Intrinsic::x86_sse2_psrai_w, MVT::i32),
R, DAG.getConstant(ShiftAmt, MVT::i32));
+
+ if (VT == MVT::v16i8 && Op.getOpcode() == ISD::SRA) {
+ if (ShiftAmt == 7) {
+ // R s>> 7 === R s< 0
+ SDValue Zeros = getZeroVector(VT, true /* HasXMMInt */, DAG, dl);
+ return DAG.getNode(X86ISD::PCMPGTB, dl, VT, Zeros, R);
+ }
+
+ // R s>> a === ((R u>> a) ^ m) - m
+ SDValue Res = DAG.getNode(ISD::SRL, dl, VT, R, Amt);
+ SmallVector