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 582, Thu Mar 23 01:04:32 2000 UTC revision 583, Thu Mar 23 21:52:30 2000 UTC
# Line 92  Line 92 
92       | emit_fbranch (I.FBNE) = (0wx35 : Word32.word)       | emit_fbranch (I.FBNE) = (0wx35 : Word32.word)
93       | emit_fbranch (I.FBGE) = (0wx36 : Word32.word)       | emit_fbranch (I.FBGE) = (0wx36 : Word32.word)
94       | emit_fbranch (I.FBGT) = (0wx37 : Word32.word)       | emit_fbranch (I.FBGT) = (0wx37 : Word32.word)
95     and emit_load (I.LDL) = (0wx28 : Word32.word)     and emit_load (I.LDBU) = (0wx2 : Word32.word)
96         | emit_load (I.LDWU) = (0wx4 : Word32.word)
97         | emit_load (I.LDL) = (0wx28 : Word32.word)
98       | emit_load (I.LDL_L) = (0wx2a : Word32.word)       | emit_load (I.LDL_L) = (0wx2a : Word32.word)
99       | emit_load (I.LDQ) = (0wx29 : Word32.word)       | emit_load (I.LDQ) = (0wx29 : Word32.word)
100       | emit_load (I.LDQ_L) = (0wx2b : Word32.word)       | emit_load (I.LDQ_L) = (0wx2b : Word32.word)
101       | emit_load (I.LDQ_U) = (0wxb : Word32.word)       | emit_load (I.LDQ_U) = (0wxb : Word32.word)
102     and emit_store (I.STL) = (0wx2c : Word32.word)     and emit_store (I.STB) = (0wxe : Word32.word)
103         | emit_store (I.STW) = (0wxd : Word32.word)
104         | emit_store (I.STL) = (0wx2c : Word32.word)
105       | emit_store (I.STQ) = (0wx2d : Word32.word)       | emit_store (I.STQ) = (0wx2d : Word32.word)
106       | emit_store (I.STQ_U) = (0wxf : Word32.word)       | emit_store (I.STQ_U) = (0wxf : Word32.word)
107     and emit_fload (I.LDF) = (0wx20 : Word32.word)     and emit_fload (I.LDF) = (0wx20 : Word32.word)
# Line 247  Line 251 
251    
252     and Split {le} = let     and Split {le} = let
253    
254  (*#line 404.22 "alpha/alpha.md"*)  (*#line 410.22 "alpha/alpha.md"*)
255            val i = LabelExp.valueOf le            val i = LabelExp.valueOf le
256    
257  (*#line 405.22 "alpha/alpha.md"*)  (*#line 411.22 "alpha/alpha.md"*)
258            val w = itow i            val w = itow i
259    
260  (*#line 406.22 "alpha/alpha.md"*)  (*#line 412.22 "alpha/alpha.md"*)
261            val hi = w ~>> 0wx10            val hi = w ~>> 0wx10
262    
263  (*#line 407.22 "alpha/alpha.md"*)  (*#line 413.22 "alpha/alpha.md"*)
264            val lo = w && 0wxffff            val lo = w && 0wxffff
265         in (if (lo < 0wx8000)         in (if (lo < 0wx8000)
266               then (hi, lo)               then (hi, lo)
# Line 265  Line 269 
269    
270     and High {le} = let     and High {le} = let
271    
272  (*#line 410.21 "alpha/alpha.md"*)  (*#line 416.21 "alpha/alpha.md"*)
273            val (hi, _) = Split {le=le}            val (hi, _) = Split {le=le}
274         in hi         in hi
275         end         end
276    
277     and Low {le} = let     and Low {le} = let
278    
279  (*#line 411.21 "alpha/alpha.md"*)  (*#line 417.21 "alpha/alpha.md"*)
280            val (_, lo) = Split {le=le}            val (_, lo) = Split {le=le}
281         in lo         in lo
282         end         end
283    
284     and LoadStore {opc, ra, rb, disp} = let     and LoadStore {opc, ra, rb, disp} = let
285    
286  (*#line 413.12 "alpha/alpha.md"*)  (*#line 419.12 "alpha/alpha.md"*)
287            val disp =            val disp =
288                (                (
289                 case disp of                 case disp of
# Line 364  Line 368 
368    
369     and Pal {func} = eWord32 func     and Pal {func} = eWord32 func
370    
371  (*#line 448.7 "alpha/alpha.md"*)  (*#line 454.7 "alpha/alpha.md"*)
372     fun disp lab = (itow (((Label.addrOf lab) - ( ! loc)) - 4)) ~>> 0wx2     fun disp lab = (itow (((Label.addrOf lab) - ( ! loc)) - 4)) ~>> 0wx2
373     fun emitInstr (I.DEFFREG FP) = ()     fun emitInstr (I.DEFFREG FP) = ()
374       | 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 380  Line 384 
384       | 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}
385       | emitInstr (I.OPERATE{oper, ra, rb, rc}) = let       | emitInstr (I.OPERATE{oper, ra, rb, rc}) = let
386    
387  (*#line 540.15 "alpha/alpha.md"*)  (*#line 546.15 "alpha/alpha.md"*)
388            val (opc, func) = emit_operate oper            val (opc, func) = emit_operate oper
389         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}         in Operate {opc=opc, func=func, ra=ra, rb=rb, rc=rc}
390         end         end
391    
392       | emitInstr (I.OPERATEV{oper, ra, rb, rc}) = let       | emitInstr (I.OPERATEV{oper, ra, rb, rc}) = let
393    
394  (*#line 547.15 "alpha/alpha.md"*)  (*#line 553.15 "alpha/alpha.md"*)
395            val (opc, func) = emit_operateV oper            val (opc, func) = emit_operateV 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
# Line 398  Line 402 
402       | emitInstr (I.FCOPY{dst, src, impl, tmp}) = error "FCOPY"       | emitInstr (I.FCOPY{dst, src, impl, tmp}) = error "FCOPY"
403       | emitInstr (I.FUNARY{oper, fb, fc}) = let       | emitInstr (I.FUNARY{oper, fb, fc}) = let
404    
405  (*#line 576.15 "alpha/alpha.md"*)  (*#line 582.15 "alpha/alpha.md"*)
406            val (opc, func) = emit_funary oper            val (opc, func) = emit_funary oper
407         in Funary {opc=opc, func=func, fb=fb, fc=fc}         in Funary {opc=opc, func=func, fb=fb, fc=fc}
408         end         end
409    
410       | emitInstr (I.FOPERATE{oper, fa, fb, fc}) = let       | emitInstr (I.FOPERATE{oper, fa, fb, fc}) = let
411    
412  (*#line 584.15 "alpha/alpha.md"*)  (*#line 590.15 "alpha/alpha.md"*)
413            val (opc, func) = emit_foperate oper            val (opc, func) = emit_foperate oper
414         in Foperate {opc=opc, func=func, fa=fa, fb=fb, fc=fc}         in Foperate {opc=opc, func=func, fa=fa, fb=fb, fc=fc}
415         end         end

Legend:
Removed from v.582  
changed lines
  Added in v.583

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