- 27 Jun, 2017 1 commit
-
-
James Almer authored
Yasm: src/libavfilter/x86/af_volume.asm:24: warning: Standard COFF does not support read-only data sections src/libavfilter/x86/af_volume.asm:24: warning: Unrecognized qualifier `align' Nasm: src/libavfilter/x86/af_volume.asm:24: error: standard COFF does not support section alignment specification src/libavutil/x86/x86inc.asm:92: ... from macro `SECTION_RODATA' defined here Tested-by:
Clément Bœsch <u@pkh.me> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 12 Jun, 2017 1 commit
-
-
Henrik Gramner authored
Simplifies writing assembly code that depends on available instructions. LZCNT implies SSE2 BMI1 implies AVX+LZCNT AVX2 implies BMI2
-
- 09 Jun, 2017 4 commits
-
-
Anton Mitrofanov authored
The use of rsp was pretty much hardcoded there and probably didn't work otherwise with stack_size > 0.
-
Henrik Gramner authored
Due to a peculiarity in the ModR/M addressing encoding, the r12 and r13 registers sometimes requires an additional byte when used as a base register. r14 and r15 doesn't have that issue, so prefer using them.
-
Henrik Gramner authored
There's no point in emitting a rep prefix before ret on modern CPUs.
-
Henrik Gramner authored
We overload the `call` instruction with a macro, but it would misbehave when the macro argument wasn't a valid identifier. Fix it by explicitly checking if the argument is an identifier.
-
- 09 Jan, 2017 2 commits
-
-
Henrik Gramner authored
When allocating stack space with an alignment requirement that is larger than the current stack alignment we need to store a copy of the original stack pointer in order to be able to restore it later. If we chose to use another register for this purpose we should not pick eax/rax since it can be overwritten as a return value.
-
Henrik Gramner authored
When allocating stack space with an alignment requirement that is larger than the current stack alignment we need to store a copy of the original stack pointer in order to be able to restore it later. If we chose to use another register for this purpose we should not pick eax/rax since it can be overwritten as a return value. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 16 May, 2016 4 commits
-
-
Anton Mitrofanov authored
Allows emulation to work when dst is equal to src2 as long as the instruction is commutative, e.g. `addps m0, m1, m0`. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Anton Mitrofanov authored
The yasm/nasm preprocessor only checks the first token, which means that parameters such as `dword [rax]` are treated as identifiers, which is generally not what we want. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Anton Mitrofanov authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
Those instructions are not commutative since they only change the first element in the vector and leave the rest unmodified. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 20 Apr, 2016 4 commits
-
-
Anton Mitrofanov authored
Allows emulation to work when dst is equal to src2 as long as the instruction is commutative, e.g. `addps m0, m1, m0`.
-
Anton Mitrofanov authored
The yasm/nasm preprocessor only checks the first token, which means that parameters such as `dword [rax]` are treated as identifiers, which is generally not what we want.
-
Anton Mitrofanov authored
-
Henrik Gramner authored
Those instructions are not commutative since they only change the first element in the vector and leave the rest unmodified.
-
- 23 Jan, 2016 8 commits
-
-
Geza Lore authored
Some debuggers/profilers use this metadata to determine which function a given instruction is in; without it they get can confused by local labels (if you haven't stripped those). On the other hand, some tools are still confused even with this metadata. e.g. this fixes `gdb`, but not `perf`. Currently only implemented for ELF. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
The REP_RET workaround is only needed on old AMD cpus, and the labels clutter up the symbol table and confuse debugging/profiling tools, so use EQU to create SHN_ABS symbols instead of creating local labels. Furthermore, skip the workaround completely in functions that definitely won't run on such cpus. Note that EQU is just creating a local label when using nasm instead of yasm. This is probably a bug, but at least it doesn't break anything. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
cpuflags is never undefined any more, it's set to 0 instead. Also fix an incorrect comment. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
When allocating stack space with a larger alignment than the known stack alignment a temporary register is used for storing the stack pointer. Ensure that this isn't one of the registers used for passing arguments. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
* Correctly handle FMA instructions with memory operands. * Print a warning if FMA instructions are used without the correct cpuflag. * Simplify the instantiation code. * Clarify documentation. Only the last operand in FMA3 instructions can be a memory operand. When converting FMA4 instructions to FMA3 instructions we can utilize the fact that multiply is a commutative operation and reorder operands if necessary to ensure that a memory operand is used only as the last operand. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
Makes it possible to use them in arithmetic expressions. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 21 Jan, 2016 7 commits
-
-
Geza Lore authored
Some debuggers/profilers use this metadata to determine which function a given instruction is in; without it they get can confused by local labels (if you haven't stripped those). On the other hand, some tools are still confused even with this metadata. e.g. this fixes `gdb`, but not `perf`. Currently only implemented for ELF.
-
Henrik Gramner authored
The REP_RET workaround is only needed on old AMD cpus, and the labels clutter up the symbol table and confuse debugging/profiling tools, so use EQU to create SHN_ABS symbols instead of creating local labels. Furthermore, skip the workaround completely in functions that definitely won't run on such cpus. Note that EQU is just creating a local label when using nasm instead of yasm. This is probably a bug, but at least it doesn't break anything.
-
Henrik Gramner authored
cpuflags is never undefined any more, it's set to 0 instead. Also fix an incorrect comment.
-
Henrik Gramner authored
-
Henrik Gramner authored
When allocating stack space with a larger alignment than the known stack alignment a temporary register is used for storing the stack pointer. Ensure that this isn't one of the registers used for passing arguments.
-
Henrik Gramner authored
* Correctly handle FMA instructions with memory operands. * Print a warning if FMA instructions are used without the correct cpuflag. * Simplify the instantiation code. * Clarify documentation. Only the last operand in FMA3 instructions can be a memory operand. When converting FMA4 instructions to FMA3 instructions we can utilize the fact that multiply is a commutative operation and reorder operands if necessary to ensure that a memory operand is used only as the last operand.
-
Henrik Gramner authored
-
- 28 Oct, 2015 1 commit
-
-
Rodger Combs authored
-
- 01 Oct, 2015 1 commit
-
-
Henrik Gramner authored
Makes it possible to use them in arithmetic expressions.
-
- 13 Aug, 2015 1 commit
-
-
Henrik Gramner authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 11 Aug, 2015 6 commits
-
-
Henrik Gramner authored
The .text section is already 16-byte aligned by default on all supported platforms so `SECTION_TEXT` isn't any different from `SECTION .text`. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
The bug was fixed in 1.3.0, so only perform the workaround in earlier versions. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Christophe Gisquet authored
Signed-off-by:
Henrik Gramner <henrik@gramner.com> Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Anton Mitrofanov authored
Signed-off-by:
Henrik Gramner <henrik@gramner.com> Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Henrik Gramner authored
Change ALLOC_STACK to always align the stack before allocating stack space for consistency. Previously alignment would occur either before or after allocating stack space depending on whether manual alignment was required or not. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Anton Mitrofanov authored
Emulation requires a temporary register if arguments 1 and 4 are the same; this doesn't obey the semantics of the original instruction, so we can't emulate that in x86inc. Also add pmacsdql emulation. Signed-off-by:
Henrik Gramner <henrik@gramner.com> Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-