Implement jump tables.
- Add a ir::jumptable module with a JumpTableData struct representing the vector of destinations. - Add an entity map of jump tables to the Function. - Parse and write jump tables in the function preamble. - Rewrite EBB references in jumptables after parsing.
This commit is contained in:
@@ -43,3 +43,17 @@ ebb0(vx0: i32, vx1: f32):
|
||||
ebb1(vx2: i32, vx3: f32):
|
||||
brnz vx0, ebb0(vx2, vx3)
|
||||
}
|
||||
|
||||
function jumptable() {
|
||||
jt200 = jump_table 0, 0
|
||||
jt2 = jump_table 0, 0, ebb10, ebb40, ebb20, ebb30
|
||||
|
||||
ebb10:
|
||||
trap
|
||||
ebb20:
|
||||
trap
|
||||
ebb30:
|
||||
trap
|
||||
ebb40:
|
||||
trap
|
||||
}
|
||||
|
||||
@@ -37,3 +37,20 @@ ebb0(vx0: i32, vx1: f32):
|
||||
ebb1(vx2: i32, vx3: f32):
|
||||
brnz vx0, ebb0(vx2, vx3)
|
||||
}
|
||||
|
||||
function jumptable() {
|
||||
jt0 = jump_table 0
|
||||
jt1 = jump_table 0, 0, ebb0, ebb3, ebb1, ebb2
|
||||
|
||||
ebb0:
|
||||
trap
|
||||
|
||||
ebb1:
|
||||
trap
|
||||
|
||||
ebb2:
|
||||
trap
|
||||
|
||||
ebb3:
|
||||
trap
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user