SuccessChanges

Summary

  1. [X86][SSE] Added missing vector logic intrinsic schedules Improves atom scheduler test coverage (to make it easier to upgrade them for PR32431). Merged SSE_VEC_BIT_ITINS_P + SSE_BIT_ITINS_P as we were interchanging between them.
  2. clang-format: [JS] no whitespace between typeof operator and l_paren.
  3. clang-format: [JS] prefer wrapping chains over empty literals. Summary: E.g. don't wrap like this: (foo.bar.baz).and.bam(Blah.of({ })) But rather: (foo.bar.baz) .and.bam(Blah.of({})) Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36139
  4. [CGP] use narrower types in memcmp expansion when possible This only affects very small memcmp on x86 for now, but it will become more important if we allow vector-sized load and compares.
  5. clang-format: [JS] whitespace between keywords and parenthesized expressions. Summary: `throw (...)` should have a whitespace following it, as do await and void. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36146
  6. [DAG] Convert extload check to equivalent type check. NFC. Replace check with check that consuming store has the same type.
  7. clang-format: [JS] handle union types in arrow functions. Summary: clang-format would previously fail to detect that an arrow functions parameter block is not an expression, and thus insert whitespace around the `|` and `&` type operators in it. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36147
  8. [X86] Use BEXTR/BEXTRI for 64-bit 'and' with a large mask Summary: The 64-bit 'and' with immediate instruction only supports a 32-bit immediate. So for larger constants we have to load the constant into a register first. If the immediate happens to be a mask we can use the BEXTRI instruction to perform the masking. We already do something similar using the BZHI instruction from the BMI2 instruction set. Reviewers: RKSimon, spatel Reviewed By: RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36129
  9. [clangd] Fixed MSVC compilation failures.
  10. Revert rL309634 until upstream buildbots have upgraded libc.
  11. clang-format: [JS] consistenly format enums. Summary: Previously, const enums would get formatted differently because the modifier was not recognized. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36144
  12. [X86][SSE] Added missing PACKSS/PACKUS intrinsic schedules Improves atom scheduler test coverage (to make it easier to upgrade them for PR32431). Checked on Agner that these actually match the UNPACK schedules, but better to include a separate class
  13. [X86] Split bmi.ll into a bmi test and a bmi2 test. This moves all the bmi2 specific intrinsics to a separate test file and adds a bmi1 only command line to the existing bmi test. This will allow us to see the missed opportunity to use bextr to handle 64-bit 'and' with a large mask. This will be improved in an upcoming patch.
  14. [X86][SSSE3] Added missing PHADDS/PHSUBS/PSIGN intrinsic schedules
  15. [DAG] Move extload check in store merge. NFC. Move candidate check from later check to initial candidate check.
  16. clang-format: [JS] support default imports. Summary: Formerly, `import {default as X} from y;` would not be recognized as an import. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36132
  17. [clangd] Rewrote AST and Preamble management. Summary: The new implementation allows code completion that never waits for AST. Reviewers: bkramer, krasimir, klimek Reviewed By: bkramer Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D36133
  18. clang-format: [JS] handle object types in extends positions. Summary: clang-format would previously drop the whitespace after `extends` in code such as: class Foo extends {} {} Where the first set of curly braces is an inline object literal type. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36131
  19. [X86] Fix a crash in FEntryInserter Pass. Summary: FEntryInserter pass unconditionally derefs the first Instruction in the first Basic Block. The pass crashes when the first BasicBlock is empty. Fix the crash by not dereferencing the basic Block iterator. This fixes an issue observed when building Linux kernel 4.4 with clang. Fixes PR33971. Reviewers: hfinkel, niravd, dblaikie Reviewed By: niravd Subscribers: davide, llvm-commits Differential Revision: https://reviews.llvm.org/D35979
  20. [AVX-512] Don't use unmasked VMOVDQU8/16 for 8-bit or 16-bit element stores even when BWI instructions are supported. Always use VMOVDQA32/VMOVDQU32. We were already using the 32 bit element opcode if BWI isn't enabled, but there's no reason to change opcode if we have BWI. We will still use the 8/16 opcodes for masked stores though. This allows us to use the aligned opcode when we can which makes our test output more consistent between different modes. It also reduces the number of isel patterns we need. This is a slight inconsistency with loads which default to 64 bit element opcodes. I'll probably rectify that in a future patch. Differential Revision: https://reviews.llvm.org/D35978
  21. [X86][SSSE3] Fix typos in pabsw/pmulhrsw tests for load folding scheduling.
Revision 309715 by rksimon:
[X86][SSE] Added missing vector logic intrinsic schedules

Improves atom scheduler test coverage (to make it easier to upgrade them for PR32431).

Merged SSE_VEC_BIT_ITINS_P + SSE_BIT_ITINS_P as we were interchanging between them.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdllvm.src/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/test/CodeGen/X86/sse-schedule.llllvm.src/test/CodeGen/X86/sse-schedule.ll
The file was modified/llvm/trunk/test/CodeGen/X86/sse2-schedule.llllvm.src/test/CodeGen/X86/sse2-schedule.ll
Revision 309713 by mprobst:
clang-format: [JS] no whitespace between typeof operator and l_paren.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/FormatToken.hclang.src/lib/Format/FormatToken.h
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309712 by mprobst:
clang-format: [JS] prefer wrapping chains over empty literals.

