Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /MLRISC/trunk/amd64/ra/amd64SpillInstr.sml
ViewVC logotype

Diff of /MLRISC/trunk/amd64/ra/amd64SpillInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2810, Wed Oct 24 07:43:56 2007 UTC revision 2811, Thu Oct 25 20:36:09 2007 UTC
# Line 238  Line 238 
238                   | I.XADD{lock,sz=isz,src as I.Direct (_, srcR),dst} => let                   | I.XADD{lock,sz=isz,src as I.Direct (_, srcR),dst} => let
239                          val (tmpR, tmpOpnd, tmpOpnd64) = freshTmp ()                          val (tmpR, tmpOpnd, tmpOpnd64) = freshTmp ()
240                          in                          in
                            print "adsf\n";  
241                              {proh=[tmpR],                              {proh=[tmpR],
242                              newReg=SOME tmpR,                              newReg=SOME tmpR,
243                              code=[mark (I.XADD{lock=lock,sz=isz,src=src,dst=spillLoc}, an)]}                              code=[mark (I.XADD{lock=lock,sz=isz,src=src,dst=spillLoc}, an)]}
# Line 257  Line 256 
256                             newReg=SOME tmpR                             newReg=SOME tmpR
257                            }                            }
258                         end                         end
259                     | I.XCHG{lock,sz=isz,src,dst} =>
260                       if immedOrReg src then
261                           {proh=[],
262                            code=[mark(I.XCHG{lock=lock,sz=isz,src=src,dst=spillLoc},an)],
263                            newReg=NONE
264                           }
265                       else
266                           let val (tmpR, tmpOpnd, tmpOpnd64) = freshTmp()
267                           in {proh=[tmpR],
268                               code=[I.move{mvOp=I.MOVQ, src=src, dst=tmpOpnd64},
269                                     mark(I.XCHG{lock=lock,sz=isz,src=tmpOpnd,dst=spillLoc},an)],
270                               newReg=SOME tmpR
271                              }
272                           end
273                   | I.MULTDIV _ => error "spill: MULTDIV"                   | I.MULTDIV _ => error "spill: MULTDIV"
274                   | I.MUL3 {src1, src2, dst} => let                   | I.MUL3 {src1, src2, dst} => let
275                     val tmpR = newReg()                     val tmpR = newReg()
# Line 502  Line 515 
515                     I.CMPXCHG{lock=lock, sz=sz,                     I.CMPXCHG{lock=lock, sz=sz,
516                               src=operand(src, tmpR),                               src=operand(src, tmpR),
517                               dst=operand(dst, tmpR)})                               dst=operand(dst, tmpR)})
518                     | I.XCHG{lock,sz,src,dst} => withTmp(fn tmpR =>
519                       I.XCHG{lock=lock, sz=sz,
520                              src=operand(src, tmpR),
521                              dst=operand(dst, tmpR)})
522                   | I.XADD{lock,sz,src,dst} => withTmp(fn tmpR =>                   | I.XADD{lock,sz,src,dst} => withTmp(fn tmpR =>
523                     I.XADD {lock=lock,sz=sz,                     I.XADD {lock=lock,sz=sz,
524                             src=operand(src, tmpR),                             src=operand(src, tmpR),

Legend:
Removed from v.2810  
changed lines
  Added in v.2811

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0