aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-04-27 16:18:25 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-04-27 16:18:25 +0200
commit200eb7d2ee5603bf8cbc4cab71a0afd985583277 (patch)
treee24949252601db9e0564814ce0b2cea99bb8754c /gcc/config
parent7d6e252187acf272b527bb1e2203836e2cc73a30 (diff)
downloadgcc-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.md35
-rw-r--r--gcc/config/i386/sse.md10
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);