OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdint.h> | 5 #include <stdint.h> |
6 #include <stdlib.h> | 6 #include <stdlib.h> |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "src/wasm/wasm-macro-gen.h" | 9 #include "src/wasm/wasm-macro-gen.h" |
10 | 10 |
(...skipping 2937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2948 module.AddSignature(sigs.i_ii()); | 2948 module.AddSignature(sigs.i_ii()); |
2949 | 2949 |
2950 // Builder the caller function. | 2950 // Builder the caller function. |
2951 BUILD(r, WASM_CALL_INDIRECT(1, WASM_GET_LOCAL(0), WASM_I8(66), WASM_I8(22))); | 2951 BUILD(r, WASM_CALL_INDIRECT(1, WASM_GET_LOCAL(0), WASM_I8(66), WASM_I8(22))); |
2952 | 2952 |
2953 CHECK_TRAP(r.Call(0)); | 2953 CHECK_TRAP(r.Call(0)); |
2954 CHECK_TRAP(r.Call(1)); | 2954 CHECK_TRAP(r.Call(1)); |
2955 CHECK_TRAP(r.Call(2)); | 2955 CHECK_TRAP(r.Call(2)); |
2956 } | 2956 } |
2957 | 2957 |
| 2958 TEST(Run_Wasm_F32Floor) { |
| 2959 WasmRunner<float> r(MachineType::Float32()); |
| 2960 BUILD(r, WASM_F32_FLOOR(WASM_GET_LOCAL(0))); |
| 2961 |
| 2962 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(floorf(*i), r.Call(*i)); } |
| 2963 } |
| 2964 |
| 2965 TEST(Run_Wasm_F32Ceil) { |
| 2966 WasmRunner<float> r(MachineType::Float32()); |
| 2967 BUILD(r, WASM_F32_CEIL(WASM_GET_LOCAL(0))); |
| 2968 |
| 2969 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(ceilf(*i), r.Call(*i)); } |
| 2970 } |
| 2971 |
2958 TEST(Run_Wasm_F32Trunc) { | 2972 TEST(Run_Wasm_F32Trunc) { |
2959 WasmRunner<float> r(MachineType::Float32()); | 2973 WasmRunner<float> r(MachineType::Float32()); |
2960 BUILD(r, WASM_F32_TRUNC(WASM_GET_LOCAL(0))); | 2974 BUILD(r, WASM_F32_TRUNC(WASM_GET_LOCAL(0))); |
2961 | 2975 |
2962 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(trunc(*i), r.Call(*i)); } | 2976 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(truncf(*i), r.Call(*i)); } |
2963 } | 2977 } |
2964 | 2978 |
2965 | |
2966 // TODO(titzer): Fix for nosee4 and re-enable. | |
2967 #if 0 | |
2968 | |
2969 TEST(Run_Wasm_F32Floor) { | |
2970 WasmRunner<float> r(MachineType::Float32()); | |
2971 BUILD(r, WASM_F32_FLOOR(WASM_GET_LOCAL(0))); | |
2972 | |
2973 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(floor(*i), r.Call(*i)); } | |
2974 } | |
2975 | |
2976 | |
2977 TEST(Run_Wasm_F32Ceil) { | |
2978 WasmRunner<float> r(MachineType::Float32()); | |
2979 BUILD(r, WASM_F32_CEIL(WASM_GET_LOCAL(0))); | |
2980 | |
2981 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(ceil(*i), r.Call(*i)); } | |
2982 } | |
2983 | |
2984 | |
2985 TEST(Run_Wasm_F32NearestInt) { | 2979 TEST(Run_Wasm_F32NearestInt) { |
2986 WasmRunner<float> r(MachineType::Float32()); | 2980 WasmRunner<float> r(MachineType::Float32()); |
2987 BUILD(r, WASM_F32_NEARESTINT(WASM_GET_LOCAL(0))); | 2981 BUILD(r, WASM_F32_NEARESTINT(WASM_GET_LOCAL(0))); |
2988 | 2982 |
2989 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(nearbyint(*i), r.Call(*i)); } | 2983 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(nearbyintf(*i), r.Call(*i)); } |
2990 } | 2984 } |
2991 | 2985 |
2992 | |
2993 TEST(Run_Wasm_F64Floor) { | 2986 TEST(Run_Wasm_F64Floor) { |
2994 WasmRunner<double> r(MachineType::Float64()); | 2987 WasmRunner<double> r(MachineType::Float64()); |
2995 BUILD(r, WASM_F64_FLOOR(WASM_GET_LOCAL(0))); | 2988 BUILD(r, WASM_F64_FLOOR(WASM_GET_LOCAL(0))); |
2996 | 2989 |
2997 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(floor(*i), r.Call(*i)); } | 2990 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(floor(*i), r.Call(*i)); } |
2998 } | 2991 } |
2999 | 2992 |
3000 | |
3001 TEST(Run_Wasm_F64Ceil) { | 2993 TEST(Run_Wasm_F64Ceil) { |
3002 WasmRunner<double> r(MachineType::Float64()); | 2994 WasmRunner<double> r(MachineType::Float64()); |
3003 BUILD(r, WASM_F64_CEIL(WASM_GET_LOCAL(0))); | 2995 BUILD(r, WASM_F64_CEIL(WASM_GET_LOCAL(0))); |
3004 | 2996 |
3005 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(ceil(*i), r.Call(*i)); } | 2997 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(ceil(*i), r.Call(*i)); } |
3006 } | 2998 } |
3007 | 2999 |
| 3000 TEST(Run_Wasm_F64Trunc) { |
| 3001 WasmRunner<double> r(MachineType::Float64()); |
| 3002 BUILD(r, WASM_F64_TRUNC(WASM_GET_LOCAL(0))); |
| 3003 |
| 3004 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(trunc(*i), r.Call(*i)); } |
| 3005 } |
3008 | 3006 |
3009 TEST(Run_Wasm_F64NearestInt) { | 3007 TEST(Run_Wasm_F64NearestInt) { |
3010 WasmRunner<double> r(MachineType::Float64()); | 3008 WasmRunner<double> r(MachineType::Float64()); |
3011 BUILD(r, WASM_F64_NEARESTINT(WASM_GET_LOCAL(0))); | 3009 BUILD(r, WASM_F64_NEARESTINT(WASM_GET_LOCAL(0))); |
3012 | 3010 |
3013 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(nearbyint(*i), r.Call(*i)); } | 3011 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(nearbyint(*i), r.Call(*i)); } |
3014 } | 3012 } |
3015 | 3013 |
3016 #endif | |
3017 | |
3018 TEST(Run_Wasm_F64Trunc) { | |
3019 WasmRunner<double> r(MachineType::Float64()); | |
3020 BUILD(r, WASM_F64_TRUNC(WASM_GET_LOCAL(0))); | |
3021 | |
3022 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(trunc(*i), r.Call(*i)); } | |
3023 } | |
3024 | |
3025 TEST(Run_Wasm_F32Min) { | 3014 TEST(Run_Wasm_F32Min) { |
3026 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32()); | 3015 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32()); |
3027 BUILD(r, WASM_F32_MIN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); | 3016 BUILD(r, WASM_F32_MIN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); |
3028 | 3017 |
3029 FOR_FLOAT32_INPUTS(i) { | 3018 FOR_FLOAT32_INPUTS(i) { |
3030 FOR_FLOAT32_INPUTS(j) { | 3019 FOR_FLOAT32_INPUTS(j) { |
3031 float expected; | 3020 float expected; |
3032 if (*i < *j) { | 3021 if (*i < *j) { |
3033 expected = *i; | 3022 expected = *i; |
3034 } else if (*j < *i) { | 3023 } else if (*j < *i) { |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3334 | 3323 |
3335 #if WASM_64 | 3324 #if WASM_64 |
3336 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } | 3325 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } |
3337 #endif | 3326 #endif |
3338 | 3327 |
3339 | 3328 |
3340 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } | 3329 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } |
3341 | 3330 |
3342 | 3331 |
3343 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } | 3332 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } |
OLD | NEW |