Go to file
Craig Topper fb5d9f2849 [X86] For lzcnt/tzcnt intrinsics use cttz/ctlz intrinsics with zero_undef flag set to false.
Previously we used a select and the zero_undef=true intrinsic. In -O2 this pattern will get optimized to zero_undef=false. But in -O0 this optimization won't happen. This results in a compare and cmov being wrapped around a tzcnt/lzcnt instruction.

By using the zero_undef=false intrinsic directly without the select, we can improve the -O0 codegen to just an lzcnt/tzcnt instruction.

Differential Revision: https://reviews.llvm.org/D52392

llvm-svn: 343126
2018-09-26 17:01:44 +00:00
clang [X86] For lzcnt/tzcnt intrinsics use cttz/ctlz intrinsics with zero_undef flag set to false. 2018-09-26 17:01:44 +00:00
clang-tools-extra [clangd] Fix bugs with incorrect memory estimate report 2018-09-26 15:06:23 +00:00
compiler-rt [winasan] Pin the ASan DLL to prevent unloading 2018-09-26 16:28:39 +00:00
debuginfo-tests Revert "(Retry) Add a basic integration test for C++ smart pointers" 2018-08-20 19:53:33 +00:00
libclc configure: Rework support for gfx9+ devices that were added post LLVM 3.9 2018-09-15 22:02:01 +00:00
libcxx [libc++] Remove Fuchsia-specific knowledge to pick the ABI version 2018-09-26 08:24:51 +00:00
libcxxabi Update docs to reference new libc++ mailing lists. 2018-09-22 19:52:12 +00:00
libunwind Reverting r342895 2018-09-24 16:36:33 +00:00
lld [ELF] - Do not fail on R_*_NONE relocations when parsing the debug info. 2018-09-26 08:11:34 +00:00
lldb [unittest] Fix NativeProcessProtocolTest.cpp (NFC) 2018-09-26 10:09:44 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm AMDGPU/SI: Change predicate to isCIOnly for 32-bit imm s_buffer_load* patterns 2018-09-26 16:53:36 +00:00
openmp [OpenMP][libomptarget] Set the frame pointer then test empty slot condition 2018-09-25 18:48:14 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [doc] Fix HowToManuallyUseTheIndividualPiecesOfPolly 2018-09-26 15:22:39 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.