Re: Ping: [PATCH] LoongArch: Remove constraint z from movsi_internal
在 2024/1/16 下午2:20, Xi Ruoyao 写道: On Tue, 2024-01-16 at 14:16 +0800, chenglulu wrote: 在 2024/1/16 下午1:34, Xi Ruoyao 写道: Ping. On Fri, 2023-12-15 at 20:56 +0800, Xi Ruoyao wrote: We don't allow SImode in FCC, so constraint z is never really used here. gcc/ChangeLog: * config/loongarch/loongarch.md (movsi_internal): Remove constraint z. --- Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? gcc/config/loongarch/loongarch.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index a5d0dcd65fe..404a663c1a6 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -2108,8 +2108,8 @@ (define_expand "movsi" }) (define_insn_and_split "*movsi_internal" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m,*r,*z") - (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))] + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m") + (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))] "(register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" { return loongarch_output_move (operands[0], operands[1]); } @@ -2122,7 +2122,7 @@ (define_insn_and_split "*movsi_internal" DONE; } " - [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf") + [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore") (set_attr "mode" "SI")]) Sorry, I have a question. If this place is removed, is movgr2fr in the loongarch_output_move function no longer needed? It's needed for moving SImode into FPR. "z" is FCC_REGS, not FP_REGS. I cannot see movgr2cf or movfr2cf in loongarch_output_move. Well, I saw it wrong, I have no other questions. Thanks!
Re: Ping: [PATCH] LoongArch: Remove constraint z from movsi_internal
On Tue, 2024-01-16 at 14:16 +0800, chenglulu wrote: > > > 在 2024/1/16 下午1:34, Xi Ruoyao 写道: > > Ping. > > > > On Fri, 2023-12-15 at 20:56 +0800, Xi Ruoyao wrote: > > > We don't allow SImode in FCC, so constraint z is never really used > > > here. > > > > > > gcc/ChangeLog: > > > > > > * config/loongarch/loongarch.md (movsi_internal): Remove > > > constraint z. > > > --- > > > > > > Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? > > > > > > gcc/config/loongarch/loongarch.md | 6 +++--- > > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > > > diff --git a/gcc/config/loongarch/loongarch.md > > > b/gcc/config/loongarch/loongarch.md > > > index a5d0dcd65fe..404a663c1a6 100644 > > > --- a/gcc/config/loongarch/loongarch.md > > > +++ b/gcc/config/loongarch/loongarch.md > > > @@ -2108,8 +2108,8 @@ (define_expand "movsi" > > > }) > > > > > > (define_insn_and_split "*movsi_internal" > > > - [(set (match_operand:SI 0 "nonimmediate_operand" > > > "=r,r,r,w,*f,f,*r,*m,*r,*z") > > > - (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))] > > > + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m") > > > + (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))] > > > "(register_operand (operands[0], SImode) > > > || reg_or_0_operand (operands[1], SImode))" > > > { return loongarch_output_move (operands[0], operands[1]); } > > > @@ -2122,7 +2122,7 @@ (define_insn_and_split "*movsi_internal" > > > DONE; > > > } > > > " > > > - [(set_attr "move_type" > > > "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf") > > > + [(set_attr "move_type" > > > "move,const,load,store,mgtf,fpload,mftg,fpstore") > > > (set_attr "mode" "SI")]) > > > > Sorry, I have a question. If this place is removed, is movgr2fr in the > loongarch_output_move function no longer needed? It's needed for moving SImode into FPR. "z" is FCC_REGS, not FP_REGS. I cannot see movgr2cf or movfr2cf in loongarch_output_move. -- Xi Ruoyao School of Aerospace Science and Technology, Xidian University
Re: Ping: [PATCH] LoongArch: Remove constraint z from movsi_internal
在 2024/1/16 下午1:34, Xi Ruoyao 写道: Ping. On Fri, 2023-12-15 at 20:56 +0800, Xi Ruoyao wrote: We don't allow SImode in FCC, so constraint z is never really used here. gcc/ChangeLog: * config/loongarch/loongarch.md (movsi_internal): Remove constraint z. --- Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? gcc/config/loongarch/loongarch.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index a5d0dcd65fe..404a663c1a6 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -2108,8 +2108,8 @@ (define_expand "movsi" }) (define_insn_and_split "*movsi_internal" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m,*r,*z") - (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))] + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m") + (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))] "(register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" { return loongarch_output_move (operands[0], operands[1]); } @@ -2122,7 +2122,7 @@ (define_insn_and_split "*movsi_internal" DONE; } " - [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf") + [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore") (set_attr "mode" "SI")]) Sorry, I have a question. If this place is removed, is movgr2fr in the loongarch_output_move function no longer needed? ;; 16-bit Integer moves
Ping: [PATCH] LoongArch: Remove constraint z from movsi_internal
Ping. On Fri, 2023-12-15 at 20:56 +0800, Xi Ruoyao wrote: > We don't allow SImode in FCC, so constraint z is never really used > here. > > gcc/ChangeLog: > > * config/loongarch/loongarch.md (movsi_internal): Remove > constraint z. > --- > > Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? > > gcc/config/loongarch/loongarch.md | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/gcc/config/loongarch/loongarch.md > b/gcc/config/loongarch/loongarch.md > index a5d0dcd65fe..404a663c1a6 100644 > --- a/gcc/config/loongarch/loongarch.md > +++ b/gcc/config/loongarch/loongarch.md > @@ -2108,8 +2108,8 @@ (define_expand "movsi" > }) > > (define_insn_and_split "*movsi_internal" > - [(set (match_operand:SI 0 "nonimmediate_operand" > "=r,r,r,w,*f,f,*r,*m,*r,*z") > - (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))] > + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m") > + (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))] > "(register_operand (operands[0], SImode) > || reg_or_0_operand (operands[1], SImode))" > { return loongarch_output_move (operands[0], operands[1]); } > @@ -2122,7 +2122,7 @@ (define_insn_and_split "*movsi_internal" > DONE; > } > " > - [(set_attr "move_type" > "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf") > + [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore") > (set_attr "mode" "SI")]) > > ;; 16-bit Integer moves -- Xi Ruoyao School of Aerospace Science and Technology, Xidian University
[PATCH] LoongArch: Remove constraint z from movsi_internal
We don't allow SImode in FCC, so constraint z is never really used here. gcc/ChangeLog: * config/loongarch/loongarch.md (movsi_internal): Remove constraint z. --- Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? gcc/config/loongarch/loongarch.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index a5d0dcd65fe..404a663c1a6 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -2108,8 +2108,8 @@ (define_expand "movsi" }) (define_insn_and_split "*movsi_internal" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m,*r,*z") - (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f,*z,*r"))] + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,w,*f,f,*r,*m") + (match_operand:SI 1 "move_operand" "r,Yd,w,rJ,*r*J,m,*f,*f"))] "(register_operand (operands[0], SImode) || reg_or_0_operand (operands[1], SImode))" { return loongarch_output_move (operands[0], operands[1]); } @@ -2122,7 +2122,7 @@ (define_insn_and_split "*movsi_internal" DONE; } " - [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf") + [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore") (set_attr "mode" "SI")]) ;; 16-bit Integer moves -- 2.43.0