102 |
I.ANNOTATION{i=setTargets(i,labs),a=a} |
I.ANNOTATION{i=setTargets(i,labs),a=a} |
103 |
| setTargets(i,_) = i |
| setTargets(i,_) = i |
104 |
|
|
105 |
fun negateConditional br = let |
fun negateConditional (br, lab) = let |
106 |
fun revBranch I.BEQ = I.BNE |
fun revBranch I.BEQ = I.BNE |
107 |
| revBranch I.BGE = I.BLT |
| revBranch I.BGE = I.BLT |
108 |
| revBranch I.BGT = I.BLE |
| revBranch I.BGT = I.BLE |
117 |
| revFBranch I.FBGT = I.FBLE |
| revFBranch I.FBGT = I.FBLE |
118 |
| revFBranch I.FBLE = I.FBGT |
| revFBranch I.FBLE = I.FBGT |
119 |
| revFBranch I.FBLT = I.FBGE |
| revFBranch I.FBLT = I.FBGE |
|
|
|
120 |
in |
in |
121 |
case br |
case br |
122 |
of I.INSTR(I.BRANCH{b,r,lab}) => I.branch{b=revBranch b,r=r,lab=lab} |
of I.INSTR(I.BRANCH{b,r,...}) => I.branch{b=revBranch b,r=r,lab=lab} |
123 |
| I.INSTR(I.FBRANCH{b,f,lab}) => I.fbranch{b=revFBranch b,f=f,lab=lab} |
| I.INSTR(I.FBRANCH{b,f,...}) => I.fbranch{b=revFBranch b,f=f,lab=lab} |
124 |
| I.ANNOTATION{i,a} => I.ANNOTATION{i=negateConditional i,a=a} |
| I.ANNOTATION{i,a} => I.ANNOTATION{i=negateConditional(i, lab),a=a} |
125 |
| _ => raise NegateConditional |
| _ => raise NegateConditional |
126 |
end |
end |
127 |
|
|