]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Remove unused and incorrect "sge<u>_<X:mode><GPR:mode>" define_insn
authorXi Ruoyao <xry111@xry111.site>
Wed, 13 Mar 2024 12:44:38 +0000 (20:44 +0800)
committerXi Ruoyao <xry111@xry111.site>
Thu, 14 Mar 2024 15:22:05 +0000 (23:22 +0800)
If this insn is really used, we'll have something like

    slti $r4,$r0,$r5

in the code.  The assembler will reject it because slti wants 2
register operands and 1 immediate operand.  But we've not got any bug
report for this, indicating this define_insn is unused at all.

Note that do_store_flag (in expr.cc) is already converting x >= 1 to
x > 0 unconditionally, so this define_insn is indeed unused and we can
just remove it.

gcc/ChangeLog:

* config/loongarch/loongarch.md (any_ge): Remove.
(sge<u>_<X:mode><GPR:mode>): Remove.

gcc/config/loongarch/loongarch.md

index 525e1e82183f26402923225d574b90fb0b5aa8c7..18fd9c1e7d5ce4614d83baf9c2a8a5682267eab1 100644 (file)
 ;; These code iterators allow the signed and unsigned scc operations to use
 ;; the same template.
 (define_code_iterator any_gt [gt gtu])
-(define_code_iterator any_ge [ge geu])
 (define_code_iterator any_lt [lt ltu])
 (define_code_iterator any_le [le leu])
 
   [(set_attr "type" "slt")
    (set_attr "mode" "<X:MODE>")])
 
-(define_insn "*sge<u>_<X:mode><GPR:mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=r")
-       (any_ge:GPR (match_operand:X 1 "register_operand" "r")
-                    (const_int 1)))]
-  ""
-  "slt<u>i\t%0,%.,%1"
-  [(set_attr "type" "slt")
-   (set_attr "mode" "<X:MODE>")])
-
 (define_insn "*slt<u>_<X:mode><GPR:mode>"
   [(set (match_operand:GPR 0 "register_operand" "=r")
        (any_lt:GPR (match_operand:X 1 "register_operand" "r")