@@ -56,6 +56,7 @@ datatype (discs_sels) IRNode =
56
56
| InvokeWithExceptionNode ( ir_nid : ID ) ( ir_callTarget : "INPUT_EXT" ) ( ir_classInit_opt : "INPUT option" ) ( ir_stateDuring_opt : "INPUT_STATE option" ) ( ir_stateAfter_opt : "INPUT_STATE option" ) ( ir_next : "SUCC" ) ( ir_exceptionEdge : "SUCC" )
57
57
| IsNullNode ( ir_value : "INPUT" )
58
58
| KillingBeginNode ( ir_next : "SUCC" )
59
+ | LeftShiftNode ( ir_x : "INPUT" ) ( ir_y : "INPUT" )
59
60
| LoadFieldNode ( ir_nid : ID ) ( ir_field : string ) ( ir_object_opt : "INPUT option" ) ( ir_next : "SUCC" )
60
61
| LogicNegationNode ( ir_value : "INPUT_COND" )
61
62
| LoopBeginNode ( ir_ends : "INPUT_ASSOC list" ) ( ir_overflowGuard_opt : "INPUT_GUARD option" ) ( ir_stateAfter_opt : "INPUT_STATE option" ) ( ir_next : "SUCC" )
@@ -73,13 +74,15 @@ datatype (discs_sels) IRNode =
73
74
| ParameterNode ( ir_index : nat )
74
75
| PiNode ( ir_object : "INPUT" ) ( ir_guard_opt : "INPUT_GUARD option" )
75
76
| ReturnNode ( ir_result_opt : "INPUT option" ) ( ir_memoryMap_opt : "INPUT_EXT option" )
77
+ | RightShiftNode ( ir_x : "INPUT" ) ( ir_y : "INPUT" )
76
78
| ShortCircuitOrNode ( ir_x : "INPUT_COND" ) ( ir_y : "INPUT_COND" )
77
79
| SignExtendNode ( ir_inputBits : nat ) ( ir_resultBits : nat ) ( ir_value : "INPUT" )
78
80
| SignedDivNode ( ir_nid : ID ) ( ir_x : "INPUT" ) ( ir_y : "INPUT" ) ( ir_zeroCheck_opt : "INPUT_GUARD option" ) ( ir_stateBefore_opt : "INPUT_STATE option" ) ( ir_next : "SUCC" )
79
81
| SignedRemNode ( ir_nid : ID ) ( ir_x : "INPUT" ) ( ir_y : "INPUT" ) ( ir_zeroCheck_opt : "INPUT_GUARD option" ) ( ir_stateBefore_opt : "INPUT_STATE option" ) ( ir_next : "SUCC" )
80
82
| StartNode ( ir_stateAfter_opt : "INPUT_STATE option" ) ( ir_next : "SUCC" )
81
83
| StoreFieldNode ( ir_nid : ID ) ( ir_field : string ) ( ir_value : "INPUT" ) ( ir_stateAfter_opt : "INPUT_STATE option" ) ( ir_object_opt : "INPUT option" ) ( ir_next : "SUCC" )
82
84
| SubNode ( ir_x : "INPUT" ) ( ir_y : "INPUT" )
85
+ | UnsignedRightShiftNode ( ir_x : "INPUT" ) ( ir_y : "INPUT" )
83
86
| UnwindNode ( ir_exception : "INPUT" )
84
87
| ValuePhiNode ( ir_nid : ID ) ( ir_values : "INPUT list" ) ( ir_merge : "INPUT_ASSOC" )
85
88
| ValueProxyNode ( ir_value : "INPUT" ) ( ir_loopExit : "INPUT_ASSOC" )
@@ -146,6 +149,8 @@ fun inputs_of :: "IRNode \<Rightarrow> ID list" where
146
149
"inputs_of (IsNullNode value) = [value]" |
147
150
inputs_of_KillingBeginNode :
148
151
"inputs_of (KillingBeginNode next) = []" |
152
+ inputs_of_LeftShiftNode :
153
+ "inputs_of (LeftShiftNode x y) = [x, y]" |
149
154
inputs_of_LoadFieldNode :
150
155
"inputs_of (LoadFieldNode nid0 field object next) = (opt_to_list object)" |
151
156
inputs_of_LogicNegationNode :
@@ -180,6 +185,8 @@ fun inputs_of :: "IRNode \<Rightarrow> ID list" where
180
185
"inputs_of (PiNode object guard) = object # (opt_to_list guard)" |
181
186
inputs_of_ReturnNode :
182
187
"inputs_of (ReturnNode result memoryMap) = (opt_to_list result) @ (opt_to_list memoryMap)" |
188
+ inputs_of_RightShiftNode :
189
+ "inputs_of (RightShiftNode x y) = [x, y]" |
183
190
inputs_of_ShortCircuitOrNode :
184
191
"inputs_of (ShortCircuitOrNode x y) = [x, y]" |
185
192
inputs_of_SignExtendNode :
@@ -194,6 +201,8 @@ fun inputs_of :: "IRNode \<Rightarrow> ID list" where
194
201
"inputs_of (StoreFieldNode nid0 field value stateAfter object next) = value # (opt_to_list stateAfter) @ (opt_to_list object)" |
195
202
inputs_of_SubNode :
196
203
"inputs_of (SubNode x y) = [x, y]" |
204
+ inputs_of_UnsignedRightShiftNode :
205
+ "inputs_of (UnsignedRightShiftNode x y) = [x, y]" |
197
206
inputs_of_UnwindNode :
198
207
"inputs_of (UnwindNode exception) = [exception]" |
199
208
inputs_of_ValuePhiNode :
@@ -249,6 +258,8 @@ fun successors_of :: "IRNode \<Rightarrow> ID list" where
249
258
"successors_of (IsNullNode value) = []" |
250
259
successors_of_KillingBeginNode :
251
260
"successors_of (KillingBeginNode next) = [next]" |
261
+ successors_of_LeftShiftNode :
262
+ "successors_of (LeftShiftNode x y) = []" |
252
263
successors_of_LoadFieldNode :
253
264
"successors_of (LoadFieldNode nid0 field object next) = [next]" |
254
265
successors_of_LogicNegationNode :
@@ -283,6 +294,8 @@ fun successors_of :: "IRNode \<Rightarrow> ID list" where
283
294
"successors_of (PiNode object guard) = []" |
284
295
successors_of_ReturnNode :
285
296
"successors_of (ReturnNode result memoryMap) = []" |
297
+ successors_of_RightShiftNode :
298
+ "successors_of (RightShiftNode x y) = []" |
286
299
successors_of_ShortCircuitOrNode :
287
300
"successors_of (ShortCircuitOrNode x y) = []" |
288
301
successors_of_SignExtendNode :
@@ -297,6 +310,8 @@ fun successors_of :: "IRNode \<Rightarrow> ID list" where
297
310
"successors_of (StoreFieldNode nid0 field value stateAfter object next) = [next]" |
298
311
successors_of_SubNode :
299
312
"successors_of (SubNode x y) = []" |
313
+ successors_of_UnsignedRightShiftNode :
314
+ "successors_of (UnsignedRightShiftNode x y) = []" |
300
315
successors_of_UnwindNode :
301
316
"successors_of (UnwindNode exception) = []" |
302
317
successors_of_ValuePhiNode :
0 commit comments