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/alpha/emit/alphaMC.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/alpha/emit/alphaMC.sml

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

revision 627, Tue Apr 25 20:40:35 2000 UTC revision 628, Tue Apr 25 21:03:34 2000 UTC
# Line 252  Line 252 
252    
253     and Split {le} = let     and Split {le} = let
254    
255  (*#line 415.22 "alpha/alpha.md"*)  (*#line 420.22 "alpha/alpha.md"*)
256            val i = LabelExp.valueOf le            val i = LabelExp.valueOf le
257    
258  (*#line 416.22 "alpha/alpha.md"*)  (*#line 421.22 "alpha/alpha.md"*)
259            val w = itow i            val w = itow i
260    
261  (*#line 417.22 "alpha/alpha.md"*)  (*#line 422.22 "alpha/alpha.md"*)
262            val hi = w ~>> 0wx10            val hi = w ~>> 0wx10
263    
264  (*#line 418.22 "alpha/alpha.md"*)  (*#line 423.22 "alpha/alpha.md"*)
265            val lo = w && 0wxffff            val lo = w && 0wxffff
266         in (if (lo < 0wx8000)         in (if (lo < 0wx8000)
267               then (hi, lo)               then (hi, lo)
# Line 270  Line 270 
270    
271     and High {le} = let     and High {le} = let
272    
273  (*#line 421.21 "alpha/alpha.md"*)  (*#line 426.21 "alpha/alpha.md"*)
274            val (hi, _) = Split {le=le}            val (hi, _) = Split {le=le}
275         in hi         in hi
276         end         end
277    
278     and Low {le} = let     and Low {le} = let
279    
280  (*#line 422.21 "alpha/alpha.md"*)  (*#line 427.21 "alpha/alpha.md"*)
281            val (_, lo) = Split {le=le}            val (_, lo) = Split {le=le}
282         in lo         in lo
283         end         end
284    
285     and LoadStore {opc, ra, rb, disp} = let     and LoadStore {opc, ra, rb, disp} = let
286    
287  (*#line 424.12 "alpha/alpha.md"*)  (*#line 429.12 "alpha/alpha.md"*)
288            val disp =            val disp =
289                (                (
290                 case disp of                 case disp of
# Line 374  Line 374 
374    
375     and Pal {func} = eWord32 func     and Pal {func} = eWord32 func
376    
377  (*#line 460.7 "alpha/alpha.md"*)  (*#line 465.7 "alpha/alpha.md"*)
378     fun disp lab = (itow (((Label.addrOf lab) - ( ! loc)) - 4)) ~>> 0wx2     fun disp lab = (itow (((Label.addrOf lab) - ( ! loc)) - 4)) ~>> 0wx2
379     fun emitInstr (I.DEFFREG FP) = ()     fun emitInstr (I.DEFFREG FP) = ()
380       | emitInstr (I.LDA{r, b, d}) = ILoadStore {opc=0wx8, r=r, b=b, d=d}       | emitInstr (I.LDA{r, b, d}) = ILoadStore {opc=0wx8, r=r, b=b, d=d}
# Line 391  Line 391 
391       | emitInstr (I.FBRANCH{b, f, lab}) = Fbranch {opc=b, ra=f, disp=disp lab}       | emitInstr (I.FBRANCH{b, f, lab}) = Fbranch {opc=b, ra=f, disp=disp lab}
392       | emitInstr (I.OPERATE{oper, ra, rb, rc}) = let       | emitInstr (I.OPERATE{oper, ra, rb, rc}) = let
393    
394  (*#line 558.15 "alpha/alpha.md"*)  (*#line 563.15 "alpha/alpha.md"*)
395            val (opc, func) = emit_operate oper            val (opc, func) = emit_operate oper
396         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}
397         end         end
398    
399       | emitInstr (I.OPERATEV{oper, ra, rb, rc}) = let       | emitInstr (I.OPERATEV{oper, ra, rb, rc}) = let
400    
401  (*#line 565.15 "alpha/alpha.md"*)  (*#line 570.15 "alpha/alpha.md"*)
402            val (opc, func) = emit_operateV oper            val (opc, func) = emit_operateV oper
403         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}
404         end         end
# Line 409  Line 409 
409       | emitInstr (I.FCOPY{dst, src, impl, tmp}) = error "FCOPY"       | emitInstr (I.FCOPY{dst, src, impl, tmp}) = error "FCOPY"
410       | emitInstr (I.FUNARY{oper, fb, fc}) = let       | emitInstr (I.FUNARY{oper, fb, fc}) = let
411    
412  (*#line 594.15 "alpha/alpha.md"*)  (*#line 599.15 "alpha/alpha.md"*)
413            val (opc, func) = emit_funary oper            val (opc, func) = emit_funary oper
414         in Funary {opc=opc, func=func, fb=fb, fc=fc}         in Funary {opc=opc, func=func, fb=fb, fc=fc}
415         end         end
416    
417       | emitInstr (I.FOPERATE{oper, fa, fb, fc}) = let       | emitInstr (I.FOPERATE{oper, fa, fb, fc}) = let
418    
419  (*#line 602.15 "alpha/alpha.md"*)  (*#line 607.15 "alpha/alpha.md"*)
420            val (opc, func) = emit_foperate oper            val (opc, func) = emit_foperate oper
421         in Foperate {opc=opc, func=func, fa=fa, fb=fb, fc=fc}         in Foperate {opc=opc, func=func, fa=fa, fb=fb, fc=fc}
422         end         end

Legend:
Removed from v.627  
changed lines
  Added in v.628

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