diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2011-04-27 16:18:25 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2011-04-27 16:18:25 +0200 |
commit | 200eb7d2ee5603bf8cbc4cab71a0afd985583277 (patch) | |
tree | e24949252601db9e0564814ce0b2cea99bb8754c /gcc/config | |
parent | 7d6e252187acf272b527bb1e2203836e2cc73a30 (diff) | |
download | gcc-200eb7d2ee5603bf8cbc4cab71a0afd985583277.zip gcc-200eb7d2ee5603bf8cbc4cab71a0afd985583277.tar.gz gcc-200eb7d2ee5603bf8cbc4cab71a0afd985583277.tar.bz2 |
predicates.md (avx_vpermilp_*_operand): Remove.
* config/i386/predicates.md (avx_vpermilp_*_operand): Remove.
(avx_vperm2f128_*_operand): Ditto.
* config/i386/sse.md (*avx_vpermilp<mode>): Remove operand2 predicate.
Use avx_vpermilp_parallel in insn condition.
(*avx_vperm2f128<mode>_nozero): Remove operand3 predicate.
Use avx_vperm2f128_parallel in insn condition.
From-SVN: r173031
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/predicates.md | 35 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 10 |
2 files changed, 6 insertions, 39 deletions
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index b8b6bf6..fae3a05 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -1179,41 +1179,6 @@ return true; }) -;; Return true if OP is a parallel for a vpermilp[ds] permute. -;; ??? It would be much easier if the PARALLEL for a VEC_SELECT -;; had a mode, but it doesn't. So we have 4 copies and install -;; the mode by hand. - -(define_predicate "avx_vpermilp_v8sf_operand" - (and (match_code "parallel") - (match_test "avx_vpermilp_parallel (op, V8SFmode)"))) - -(define_predicate "avx_vpermilp_v4df_operand" - (and (match_code "parallel") - (match_test "avx_vpermilp_parallel (op, V4DFmode)"))) - -(define_predicate "avx_vpermilp_v4sf_operand" - (and (match_code "parallel") - (match_test "avx_vpermilp_parallel (op, V4SFmode)"))) - -(define_predicate "avx_vpermilp_v2df_operand" - (and (match_code "parallel") - (match_test "avx_vpermilp_parallel (op, V2DFmode)"))) - -;; Return true if OP is a parallel for a vperm2f128 permute. - -(define_predicate "avx_vperm2f128_v8sf_operand" - (and (match_code "parallel") - (match_test "avx_vperm2f128_parallel (op, V8SFmode)"))) - -(define_predicate "avx_vperm2f128_v8si_operand" - (and (match_code "parallel") - (match_test "avx_vperm2f128_parallel (op, V8SImode)"))) - -(define_predicate "avx_vperm2f128_v4df_operand" - (and (match_code "parallel") - (match_test "avx_vperm2f128_parallel (op, V4DFmode)"))) - ;; Return true if OP is a parallel for a vbroadcast permute. (define_predicate "avx_vbroadcast_operand" diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 498f9b9..5963a7f 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -10055,9 +10055,10 @@ [(set (match_operand:AVXMODEF2P 0 "register_operand" "=x") (vec_select:AVXMODEF2P (match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm") - (match_parallel 2 "avx_vpermilp_<mode>_operand" + (match_parallel 2 "" [(match_operand 3 "const_int_operand" "")])))] - "TARGET_AVX" + "TARGET_AVX + && avx_vpermilp_parallel (operands[2], <MODE>mode)" { int mask = avx_vpermilp_parallel (operands[2], <MODE>mode) - 1; operands[2] = GEN_INT (mask); @@ -10140,9 +10141,10 @@ (vec_concat:<ssedoublesizemode> (match_operand:AVX256MODE2P 1 "register_operand" "x") (match_operand:AVX256MODE2P 2 "nonimmediate_operand" "xm")) - (match_parallel 3 "avx_vperm2f128_<mode>_operand" + (match_parallel 3 "" [(match_operand 4 "const_int_operand" "")])))] - "TARGET_AVX" + "TARGET_AVX + && avx_vperm2f128_parallel (operands[3], <MODE>mode)" { int mask = avx_vperm2f128_parallel (operands[3], <MODE>mode) - 1; operands[3] = GEN_INT (mask); |