Summary:
E.g. don't wrap like this:

    (foo.bar.baz).and.bam(Blah.of({
    }))

But rather:

    (foo.bar.baz)
        .and.bam(Blah.of({}))

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36139
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309711 by spatel:
[CGP] use narrower types in memcmp expansion when possible

This only affects very small memcmp on x86 for now, but it
will become more important if we allow vector-sized load and
compares.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/CodeGenPrepare.cppllvm.src/lib/CodeGen/CodeGenPrepare.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/memcmp-optsize.llllvm.src/test/CodeGen/X86/memcmp-optsize.ll
The file was modified/llvm/trunk/test/CodeGen/X86/memcmp.llllvm.src/test/CodeGen/X86/memcmp.ll
The file was modified/llvm/trunk/test/Transforms/CodeGenPrepare/X86/memcmp.llllvm.src/test/Transforms/CodeGenPrepare/X86/memcmp.ll
Revision 309710 by mprobst:
clang-format: [JS] whitespace between keywords and parenthesized expressions.

Summary: `throw (...)` should have a whitespace following it, as do await and void.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36146
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309708 by niravd:
[DAG] Convert extload check to equivalent type check. NFC.

Replace check with check that consuming store has the same type.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 309707 by mprobst:
clang-format: [JS] handle union types in arrow functions.

Summary: clang-format would previously fail to detect that an arrow functions parameter block is not an expression, and thus insert whitespace around the `|` and `&` type operators in it.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36147
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309706 by ctopper:
[X86] Use BEXTR/BEXTRI for 64-bit 'and' with a large mask

Summary: The 64-bit 'and' with immediate instruction only supports a 32-bit immediate. So for larger constants we have to load the constant into a register first. If the immediate happens to be a mask we can use the BEXTRI instruction to perform the masking. We already do something similar using the BZHI instruction from the BMI2 instruction set.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D36129
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.tdllvm.src/lib/Target/X86/X86InstrInfo.td
The file was modified/llvm/trunk/test/CodeGen/X86/bmi.llllvm.src/test/CodeGen/X86/bmi.ll
The file was modified/llvm/trunk/test/CodeGen/X86/tbm_patterns.llllvm.src/test/CodeGen/X86/tbm_patterns.ll
Revision 309705 by ibiryukov:
[clangd] Fixed MSVC compilation failures.
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/trunk/clangd/ClangdUnit.hclang-tools-extra.src/clangd/ClangdUnit.h
Revision 309704 by saugustine:
Revert rL309634 until upstream buildbots have upgraded libc.
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/cmake/Modules/CompilerRTUtils.cmakecompiler-rt.src/cmake/Modules/CompilerRTUtils.cmake
The file was modified/compiler-rt/trunk/cmake/builtin-config-ix.cmakecompiler-rt.src/cmake/builtin-config-ix.cmake
The file was modified/compiler-rt/trunk/lib/builtins/CMakeLists.txtcompiler-rt.src/lib/builtins/CMakeLists.txt
The file was modified/compiler-rt/trunk/lib/builtins/clear_cache.ccompiler-rt.src/lib/builtins/clear_cache.c
Revision 309703 by mprobst:
clang-format: [JS] consistenly format enums.

Summary: Previously, const enums would get formatted differently because the modifier was not recognized.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36144
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309701 by rksimon:
[X86][SSE] Added missing PACKSS/PACKUS intrinsic schedules

Improves atom scheduler test coverage (to make it easier to upgrade them for PR32431).

Checked on Agner that these actually match the UNPACK schedules, but better to include a separate class
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdllvm.src/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/lib/Target/X86/X86Schedule.tdllvm.src/lib/Target/X86/X86Schedule.td
The file was modified/llvm/trunk/lib/Target/X86/X86ScheduleAtom.tdllvm.src/lib/Target/X86/X86ScheduleAtom.td
The file was modified/llvm/trunk/test/CodeGen/X86/sse2-schedule.llllvm.src/test/CodeGen/X86/sse2-schedule.ll
Revision 309700 by ctopper:
[X86] Split bmi.ll into a bmi test and a bmi2 test.

This moves all the bmi2 specific intrinsics to a separate test file and adds a bmi1 only command line to the existing bmi test.

This will allow us to see the missed opportunity to use bextr to handle 64-bit 'and' with a large mask. This will be improved in an upcoming patch.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/bmi.llllvm.src/test/CodeGen/X86/bmi.ll
The file was added/llvm/trunk/test/CodeGen/X86/bmi2.llllvm.src/test/CodeGen/X86/bmi2.ll
Revision 309699 by rksimon:
[X86][SSSE3] Added missing PHADDS/PHSUBS/PSIGN intrinsic schedules
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdllvm.src/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/test/CodeGen/X86/ssse3-schedule.llllvm.src/test/CodeGen/X86/ssse3-schedule.ll
Revision 309698 by niravd:
[DAG] Move extload check in store merge. NFC.

