<div dir="ltr">Thanks! </div><br><div class="gmail_quote"><div dir="ltr">On Fri, Mar 24, 2017 at 11:07 AM Benjamin Kramer <<a href="mailto:benny.kra@gmail.com">benny.kra@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">r298719 should help.<br class="gmail_msg">
<br class="gmail_msg">
On Fri, Mar 24, 2017 at 7:01 PM, Vitaly Buka <<a href="mailto:vitalybuka@google.com" class="gmail_msg" target="_blank">vitalybuka@google.com</a>> wrote:<br class="gmail_msg">
> Could you please fix or revert the patch?<br class="gmail_msg">
> <a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3684/steps/build%20clang%2Fmsan/logs/stdio" rel="noreferrer" class="gmail_msg" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3684/steps/build%20clang%2Fmsan/logs/stdio</a><br class="gmail_msg">
><br class="gmail_msg">
> FAILED:<br class="gmail_msg">
> lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/SIMachineScheduler.cpp.o<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build0/bin/clang++<br class="gmail_msg">
> -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_GLOBAL_ISEL -D_DEBUG -D_GNU_SOURCE<br class="gmail_msg">
> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS<br class="gmail_msg">
> -Ilib/Target/AMDGPU<br class="gmail_msg">
> -I/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU<br class="gmail_msg">
> -Iinclude<br class="gmail_msg">
> -I/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include<br class="gmail_msg">
> -nostdinc++ -isystem<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include<br class="gmail_msg">
> -isystem<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1<br class="gmail_msg">
> -lc++abi<br class="gmail_msg">
> -Wl,--rpath=/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/lib<br class="gmail_msg">
> -L/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/lib<br class="gmail_msg">
> -fsanitize=memory -w -stdlib=libc++ -fPIC -fvisibility-inlines-hidden<br class="gmail_msg">
> -Werror=date-time -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings<br class="gmail_msg">
> -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long<br class="gmail_msg">
> -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor<br class="gmail_msg">
> -Wstring-conversion -fno-omit-frame-pointer -gline-tables-only<br class="gmail_msg">
> -fsanitize=memory -fcolor-diagnostics -ffunction-sections -fdata-sections<br class="gmail_msg">
> -O3    -UNDEBUG  -fno-exceptions -fno-rtti -MD -MT<br class="gmail_msg">
> lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/SIMachineScheduler.cpp.o<br class="gmail_msg">
> -MF<br class="gmail_msg">
> lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/SIMachineScheduler.cpp.o.d<br class="gmail_msg">
> -o<br class="gmail_msg">
> lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/SIMachineScheduler.cpp.o<br class="gmail_msg">
> -c<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp:1830:9:<br class="gmail_msg">
> error: constexpr variable 'Variants' must be initialized by a constant<br class="gmail_msg">
> expression<br class="gmail_msg">
>         Variants[] = {<br class="gmail_msg">
>         ^            ~<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp:1831:7:<br class="gmail_msg">
> note: non-constexpr constructor 'pair<llvm::SISchedulerBlockCreatorVariant,<br class="gmail_msg">
> llvm::SISchedulerBlockSchedulerVariant, false>' cannot be used in a constant<br class="gmail_msg">
> expression<br class="gmail_msg">
>       { LatenciesAlone, BlockRegUsageLatency },<br class="gmail_msg">
>       ^<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/utility:436:5:<br class="gmail_msg">
> note: declared here<br class="gmail_msg">
>     pair(_U1&& __u1, _U2&& __u2)<br class="gmail_msg">
>     ^<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp:1851:9:<br class="gmail_msg">
> error: constexpr variable 'Variants' must be initialized by a constant<br class="gmail_msg">
> expression<br class="gmail_msg">
>         Variants[] = {<br class="gmail_msg">
>         ^            ~<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp:1853:7:<br class="gmail_msg">
> note: non-constexpr constructor 'pair<llvm::SISchedulerBlockCreatorVariant,<br class="gmail_msg">
> llvm::SISchedulerBlockSchedulerVariant, false>' cannot be used in a constant<br class="gmail_msg">
> expression<br class="gmail_msg">
>       { LatenciesAlone, BlockRegUsage },<br class="gmail_msg">
>       ^<br class="gmail_msg">
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/utility:436:5:<br class="gmail_msg">
> note: declared here<br class="gmail_msg">
>     pair(_U1&& __u1, _U2&& __u2)<br class="gmail_msg">
>     ^<br class="gmail_msg">
> 2 errors generated.<br class="gmail_msg">
> [464/1124] Building XCoreGenRegisterInfo.inc...<br class="gmail_msg">
> [465/1124] Building XCoreGenInstrInfo.inc...<br class="gmail_msg">
> [466/1124] Building X86GenRegisterInfo.inc...<br class="gmail_msg">
> [467/<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> On Fri, Mar 24, 2017 at 7:24 AM Benjamin Kramer via llvm-commits<br class="gmail_msg">
> <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br class="gmail_msg">
>><br class="gmail_msg">
>> Author: d0k<br class="gmail_msg">
>> Date: Fri Mar 24 09:11:47 2017<br class="gmail_msg">
>> New Revision: 298701<br class="gmail_msg">
>><br class="gmail_msg">
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=298701&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=298701&view=rev</a><br class="gmail_msg">
>> Log:<br class="gmail_msg">
>> Don't build up std::vectors with constant sizes when an array suffices.<br class="gmail_msg">
>><br class="gmail_msg">
>> NFC.<br class="gmail_msg">
>><br class="gmail_msg">
>> Modified:<br class="gmail_msg">
>>     llvm/trunk/include/llvm/Support/FormatProviders.h<br class="gmail_msg">
>>     llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp<br class="gmail_msg">
>>     llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp<br class="gmail_msg">
>><br class="gmail_msg">
>> Modified: llvm/trunk/include/llvm/Support/FormatProviders.h<br class="gmail_msg">
>> URL:<br class="gmail_msg">
>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/FormatProviders.h?rev=298701&r1=298700&r2=298701&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/FormatProviders.h?rev=298701&r1=298700&r2=298701&view=diff</a><br class="gmail_msg">
>><br class="gmail_msg">
>> ==============================================================================<br class="gmail_msg">
>> --- llvm/trunk/include/llvm/Support/FormatProviders.h (original)<br class="gmail_msg">
>> +++ llvm/trunk/include/llvm/Support/FormatProviders.h Fri Mar 24 09:11:47<br class="gmail_msg">
>> 2017<br class="gmail_msg">
>> @@ -370,8 +370,7 @@ template <typename IterT> class format_p<br class="gmail_msg">
>>        return Default;<br class="gmail_msg">
>>      }<br class="gmail_msg">
>><br class="gmail_msg">
>> -    std::vector<const char *> Delims = {"[]", "<>", "()"};<br class="gmail_msg">
>> -    for (const char *D : Delims) {<br class="gmail_msg">
>> +    for (const char *D : {"[]", "<>", "()"}) {<br class="gmail_msg">
>>        if (Style.front() != D[0])<br class="gmail_msg">
>>          continue;<br class="gmail_msg">
>>        size_t End = Style.find_first_of(D[1]);<br class="gmail_msg">
>><br class="gmail_msg">
>> Modified: llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp<br class="gmail_msg">
>> URL:<br class="gmail_msg">
>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp?rev=298701&r1=298700&r2=298701&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp?rev=298701&r1=298700&r2=298701&view=diff</a><br class="gmail_msg">
>><br class="gmail_msg">
>> ==============================================================================<br class="gmail_msg">
>> --- llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp (original)<br class="gmail_msg">
>> +++ llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpp Fri Mar 24<br class="gmail_msg">
>> 09:11:47 2017<br class="gmail_msg">
>> @@ -1825,7 +1825,9 @@ void SIScheduleDAGMI::schedule()<br class="gmail_msg">
>>    // if VGPR usage is extremely high, try other good performing variants<br class="gmail_msg">
>>    // which could lead to lower VGPR usage<br class="gmail_msg">
>>    if (Best.MaxVGPRUsage > 180) {<br class="gmail_msg">
>> -    std::vector<std::pair<SISchedulerBlockCreatorVariant,<br class="gmail_msg">
>> SISchedulerBlockSchedulerVariant>> Variants = {<br class="gmail_msg">
>> +    static constexpr std::pair<SISchedulerBlockCreatorVariant,<br class="gmail_msg">
>> +                               SISchedulerBlockSchedulerVariant><br class="gmail_msg">
>> +        Variants[] = {<br class="gmail_msg">
>>        { LatenciesAlone, BlockRegUsageLatency },<br class="gmail_msg">
>>  //      { LatenciesAlone, BlockRegUsage },<br class="gmail_msg">
>>        { LatenciesGrouped, BlockLatencyRegUsage },<br class="gmail_msg">
>> @@ -1844,7 +1846,9 @@ void SIScheduleDAGMI::schedule()<br class="gmail_msg">
>>    // if VGPR usage is still extremely high, we may spill. Try other<br class="gmail_msg">
>> variants<br class="gmail_msg">
>>    // which are less performing, but that could lead to lower VGPR usage.<br class="gmail_msg">
>>    if (Best.MaxVGPRUsage > 200) {<br class="gmail_msg">
>> -    std::vector<std::pair<SISchedulerBlockCreatorVariant,<br class="gmail_msg">
>> SISchedulerBlockSchedulerVariant>> Variants = {<br class="gmail_msg">
>> +    static constexpr std::pair<SISchedulerBlockCreatorVariant,<br class="gmail_msg">
>> +                               SISchedulerBlockSchedulerVariant><br class="gmail_msg">
>> +        Variants[] = {<br class="gmail_msg">
>>  //      { LatenciesAlone, BlockRegUsageLatency },<br class="gmail_msg">
>>        { LatenciesAlone, BlockRegUsage },<br class="gmail_msg">
>>  //      { LatenciesGrouped, BlockLatencyRegUsage },<br class="gmail_msg">
>><br class="gmail_msg">
>> Modified: llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp<br class="gmail_msg">
>> URL:<br class="gmail_msg">
>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp?rev=298701&r1=298700&r2=298701&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp?rev=298701&r1=298700&r2=298701&view=diff</a><br class="gmail_msg">
>><br class="gmail_msg">
>> ==============================================================================<br class="gmail_msg">
>> --- llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp (original)<br class="gmail_msg">
>> +++ llvm/trunk/utils/TableGen/X86EVEX2VEXTablesEmitter.cpp Fri Mar 24<br class="gmail_msg">
>> 09:11:47 2017<br class="gmail_msg">
>> @@ -37,15 +37,10 @@ class X86EVEX2VEXTablesEmitter {<br class="gmail_msg">
>>    std::vector<Entry> EVEX2VEX256;<br class="gmail_msg">
>><br class="gmail_msg">
>>    // Represents a manually added entry to the tables<br class="gmail_msg">
>> -  class ManualEntry {<br class="gmail_msg">
>> -  public:<br class="gmail_msg">
>> -    std::string EVEXInstStr;<br class="gmail_msg">
>> -    std::string VEXInstStr;<br class="gmail_msg">
>> +  struct ManualEntry {<br class="gmail_msg">
>> +    StringLiteral EVEXInstStr;<br class="gmail_msg">
>> +    StringLiteral VEXInstStr;<br class="gmail_msg">
>>      bool Is128Bit;<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    ManualEntry(std::string EVEXInstStr, std::string VEXInstStr, bool<br class="gmail_msg">
>> Is128Bit)<br class="gmail_msg">
>> -        : EVEXInstStr(EVEXInstStr), VEXInstStr(VEXInstStr),<br class="gmail_msg">
>> Is128Bit(Is128Bit) {<br class="gmail_msg">
>> -    }<br class="gmail_msg">
>>    };<br class="gmail_msg">
>><br class="gmail_msg">
>>  public:<br class="gmail_msg">
>> @@ -59,81 +54,30 @@ private:<br class="gmail_msg">
>>    // X86EvexToVexCompressTableEntry<br class="gmail_msg">
>>    void printTable(const std::vector<Entry> &Table, raw_ostream &OS);<br class="gmail_msg">
>><br class="gmail_msg">
>> -  // List of EVEX instructions that match VEX instructions by the<br class="gmail_msg">
>> encoding<br class="gmail_msg">
>> -  // but do not perform the same operation.<br class="gmail_msg">
>> -  const std::vector<std::string> ExceptionList = {<br class="gmail_msg">
>> -      "VCVTQQ2PD",<br class="gmail_msg">
>> -      "VCVTQQ2PS",<br class="gmail_msg">
>> -      "VPMAXSQ",<br class="gmail_msg">
>> -      "VPMAXUQ",<br class="gmail_msg">
>> -      "VPMINSQ",<br class="gmail_msg">
>> -      "VPMINUQ",<br class="gmail_msg">
>> -      "VPMULLQ",<br class="gmail_msg">
>> -      "VPSRAQ",<br class="gmail_msg">
>> -      "VDBPSADBW",<br class="gmail_msg">
>> -      "VRNDSCALE",<br class="gmail_msg">
>> -      "VSCALEFPS"<br class="gmail_msg">
>> -  };<br class="gmail_msg">
>> -<br class="gmail_msg">
>>    bool inExceptionList(const CodeGenInstruction *Inst) {<br class="gmail_msg">
>> +    // List of EVEX instructions that match VEX instructions by the<br class="gmail_msg">
>> encoding<br class="gmail_msg">
>> +    // but do not perform the same operation.<br class="gmail_msg">
>> +    static constexpr StringLiteral ExceptionList[] = {<br class="gmail_msg">
>> +        "VCVTQQ2PD",<br class="gmail_msg">
>> +        "VCVTQQ2PS",<br class="gmail_msg">
>> +        "VPMAXSQ",<br class="gmail_msg">
>> +        "VPMAXUQ",<br class="gmail_msg">
>> +        "VPMINSQ",<br class="gmail_msg">
>> +        "VPMINUQ",<br class="gmail_msg">
>> +        "VPMULLQ",<br class="gmail_msg">
>> +        "VPSRAQ",<br class="gmail_msg">
>> +        "VDBPSADBW",<br class="gmail_msg">
>> +        "VRNDSCALE",<br class="gmail_msg">
>> +        "VSCALEFPS"<br class="gmail_msg">
>> +    };<br class="gmail_msg">
>>      // Instruction's name starts with one of the entries in the exception<br class="gmail_msg">
>> list<br class="gmail_msg">
>> -    for (const std::string& InstStr : ExceptionList) {<br class="gmail_msg">
>> +    for (StringRef InstStr : ExceptionList) {<br class="gmail_msg">
>>        if (Inst->TheDef->getName().startswith(InstStr))<br class="gmail_msg">
>>          return true;<br class="gmail_msg">
>>      }<br class="gmail_msg">
>>      return false;<br class="gmail_msg">
>>    }<br class="gmail_msg">
>><br class="gmail_msg">
>> -  // Some VEX instructions were duplicated to multiple EVEX versions due<br class="gmail_msg">
>> the<br class="gmail_msg">
>> -  // introduction of mask variants, and thus some of the EVEX versions<br class="gmail_msg">
>> have<br class="gmail_msg">
>> -  // different encoding than the VEX instruction. In order to maximize<br class="gmail_msg">
>> the<br class="gmail_msg">
>> -  // compression we add these entries manually.<br class="gmail_msg">
>> -  const std::vector<ManualEntry> ManuallyAddedEntries = {<br class="gmail_msg">
>> -    // EVEX-Inst              VEX-Inst           Is128-bit<br class="gmail_msg">
>> -    {"VMOVDQU8Z128mr",      "VMOVDQUmr",       true},<br class="gmail_msg">
>> -    {"VMOVDQU8Z128rm",      "VMOVDQUrm",       true},<br class="gmail_msg">
>> -    {"VMOVDQU8Z128rr",      "VMOVDQUrr",       true},<br class="gmail_msg">
>> -    {"VMOVDQU8Z128rr_REV",  "VMOVDQUrr_REV",   true},<br class="gmail_msg">
>> -    {"VMOVDQU16Z128mr",     "VMOVDQUmr",       true},<br class="gmail_msg">
>> -    {"VMOVDQU16Z128rm",     "VMOVDQUrm",       true},<br class="gmail_msg">
>> -    {"VMOVDQU16Z128rr",     "VMOVDQUrr",       true},<br class="gmail_msg">
>> -    {"VMOVDQU16Z128rr_REV", "VMOVDQUrr_REV",   true},<br class="gmail_msg">
>> -    {"VMOVDQU8Z256mr",      "VMOVDQUYmr",      false},<br class="gmail_msg">
>> -    {"VMOVDQU8Z256rm",      "VMOVDQUYrm",      false},<br class="gmail_msg">
>> -    {"VMOVDQU8Z256rr",      "VMOVDQUYrr",      false},<br class="gmail_msg">
>> -    {"VMOVDQU8Z256rr_REV",  "VMOVDQUYrr_REV",  false},<br class="gmail_msg">
>> -    {"VMOVDQU16Z256mr",     "VMOVDQUYmr",      false},<br class="gmail_msg">
>> -    {"VMOVDQU16Z256rm",     "VMOVDQUYrm",      false},<br class="gmail_msg">
>> -    {"VMOVDQU16Z256rr",     "VMOVDQUYrr",      false},<br class="gmail_msg">
>> -    {"VMOVDQU16Z256rr_REV", "VMOVDQUYrr_REV",  false},<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    {"VPERMILPDZ128mi",     "VPERMILPDmi",     true},<br class="gmail_msg">
>> -    {"VPERMILPDZ128ri",     "VPERMILPDri",     true},<br class="gmail_msg">
>> -    {"VPERMILPDZ128rm",     "VPERMILPDrm",     true},<br class="gmail_msg">
>> -    {"VPERMILPDZ128rr",     "VPERMILPDrr",     true},<br class="gmail_msg">
>> -    {"VPERMILPDZ256mi",     "VPERMILPDYmi",    false},<br class="gmail_msg">
>> -    {"VPERMILPDZ256ri",     "VPERMILPDYri",    false},<br class="gmail_msg">
>> -    {"VPERMILPDZ256rm",     "VPERMILPDYrm",    false},<br class="gmail_msg">
>> -    {"VPERMILPDZ256rr",     "VPERMILPDYrr",    false},<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    {"VPBROADCASTQZ128m",   "VPBROADCASTQrm",  true},<br class="gmail_msg">
>> -    {"VPBROADCASTQZ128r",   "VPBROADCASTQrr",  true},<br class="gmail_msg">
>> -    {"VPBROADCASTQZ256m",   "VPBROADCASTQYrm", false},<br class="gmail_msg">
>> -    {"VPBROADCASTQZ256r",   "VPBROADCASTQYrr", false},<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    {"VBROADCASTSDZ256m",   "VBROADCASTSDYrm", false},<br class="gmail_msg">
>> -    {"VBROADCASTSDZ256r",   "VBROADCASTSDYrr", false},<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    {"VEXTRACTF64x2Z256mr", "VEXTRACTF128mr",  false},<br class="gmail_msg">
>> -    {"VEXTRACTF64x2Z256rr", "VEXTRACTF128rr",  false},<br class="gmail_msg">
>> -    {"VEXTRACTI64x2Z256mr", "VEXTRACTI128mr",  false},<br class="gmail_msg">
>> -    {"VEXTRACTI64x2Z256rr", "VEXTRACTI128rr",  false},<br class="gmail_msg">
>> -<br class="gmail_msg">
>> -    {"VINSERTF64x2Z256rm",  "VINSERTF128rm",   false},<br class="gmail_msg">
>> -    {"VINSERTF64x2Z256rr",  "VINSERTF128rr",   false},<br class="gmail_msg">
>> -    {"VINSERTI64x2Z256rm",  "VINSERTI128rm",   false},<br class="gmail_msg">
>> -    {"VINSERTI64x2Z256rr",  "VINSERTI128rr",   false}<br class="gmail_msg">
>> -  };<br class="gmail_msg">
>>  };<br class="gmail_msg">
>><br class="gmail_msg">
>>  void X86EVEX2VEXTablesEmitter::printTable(const std::vector<Entry><br class="gmail_msg">
>> &Table,<br class="gmail_msg">
>> @@ -153,6 +97,57 @@ void X86EVEX2VEXTablesEmitter::printTabl<br class="gmail_msg">
>>         << ", X86::" << Pair.second->TheDef->getName() << " },\n";<br class="gmail_msg">
>>    }<br class="gmail_msg">
>><br class="gmail_msg">
>> +  // Some VEX instructions were duplicated to multiple EVEX versions due<br class="gmail_msg">
>> the<br class="gmail_msg">
>> +  // introduction of mask variants, and thus some of the EVEX versions<br class="gmail_msg">
>> have<br class="gmail_msg">
>> +  // different encoding than the VEX instruction. In order to maximize<br class="gmail_msg">
>> the<br class="gmail_msg">
>> +  // compression we add these entries manually.<br class="gmail_msg">
>> +  static constexpr ManualEntry ManuallyAddedEntries[] = {<br class="gmail_msg">
>> +      // EVEX-Inst            VEX-Inst           Is128-bit<br class="gmail_msg">
>> +      {"VMOVDQU8Z128mr",      "VMOVDQUmr",       true},<br class="gmail_msg">
>> +      {"VMOVDQU8Z128rm",      "VMOVDQUrm",       true},<br class="gmail_msg">
>> +      {"VMOVDQU8Z128rr",      "VMOVDQUrr",       true},<br class="gmail_msg">
>> +      {"VMOVDQU8Z128rr_REV",  "VMOVDQUrr_REV",   true},<br class="gmail_msg">
>> +      {"VMOVDQU16Z128mr",     "VMOVDQUmr",       true},<br class="gmail_msg">
>> +      {"VMOVDQU16Z128rm",     "VMOVDQUrm",       true},<br class="gmail_msg">
>> +      {"VMOVDQU16Z128rr",     "VMOVDQUrr",       true},<br class="gmail_msg">
>> +      {"VMOVDQU16Z128rr_REV", "VMOVDQUrr_REV",   true},<br class="gmail_msg">
>> +      {"VMOVDQU8Z256mr",      "VMOVDQUYmr",      false},<br class="gmail_msg">
>> +      {"VMOVDQU8Z256rm",      "VMOVDQUYrm",      false},<br class="gmail_msg">
>> +      {"VMOVDQU8Z256rr",      "VMOVDQUYrr",      false},<br class="gmail_msg">
>> +      {"VMOVDQU8Z256rr_REV",  "VMOVDQUYrr_REV",  false},<br class="gmail_msg">
>> +      {"VMOVDQU16Z256mr",     "VMOVDQUYmr",      false},<br class="gmail_msg">
>> +      {"VMOVDQU16Z256rm",     "VMOVDQUYrm",      false},<br class="gmail_msg">
>> +      {"VMOVDQU16Z256rr",     "VMOVDQUYrr",      false},<br class="gmail_msg">
>> +      {"VMOVDQU16Z256rr_REV", "VMOVDQUYrr_REV",  false},<br class="gmail_msg">
>> +<br class="gmail_msg">
>> +      {"VPERMILPDZ128mi",     "VPERMILPDmi",     true},<br class="gmail_msg">
>> +      {"VPERMILPDZ128ri",     "VPERMILPDri",     true},<br class="gmail_msg">
>> +      {"VPERMILPDZ128rm",     "VPERMILPDrm",     true},<br class="gmail_msg">
>> +      {"VPERMILPDZ128rr",     "VPERMILPDrr",     true},<br class="gmail_msg">
>> +      {"VPERMILPDZ256mi",     "VPERMILPDYmi",    false},<br class="gmail_msg">
>> +      {"VPERMILPDZ256ri",     "VPERMILPDYri",    false},<br class="gmail_msg">
>> +      {"VPERMILPDZ256rm",     "VPERMILPDYrm",    false},<br class="gmail_msg">
>> +      {"VPERMILPDZ256rr",     "VPERMILPDYrr",    false},<br class="gmail_msg">
>> +<br class="gmail_msg">
>> +      {"VPBROADCASTQZ128m",   "VPBROADCASTQrm",  true},<br class="gmail_msg">
>> +      {"VPBROADCASTQZ128r",   "VPBROADCASTQrr",  true},<br class="gmail_msg">
>> +      {"VPBROADCASTQZ256m",   "VPBROADCASTQYrm", false},<br class="gmail_msg">
>> +      {"VPBROADCASTQZ256r",   "VPBROADCASTQYrr", false},<br class="gmail_msg">
>> +<br class="gmail_msg">
>> +      {"VBROADCASTSDZ256m",   "VBROADCASTSDYrm", false},<br class="gmail_msg">
>> +      {"VBROADCASTSDZ256r",   "VBROADCASTSDYrr", false},<br class="gmail_msg">
>> +<br class="gmail_msg">
>> +      {"VEXTRACTF64x2Z256mr", "VEXTRACTF128mr",  false},<br class="gmail_msg">
>> +      {"VEXTRACTF64x2Z256rr", "VEXTRACTF128rr",  false},<br class="gmail_msg">
>> +      {"VEXTRACTI64x2Z256mr", "VEXTRACTI128mr",  false},<br class="gmail_msg">
>> +      {"VEXTRACTI64x2Z256rr", "VEXTRACTI128rr",  false},<br class="gmail_msg">
>> +<br class="gmail_msg">
>> +      {"VINSERTF64x2Z256rm",  "VINSERTF128rm",   false},<br class="gmail_msg">
>> +      {"VINSERTF64x2Z256rr",  "VINSERTF128rr",   false},<br class="gmail_msg">
>> +      {"VINSERTI64x2Z256rm",  "VINSERTI128rm",   false},<br class="gmail_msg">
>> +      {"VINSERTI64x2Z256rr",  "VINSERTI128rr",   false}<br class="gmail_msg">
>> +  };<br class="gmail_msg">
>> +<br class="gmail_msg">
>>    // Print the manually added entries<br class="gmail_msg">
>>    for (const ManualEntry &Entry : ManuallyAddedEntries) {<br class="gmail_msg">
>>      if ((Table == EVEX2VEX128 && Entry.Is128Bit) ||<br class="gmail_msg">
>><br class="gmail_msg">
>><br class="gmail_msg">
>> _______________________________________________<br class="gmail_msg">
>> llvm-commits mailing list<br class="gmail_msg">
>> <a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div>