cranelift: Remove brz and brnz (#5630)

Remove the brz and brnz instructions, as their behavior is now redundant with brif.
This commit is contained in:
Trevor Elliott
2023-01-30 12:34:56 -08:00
committed by GitHub
parent 77cf547f41
commit a5698cedf8
247 changed files with 2947 additions and 3754 deletions

View File

@@ -2,24 +2,23 @@ test domtree
function %test(i32) {
block0(v0: i32):
jump block1 ; dominates: block1
jump block1 ; dominates: block1
block1:
brz v0, block3 ; dominates: block3
jump block2 ; dominates: block2
brif v0, block2, block3 ; dominates: block2 block3
block2:
jump block3
block3:
return
}
; check: cfg_postorder:
; sameln: block2
; sameln: block3
; sameln: block2
; sameln: block1
; sameln: block0
; check: domtree_preorder {
; nextln: block0: block1
; nextln: block1: block3 block2
; nextln: block3:
; nextln: block1: block2 block3
; nextln: block2:
; nextln: block3:
; nextln: }

View File

@@ -2,33 +2,29 @@ test domtree
function %test(i32) {
block0(v0: i32):
brz v0, block1 ; dominates: block1 block3 block4 block5
jump block2 ; dominates: block2
brif v0, block2, block1 ; dominates: block1 block2 block3 block4 block5
block1:
jump block3
block2:
brz v0, block4
jump block5
brif v0, block5, block4
block3:
jump block4
block4:
brz v0, block3
jump block5
brif v0, block5, block3
block5:
brz v0, block4
jump block6 ; dominates: block6
brif v0, block6, block4 ; dominates: block6
block6:
return
}
; Fall-through-first, prune-at-source DFT:
;
; block0 {
; block0:brz v0, block1 {
; block0:brif v0, block1 {
; block0:jump block2 {
; block2 {
; block2:brz v2, block2 -
; block2:brz v3, block1 -
; block2:brz v4, block4 {
; block2:brif v2, block2 -
; block2:brif v3, block1 -
; block2:brif v4, block4 {
; block2: jump block5 {
; block5: jump block6 {
; block6 {}
@@ -49,42 +45,37 @@ function %test(i32) {
; check: cfg_postorder:
; sameln: block6
; sameln: block5
; sameln: block3
; sameln: block4
; sameln: block2
; sameln: block3
; sameln: block1
; sameln: block2
; sameln: block0
; check: domtree_preorder {
; nextln: block0: block1 block2 block4 block3 block5
; nextln: block1:
; nextln: block0: block2 block1 block3 block4 block5
; nextln: block2:
; nextln: block4:
; nextln: block1:
; nextln: block3:
; nextln: block4:
; nextln: block5: block6
; nextln: block6:
; nextln: }
function %loop2(i32) system_v {
block0(v0: i32):
brz v0, block1 ; dominates: block1 block3 block4 block5
jump block2 ; dominates: block2
brif v0, block2, block1 ; dominates: block2 block1 block3 block4 block5
block1:
jump block3
block2:
brz v0, block4
jump block5
brif v0, block5, block4
block3:
jump block4
block4:
brz v0, block3
jump block8 ; dominates: block8
brif v0, block8, block3 ; dominates: block8
block8:
brnz v0, block5
jump block6 ; dominates: block6
brif v0, block5, block6 ; dominates: block6
block5:
brz v0, block4
jump block9 ; dominates: block9
brif v0, block9, block4 ; dominates: block9
block9:
trap user0
block6:
@@ -93,26 +84,26 @@ function %loop2(i32) system_v {
return
}
; check: cfg_postorder:
; sameln: block9
; sameln: block5
; sameln: block7
; sameln: block6
; sameln: block9
; sameln: block5
; sameln: block8
; sameln: block3
; sameln: block4
; sameln: block2
; sameln: block3
; sameln: block1
; sameln: block2
; sameln: block0
; check: domtree_preorder {
; nextln: block0: block1 block2 block4 block3 block5
; nextln: block1:
; nextln: block0: block2 block1 block3 block4 block5
; nextln: block2:
; nextln: block1:
; nextln: block3:
; nextln: block4: block8
; nextln: block8: block6
; nextln: block6: block7
; nextln: block7:
; nextln: block3:
; nextln: block5: block9
; nextln: block9:
; nextln: }

View File

@@ -2,30 +2,23 @@ test domtree
function %loop1(i32) {
block0(v0: i32):
brz v0, block1 ; dominates: block1 block6
jump block10 ; dominates: block10
brif v0, block10, block1 ; dominates: block10 block1 block6
block10:
brnz v0, block2 ; dominates: block2 block9
jump block3 ; dominates: block3
brif v0, block2, block3 ; dominates: block2 block9 block3
block1:
jump block6
block2:
brz v0, block4 ; dominates: block4 block7 block8
jump block5 ; dominates: block5
brif v0, block5, block4 ; dominates: block5 block4 block7 block8
block3:
jump block9
block4:
brz v0, block4
jump block11 ; dominates: block11
brif v0, block11, block4 ; dominates: block11
block11:
brnz v0, block6
jump block7
brif v0, block6, block7
block5:
brz v0, block7
jump block12 ; dominates: block12
brif v0, block12, block7 ; dominates: block12
block12:
brnz v0, block8
jump block9
brif v0, block8, block9
block6:
return
block7:
@@ -37,56 +30,52 @@ function %loop1(i32) {
}
; check: domtree_preorder {
; nextln: block0: block1 block10 block6
; nextln: block1:
; nextln: block0: block10 block1 block6
; nextln: block10: block2 block3 block9
; nextln: block2: block4 block5 block7 block8
; nextln: block4: block11
; nextln: block11:
; nextln: block2: block5 block4 block7 block8
; nextln: block5: block12
; nextln: block12:
; nextln: block4: block11
; nextln: block11:
; nextln: block7:
; nextln: block8:
; nextln: block3:
; nextln: block9:
; nextln: block1:
; nextln: block6:
; nextln: }
function %loop2(i32) system_v {
block0(v0: i32):
brz v0, block1 ; dominates: block1 block3 block4 block5
jump block2 ; dominates: block2
brif v0, block2, block1 ; dominates: block2 block1 block3 block4 block5
block1:
jump block3
block2:
brz v0, block4
jump block5
brif v0, block5, block4
block3:
jump block4
block4:
brz v0, block3
jump block5
brif v0, block5, block3
block5:
brz v0, block4
jump block6 ; dominates: block6
brif v0, block6, block4 ; dominates: block6
block6:
return
}
; check: cfg_postorder:
; sameln: block6
; sameln: block5
; sameln: block3
; sameln: block4
; sameln: block2
; sameln: block3
; sameln: block1
; sameln: block2
; sameln: block0
; check: domtree_preorder {
; nextln: block0: block1 block2 block4 block3 block5
; nextln: block1:
; nextln: block0: block2 block1 block3 block4 block5
; nextln: block2:
; nextln: block4:
; nextln: block1:
; nextln: block3:
; nextln: block4:
; nextln: block5: block6
; nextln: block6:
; nextln: }

View File

@@ -2,11 +2,9 @@ test domtree
function %test(i32) {
block0(v0: i32):
brz v0, block1 ; dominates: block1
jump block12 ; dominates: block12
brif v0, block12, block1 ; dominates: block12 block1
block12:
brnz v0, block2 ; dominates: block2 block5
jump block3 ; dominates: block3
brif v0, block2, block3 ; dominates: block2 block5 block3
block1:
jump block4 ; dominates: block4
block2:
@@ -14,16 +12,13 @@ function %test(i32) {
block3:
jump block5
block4:
brz v0, block6 ; dominates: block6 block10
jump block7 ; dominates: block7
brif v0, block7, block6 ; dominates: block7 block6 block10
block5:
return
block6:
brz v0, block8 ; dominates: block11 block8
jump block13 ; dominates: block13
brif v0, block13, block8 ; dominates: block13 block11 block8
block13:
brnz v0, block9 ; dominates: block9
jump block10
brif v0, block9, block10 ; dominates: block9
block7:
jump block10
block8:
@@ -37,18 +32,18 @@ function %test(i32) {
}
; check: domtree_preorder {
; nextln: block0: block1 block12
; nextln: block1: block4
; nextln: block4: block6 block7 block10
; nextln: block6: block8 block13 block11
; nextln: block8:
; nextln: block13: block9
; nextln: block9:
; nextln: block11:
; nextln: block7:
; nextln: block10:
; nextln: block0: block12 block1
; nextln: block12: block2 block3 block5
; nextln: block2:
; nextln: block3:
; nextln: block5:
; nextln: block1: block4
; nextln: block4: block7 block6 block10
; nextln: block7:
; nextln: block6: block13 block8 block11
; nextln: block13: block9
; nextln: block9:
; nextln: block8:
; nextln: block11:
; nextln: block10:
; nextln: }

View File

@@ -2,20 +2,15 @@ test domtree
function %test(i32) {
block0(v0: i32):
brz v0, block13 ; dominates: block13
jump block1 ; dominates: block1
brif v0, block1, block13 ; dominates: block1 block13
block1:
brz v0, block2 ; dominates: block2 block7
jump block20 ; dominates: block20
brif v0, block20, block2 ; dominates: block20 block2 block7
block20:
brnz v0, block3 ; dominates: block3
jump block21 ; dominates: block21
brif v0, block3, block21 ; dominates: block3 block21
block21:
brz v0, block4 ; dominates: block4
jump block22 ; dominates: block22
brif v0, block22, block4 ; dominates: block22 block4
block22:
brnz v0, block5 ; dominates: block5
jump block6 ; dominates: block6
brif v0, block5, block6 ; dominates: block5 block6
block2:
jump block7
block3:
@@ -27,21 +22,17 @@ function %test(i32) {
block6:
jump block7
block7:
brnz v0, block8 ; dominates: block8 block12
jump block23 ; dominates: block23
brif v0, block8, block23 ; dominates: block8 block12 block23
block23:
brz v0, block9 ; dominates: block9
jump block24 ; dominates: block24
brif v0, block24, block9 ; dominates: block24 block9
block24:
brnz v0, block10 ; dominates: block10
jump block11 ; dominates: block11
brif v0, block10, block11 ; dominates: block10 block11
block8:
jump block12
block9:
jump block12
block10:
brz v0, block13
jump block12
brif v0, block12, block13
block11:
jump block13
block12:
@@ -51,23 +42,23 @@ function %test(i32) {
}
; check: domtree_preorder {
; nextln: block0: block13 block1
; nextln: block13:
; nextln: block1: block2 block20 block7
; nextln: block2:
; nextln: block0: block1 block13
; nextln: block1: block20 block2 block7
; nextln: block20: block3 block21
; nextln: block3:
; nextln: block21: block4 block22
; nextln: block4:
; nextln: block21: block22 block4
; nextln: block22: block5 block6
; nextln: block5:
; nextln: block6:
; nextln: block4:
; nextln: block2:
; nextln: block7: block8 block23 block12
; nextln: block8:
; nextln: block23: block9 block24
; nextln: block9:
; nextln: block23: block24 block9
; nextln: block24: block10 block11
; nextln: block10:
; nextln: block11:
; nextln: block9:
; nextln: block12:
; nextln: block13:
; nextln: }