[PATCH] Fix up predicates for commutative vector comparison (PR target/82855)
Jakub Jelinek
jakub@redhat.com
Mon Nov 6 21:23:00 GMT 2017
Hi!
The issues fixed by the previous patch together with this one result
in the testcase from the PR with -mtune=intel (for some reason with
generic tuning we decide to perform the 256-bit load as 2 128-bit loads and
don't merge that into 256-bit comparison operand, shall we change that?)
to use memory operand directly in vcmpeq* instead of loading it into a
register first.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
2017-11-06 Jakub Jelinek <jakub@redhat.com>
PR target/82855
* config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
Use nonimmediate_operand predicate for operand 1 instead of
register_operand.
--- gcc/config/i386/sse.md.jj 2017-11-06 11:47:55.103076500 +0100
+++ gcc/config/i386/sse.md 2017-11-06 11:50:16.832266795 +0100
@@ -11168,7 +11168,7 @@ (define_expand "<avx512>_eq<mode>3<mask_
(define_insn "<avx512>_eq<mode>3<mask_scalar_merge_name>_1"
[(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk")
(unspec:<avx512fmaskmode>
- [(match_operand:VI12_AVX512VL 1 "register_operand" "%v")
+ [(match_operand:VI12_AVX512VL 1 "nonimmediate_operand" "%v")
(match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm")]
UNSPEC_MASKED_EQ))]
"TARGET_AVX512F
@@ -11182,7 +11182,7 @@ (define_insn "<avx512>_eq<mode>3<mask_sc
(define_insn "<avx512>_eq<mode>3<mask_scalar_merge_name>_1"
[(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk")
(unspec:<avx512fmaskmode>
- [(match_operand:VI48_AVX512VL 1 "register_operand" "%v")
+ [(match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "%v")
(match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm")]
UNSPEC_MASKED_EQ))]
"TARGET_AVX512F
Jakub
More information about the Gcc-patches
mailing list