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
 [smlnj] / sml / trunk / src / MLRISC / alpha / emit / alphaMC.sml

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

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