在 2023/11/23 下午4:58, Xi Ruoyao 写道:
On Thu, 2023-11-23 at 16:23 +0800, chenglulu wrote:
I tested it and it was fine. I never knew this could be used like
this.
I remember when I wrote r13-3920 I tried this but failed. Maybe
something has been improved in machine description parser, or perhaps I
just did some stupid thing that time...
But I think this is a really cool implementation!
When I look at this code and compare it to our scalar implementation, it
seems
that our scalar implementation still lacks an "lround".
Thank you!
在 2023/11/20 上午8:47, Xi Ruoyao 写道:
No functional change, just a cleanup.
gcc/ChangeLog:
* config/loongarch/loongarch.md (lrint_allow_inexact):
Remove.
(<lrint_pattern><ANYF:mode><ANYFI:mode>2): Check if <LRINT>
== UNSPEC_FTINT instead of <lrint_allow_inexact>.
---
gcc/config/loongarch/loongarch.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/gcc/config/loongarch/loongarch.md
b/gcc/config/loongarch/loongarch.md
index 78ed63f2132..1e019815451 100644
--- a/gcc/config/loongarch/loongarch.md
+++ b/gcc/config/loongarch/loongarch.md
@@ -585,9 +585,6 @@ (define_int_attr lrint_pattern [(UNSPEC_FTINT
"lrint")
(define_int_attr lrint_submenmonic [(UNSPEC_FTINT "")
(UNSPEC_FTINTRM "rm")
(UNSPEC_FTINTRP "rp")])
-(define_int_attr lrint_allow_inexact [(UNSPEC_FTINT "1")
- (UNSPEC_FTINTRM "0")
- (UNSPEC_FTINTRP "0")])
;; Iterator and attributes for bytepick.d
(define_int_iterator bytepick_w_ashift_amount [8 16 24])
@@ -2384,7 +2381,7 @@ (define_insn
"<lrint_pattern><ANYF:mode><ANYFI:mode>2"
(unspec:ANYFI [(match_operand:ANYF 1 "register_operand"
"f")]
LRINT))]
"TARGET_HARD_FLOAT &&
- (<lrint_allow_inexact>
+ (<LRINT> == UNSPEC_FTINT
|| flag_fp_int_builtin_inexact
|| !flag_trapping_math)"
"ftint<lrint_submenmonic>.<ANYFI:ifmt>.<ANYF:fmt> %0,%1"