Commit a1ac8050 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[AArch64] Use std::swap instead of manually swapping in aarch64-ldpstp.md

	* config/aarch64/aarch64-ldpstp.md: Use std::swap instead of
	manual swaps in all peepholes.

From-SVN: r220403
parent cb5c6c29
2015-02-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2015-02-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64-ldpstp.md: Use std::swap instead of
manual swaps in all peepholes.
2015-02-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_evpc_ext): Use std::swap instead * config/aarch64/aarch64.c (aarch64_evpc_ext): Use std::swap instead
of manual swapping implementation. of manual swapping implementation.
(aarch64_expand_vec_perm_const_1): Likewise. (aarch64_expand_vec_perm_const_1): Likewise.
......
...@@ -27,18 +27,14 @@ ...@@ -27,18 +27,14 @@
[(parallel [(set (match_dup 0) (match_dup 1)) [(parallel [(set (match_dup 0) (match_dup 1))
(set (match_dup 2) (match_dup 3))])] (set (match_dup 2) (match_dup 3))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -51,18 +47,14 @@ ...@@ -51,18 +47,14 @@
[(parallel [(set (match_dup 0) (match_dup 1)) [(parallel [(set (match_dup 0) (match_dup 1))
(set (match_dup 2) (match_dup 3))])] (set (match_dup 2) (match_dup 3))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[0], &base, &offset_1); extract_base_offset_in_addr (operands[0], &base, &offset_1);
extract_base_offset_in_addr (operands[2], &base, &offset_2); extract_base_offset_in_addr (operands[2], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -75,18 +67,14 @@ ...@@ -75,18 +67,14 @@
[(parallel [(set (match_dup 0) (match_dup 1)) [(parallel [(set (match_dup 0) (match_dup 1))
(set (match_dup 2) (match_dup 3))])] (set (match_dup 2) (match_dup 3))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -99,18 +87,14 @@ ...@@ -99,18 +87,14 @@
[(parallel [(set (match_dup 0) (match_dup 1)) [(parallel [(set (match_dup 0) (match_dup 1))
(set (match_dup 2) (match_dup 3))])] (set (match_dup 2) (match_dup 3))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[0], &base, &offset_1); extract_base_offset_in_addr (operands[0], &base, &offset_1);
extract_base_offset_in_addr (operands[2], &base, &offset_2); extract_base_offset_in_addr (operands[2], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -125,18 +109,14 @@ ...@@ -125,18 +109,14 @@
[(parallel [(set (match_dup 0) (sign_extend:DI (match_dup 1))) [(parallel [(set (match_dup 0) (sign_extend:DI (match_dup 1)))
(set (match_dup 2) (sign_extend:DI (match_dup 3)))])] (set (match_dup 2) (sign_extend:DI (match_dup 3)))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -149,18 +129,14 @@ ...@@ -149,18 +129,14 @@
[(parallel [(set (match_dup 0) (zero_extend:DI (match_dup 1))) [(parallel [(set (match_dup 0) (zero_extend:DI (match_dup 1)))
(set (match_dup 2) (zero_extend:DI (match_dup 3)))])] (set (match_dup 2) (zero_extend:DI (match_dup 3)))])]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[2]);
operands[0] = operands[2]; std::swap (operands[1], operands[3]);
operands[2] = tmp;
tmp = operands[1];
operands[1] = operands[3];
operands[3] = tmp;
} }
}) })
...@@ -183,24 +159,16 @@ ...@@ -183,24 +159,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, true, <MODE>mode, UNKNOWN)) if (aarch64_gen_adjusted_ldpstp (operands, true, <MODE>mode, UNKNOWN))
...@@ -223,24 +191,16 @@ ...@@ -223,24 +191,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, true, <MODE>mode, UNKNOWN)) if (aarch64_gen_adjusted_ldpstp (operands, true, <MODE>mode, UNKNOWN))
...@@ -263,24 +223,16 @@ ...@@ -263,24 +223,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, true, SImode, SIGN_EXTEND)) if (aarch64_gen_adjusted_ldpstp (operands, true, SImode, SIGN_EXTEND))
...@@ -303,24 +255,16 @@ ...@@ -303,24 +255,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[1], &base, &offset_1); extract_base_offset_in_addr (operands[1], &base, &offset_1);
extract_base_offset_in_addr (operands[3], &base, &offset_2); extract_base_offset_in_addr (operands[3], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, true, SImode, ZERO_EXTEND)) if (aarch64_gen_adjusted_ldpstp (operands, true, SImode, ZERO_EXTEND))
...@@ -343,24 +287,16 @@ ...@@ -343,24 +287,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[0], &base, &offset_1); extract_base_offset_in_addr (operands[0], &base, &offset_1);
extract_base_offset_in_addr (operands[2], &base, &offset_2); extract_base_offset_in_addr (operands[2], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, false, <MODE>mode, UNKNOWN)) if (aarch64_gen_adjusted_ldpstp (operands, false, <MODE>mode, UNKNOWN))
...@@ -383,24 +319,16 @@ ...@@ -383,24 +319,16 @@
"aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)" "aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)"
[(const_int 0)] [(const_int 0)]
{ {
rtx base, offset_1, offset_2, tmp; rtx base, offset_1, offset_2;
extract_base_offset_in_addr (operands[0], &base, &offset_1); extract_base_offset_in_addr (operands[0], &base, &offset_1);
extract_base_offset_in_addr (operands[2], &base, &offset_2); extract_base_offset_in_addr (operands[2], &base, &offset_2);
if (INTVAL (offset_1) > INTVAL (offset_2)) if (INTVAL (offset_1) > INTVAL (offset_2))
{ {
tmp = operands[0]; std::swap (operands[0], operands[6]);
operands[0] = operands[6]; std::swap (operands[1], operands[7]);
operands[6] = tmp; std::swap (operands[2], operands[4]);
tmp = operands[1]; std::swap (operands[3], operands[5]);
operands[1] = operands[7];
operands[7] = tmp;
tmp = operands[2];
operands[2] = operands[4];
operands[4] = tmp;
tmp = operands[3];
operands[3] = operands[5];
operands[5] = tmp;
} }
if (aarch64_gen_adjusted_ldpstp (operands, false, <MODE>mode, UNKNOWN)) if (aarch64_gen_adjusted_ldpstp (operands, false, <MODE>mode, UNKNOWN))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment