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 /sml/trunk/src/MLRISC/x86/ra/x86Spill.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/x86/ra/x86Spill.sml

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

revision 796, Tue Mar 6 00:04:33 2001 UTC revision 797, Fri Mar 16 00:00:17 2001 UTC
# Line 129  Line 129 
129                 newReg=NONE                 newReg=NONE
130                }                }
131            end            end
132          | I.CMPXCHG{lock,sz,src,dst} =>
133               if immedOrReg src then
134                   {proh=[],
135                    code=[mark(I.CMPXCHG{lock=lock,sz=sz,src=src,dst=spillLoc},an)],
136                    newReg=NONE
137                   }
138               else
139               let val tmpR = newReg()
140                   val tmp  = I.Direct tmpR
141               in {proh=[],
142                   code=[I.MOVE{mvOp=I.MOVL, src=src, dst=tmp},
143                         mark(I.CMPXCHG{lock=lock,sz=sz,src=tmp,dst=spillLoc},an)],
144                   newReg=NONE
145                  }
146               end
147        | I.MULTDIV _ => error "spill: MULTDIV"        | I.MULTDIV _ => error "spill: MULTDIV"
148        | I.MUL3{src1, src2, dst} =>        | I.MUL3{src1, src2, dst} =>
149            let val tmpR = newReg()            let val tmpR = newReg()
# Line 321  Line 336 
336       | I.BINARY{binOp, src, dst} =>       | I.BINARY{binOp, src, dst} =>
337          withTmp(fn tmpR => I.BINARY{binOp=binOp, src=operand(tmpR, src),          withTmp(fn tmpR => I.BINARY{binOp=binOp, src=operand(tmpR, src),
338                                                   dst=operand(tmpR, dst)}, an)                                                   dst=operand(tmpR, dst)}, an)
339         | I.CMPXCHG{lock,sz,src,dst} =>
340            withTmp(fn tmpR => I.CMPXCHG{lock=lock, sz=sz,
341                                         src=operand(tmpR, src),
342                                         dst=operand(tmpR, dst)},an)
343       | I.MULTDIV{multDivOp, src as I.Direct _} =>       | I.MULTDIV{multDivOp, src as I.Direct _} =>
344          done(I.MULTDIV{multDivOp=multDivOp, src=replace src}, an)          done(I.MULTDIV{multDivOp=multDivOp, src=replace src}, an)
345       | I.MULTDIV{multDivOp, src} =>       | I.MULTDIV{multDivOp, src} =>

Legend:
Removed from v.796  
changed lines
  Added in v.797

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