diff options
Diffstat (limited to 'clang/test/CodeGen/builtins-wasm.c')
-rw-r--r-- | clang/test/CodeGen/builtins-wasm.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/clang/test/CodeGen/builtins-wasm.c b/clang/test/CodeGen/builtins-wasm.c index 55ef1b3bda6..1e94a8d8184 100644 --- a/clang/test/CodeGen/builtins-wasm.c +++ b/clang/test/CodeGen/builtins-wasm.c @@ -83,6 +83,54 @@ unsigned int atomic_notify(int *addr, int count) { // WEBASSEMBLY64: call i32 @llvm.wasm.atomic.notify(i32* %{{.*}}, i32 %{{.*}}) } +int trunc_saturate_s_i32_f32(float f) { + return __builtin_wasm_trunc_saturate_s_i32_f32(f); + // WEBASSEMBLY: call i32 @llvm.wasm.trunc.saturate.signed.i32.f32(float %f) + // WEBASSEMBLY-NEXT: ret +} + +int trunc_saturate_u_i32_f32(float f) { + return __builtin_wasm_trunc_saturate_u_i32_f32(f); + // WEBASSEMBLY: call i32 @llvm.wasm.trunc.saturate.unsigned.i32.f32(float %f) + // WEBASSEMBLY-NEXT: ret +} + +int trunc_saturate_s_i32_f64(double f) { + return __builtin_wasm_trunc_saturate_s_i32_f64(f); + // WEBASSEMBLY: call i32 @llvm.wasm.trunc.saturate.signed.i32.f64(double %f) + // WEBASSEMBLY-NEXT: ret +} + +int trunc_saturate_u_i32_f64(double f) { + return __builtin_wasm_trunc_saturate_u_i32_f64(f); + // WEBASSEMBLY: call i32 @llvm.wasm.trunc.saturate.unsigned.i32.f64(double %f) + // WEBASSEMBLY-NEXT: ret +} + +long long trunc_saturate_s_i64_f32(float f) { + return __builtin_wasm_trunc_saturate_s_i64_f32(f); + // WEBASSEMBLY: call i64 @llvm.wasm.trunc.saturate.signed.i64.f32(float %f) + // WEBASSEMBLY-NEXT: ret +} + +long long trunc_saturate_u_i64_f32(float f) { + return __builtin_wasm_trunc_saturate_u_i64_f32(f); + // WEBASSEMBLY: call i64 @llvm.wasm.trunc.saturate.unsigned.i64.f32(float %f) + // WEBASSEMBLY-NEXT: ret +} + +long long trunc_saturate_s_i64_f64(double f) { + return __builtin_wasm_trunc_saturate_s_i64_f64(f); + // WEBASSEMBLY: call i64 @llvm.wasm.trunc.saturate.signed.i64.f64(double %f) + // WEBASSEMBLY-NEXT: ret +} + +long long trunc_saturate_u_i64_f64(double f) { + return __builtin_wasm_trunc_saturate_u_i64_f64(f); + // WEBASSEMBLY: call i64 @llvm.wasm.trunc.saturate.unsigned.i64.f64(double %f) + // WEBASSEMBLY-NEXT: ret +} + int extract_lane_s_i8x16(i8x16 v) { return __builtin_wasm_extract_lane_s_i8x16(v, 13); // WEBASSEMBLY: extractelement <16 x i8> %v, i32 13 @@ -300,3 +348,27 @@ f64x2 sqrt_f64x2(f64x2 x) { // WEBASSEMBLY: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %x) // WEBASSEMBLY: ret } + +i32x4 trunc_saturate_s_v4i32_v4f32(f32x4 f) { + return __builtin_wasm_trunc_saturate_s_v4i32_v4f32(f); + // WEBASSEMBLY: call <4 x i32> @llvm.wasm.trunc.saturate.signed.v4i32.v4f32(<4 x float> %f) + // WEBASSEMBLY-NEXT: ret +} + +i32x4 trunc_saturate_u_v4i32_v4f32(f32x4 f) { + return __builtin_wasm_trunc_saturate_u_v4i32_v4f32(f); + // WEBASSEMBLY: call <4 x i32> @llvm.wasm.trunc.saturate.unsigned.v4i32.v4f32(<4 x float> %f) + // WEBASSEMBLY-NEXT: ret +} + +i64x2 trunc_saturate_s_v2i64_v2f64(f64x2 f) { + return __builtin_wasm_trunc_saturate_s_v2i64_v2f64(f); + // WEBASSEMBLY: call <2 x i64> @llvm.wasm.trunc.saturate.signed.v2i64.v2f64(<2 x double> %f) + // WEBASSEMBLY-NEXT: ret +} + +i64x2 trunc_saturate_u_v2i64_v2f64(f64x2 f) { + return __builtin_wasm_trunc_saturate_u_v2i64_v2f64(f); + // WEBASSEMBLY: call <2 x i64> @llvm.wasm.trunc.saturate.unsigned.v2i64.v2f64(<2 x double> %f) + // WEBASSEMBLY-NEXT: ret +} |