forked from OSchip/llvm-project
[WebAssembly] Improve macro hygiene in wasm_simd128.h
Summary: The shuffle intrinsic macros did not parenthesize usages of their constant parameters, which could lead to incorrect results due to operator precedence issues. This patch fixes the problem by adding the missing paretheses. Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, sunfish, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80968
This commit is contained in:
parent
b836ae24a9
commit
237be3404b
|
@ -1034,24 +1034,24 @@ wasm_f32x4_convert_u32x4(v128_t __a) {
|
|||
#define wasm_v16x8_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
|
||||
__c7) \
|
||||
((v128_t)__builtin_wasm_shuffle_v8x16( \
|
||||
(__i8x16)(__a), (__i8x16)(__b), __c0 * 2, __c0 * 2 + 1, __c1 * 2, \
|
||||
__c1 * 2 + 1, __c2 * 2, __c2 * 2 + 1, __c3 * 2, __c3 * 2 + 1, __c4 * 2, \
|
||||
__c4 * 2 + 1, __c5 * 2, __c5 * 2 + 1, __c6 * 2, __c6 * 2 + 1, __c7 * 2, \
|
||||
__c7 * 2 + 1))
|
||||
(__i8x16)(__a), (__i8x16)(__b), (__c0)*2, (__c0)*2 + 1, (__c1)*2, \
|
||||
(__c1)*2 + 1, (__c2)*2, (__c2)*2 + 1, (__c3)*2, (__c3)*2 + 1, (__c4)*2, \
|
||||
(__c4)*2 + 1, (__c5)*2, (__c5)*2 + 1, (__c6)*2, (__c6)*2 + 1, (__c7)*2, \
|
||||
(__c7)*2 + 1))
|
||||
|
||||
#define wasm_v32x4_shuffle(__a, __b, __c0, __c1, __c2, __c3) \
|
||||
((v128_t)__builtin_wasm_shuffle_v8x16( \
|
||||
(__i8x16)(__a), (__i8x16)(__b), __c0 * 4, __c0 * 4 + 1, __c0 * 4 + 2, \
|
||||
__c0 * 4 + 3, __c1 * 4, __c1 * 4 + 1, __c1 * 4 + 2, __c1 * 4 + 3, \
|
||||
__c2 * 4, __c2 * 4 + 1, __c2 * 4 + 2, __c2 * 4 + 3, __c3 * 4, \
|
||||
__c3 * 4 + 1, __c3 * 4 + 2, __c3 * 4 + 3))
|
||||
(__i8x16)(__a), (__i8x16)(__b), (__c0)*4, (__c0)*4 + 1, (__c0)*4 + 2, \
|
||||
(__c0)*4 + 3, (__c1)*4, (__c1)*4 + 1, (__c1)*4 + 2, (__c1)*4 + 3, \
|
||||
(__c2)*4, (__c2)*4 + 1, (__c2)*4 + 2, (__c2)*4 + 3, (__c3)*4, \
|
||||
(__c3)*4 + 1, (__c3)*4 + 2, (__c3)*4 + 3))
|
||||
|
||||
#define wasm_v64x2_shuffle(__a, __b, __c0, __c1) \
|
||||
((v128_t)__builtin_wasm_shuffle_v8x16( \
|
||||
(__i8x16)(__a), (__i8x16)(__b), __c0 * 8, __c0 * 8 + 1, __c0 * 8 + 2, \
|
||||
__c0 * 8 + 3, __c0 * 8 + 4, __c0 * 8 + 5, __c0 * 8 + 6, __c0 * 8 + 7, \
|
||||
__c1 * 8, __c1 * 8 + 1, __c1 * 8 + 2, __c1 * 8 + 3, __c1 * 8 + 4, \
|
||||
__c1 * 8 + 5, __c1 * 8 + 6, __c1 * 8 + 7))
|
||||
(__i8x16)(__a), (__i8x16)(__b), (__c0)*8, (__c0)*8 + 1, (__c0)*8 + 2, \
|
||||
(__c0)*8 + 3, (__c0)*8 + 4, (__c0)*8 + 5, (__c0)*8 + 6, (__c0)*8 + 7, \
|
||||
(__c1)*8, (__c1)*8 + 1, (__c1)*8 + 2, (__c1)*8 + 3, (__c1)*8 + 4, \
|
||||
(__c1)*8 + 5, (__c1)*8 + 6, (__c1)*8 + 7))
|
||||
|
||||
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v8x16_swizzle(v128_t __a,
|
||||
v128_t __b) {
|
||||
|
|
Loading…
Reference in New Issue