SCM Repository
[smlnj] Diff of /sml/trunk/src/MLRISC/x86/instructions/x86Props.sml
Diff of /sml/trunk/src/MLRISC/x86/instructions/x86Props.sml
Parent Directory
|
Revision Log
|
Patch
130 |
I.jcc{cond=cond,opnd=I.ImmedLabel(T.LABEL t)} |
I.jcc{cond=cond,opnd=I.ImmedLabel(T.LABEL t)} |
131 |
| setTargets(i,_) = error "setTargets" |
| setTargets(i,_) = error "setTargets" |
132 |
|
|
133 |
fun negateConditional _ = raise NotImplemented |
fun negateConditional (I.ANNOTATION{i,a}, lab) = |
134 |
|
I.ANNOTATION{i=negateConditional(i,lab), a=a} |
135 |
|
| negateConditional (I.INSTR(I.JCC{cond,opnd=I.ImmedLabel _}), lab) = let |
136 |
|
val cond' = (case cond |
137 |
|
of I.EQ => I.NE |
138 |
|
| I.NE => I.EQ |
139 |
|
| I.LT => I.GE |
140 |
|
| I.LE => I.GT |
141 |
|
| I.GT => I.LE |
142 |
|
| I.GE => I.LT |
143 |
|
| I.B => I.AE |
144 |
|
| I.BE => I.A |
145 |
|
| I.A => I.BE |
146 |
|
| I.AE => I.B |
147 |
|
| I.C => I.NC |
148 |
|
| I.NC => I.C |
149 |
|
| I.P => I.NP |
150 |
|
| I.NP => I.P |
151 |
|
| I.O => I.NO |
152 |
|
| I.NO => I.O |
153 |
|
(* end case *)) |
154 |
|
in |
155 |
|
I.INSTR(I.JCC{cond=cond', opnd=I.ImmedLabel lab}) |
156 |
|
end |
157 |
|
| negateConditional _ = error "negateConditional" |
158 |
|
|
159 |
val immedRange={lo= ~1073741824, hi=1073741823} |
val immedRange={lo= ~1073741824, hi=1073741823} |
160 |
val toInt32 = Int32.fromLarge o Int.toLarge |
val toInt32 = Int32.fromLarge o Int.toLarge |
|
Legend:
Removed from v.1099 |
|
changed lines |
|
Added in v.1100 |
|
|