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/instructions/x86Props.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/x86/instructions/x86Props.sml

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

revision 796, Tue Mar 6 00:04:33 2001 UTC revision 815, Fri May 4 05:09:10 2001 UTC
# Line 160  Line 160 
160        val uses = operandUse src        val uses = operandUse src
161      in      in
162        case multDivOp        case multDivOp
163         of (I.IDIVL | I.DIVL) => (eaxPair, C.edx::C.eax::uses)         of (I.IDIVL1 | I.DIVL1) => (eaxPair, C.edx::C.eax::uses)
164          | I.MULL => (eaxPair, C.eax::uses)          | I.MULL1 => (eaxPair, C.eax::uses)
165      end      end
166    
167      fun unary opnd = (operandDef opnd, operandUse opnd)      fun unary opnd = (operandDef opnd, operandUse opnd)
168      fun cmptest{lsrc, rsrc} = ([], operandAcc(lsrc, operandUse rsrc))      fun cmptest{lsrc, rsrc} = ([], operandAcc(lsrc, operandUse rsrc))
169        fun espOnly()  = let val sp = [C.stackptrR] in (sp, sp) end
170      fun push arg = ([C.stackptrR], operandAcc(arg, [C.stackptrR]))      fun push arg = ([C.stackptrR], operandAcc(arg, [C.stackptrR]))
171      fun float opnd = ([], operandUse opnd)      fun float opnd = ([], operandUse opnd)
172    in    in
# Line 185  Line 186 
186             if C.sameColor(rs,rd) then ([rd],[]) else ([rd],[rs,rd])             if C.sameColor(rs,rd) then ([rd],[]) else ([rd],[rs,rd])
187        | I.BINARY{src,dst,...} =>        | I.BINARY{src,dst,...} =>
188             (operandDef dst, operandAcc(src, operandUse dst))             (operandDef dst, operandAcc(src, operandUse dst))
189          | I.CMPXCHG{src, dst, ...} =>
190               (C.eax::operandDef dst, C.eax::operandAcc(src, operandUse dst))
191        | I.ENTER _             => ([C.esp, C.ebp], [C.esp, C.ebp])        | I.ENTER _             => ([C.esp, C.ebp], [C.esp, C.ebp])
192        | I.LEAVE               => ([C.esp, C.ebp], [C.esp, C.ebp])        | I.LEAVE               => ([C.esp, C.ebp], [C.esp, C.ebp])
193        | I.MULTDIV arg         => multdiv arg        | I.MULTDIV arg         => multdiv arg
194        | I.MUL3{src1, src2=SOME _, dst}=> ([dst], operandUse src1)        | I.MUL3{src1, dst, ...}=> ([dst], operandUse src1)
       | I.MUL3{src1, dst, ...}=> ([dst], dst::operandUse src1)  
195    
196        | I.UNARY{opnd, ...}    => unary opnd        | I.UNARY{opnd, ...}    => unary opnd
197        | I.SET{opnd, ...}      => unary opnd        | I.SET{opnd, ...}      => unary opnd
198        | ( I.PUSHL arg | I.PUSHW arg | I.PUSHB arg ) => push arg        | ( I.PUSHL arg | I.PUSHW arg | I.PUSHB arg ) => push arg
199        | I.POP arg             => (C.stackptrR::operandDef arg, [C.stackptrR])        | I.POP arg             => (C.stackptrR::operandDef arg, [C.stackptrR])
200          | I.PUSHFD              => espOnly()
201          | I.POPFD               => espOnly()
202        | I.CDQ                 => ([C.edx], [C.eax])        | I.CDQ                 => ([C.edx], [C.eax])
203    
204        | I.COPY{dst, src, tmp=SOME(I.Direct r), ...}   => (r::dst, src)        | I.COPY{dst, src, tmp=SOME(I.Direct r), ...}   => (r::dst, src)
# Line 224  Line 228 
228        | I.FUNOP{src, dst, ...} => operandUse2(src, dst)        | I.FUNOP{src, dst, ...} => operandUse2(src, dst)
229    
230        | I.SAHF                => ([], [C.eax])        | I.SAHF                => ([], [C.eax])
231          | I.LAHF                => ([C.eax], [])
232          (* This sets the low order byte,          (* This sets the low order byte,
233           * do potentially it may define *and* use           * do potentially it may define *and* use
234           *)           *)

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

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