1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-04-14 00:58:38 +02:00

x86inc: Fix AVX emulation of scalar float instructions

Those instructions are not commutative since they only change the first
element in the vector and leave the rest unmodified.
This commit is contained in:
Henrik Gramner 2016-03-04 17:51:41 +01:00
parent ef59c6f7e8
commit 8dd3ee9ddd

View File

@ -1194,8 +1194,8 @@ INIT_XMM
; Non-destructive instructions are written without parameters ; Non-destructive instructions are written without parameters
AVX_INSTR addpd, sse2, 1, 0, 1 AVX_INSTR addpd, sse2, 1, 0, 1
AVX_INSTR addps, sse, 1, 0, 1 AVX_INSTR addps, sse, 1, 0, 1
AVX_INSTR addsd, sse2, 1, 0, 1 AVX_INSTR addsd, sse2, 1, 0, 0
AVX_INSTR addss, sse, 1, 0, 1 AVX_INSTR addss, sse, 1, 0, 0
AVX_INSTR addsubpd, sse3, 1, 0, 0 AVX_INSTR addsubpd, sse3, 1, 0, 0
AVX_INSTR addsubps, sse3, 1, 0, 0 AVX_INSTR addsubps, sse3, 1, 0, 0
AVX_INSTR aesdec, aesni, 0, 0, 0 AVX_INSTR aesdec, aesni, 0, 0, 0
@ -1225,10 +1225,10 @@ AVX_INSTR cvtpd2ps, sse2
AVX_INSTR cvtps2dq, sse2 AVX_INSTR cvtps2dq, sse2
AVX_INSTR cvtps2pd, sse2 AVX_INSTR cvtps2pd, sse2
AVX_INSTR cvtsd2si, sse2 AVX_INSTR cvtsd2si, sse2
AVX_INSTR cvtsd2ss, sse2 AVX_INSTR cvtsd2ss, sse2, 1, 0, 0
AVX_INSTR cvtsi2sd, sse2 AVX_INSTR cvtsi2sd, sse2, 1, 0, 0
AVX_INSTR cvtsi2ss, sse AVX_INSTR cvtsi2ss, sse, 1, 0, 0
AVX_INSTR cvtss2sd, sse2 AVX_INSTR cvtss2sd, sse2, 1, 0, 0
AVX_INSTR cvtss2si, sse AVX_INSTR cvtss2si, sse
AVX_INSTR cvttpd2dq, sse2 AVX_INSTR cvttpd2dq, sse2
AVX_INSTR cvttps2dq, sse2 AVX_INSTR cvttps2dq, sse2
@ -1251,12 +1251,12 @@ AVX_INSTR ldmxcsr, sse
AVX_INSTR maskmovdqu, sse2 AVX_INSTR maskmovdqu, sse2
AVX_INSTR maxpd, sse2, 1, 0, 1 AVX_INSTR maxpd, sse2, 1, 0, 1
AVX_INSTR maxps, sse, 1, 0, 1 AVX_INSTR maxps, sse, 1, 0, 1
AVX_INSTR maxsd, sse2, 1, 0, 1 AVX_INSTR maxsd, sse2, 1, 0, 0
AVX_INSTR maxss, sse, 1, 0, 1 AVX_INSTR maxss, sse, 1, 0, 0
AVX_INSTR minpd, sse2, 1, 0, 1 AVX_INSTR minpd, sse2, 1, 0, 1
AVX_INSTR minps, sse, 1, 0, 1 AVX_INSTR minps, sse, 1, 0, 1
AVX_INSTR minsd, sse2, 1, 0, 1 AVX_INSTR minsd, sse2, 1, 0, 0
AVX_INSTR minss, sse, 1, 0, 1 AVX_INSTR minss, sse, 1, 0, 0
AVX_INSTR movapd, sse2 AVX_INSTR movapd, sse2
AVX_INSTR movaps, sse AVX_INSTR movaps, sse
AVX_INSTR movd, mmx AVX_INSTR movd, mmx
@ -1285,8 +1285,8 @@ AVX_INSTR movups, sse
AVX_INSTR mpsadbw, sse4 AVX_INSTR mpsadbw, sse4
AVX_INSTR mulpd, sse2, 1, 0, 1 AVX_INSTR mulpd, sse2, 1, 0, 1
AVX_INSTR mulps, sse, 1, 0, 1 AVX_INSTR mulps, sse, 1, 0, 1
AVX_INSTR mulsd, sse2, 1, 0, 1 AVX_INSTR mulsd, sse2, 1, 0, 0
AVX_INSTR mulss, sse, 1, 0, 1 AVX_INSTR mulss, sse, 1, 0, 0
AVX_INSTR orpd, sse2, 1, 0, 1 AVX_INSTR orpd, sse2, 1, 0, 1
AVX_INSTR orps, sse, 1, 0, 1 AVX_INSTR orps, sse, 1, 0, 1
AVX_INSTR pabsb, ssse3 AVX_INSTR pabsb, ssse3
@ -1414,8 +1414,8 @@ AVX_INSTR rcpps, sse, 1, 0, 0
AVX_INSTR rcpss, sse, 1, 0, 0 AVX_INSTR rcpss, sse, 1, 0, 0
AVX_INSTR roundpd, sse4 AVX_INSTR roundpd, sse4
AVX_INSTR roundps, sse4 AVX_INSTR roundps, sse4
AVX_INSTR roundsd, sse4 AVX_INSTR roundsd, sse4, 1, 1, 0
AVX_INSTR roundss, sse4 AVX_INSTR roundss, sse4, 1, 1, 0
AVX_INSTR rsqrtps, sse, 1, 0, 0 AVX_INSTR rsqrtps, sse, 1, 0, 0
AVX_INSTR rsqrtss, sse, 1, 0, 0 AVX_INSTR rsqrtss, sse, 1, 0, 0
AVX_INSTR shufpd, sse2, 1, 1, 0 AVX_INSTR shufpd, sse2, 1, 1, 0