Files
wasmtime/cranelift/filetests/filetests/runtests/floor.clif
Alex Crichton dd7fa81b20 x64: Run more filetests with AVX support (#6063)
This commit goes through the `runtests` folder of the `filetests`
test suite and ensure that everything which uses simd or float-related
instructions on x64 is executed with the baseline support for x86_64 in
addition to adding in AVX support. Most of the instructions used have
AVX equivalents so this should help test all of the equivalents in
addition to the codegen filetests in the x64 folder.
2023-03-20 19:13:14 +00:00

152 lines
4.7 KiB
Plaintext

test interpret
test run
target x86_64
target x86_64 has_sse41=false
set enable_simd
target x86_64 has_avx
target aarch64
target s390x
target riscv64
function %floor_f32(f32) -> f32 {
block0(v0: f32):
v1 = floor v0
return v1
}
; run: %floor_f32(0x0.5) == 0x0.0
; run: %floor_f32(0x1.0) == 0x1.0
; run: %floor_f32(0x1.5) == 0x1.0
; run: %floor_f32(0x2.9) == 0x1.0p1
; run: %floor_f32(0x1.1p10) == 0x1.1p10
; run: %floor_f32(0x1.400000p1) == 0x1.0p1
; run: %floor_f32(0x1.4cccccp0) == 0x1.0
; run: %floor_f32(0x1.800000p0) == 0x1.0
; run: %floor_f32(0x1.b33334p0) == 0x1.0
; run: %floor_f32(0x1.99999ap-2) == 0x0.0
; run: %floor_f32(0x1.333334p-1) == 0x0.0
; run: %floor_f32(0x1.666666p1) == 0x1.0p1
; Negatives
; run: %floor_f32(-0x0.5) == -0x1.0
; run: %floor_f32(-0x1.0) == -0x1.0
; run: %floor_f32(-0x1.5) == -0x1.0p1
; run: %floor_f32(-0x2.9) == -0x1.8p1
; run: %floor_f32(-0x1.1p10) == -0x1.1p10
; run: %floor_f32(-0x1.333334p-1) == -0x1.0
; run: %floor_f32(-0x1.99999ap-2) == -0x1.0
; run: %floor_f32(-0x1.4cccccp0) == -0x1.0p1
; run: %floor_f32(-0x1.800000p0) == -0x1.0p1
; run: %floor_f32(-0x1.b33334p0) == -0x1.0p1
; run: %floor_f32(-0x1.400000p1) == -0x1.8p1
; run: %floor_f32(-0x1.666666p1) == -0x1.8p1
; Specials
; run: %floor_f32(0x0.0) == 0x0.0
; run: %floor_f32(-0x0.0) == -0x0.0
; run: %floor_f32(+Inf) == +Inf
; run: %floor_f32(-Inf) == -Inf
; F32 Epsilon / Max / Min Positive
; run: %floor_f32(0x1.000000p-23) == 0x0.0
; run: %floor_f32(0x1.fffffep127) == 0x1.fffffep127
; run: %floor_f32(0x1.000000p-126) == 0x0.0
; F32 Subnormals
; run: %floor_f32(0x0.800000p-126) == 0x0.0
; run: %floor_f32(-0x0.800002p-126) == -0x1.0
; F32 NaN's
; For NaN's this operation is specified as producing a value that is a NaN
function %floor_is_nan_f32(f32) -> i32 {
block0(v0: f32):
v1 = floor v0
v2 = fcmp ne v1, v1
v3 = uextend.i32 v2
return v3
}
; run: %floor_is_nan_f32(+NaN) == 1
; run: %floor_is_nan_f32(-NaN) == 1
; run: %floor_is_nan_f32(+NaN:0x0) == 1
; run: %floor_is_nan_f32(+NaN:0x1) == 1
; run: %floor_is_nan_f32(+NaN:0x300001) == 1
; run: %floor_is_nan_f32(-NaN:0x0) == 1
; run: %floor_is_nan_f32(-NaN:0x1) == 1
; run: %floor_is_nan_f32(-NaN:0x300001) == 1
; run: %floor_is_nan_f32(+sNaN:0x1) == 1
; run: %floor_is_nan_f32(-sNaN:0x1) == 1
; run: %floor_is_nan_f32(+sNaN:0x200001) == 1
; run: %floor_is_nan_f32(-sNaN:0x200001) == 1
function %floor_f64(f64) -> f64 {
block0(v0: f64):
v1 = floor v0
return v1
}
; run: %floor_f64(0x0.5) == 0x0.0
; run: %floor_f64(0x1.0) == 0x1.0
; run: %floor_f64(0x1.5) == 0x1.0
; run: %floor_f64(0x2.9) == 0x1.0p1
; run: %floor_f64(0x1.1p10) == 0x1.1p10
; run: %floor_f64(0x1.4000000000000p1) == 0x1.0p1
; run: %floor_f64(0x1.4cccccccccccdp0) == 0x1.0
; run: %floor_f64(0x1.8000000000000p0) == 0x1.0
; run: %floor_f64(0x1.b333333333333p0) == 0x1.0
; run: %floor_f64(0x1.999999999999ap-2) == 0x0.0
; run: %floor_f64(0x1.3333333333333p-1) == 0x0.0
; run: %floor_f64(0x1.6666666666666p1) == 0x1.0p1
; Negatives
; run: %floor_f64(-0x0.5) == -0x1.0
; run: %floor_f64(-0x1.0) == -0x1.0
; run: %floor_f64(-0x1.5) == -0x1.0p1
; run: %floor_f64(-0x2.9) == -0x1.8p1
; run: %floor_f64(-0x1.1p10) == -0x1.1p10
; run: %floor_f64(-0x1.3333333333333p-1) == -0x1.0
; run: %floor_f64(-0x1.999999999999ap-2) == -0x1.0
; run: %floor_f64(-0x1.4cccccccccccdp0) == -0x1.0p1
; run: %floor_f64(-0x1.8000000000000p0) == -0x1.0p1
; run: %floor_f64(-0x1.b333333333333p0) == -0x1.0p1
; run: %floor_f64(-0x1.4000000000000p1) == -0x1.8p1
; run: %floor_f64(-0x1.6666666666666p1) == -0x1.8p1
; Specials
; run: %floor_f64(0x0.0) == 0x0.0
; run: %floor_f64(-0x0.0) == -0x0.0
; run: %floor_f64(+Inf) == +Inf
; run: %floor_f64(-Inf) == -Inf
; F64 Epsilon / Max / Min Positive
; run: %floor_f64(0x1.0000000000000p-52) == 0x0.0
; run: %floor_f64(0x1.fffffffffffffp1023) == 0x1.fffffffffffffp1023
; run: %floor_f64(0x1.0000000000000p-1022) == 0x0.0
; F64 Subnormals
; run: %floor_f64(0x0.8000000000000p-1022) == 0x0.0
; run: %floor_f64(-0x0.8000000000000p-1022) == -0x1.0
; F64 NaN's
; For NaN's this operation is specified as producing a value that is a NaN
function %floor_is_nan_f64(f64) -> i32 {
block0(v0: f64):
v1 = floor v0
v2 = fcmp ne v1, v1
v3 = uextend.i32 v2
return v3
}
; run: %floor_is_nan_f64(+NaN) == 1
; run: %floor_is_nan_f64(-NaN) == 1
; run: %floor_is_nan_f64(+NaN:0x0) == 1
; run: %floor_is_nan_f64(+NaN:0x1) == 1
; run: %floor_is_nan_f64(+NaN:0x4000000000001) == 1
; run: %floor_is_nan_f64(-NaN:0x0) == 1
; run: %floor_is_nan_f64(-NaN:0x1) == 1
; run: %floor_is_nan_f64(-NaN:0x4000000000001) == 1
; run: %floor_is_nan_f64(+sNaN:0x1) == 1
; run: %floor_is_nan_f64(-sNaN:0x1) == 1
; run: %floor_is_nan_f64(+sNaN:0x4000000000001) == 1
; run: %floor_is_nan_f64(-sNaN:0x4000000000001) == 1