diff options
author | Craig Topper <craig.topper@intel.com> | 2018-09-26 17:01:44 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-09-26 17:01:44 +0000 |
commit | fb5d9f2849a3005e1ccd9554030c5f1a30bf3c0e (patch) | |
tree | cf7f030a2ede8265d12d1d2ded4057f05dbcc157 /lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | |
parent | 344475fce536e2f2f88d5e3b0a7bde51a2149341 (diff) | |
download | bcm5719-llvm-fb5d9f2849a3005e1ccd9554030c5f1a30bf3c0e.tar.gz bcm5719-llvm-fb5d9f2849a3005e1ccd9554030c5f1a30bf3c0e.zip |
[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
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp')
0 files changed, 0 insertions, 0 deletions