[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 273475] Add support for AVX instructions
From:       Jakub Jelinek <jakub () redhat ! com>
Date:       2012-06-22 15:56:04
Message-ID: bug-273475-17878-cEM1gN3sXy () http ! bugs ! kde ! org/
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=273475

--- Comment #140 from Jakub Jelinek <jakub@redhat.com> ---
I'm running out of time, have to move back to GCC hacking next week.
From gcc.target/i386 remaining failures and eyeballing the AVX opcode tables at
the end of the PDF, comparing them to the VEX 0F, 0F38 and 0F3A routines, it
seems almost everything is now implemented, with the exception of:
1) VMASKMOVP[SD]:
VMASKMOVPS m128, xmm2, xmm1 = VEX.NDS.128.66.0F38.WIG 2C /r
VMASKMOVPS m256, ymm2, ymm1 = VEX.NDS.256.66.0F38.WIG 2C /r
VMASKMOVPD m128, xmm2, xmm1 = VEX.NDS.128.66.0F38.WIG 2D /r
VMASKMOVPD m256, ymm2, ymm1 = VEX.NDS.256.66.0F38.WIG 2D /r
VMASKMOVPS xmm2, xmm1, m128 = VEX.NDS.128.66.0F38.WIG 2E /r
VMASKMOVPS ymm2, ymm1, m256 = VEX.NDS.256.66.0F38.WIG 2E /r
VMASKMOVPD xmm2, xmm1, m128 = VEX.NDS.128.66.0F38.WIG 2F /r
VMASKMOVPD ymm2, ymm1, m256 = VEX.NDS.256.66.0F38.WIG 2F /r
2) FMA:
VFMADDSUB132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 96 /r 
VFMADDSUB132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 96 /r 
VFMADDSUB132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 96 /r 
VFMADDSUB132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 96 /r 
VFMSUBADD132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 97 /r 
VFMSUBADD132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 97 /r 
VFMSUBADD132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 97 /r 
VFMSUBADD132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 97 /r 
VFMADD132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 98 /r 
VFMADD132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 98 /r 
VFMADD132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 98 /r 
VFMADD132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 98 /r 
VFMADD132SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 99 /r 
VFMADD132SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 99 /r 
VFMSUB132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9A /r 
VFMSUB132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 9A /r 
VFMSUB132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9A /r 
VFMSUB132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 9A /r 
VFMSUB132SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9B /r 
VFMSUB132SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9B /r 
VFNMADD132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9C /r 
VFNMADD132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 9C /r 
VFNMADD132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9C /r 
VFNMADD132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 9C /r 
VFNMADD132SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9D /r 
VFNMADD132SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9D /r 
VFNMSUB132PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9E /r 
VFNMSUB132PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 9E /r 
VFNMSUB132PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9E /r 
VFNMSUB132PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 9E /r 
VFNMSUB132SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 9F /r 
VFNMSUB132SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 9F /r 
VFMADDSUB213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 A6 /r 
VFMADDSUB213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 A6 /r 
VFMADDSUB213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 A6 /r 
VFMADDSUB213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 A6 /r 
VFMSUBADD213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 A7 /r 
VFMSUBADD213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 A7 /r 
VFMSUBADD213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 A7 /r 
VFMSUBADD213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 A7 /r 
VFMADD213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 A8 /r 
VFMADD213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 A8 /r 
VFMADD213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 A8 /r 
VFMADD213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 A8 /r 
VFMADD213SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 A9 /r 
VFMADD213SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 A9 /r 
VFMSUB213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AA /r 
VFMSUB213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 AA /r 
VFMSUB213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AA /r 
VFMSUB213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 AA /r 
VFMSUB213SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AB /r 
VFMSUB213SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AB /r 
VFNMADD213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AC /r 
VFNMADD213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 AC /r 
VFNMADD213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AC /r 
VFNMADD213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 AC /r 
VFNMADD213SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AD /r 
VFNMADD213SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AD /r 
VFNMSUB213PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AE /r 
VFNMSUB213PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 AE /r 
VFNMSUB213PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AE /r 
VFNMSUB213PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 AE /r 
VFNMSUB213SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 AF /r 
VFNMSUB213SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 AF /r 
VFMADDSUB231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 B6 /r 
VFMADDSUB231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 B6 /r 
VFMADDSUB231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 B6 /r 
VFMADDSUB231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 B6 /r 
VFMSUBADD231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 B7 /r 
VFMSUBADD231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 B7 /r 
VFMSUBADD231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 B7 /r 
VFMSUBADD231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 B7 /r 
VFMADD231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 B8 /r 
VFMADD231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 B8 /r 
VFMADD231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 B8 /r 
VFMADD231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 B8 /r 
VFMADD231SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 B9 /r 
VFMADD231SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 B9 /r 
VFMSUB231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BA /r 
VFMSUB231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 BA /r 
VFMSUB231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BA /r 
VFMSUB231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 BA /r 
VFMSUB231SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BB /r 
VFMSUB231SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BB /r 
VFNMADD231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BC /r 
VFNMADD231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 BC /r 
VFNMADD231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BC /r 
VFNMADD231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 BC /r 
VFNMADD231SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BD /r 
VFNMADD231SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BD /r 
VFNMSUB231PS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BE /r 
VFNMSUB231PS ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W0 BE /r 
VFNMSUB231PD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BE /r 
VFNMSUB231PD ymm2/m256, ymm1, ymm0 = VEX.DDS.256.66.0F38.W1 BE /r 
VFNMSUB231SS xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W0 BF /r 
VFNMSUB231SD xmm2/m128, xmm1, xmm0 = VEX.DDS.128.66.0F38.W1 BF /r 
3) various comparison codes for VCMP[PS][SD].  Various gcc.target/i386 tests
fail because of this.  Not sure if valgrind differentiates between
signalling/non-signalling variants, if it should, then we'll need some hacks to
handle them all.
4) various VPCMP[EI]STR[iM] modes (valgrind handles just a subset.

-- 
You are receiving this mail because:
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic