From 9162e71fbd922d51de8980983a9fc196ca184a75 Mon Sep 17 00:00:00 2001 From: Trevor Elliott Date: Mon, 17 Oct 2022 14:07:30 -0700 Subject: [PATCH] Add some more overflow tests --- .../filetests/filetests/runtests/br.clif | 45 ++++++++++++++++++- .../filetests/filetests/runtests/select.clif | 40 ++++++++++++++--- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/cranelift/filetests/filetests/runtests/br.clif b/cranelift/filetests/filetests/runtests/br.clif index 8db16577327a..4ed99f4e5285 100644 --- a/cranelift/filetests/filetests/runtests/br.clif +++ b/cranelift/filetests/filetests/runtests/br.clif @@ -60,6 +60,50 @@ block2: ; run: %brz_i8_overflow(98) == 1 ; run: %brz_i8_overflow(97) == 1 +function %brz_i16_overflow(i16) -> i8 { +block0(v0: i16): + v1 = iconst.i16 65535 + v2 = iadd v0, v1 + brz v2, block2 + jump block1 + +block1: + v3 = iconst.i8 1 + return v3 + +block2: + v4 = iconst.i8 0 + return v4 +} + +; run: %brz_i16_overflow(0) == 1 +; run: %brz_i16_overflow(1) == 0 +; run: %brz_i16_overflow(2) == 1 +; run: %brz_i16_overflow(98) == 1 +; run: %brz_i16_overflow(97) == 1 + +function %brz_i32_overflow(i32) -> i8 { +block0(v0: i32): + v1 = iconst.i32 4294967295 + v2 = iadd v0, v1 + brz v2, block2 + jump block1 + +block1: + v3 = iconst.i8 1 + return v3 + +block2: + v4 = iconst.i8 0 + return v4 +} + +; run: %brz_i32_overflow(0) == 1 +; run: %brz_i32_overflow(1) == 0 +; run: %brz_i32_overflow(2) == 1 +; run: %brz_i32_overflow(98) == 1 +; run: %brz_i32_overflow(97) == 1 + function %brz_i32(i32) -> i8 { block0(v0: i32): brz v0, block1 @@ -94,7 +138,6 @@ block2: ; run: %brz_i16(1) == 0 ; run: %brz_i16(-1) == 0 - function %brz_i8(i8) -> i8 { block0(v1: i8): brz v1, block1 diff --git a/cranelift/filetests/filetests/runtests/select.clif b/cranelift/filetests/filetests/runtests/select.clif index a6987b4461cf..fc5cfc8e873a 100644 --- a/cranelift/filetests/filetests/runtests/select.clif +++ b/cranelift/filetests/filetests/runtests/select.clif @@ -94,7 +94,7 @@ block0(v0: f32, v1: f32): ; run: %select_uno_f32(0x0.0, NaN) == 1 ; run: %select_uno_f32(-NaN, 0x42.42) == 1 -function %select_overflow(i8) -> i8 { +function %select_overflow_i8(i8) -> i8 { block0(v0: i8): v1 = iconst.i8 255 v2 = iadd v0, v1 @@ -104,7 +104,37 @@ block0(v0: i8): return v5 } -; run: %select_overflow(0) == 1 -; run: %select_overflow(2) == 1 -; run: %select_overflow(1) == 0 -; run: %select_overflow(98) == 1 +; run: %select_overflow_i8(0) == 1 +; run: %select_overflow_i8(2) == 1 +; run: %select_overflow_i8(1) == 0 +; run: %select_overflow_i8(98) == 1 + +function %select_overflow_i16(i16) -> i8 { +block0(v0: i16): + v1 = iconst.i16 65535 + v2 = iadd v0, v1 + v3 = iconst.i8 1 + v4 = iconst.i8 0 + v5 = select v2, v3, v4 + return v5 +} + +; run: %select_overflow_i16(0) == 1 +; run: %select_overflow_i16(2) == 1 +; run: %select_overflow_i16(1) == 0 +; run: %select_overflow_i16(98) == 1 + +function %select_overflow_i32(i32) -> i8 { +block0(v0: i32): + v1 = iconst.i32 4294967295 + v2 = iadd v0, v1 + v3 = iconst.i8 1 + v4 = iconst.i8 0 + v5 = select v2, v3, v4 + return v5 +} + +; run: %select_overflow_i32(0) == 1 +; run: %select_overflow_i32(2) == 1 +; run: %select_overflow_i32(1) == 0 +; run: %select_overflow_i32(98) == 1