From 7b36cb58a02a57285ccff61f91db9af7aaa06a32 Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Fri, 28 Jun 2019 17:05:45 +0200 Subject: [PATCH] Use BB-like EBB in filetests/isa/x86/*.clif --- .../filetests/isa/x86/binary32-float.clif | 23 +++++++ .../filetests/filetests/isa/x86/binary32.clif | 50 ++++++++++++++++ .../filetests/isa/x86/binary64-float.clif | 23 +++++++ .../filetests/filetests/isa/x86/binary64.clif | 60 +++++++++++++++++++ .../filetests/isa/x86/prologue-epilogue.clif | 15 +++-- .../filetests/isa/x86/relax_branch.clif | 9 +++ .../isa/x86/shrink-multiple-uses.clif | 3 + 7 files changed, 177 insertions(+), 6 deletions(-) diff --git a/cranelift/filetests/filetests/isa/x86/binary32-float.clif b/cranelift/filetests/filetests/isa/x86/binary32-float.clif index 0b171388ae..8a4ae5fe7e 100644 --- a/cranelift/filetests/filetests/isa/x86/binary32-float.clif +++ b/cranelift/filetests/filetests/isa/x86/binary32-float.clif @@ -481,21 +481,44 @@ ebb0(v0: f32 [%xmm0]): ebb1: ; asm: jnp ebb1 brff ord v1, ebb1 ; bin: 7b fe + jump ebb2 + +ebb2: ; asm: jp ebb1 brff uno v1, ebb1 ; bin: 7a fc + jump ebb3 + +ebb3: ; asm: jne ebb1 brff one v1, ebb1 ; bin: 75 fa + jump ebb4 + +ebb4: ; asm: je ebb1 brff ueq v1, ebb1 ; bin: 74 f8 + jump ebb5 + +ebb5: ; asm: ja ebb1 brff gt v1, ebb1 ; bin: 77 f6 + jump ebb6 + +ebb6: ; asm: jae ebb1 brff ge v1, ebb1 ; bin: 73 f4 + jump ebb7 + +ebb7: ; asm: jb ebb1 brff ult v1, ebb1 ; bin: 72 f2 + jump ebb8 + +ebb8: ; asm: jbe ebb1 brff ule v1, ebb1 ; bin: 76 f0 + jump ebb9 +ebb9: ; asm: jp .+4; ud2 trapff ord v1, user0 ; bin: 7a 02 user0 0f 0b ; asm: jnp .+4; ud2 diff --git a/cranelift/filetests/filetests/isa/x86/binary32.clif b/cranelift/filetests/filetests/isa/x86/binary32.clif index e5af412d51..602b2d4f31 100644 --- a/cranelift/filetests/filetests/isa/x86/binary32.clif +++ b/cranelift/filetests/filetests/isa/x86/binary32.clif @@ -472,12 +472,21 @@ ebb0: ; asm: testl %ecx, %ecx ; asm: je ebb1 brz v1, ebb1 ; bin: 85 c9 74 0e + fallthrough ebb3 + +ebb3: ; asm: testl %esi, %esi ; asm: je ebb1 brz v2, ebb1 ; bin: 85 f6 74 0a + fallthrough ebb4 + +ebb4: ; asm: testl %ecx, %ecx ; asm: jne ebb1 brnz v1, ebb1 ; bin: 85 c9 75 06 + fallthrough ebb5 + +ebb5: ; asm: testl %esi, %esi ; asm: jne ebb1 brnz v2, ebb1 ; bin: 85 f6 75 02 @@ -506,16 +515,27 @@ ebb0: ; asm: testl $0xff, %edi ; asm: je ebb1 brz v3, ebb1 ; bin: f7 c7 000000ff 0f 84 00000015 + fallthrough ebb2 + +ebb2: ; asm: testb %bl, %bl ; asm: je ebb1 brz v4, ebb1 ; bin: 84 db 74 11 + fallthrough ebb3 + +ebb3: ; asm: testl $0xff, %edi ; asm: jne ebb1 brnz v3, ebb1 ; bin: f7 c7 000000ff 0f 85 00000005 + fallthrough ebb4 + +ebb4: ; asm: testb %bl, %bl ; asm: jne ebb1 brnz v4, ebb1 ; bin: 84 db 75 01 + fallthrough ebb5 +ebb5: return ebb1: @@ -537,24 +557,54 @@ ebb1: ; asm: je ebb1 brif eq v11, ebb1 ; bin: 74 fa + jump ebb2 + +ebb2: ; asm: jne ebb1 brif ne v11, ebb1 ; bin: 75 f8 + jump ebb3 + +ebb3: ; asm: jl ebb1 brif slt v11, ebb1 ; bin: 7c f6 + jump ebb4 + +ebb4: ; asm: jge ebb1 brif sge v11, ebb1 ; bin: 7d f4 + jump ebb5 + +ebb5: ; asm: jg ebb1 brif sgt v11, ebb1 ; bin: 7f f2 + jump ebb6 + +ebb6: ; asm: jle ebb1 brif sle v11, ebb1 ; bin: 7e f0 + jump ebb7 + +ebb7: ; asm: jb ebb1 brif ult v11, ebb1 ; bin: 72 ee + jump ebb8 + +ebb8: ; asm: jae ebb1 brif uge v11, ebb1 ; bin: 73 ec + jump ebb9 + +ebb9: ; asm: ja ebb1 brif ugt v11, ebb1 ; bin: 77 ea + jump ebb10 + +ebb10: ; asm: jbe ebb1 brif ule v11, ebb1 ; bin: 76 e8 + jump ebb11 + +ebb11: ; asm: sete %bl [-,%rbx] v20 = trueif eq v11 ; bin: 0f 94 c3 diff --git a/cranelift/filetests/filetests/isa/x86/binary64-float.clif b/cranelift/filetests/filetests/isa/x86/binary64-float.clif index 582f4e9c45..59e024a042 100644 --- a/cranelift/filetests/filetests/isa/x86/binary64-float.clif +++ b/cranelift/filetests/filetests/isa/x86/binary64-float.clif @@ -542,21 +542,44 @@ ebb0(v0: f32 [%xmm0]): ebb1: ; asm: jnp ebb1 brff ord v1, ebb1 ; bin: 7b fe + jump ebb2 + +ebb2: ; asm: jp ebb1 brff uno v1, ebb1 ; bin: 7a fc + jump ebb3 + +ebb3: ; asm: jne ebb1 brff one v1, ebb1 ; bin: 75 fa + jump ebb4 + +ebb4: ; asm: je ebb1 brff ueq v1, ebb1 ; bin: 74 f8 + jump ebb5 + +ebb5: ; asm: ja ebb1 brff gt v1, ebb1 ; bin: 77 f6 + jump ebb6 + +ebb6: ; asm: jae ebb1 brff ge v1, ebb1 ; bin: 73 f4 + jump ebb7 + +ebb7: ; asm: jb ebb1 brff ult v1, ebb1 ; bin: 72 f2 + jump ebb8 + +ebb8: ; asm: jbe ebb1 brff ule v1, ebb1 ; bin: 76 f0 + jump ebb9 +ebb9: ; asm: jp .+4; ud2 trapff ord v1, user0 ; bin: 7a 02 user0 0f 0b ; asm: jnp .+4; ud2 diff --git a/cranelift/filetests/filetests/isa/x86/binary64.clif b/cranelift/filetests/filetests/isa/x86/binary64.clif index ed1316ad24..a65b3d3d1d 100644 --- a/cranelift/filetests/filetests/isa/x86/binary64.clif +++ b/cranelift/filetests/filetests/isa/x86/binary64.clif @@ -690,18 +690,33 @@ ebb0: ; asm: testq %rcx, %rcx ; asm: je ebb1 brz v1, ebb1 ; bin: 48 85 c9 74 1b + fallthrough ebb3 + +ebb3: ; asm: testq %rsi, %rsi ; asm: je ebb1 brz v2, ebb1 ; bin: 48 85 f6 74 16 + fallthrough ebb4 + +ebb4: ; asm: testq %r10, %r10 ; asm: je ebb1 brz v3, ebb1 ; bin: 4d 85 d2 74 11 + fallthrough ebb5 + +ebb5: ; asm: testq %rcx, %rcx ; asm: jne ebb1 brnz v1, ebb1 ; bin: 48 85 c9 75 0c + fallthrough ebb6 + +ebb6: ; asm: testq %rsi, %rsi ; asm: jne ebb1 brnz v2, ebb1 ; bin: 48 85 f6 75 07 + fallthrough ebb7 + +ebb7: ; asm: testq %r10, %r10 ; asm: jne ebb1 brnz v3, ebb1 ; bin: 4d 85 d2 75 02 @@ -733,24 +748,54 @@ ebb1: ; asm: je ebb1 brif eq v11, ebb1 ; bin: 74 f8 + jump ebb2 + +ebb2: ; asm: jne ebb1 brif ne v11, ebb1 ; bin: 75 f6 + jump ebb3 + +ebb3: ; asm: jl ebb1 brif slt v11, ebb1 ; bin: 7c f4 + jump ebb4 + +ebb4: ; asm: jge ebb1 brif sge v11, ebb1 ; bin: 7d f2 + jump ebb5 + +ebb5: ; asm: jg ebb1 brif sgt v11, ebb1 ; bin: 7f f0 + jump ebb6 + +ebb6: ; asm: jle ebb1 brif sle v11, ebb1 ; bin: 7e ee + jump ebb7 + +ebb7: ; asm: jb ebb1 brif ult v11, ebb1 ; bin: 72 ec + jump ebb8 + +ebb8: ; asm: jae ebb1 brif uge v11, ebb1 ; bin: 73 ea + jump ebb9 + +ebb9: ; asm: ja ebb1 brif ugt v11, ebb1 ; bin: 77 e8 + jump ebb10 + +ebb10: ; asm: jbe ebb1 brif ule v11, ebb1 ; bin: 76 e6 + jump ebb11 + +ebb11: ; asm: sete %bl [-,%rbx] v20 = trueif eq v11 ; bin: 0f 94 c3 @@ -1248,18 +1293,33 @@ ebb0: ; asm: testl %ecx, %ecx ; asm: je ebb1x brz v1, ebb1 ; bin: 85 c9 74 18 + fallthrough ebb3 + +ebb3: ; asm: testl %esi, %esi ; asm: je ebb1x brz v2, ebb1 ; bin: 85 f6 74 14 + fallthrough ebb4 + +ebb4: ; asm: testl %r10d, %r10d ; asm: je ebb1x brz v3, ebb1 ; bin: 45 85 d2 74 0f + fallthrough ebb5 + +ebb5: ; asm: testl %ecx, %ecx ; asm: jne ebb1x brnz v1, ebb1 ; bin: 85 c9 75 0b + fallthrough ebb6 + +ebb6: ; asm: testl %esi, %esi ; asm: jne ebb1x brnz v2, ebb1 ; bin: 85 f6 75 07 + fallthrough ebb7 + +ebb7: ; asm: testl %r10d, %r10d ; asm: jne ebb1x brnz v3, ebb1 ; bin: 45 85 d2 75 02 diff --git a/cranelift/filetests/filetests/isa/x86/prologue-epilogue.clif b/cranelift/filetests/filetests/isa/x86/prologue-epilogue.clif index f408d1a193..1c715f2a21 100644 --- a/cranelift/filetests/filetests/isa/x86/prologue-epilogue.clif +++ b/cranelift/filetests/filetests/isa/x86/prologue-epilogue.clif @@ -213,20 +213,23 @@ function %divert(i32) -> i32 system_v { ebb0(v0: i32): v2 = iconst.i32 0 v3 = iconst.i32 1 - jump ebb3(v0, v3, v2) + jump ebb1(v0, v3, v2) -ebb3(v4: i32, v5: i32, v6: i32): - brz v4, ebb4 +ebb1(v4: i32, v5: i32, v6: i32): + brz v4, ebb3 + fallthrough ebb2 + +ebb2: v7 = iadd v5, v6 v8 = iadd_imm v4, -1 - jump ebb3(v8, v7, v5) + jump ebb1(v8, v7, v5) -ebb4: +ebb3: return v5 } ; check: function %divert -; check: regmove v5, %rcx -> %rbx +; check: regmove.i32 v5, %rcx -> %rbx ; check: [Op1popq#58,%rbx] v15 = x86_pop.i64 ; Stack limit checking diff --git a/cranelift/filetests/filetests/isa/x86/relax_branch.clif b/cranelift/filetests/filetests/isa/x86/relax_branch.clif index c735224c0a..373e2dda6d 100644 --- a/cranelift/filetests/filetests/isa/x86/relax_branch.clif +++ b/cranelift/filetests/filetests/isa/x86/relax_branch.clif @@ -55,6 +55,9 @@ function u0:2691(i32 [%rdi], i32 [%rsi], i64 vmctx [%r14]) -> i64 uext [%rax] ba @004c [Op1r_id#4081,%rcx] v37 = band_imm v35, 255 [Op1rcmp_ib#7083,%rflags] v97 = ifcmp_imm v37, 26 @0050 [Op1brib#70] brif sge v97, ebb6 +@0050 [-] fallthrough ebb10 + + ebb10: [Op1umr#89,%rcx] v101 = copy v18 @0054 [Op1jmpb#eb] jump ebb5(v18, v101) @@ -82,6 +85,9 @@ function u0:2691(i32 [%rdi], i32 [%rsi], i64 vmctx [%r14]) -> i64 uext [%rax] ba [Op1rcmp_ib#7083,%rflags] v98 = ifcmp_imm v63, 26 @0084 [RexOp1rmov#89] regmove v47, %rdi -> %rbx @0084 [Op1brib#70] brif sge v98, ebb8 +@0084 [-] fallthrough ebb11 + + ebb11: [RexOp1umr#89,%rdx] v103 = copy.i32 v29 @0088 [Op1jmpb#eb] jump ebb7(v29, v10, v21, v103) @@ -99,6 +105,9 @@ function u0:2691(i32 [%rdi], i32 [%rsi], i64 vmctx [%r14]) -> i64 uext [%rax] ba @0098 [Op2urm_noflags_abcd#4b6,%rbx] v77 = bint.i32 v76 @0099 [RexOp1rr#21,%r10] v78 = band.i32 v50, v77 @009a [RexOp1tjccb#74] brz v78, ebb9 +@009a [-] fallthrough ebb12 + + ebb12: [RexOp1umr#89,%rcx] v99 = copy v81 [Op1umr#89,%rdx] v100 = copy v79 @00a4 [RexOp1rmov#89] regmove v100, %rdx -> %rdi diff --git a/cranelift/filetests/filetests/isa/x86/shrink-multiple-uses.clif b/cranelift/filetests/filetests/isa/x86/shrink-multiple-uses.clif index d20cc78066..deec4ff505 100644 --- a/cranelift/filetests/filetests/isa/x86/shrink-multiple-uses.clif +++ b/cranelift/filetests/filetests/isa/x86/shrink-multiple-uses.clif @@ -8,6 +8,9 @@ ebb0(v0: i32 [%rdi]): [Op2seti_abcd#490,%rax] v1 = trueif eq v3 [RexOp2urm_noflags#4b6,%rax] v2 = bint.i32 v1 [Op1brib#70] brif eq v3, ebb1 +[-] fallthrough ebb2 + +ebb2: [Op1ret#c3] return v2 ebb1: