Files
wasmtime/cranelift/filetests/filetests/parser/branch.clif
Ryan Hunt 832666c45e Mass rename Ebb and relatives to Block (#1365)
* Manually rename BasicBlock to BlockPredecessor

BasicBlock is a pair of (Ebb, Inst) that is used to represent the
basic block subcomponent of an Ebb that is a predecessor to an Ebb.

Eventually we will be able to remove this struct, but for now it
makes sense to give it a non-conflicting name so that we can start
to transition Ebb to represent a basic block.

I have not updated any comments that refer to BasicBlock, as
eventually we will remove BlockPredecessor and replace with Block,
which is a basic block, so the comments will become correct.

* Manually rename SSABuilder block types to avoid conflict

SSABuilder has its own Block and BlockData types. These along with
associated identifier will cause conflicts in a later commit, so
they are renamed to be more verbose here.

* Automatically rename 'Ebb' to 'Block' in *.rs

* Automatically rename 'EBB' to 'block' in *.rs

* Automatically rename 'ebb' to 'block' in *.rs

* Automatically rename 'extended basic block' to 'basic block' in *.rs

* Automatically rename 'an basic block' to 'a basic block' in *.rs

* Manually update comment for `Block`

`Block`'s wikipedia article required an update.

* Automatically rename 'an `Block`' to 'a `Block`' in *.rs

* Automatically rename 'extended_basic_block' to 'basic_block' in *.rs

* Automatically rename 'ebb' to 'block' in *.clif

* Manually rename clif constant that contains 'ebb' as substring to avoid conflict

* Automatically rename filecheck uses of 'EBB' to 'BB'

'regex: EBB' -> 'regex: BB'
'$EBB' -> '$BB'

* Automatically rename 'EBB' 'Ebb' to 'block' in *.clif

* Automatically rename 'an block' to 'a block' in *.clif

* Fix broken testcase when function name length increases

Test function names are limited to 16 characters. This causes
the new longer name to be truncated and fail a filecheck test. An
outdated comment was also fixed.
2020-02-07 10:46:47 -06:00

117 lines
2.4 KiB
Plaintext

; Parsing branches and jumps.
test cat
; Jumps with no arguments. The '()' empty argument list is optional.
function %minimal() {
block0:
jump block1
block1:
jump block0()
}
; sameln: function %minimal() fast {
; nextln: block0:
; nextln: jump block1
; nextln:
; nextln: block1:
; nextln: jump block0
; nextln: }
; Jumps with 1 arg.
function %onearg(i32) {
block0(v90: i32):
jump block1(v90)
block1(v91: i32):
jump block0(v91)
}
; sameln: function %onearg(i32) fast {
; nextln: block0(v90: i32):
; nextln: jump block1(v90)
; nextln:
; nextln: block1(v91: i32):
; nextln: jump block0(v91)
; nextln: }
; Jumps with 2 args.
function %twoargs(i32, f32) {
block0(v90: i32, v91: f32):
jump block1(v90, v91)
block1(v92: i32, v93: f32):
jump block0(v92, v93)
}
; sameln: function %twoargs(i32, f32) fast {
; nextln: block0(v90: i32, v91: f32):
; nextln: jump block1(v90, v91)
; nextln:
; nextln: block1(v92: i32, v93: f32):
; nextln: jump block0(v92, v93)
; nextln: }
; Branches with no arguments. The '()' empty argument list is optional.
function %minimal(i32) {
block0(v90: i32):
brz v90, block1
block1:
brnz v90, block1()
}
; sameln: function %minimal(i32) fast {
; nextln: block0(v90: i32):
; nextln: brz v90, block1
; nextln:
; nextln: block1:
; nextln: brnz.i32 v90, block1
; nextln: }
function %twoargs(i32, f32) {
block0(v90: i32, v91: f32):
brz v90, block1(v90, v91)
block1(v92: i32, v93: f32):
brnz v90, block0(v92, v93)
}
; sameln: function %twoargs(i32, f32) fast {
; nextln: block0(v90: i32, v91: f32):
; nextln: brz v90, block1(v90, v91)
; nextln:
; nextln: block1(v92: i32, v93: f32):
; nextln: brnz.i32 v90, block0(v92, v93)
; nextln: }
function %jumptable(i32) {
jt200 = jump_table []
jt2 = jump_table [block10, block40, block20, block30]
block10(v3: i32):
br_table v3, block50, jt2
block20:
trap user2
block30:
trap user3
block40:
trap user4
block50:
trap user1
}
; sameln: function %jumptable(i32) fast {
; check: jt2 = jump_table [block10, block40, block20, block30]
; check: jt200 = jump_table []
; check: block10(v3: i32):
; nextln: br_table v3, block50, jt2
; nextln:
; nextln: block20:
; nextln: trap user2
; nextln:
; nextln: block30:
; nextln: trap user3
; nextln:
; nextln: block40:
; nextln: trap user4
; nextln:
; nextln: block50:
; nextln: trap user1
; nextln: }