Skip to content

Commit

Permalink
CodeBuilder: genmovreg()
Browse files Browse the repository at this point in the history
  • Loading branch information
WalterBright committed Aug 25, 2017
1 parent fa6ef28 commit d9e592c
Show file tree
Hide file tree
Showing 8 changed files with 245 additions and 250 deletions.
9 changes: 4 additions & 5 deletions dm/src/dmc/cg87.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
* Copyright: Copyright (C) 1987-1995 by Symantec
* Copyright (c) 2000-2017 by Digital Mars, All Rights Reserved
* Authors: $(LINK2 http://www.digitalmars.com, Walter Bright)
* License: Distributed under the Boost Software License, Version 1.0.
* http://www.boost.org/LICENSE_1_0.txt
* Source: https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cg87.c
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cg87.c, backend/cg87.c)
*/

#if !SPP
Expand Down Expand Up @@ -3221,10 +3220,10 @@ void cnvt87(CodeBuilder& cdb,elem *e,regm_t *pretregs)

if (szoff > REGSIZE)
{ szpush -= REGSIZE;
cdb.append(genpop(CNIL,findreglsw(retregs))); // POP lsw
genpop(cdb,findreglsw(retregs)); // POP lsw
}
szpush -= REGSIZE;
cdb.append(genpop(CNIL,reg)); // POP reg
genpop(cdb,reg); // POP reg

if (szpush)
cod3_stackadj(cdb, -szpush);
Expand Down
19 changes: 9 additions & 10 deletions dm/src/dmc/cgcod.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
* Copyright: Copyright (C) 1985-1998 by Symantec
* Copyright (c) 2000-2017 by Digital Mars, All Rights Reserved
* Authors: $(LINK2 http://www.digitalmars.com, Walter Bright)
* License: Distributed under the Boost Software License, Version 1.0.
* http://www.boost.org/LICENSE_1_0.txt
* Source: https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cgcod.c
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cgcod.c, backend/cgcod.c)
*/

#if !SPP
Expand Down Expand Up @@ -2142,7 +2141,7 @@ static void cse_save(CodeBuilder& cdb, regm_t ms)
csextab[i].flags |= CSEsimple;
else
{
cdb.append(gensavereg(reg, i));
gensavereg(cdb, reg, i);
reflocal = TRUE;
}
}
Expand Down Expand Up @@ -2831,8 +2830,8 @@ void scodelem(CodeBuilder& cdb, elem *e,regm_t *pretregs,regm_t keepmsk,bool con
{ regm_t mj = mask[j];

if (touse & mj)
{ cs1 = genmovreg(cs1,j,i);
cs2 = cat(genmovreg(CNIL,i,j),cs2);
{ cs1 = cat(cs1,genmovreg(j,i));
cs2 = cat(genmovreg(i,j),cs2);
touse &= ~mj;
mfuncreg &= ~mj;
regcon.used |= mj;
Expand Down Expand Up @@ -2875,16 +2874,16 @@ void scodelem(CodeBuilder& cdb, elem *e,regm_t *pretregs,regm_t keepmsk,bool con
// because c hasn't been executed yet
cod3_stackadj(cdbs1, sz);
regcon.immed.mval = mval_save;
cdbs1.append(genadjesp(CNIL, sz));
cdbs1.genadjesp(sz);

cod3_stackadj(cdbs2, -sz);
cdbs2.append(genadjesp(CNIL, -sz));
cdbs2.genadjesp(-sz);
}
cdbs2.append(cs2);


cdbs1.append(genadjesp(CNIL,adjesp));
cdbs2.append(genadjesp(CNIL,-adjesp));
cdbs1.genadjesp(adjesp);
cdbs2.genadjesp(-adjesp);
}
else
cdbs2.append(cs2);
Expand Down
7 changes: 3 additions & 4 deletions dm/src/dmc/cgxmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
*
* Copyright: Copyright (c) 2011-2017 by Digital Mars, All Rights Reserved
* Authors: $(LINK2 http://www.digitalmars.com, Walter Bright)
* License: Distributed under the Boost Software License, Version 1.0.
* http://www.boost.org/LICENSE_1_0.txt
* Source: https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cgxmm.c
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cgxmm.c, backend/cgxmm.c)
*/

#if !SPP
Expand Down Expand Up @@ -405,7 +404,7 @@ void xmmcnvt(CodeBuilder& cdb,elem *e,regm_t *pretregs)
else if (zx)
{ assert(I64);
getregs(cdb,regs);
cdb.append(genregs(CNIL,STO,reg,reg)); // MOV reg,reg to zero upper 32-bit
genregs(cdb,STO,reg,reg); // MOV reg,reg to zero upper 32-bit
code_orflag(cdb.last(),CFvolatile);
}

Expand Down

0 comments on commit d9e592c

Please sign in to comment.