diff mbox series

LoongArch: Replace UNSPEC_FCOPYSIGN with copysign RTL

Message ID 20231003034619.15383-1-xry111@xry111.site
State New
Headers show
Series LoongArch: Replace UNSPEC_FCOPYSIGN with copysign RTL | expand

Commit Message

Xi Ruoyao Oct. 3, 2023, 3:46 a.m. UTC
When I added copysign support for LoongArch (r13-3702), we did not have
a copysign RTL insn, so I had to use UNSPEC to represent the copysign
instruction. Now the copysign RTX code has been added in r14-1586, so
this patch removes those UNSPECs, and it uses the native RTL copysign
insn.

Inspired by rs6000 patch "Cleanup: Replace UNSPEC_COPYSIGN with copysign
RTL" [1] from Michael Meissner.

[1]: https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631701.html

gcc/ChangeLog:

	* config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
	(copysign<mode>3): Use copysign RTL instead of UNSPEC.
---

Bootstrapped and regtested on loongarch64-linux-gnu.  Ok for trunk?

 gcc/config/loongarch/loongarch.md | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Lulu Cheng Oct. 4, 2023, 4:04 a.m. UTC | #1
LGTM!

Thanks!

在 2023/10/3 上午11:46, Xi Ruoyao 写道:
> When I added copysign support for LoongArch (r13-3702), we did not have
> a copysign RTL insn, so I had to use UNSPEC to represent the copysign
> instruction. Now the copysign RTX code has been added in r14-1586, so
> this patch removes those UNSPECs, and it uses the native RTL copysign
> insn.
>
> Inspired by rs6000 patch "Cleanup: Replace UNSPEC_COPYSIGN with copysign
> RTL" [1] from Michael Meissner.
>
> [1]: https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631701.html
>
> gcc/ChangeLog:
>
> 	* config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
> 	(copysign<mode>3): Use copysign RTL instead of UNSPEC.
> ---
>
> Bootstrapped and regtested on loongarch64-linux-gnu.  Ok for trunk?
>
>   gcc/config/loongarch/loongarch.md | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md
> index 2b09209945b..9916c741641 100644
> --- a/gcc/config/loongarch/loongarch.md
> +++ b/gcc/config/loongarch/loongarch.md
> @@ -37,7 +37,6 @@ (define_c_enum "unspec" [
>     UNSPEC_FCLASS
>     UNSPEC_FMAX
>     UNSPEC_FMIN
> -  UNSPEC_FCOPYSIGN
>     UNSPEC_FTINT
>     UNSPEC_FTINTRM
>     UNSPEC_FTINTRP
> @@ -1130,9 +1129,8 @@ (define_insn "abs<mode>2"
>   
>   (define_insn "copysign<mode>3"
>     [(set (match_operand:ANYF 0 "register_operand" "=f")
> -	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
> -		      (match_operand:ANYF 2 "register_operand" "f")]
> -		     UNSPEC_FCOPYSIGN))]
> +	(copysign:ANYF (match_operand:ANYF 1 "register_operand" "f")
> +		       (match_operand:ANYF 2 "register_operand" "f")))]
>     "TARGET_HARD_FLOAT"
>     "fcopysign.<fmt>\t%0,%1,%2"
>     [(set_attr "type" "fcopysign")
diff mbox series

Patch

diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md
index 2b09209945b..9916c741641 100644
--- a/gcc/config/loongarch/loongarch.md
+++ b/gcc/config/loongarch/loongarch.md
@@ -37,7 +37,6 @@  (define_c_enum "unspec" [
   UNSPEC_FCLASS
   UNSPEC_FMAX
   UNSPEC_FMIN
-  UNSPEC_FCOPYSIGN
   UNSPEC_FTINT
   UNSPEC_FTINTRM
   UNSPEC_FTINTRP
@@ -1130,9 +1129,8 @@  (define_insn "abs<mode>2"
 
 (define_insn "copysign<mode>3"
   [(set (match_operand:ANYF 0 "register_operand" "=f")
-	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
-		      (match_operand:ANYF 2 "register_operand" "f")]
-		     UNSPEC_FCOPYSIGN))]
+	(copysign:ANYF (match_operand:ANYF 1 "register_operand" "f")
+		       (match_operand:ANYF 2 "register_operand" "f")))]
   "TARGET_HARD_FLOAT"
   "fcopysign.<fmt>\t%0,%1,%2"
   [(set_attr "type" "fcopysign")