This commit is contained in:
kobalicek
2014-05-26 11:06:18 +02:00
parent f112305d54
commit 05850cb6cb
3 changed files with 22 additions and 7 deletions

View File

@@ -56,11 +56,11 @@
//!
//! @section AsmJit_Main_CodeGeneration Code Generation
//!
//! - @ref asmjit_base_general "Assembler core" - Operands, intrinsics and low-level assembler.
//! - @ref asmjit_compiler "Compiler" - High level code generation.
//! - @ref asmjit_cpuinfo "Cpu Information" - Get information about host processor.
//! - @ref asmjit_logging "Logging" - Logging and error handling.
//! - @ref AsmJit_MemoryManagement "Memory Management" - Virtual memory management.
//! - \ref asmjit_base_general "Assembler core" - Operands, intrinsics and low-level assembler.
//! - \ref asmjit_compiler "Compiler" - High level code generation.
//! - \ref asmjit_cpuinfo "Cpu Information" - Get information about host processor.
//! - \ref asmjit_logging "Logging" - Logging and error handling.
//! - \ref AsmJit_MemoryManagement "Memory Management" - Virtual memory management.
//!
//! @section AsmJit_Main_HomePage AsmJit Homepage
//!

View File

@@ -35,8 +35,10 @@ const ConstPoolNode ConstPoolTree::_sentinel = { {
static ASMJIT_INLINE ConstPoolNode* ConstPoolTree_skewNode(ConstPoolNode* node) {
if (node->_link[0]->_level == node->_level && node->_level != 0) {
ConstPoolNode *save = node->_link[0];
node->_link[0] = save->_link[1];
save->_link[1] = node;
node = save;
}
@@ -49,8 +51,10 @@ static ASMJIT_INLINE ConstPoolNode* ConstPoolTree_skewNode(ConstPoolNode* node)
static ASMJIT_INLINE ConstPoolNode* ConstPoolTree_splitNode(ConstPoolNode* node) {
if (node->_link[1]->_link[1]->_level == node->_level && node->_level != 0) {
ConstPoolNode *save = node->_link[1];
node->_link[1] = save->_link[0];
save->_link[0] = node;
node = save;
node->_level++;
}

View File

@@ -341,7 +341,18 @@ struct X86Util {
return (op._packed[0].u32[0] & mask) == IntUtil::pack32_2x8_1x16(kOperandTypeReg, 1, 0x0000);
}
//! Pack a shuffle constant to be used with multimedia instrutions.
//! Pack a shuffle constant to be used with multimedia instrutions (2 values).
//!
//! \param x First component position, number at interval [0, 1] inclusive.
//! \param y Second component position, number at interval [0, 1] inclusive.
//!
//! Shuffle constants can be used to make immediate value for these intrinsics:
//! - `X86X64Assembler::shufpd()` and `X86X64Compiler::shufpd()`
static ASMJIT_INLINE uint32_t mmShuffle(uint32_t x, uint32_t y) {
return (x << 1) | y;
}
//! Pack a shuffle constant to be used with multimedia instrutions (4 values).
//!
//! \param z First component position, number at interval [0, 3] inclusive.
//! \param x Second component position, number at interval [0, 3] inclusive.