aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2022-11-06 20:41:38 +0800
committerXi Ruoyao <xry111@xry111.site>2022-11-12 15:01:09 +0800
commite468dd40150ad20fe87d315c2638c572ca44dc3b (patch)
tree49d3196ffc367cf52871c674cfbe2fd6b86750ab
parentba7551485bc5760371462517ec05bc6ba20b3b35 (diff)
downloadgcc-e468dd40150ad20fe87d315c2638c572ca44dc3b.zip
gcc-e468dd40150ad20fe87d315c2638c572ca44dc3b.tar.gz
gcc-e468dd40150ad20fe87d315c2638c572ca44dc3b.tar.bz2
LoongArch: Rename frint_<fmt> to rint<mode>2
Use standard name so __builtin_rint{,f} can be expanded to one instruction. gcc/ChangeLog: * config/loongarch/loongarch.md (frint_<fmt>): Rename to .. (rint<mode>2): .. this. gcc/testsuite/ChangeLog: * gcc.target/loongarch/frint.c: New test.
-rw-r--r--gcc/config/loongarch/loongarch.md4
-rw-r--r--gcc/testsuite/gcc.target/loongarch/frint.c16
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md
index bda34d0..a14ab14 100644
--- a/gcc/config/loongarch/loongarch.md
+++ b/gcc/config/loongarch/loongarch.md
@@ -2012,8 +2012,8 @@
[(set_attr "type" "move")]
)
-;; Convert floating-point numbers to integers
-(define_insn "frint_<fmt>"
+;; Round floating-point numbers to integers
+(define_insn "rint<mode>2"
[(set (match_operand:ANYF 0 "register_operand" "=f")
(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
UNSPEC_FRINT))]
diff --git a/gcc/testsuite/gcc.target/loongarch/frint.c b/gcc/testsuite/gcc.target/loongarch/frint.c
new file mode 100644
index 0000000..3ee6a8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/frint.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-mdouble-float" } */
+/* { dg-final { scan-assembler "frint\\.s" } } */
+/* { dg-final { scan-assembler "frint\\.d" } } */
+
+double
+my_rint (double a)
+{
+ return __builtin_rint (a);
+}
+
+float
+my_rintf (float a)
+{
+ return __builtin_rintf (a);
+}