This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH i386 AVX512] [56/n] Add plus/minus/abs/neg/andnot insn patterns.


On Tue, Oct 14, 2014 at 11:18:28AM +0400, Kirill Yukhin wrote:
> 	* config/i386/sse.md (define_mode_iterator VI_AVX2): Extend
> 	to support AVX-512BW.
> 	(define_mode_iterator VI124_AVX2_48_AVX512F): Remove.
> 	(define_expand "<plusminus_insn><mode>3"): Remove masking support.
> 	(define_insn "*<plusminus_insn><mode>3"): Ditto.
> 	(define_expand "<plusminus_insn><VI48_AVX512VL:mode>3_mask"): New.
> 	(define_expand "<plusminus_insn><VI12_AVX512VL:mode>3_mask"): Ditto.
> 	(define_insn "*<plusminus_insn><VI48_AVX512VL:mode>3_mask"): Ditto.
> 	(define_insn "*<plusminus_insn><VI12_AVX512VL:mode>3_mask"): Ditto.
> 	(define_expand "<sse2_avx2>_andnot<mode>3"): Remove masking support.
> 	(define_insn "*andnot<mode>3"): Ditto.
> 	(define_expand "<sse2_avx2>_andnot<VI48_AVX512VL:mode>3_mask"): New.
> 	(define_expand "<sse2_avx2>_andnot<VI12_AVX512VL:mode>3_mask"): Ditto.
> 	(define_insn "*andnot<VI48_AVX512VL:mode>3<mask_name>"): Ditto.
> 	(define_insn "*andnot<VI12_AVX512VL:mode>3<mask_name>"): Ditto.
> 	(define_insn "*abs<mode>2"): Remove masking support.
> 	(define_insn "abs<VI48_AVX512VL:mode>2_mask"): New.
> 	(define_insn "abs<VI12_AVX512VL:mode>2_mask"): Ditto.
> 	(define_expand "abs<mode>2"): Use VI_AVX2 mode iterator.

Unfortunately this caused PR63600.  The problem is that VI_AVX2
mode iterator includes V2DI and for AVX2 also V4DI, but for pre-ssse3
ix86_expand_sse2_abs doesn't handle V2DI (and can't easily, we don't have
PSRAQ instruction), for ssse3 there is no vpabsq instruction, and for
avx2 neither.
We can handle V2DI/V4DI only for TARGET_AVX512VL, and V8DI for
TARGET_AVX512F.
Thus, IMHO the mode iterator on at least
(define_insn "*abs<mode>2"
and on
(define_expand "abs<mode>2"
is wrong, should not include V2DI/V4DI unless TARGET_AVX512VL
(so new (or ressurrected, was that VI124_AVX2_48_AVX512F?)
specialized mode iterator?).

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]