1. [Remarks] Add parser for bitstream remarks (details)
  2. [X86] Allow _MM_FROUND_CUR_DIRECTION and _MM_FROUND_NO_EXC to be used (details)
Commit a85d9ef11ae3dd5c840b1087555b04bedc304113 by francisvm
[Remarks] Add parser for bitstream remarks
The bitstream remark serializer landed in r367372.
This adds a bitstream remark parser that parser bitstream remark files
to llvm::remarks::Remark objects through the RemarkParser interface.
A few interesting things to point out:
* There are parsing helpers to parse the different types of blocks
* The main parsing helper allows us to parse remark metadata and open an
external file containing the encoded remarks
* This adds a dependency from the Remarks library to the BitstreamReader
* The testing strategy is to create a remark entry through YAML, parse
it, serialize it to bitstream, parse that back and compare the objects.
* There are close to no tests for malformed bitstream remarks, due to
the lack of textual format for the bitstream format.
* This adds a new C API for parsing bitstream remarks:
* This bumps the REMARKS_API_VERSION to 1.
Differential Revision:
llvm-svn: 371429
The file was modifiedllvm/lib/Remarks/CMakeLists.txt
The file was addedllvm/include/llvm/Remarks/BitstreamRemarkParser.h
The file was modifiedllvm/include/llvm-c/Remarks.h
The file was addedllvm/lib/Remarks/BitstreamRemarkParser.h
The file was modifiedllvm/tools/remarks-shlib/Remarks.exports
The file was addedllvm/lib/Remarks/BitstreamRemarkParser.cpp
The file was addedllvm/unittests/Remarks/BitstreamRemarksParsingTest.cpp
The file was modifiedllvm/unittests/Remarks/CMakeLists.txt
The file was modifiedllvm/include/llvm/Bitstream/BitstreamReader.h
The file was modifiedllvm/lib/Remarks/RemarkParser.cpp
The file was modifiedllvm/lib/Remarks/LLVMBuild.txt
Commit ce2cb0f09e7d66f34e5f2110bfcd9e3dff60feaa by craig.topper
together on instructions that only support SAE and not embedded
Current for SAE instructions we only allow _MM_FROUND_CUR_DIRECTION(bit
2) or _MM_FROUND_NO_EXC(bit 3) to be used as the immediate passed to the
inrinsics. But these instructions don't perform rounding so
_MM_FROUND_CUR_DIRECTION is just sort of a default placeholder when you
don't want to suppress exceptions. Using _MM_FROUND_NO_EXC by itself is
really bit equivalent to (_MM_FROUND_NO_EXC | _MM_FROUND_TO_NEAREST_INT)
since _MM_FROUND_TO_NEAREST_INT is 0. Since we aren't rounding on these
instructions we should also accept (_MM_FROUND_CUR_DIRECTION |
_MM_FROUND_NO_EXC) as equivalent to (_MM_FROUND_NO_EXC). icc allows
this, but gcc does not.
Differential Revision:
llvm-svn: 371430
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was modifiedclang/test/Sema/builtins-x86.c
The file was modifiedclang/lib/Sema/SemaChecking.cpp
The file was modifiedllvm/test/CodeGen/X86/avx512-intrinsics.ll