llvm-capstone/llvm
Craig Topper 0dda5e4ce2 [X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence.
These are documented as using modrm byte of 0xe8, 0xf0, and 0xf8
respectively. But hardware ignore bits 2:0. So 0xe9-0xef is treated
the same as 0xe8. Similar for the other two.

Fixing this required adding 8 new formats to the X86 instructions
to convey this information. Could have gotten away with 3, but
adding all 8 made for a more logical conversion from format to
modrm encoding.

I renumbered the format encodings to keep the register modrm
formats grouped together.
2020-06-19 22:24:24 -07:00
..
benchmarks
bindings
cmake Revert "[llvm] Added support for stand-alone cmake object libraries." 2020-06-15 12:15:39 -07:00
docs AMDGPU: Update private null pointer value in documentation 2020-06-18 17:27:19 -04:00
examples
include [SanitizeCoverage] Rename -fsanitize-coverage-{white,black}list to -fsanitize-coverage-{allow,block}list 2020-06-19 22:22:47 -07:00
lib [X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence. 2020-06-19 22:24:24 -07:00
projects
resources
runtimes [CMake][runtimes] Skip adding 2nd set of the same variables for a generic target 2020-06-15 09:59:27 +02:00
test [X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence. 2020-06-19 22:24:24 -07:00
tools [X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence. 2020-06-19 22:24:24 -07:00
unittests [clang-tidy] remove duplicate fixes of alias checkers 2020-06-19 20:40:59 +01:00
utils [X86] Ignore bits 2:0 of the modrm byte when disassembling lfence, mfence, and sfence. 2020-06-19 22:24:24 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT

The LLVM Compiler Infrastructure
================================

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

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.