Move candidate check from later check to initial candidate check.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 309697 by mprobst:
clang-format: [JS] support default imports.

Summary: Formerly, `import {default as X} from y;` would not be recognized as an import.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36132
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/SortJavaScriptImports.cppclang.src/lib/Format/SortJavaScriptImports.cpp
The file was modified/cfe/trunk/unittests/Format/SortImportsTestJS.cppclang.src/unittests/Format/SortImportsTestJS.cpp
Revision 309696 by ibiryukov:
[clangd] Rewrote AST and Preamble management.

Summary: The new implementation allows code completion that never waits for AST.

Reviewers: bkramer, krasimir, klimek

Reviewed By: bkramer

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D36133
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/trunk/clangd/ClangdServer.cppclang-tools-extra.src/clangd/ClangdServer.cpp
The file was modified/clang-tools-extra/trunk/clangd/ClangdServer.hclang-tools-extra.src/clangd/ClangdServer.h
The file was modified/clang-tools-extra/trunk/clangd/ClangdUnit.cppclang-tools-extra.src/clangd/ClangdUnit.cpp
The file was modified/clang-tools-extra/trunk/clangd/ClangdUnit.hclang-tools-extra.src/clangd/ClangdUnit.h
The file was modified/clang-tools-extra/trunk/clangd/ClangdUnitStore.cppclang-tools-extra.src/clangd/ClangdUnitStore.cpp
The file was modified/clang-tools-extra/trunk/clangd/ClangdUnitStore.hclang-tools-extra.src/clangd/ClangdUnitStore.h
The file was modified/clang-tools-extra/trunk/clangd/GlobalCompilationDatabase.hclang-tools-extra.src/clangd/GlobalCompilationDatabase.h
The file was modified/clang-tools-extra/trunk/unittests/clangd/ClangdTests.cppclang-tools-extra.src/unittests/clangd/ClangdTests.cpp
Revision 309695 by mprobst:
clang-format: [JS] handle object types in extends positions.

Summary:
clang-format would previously drop the whitespace after `extends` in code such as:

    class Foo extends {} {}

Where the first set of curly braces is an inline object literal type.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D36131
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Format/TokenAnnotator.cppclang.src/lib/Format/TokenAnnotator.cpp
The file was modified/cfe/trunk/lib/Format/UnwrappedLineParser.cppclang.src/lib/Format/UnwrappedLineParser.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestJS.cppclang.src/unittests/Format/FormatTestJS.cpp
Revision 309694 by manojgupta:
[X86] Fix a crash in FEntryInserter Pass.

Summary:
FEntryInserter pass unconditionally derefs the first Instruction
in the first Basic Block. The pass crashes when the first
BasicBlock is empty. Fix the crash by not dereferencing the basic
Block iterator. This fixes an issue observed when building Linux kernel
4.4 with clang.

Fixes PR33971.

Reviewers: hfinkel, niravd, dblaikie

Reviewed By: niravd

Subscribers: davide, llvm-commits

Differential Revision: https://reviews.llvm.org/D35979
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/FEntryInserter.cppllvm.src/lib/CodeGen/FEntryInserter.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/fentry-insertion.llllvm.src/test/CodeGen/X86/fentry-insertion.ll
Revision 309693 by ctopper:
[AVX-512] Don't use unmasked VMOVDQU8/16 for 8-bit or 16-bit element stores even when BWI instructions are supported. Always use VMOVDQA32/VMOVDQU32.

We were already using the 32 bit element opcode if BWI isn't enabled, but there's no reason to change opcode if we have BWI. We will still use the 8/16 opcodes for masked stores though.

This allows us to use the aligned opcode when we can which makes our test output more consistent between different modes. It also reduces the number of isel patterns we need.

This is a slight inconsistency with loads which default to 64 bit element opcodes. I'll probably rectify that in a future patch.

Differential Revision: https://reviews.llvm.org/D35978
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdllvm.src/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/test/CodeGen/X86/avg.llllvm.src/test/CodeGen/X86/avg.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-insert-extract.llllvm.src/test/CodeGen/X86/avx512-insert-extract.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-insert-extract_i1.llllvm.src/test/CodeGen/X86/avx512-insert-extract_i1.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512bw-intrinsics-upgrade.llllvm.src/test/CodeGen/X86/avx512bw-intrinsics-upgrade.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512bw-mov.llllvm.src/test/CodeGen/X86/avx512bw-mov.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512bwvl-mov.llllvm.src/test/CodeGen/X86/avx512bwvl-mov.ll
The file was modified/llvm/trunk/test/CodeGen/X86/subvector-broadcast.llllvm.src/test/CodeGen/X86/subvector-broadcast.ll
The file was modified/llvm/trunk/test/CodeGen/X86/x86-interleaved-access.llllvm.src/test/CodeGen/X86/x86-interleaved-access.ll
Revision 309692 by rksimon:
[X86][SSSE3] Fix typos in pabsw/pmulhrsw tests for load folding scheduling.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/ssse3-schedule.llllvm.src/test/CodeGen/X86/ssse3-schedule.ll