From b198b9b8974b19c9e8493f8d70c85ac54182597a Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Thu, 6 May 2021 10:07:44 -0700 Subject: [PATCH] [WebAssembly] Fix argument types in SIMD narrowing intrinsics The builtins were updated to take signed parameters in 627a52695537, but the intrinsics that use those builtins were not updated as well. The intrinsic test did not catch this sign mismatch because it is only reported as an error under -fno-lax-vector-conversions. This commit fixes the type mismatch and adds -fno-lax-vector-conversions to the test to catch similar problems in the future. Differential Revision: https://reviews.llvm.org/D101979 --- clang/lib/Headers/wasm_simd128.h | 8 ++++---- clang/test/Headers/wasm.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clang/lib/Headers/wasm_simd128.h b/clang/lib/Headers/wasm_simd128.h index e6fb0496e5140..cd11f096dd956 100644 --- a/clang/lib/Headers/wasm_simd128.h +++ b/clang/lib/Headers/wasm_simd128.h @@ -1197,8 +1197,8 @@ wasm_i8x16_narrow_i16x8(v128_t __a, v128_t __b) { static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_narrow_i16x8(v128_t __a, v128_t __b) { - return (v128_t)__builtin_wasm_narrow_u_i8x16_i16x8((__u16x8)__a, - (__u16x8)__b); + return (v128_t)__builtin_wasm_narrow_u_i8x16_i16x8((__i16x8)__a, + (__i16x8)__b); } static __inline__ v128_t __DEFAULT_FN_ATTRS @@ -1209,8 +1209,8 @@ wasm_i16x8_narrow_i32x4(v128_t __a, v128_t __b) { static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_narrow_i32x4(v128_t __a, v128_t __b) { - return (v128_t)__builtin_wasm_narrow_u_i16x8_i32x4((__u32x4)__a, - (__u32x4)__b); + return (v128_t)__builtin_wasm_narrow_u_i16x8_i32x4((__i32x4)__a, + (__i32x4)__b); } static __inline__ v128_t __DEFAULT_FN_ATTRS diff --git a/clang/test/Headers/wasm.c b/clang/test/Headers/wasm.c index f5076ae3af305..409da99d43a70 100644 --- a/clang/test/Headers/wasm.c +++ b/clang/test/Headers/wasm.c @@ -1,7 +1,7 @@ // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --force-update // REQUIRES: webassembly-registered-target, asserts -// RUN: %clang %s -O2 -emit-llvm -S -o - -target wasm32-unknown-unknown -msimd128 -Wcast-qual -Werror | FileCheck %s +// RUN: %clang %s -O2 -emit-llvm -S -o - -target wasm32-unknown-unknown -msimd128 -Wcast-qual -fno-lax-vector-conversions -Werror | FileCheck %s #include