Skip to content

Commit 47f7174

Browse files
committed
[WebAssembly] Use "signed char" instead of "char" in SIMD intrinsics.
This allows people to use `int8_t` instead of `char`, -funsigned-char, and generally decouples SIMD from the specialness of `char`. And it makes intrinsics like `__builtin_wasm_add_saturate_s_i8x16` and `__builtin_wasm_add_saturate_u_i8x16` use signed and unsigned element types, respectively. Differential Revision: https://reviews.llvm.org/D85074
1 parent 1d6a724 commit 47f7174

File tree

3 files changed

+54
-55
lines changed

3 files changed

+54
-55
lines changed

clang/include/clang/Basic/BuiltinsWebAssembly.def

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -66,67 +66,67 @@ TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f64, "LLid", "nc", "nontrappi
6666
TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f64, "LLid", "nc", "nontrapping-fptoint")
6767

6868
// SIMD builtins
69-
TARGET_BUILTIN(__builtin_wasm_swizzle_v8x16, "V16cV16cV16c", "nc", "simd128")
69+
TARGET_BUILTIN(__builtin_wasm_swizzle_v8x16, "V16ScV16ScV16Sc", "nc", "simd128")
7070

71-
TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i8x16, "iV16cIi", "nc", "simd128")
72-
TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i8x16, "iV16cIi", "nc", "simd128")
71+
TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i8x16, "iV16ScIi", "nc", "simd128")
72+
TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i8x16, "iV16UcIUi", "nc", "simd128")
7373
TARGET_BUILTIN(__builtin_wasm_extract_lane_s_i16x8, "iV8sIi", "nc", "simd128")
74-
TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i16x8, "iV8sIi", "nc", "simd128")
74+
TARGET_BUILTIN(__builtin_wasm_extract_lane_u_i16x8, "iV8UsIUi", "nc", "simd128")
7575
TARGET_BUILTIN(__builtin_wasm_extract_lane_i32x4, "iV4iIi", "nc", "simd128")
7676
TARGET_BUILTIN(__builtin_wasm_extract_lane_i64x2, "LLiV2LLiIi", "nc", "simd128")
7777
TARGET_BUILTIN(__builtin_wasm_extract_lane_f32x4, "fV4fIi", "nc", "simd128")
7878
TARGET_BUILTIN(__builtin_wasm_extract_lane_f64x2, "dV2dIi", "nc", "simd128")
7979

80-
TARGET_BUILTIN(__builtin_wasm_replace_lane_i8x16, "V16cV16cIii", "nc", "simd128")
80+
TARGET_BUILTIN(__builtin_wasm_replace_lane_i8x16, "V16ScV16ScIii", "nc", "simd128")
8181
TARGET_BUILTIN(__builtin_wasm_replace_lane_i16x8, "V8sV8sIii", "nc", "simd128")
8282
TARGET_BUILTIN(__builtin_wasm_replace_lane_i32x4, "V4iV4iIii", "nc", "simd128")
8383
TARGET_BUILTIN(__builtin_wasm_replace_lane_i64x2, "V2LLiV2LLiIiLLi", "nc", "simd128")
8484
TARGET_BUILTIN(__builtin_wasm_replace_lane_f32x4, "V4fV4fIif", "nc", "simd128")
8585
TARGET_BUILTIN(__builtin_wasm_replace_lane_f64x2, "V2dV2dIid", "nc", "simd128")
8686

87-
TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128")
88-
TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128")
87+
TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
88+
TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
8989
TARGET_BUILTIN(__builtin_wasm_add_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128")
90-
TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128")
90+
TARGET_BUILTIN(__builtin_wasm_add_saturate_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
9191

92-
TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i8x16, "V16cV16cV16c", "nc", "simd128")
93-
TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i8x16, "V16cV16cV16c", "nc", "simd128")
92+
TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
93+
TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
9494
TARGET_BUILTIN(__builtin_wasm_sub_saturate_s_i16x8, "V8sV8sV8s", "nc", "simd128")
95-
TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i16x8, "V8sV8sV8s", "nc", "simd128")
95+
TARGET_BUILTIN(__builtin_wasm_sub_saturate_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
9696

97-
TARGET_BUILTIN(__builtin_wasm_abs_i8x16, "V16cV16c", "nc", "simd128")
97+
TARGET_BUILTIN(__builtin_wasm_abs_i8x16, "V16ScV16Sc", "nc", "simd128")
9898
TARGET_BUILTIN(__builtin_wasm_abs_i16x8, "V8sV8s", "nc", "simd128")
9999
TARGET_BUILTIN(__builtin_wasm_abs_i32x4, "V4iV4i", "nc", "simd128")
100100

101-
TARGET_BUILTIN(__builtin_wasm_min_s_i8x16, "V16cV16cV16c", "nc", "simd128")
102-
TARGET_BUILTIN(__builtin_wasm_min_u_i8x16, "V16cV16cV16c", "nc", "simd128")
103-
TARGET_BUILTIN(__builtin_wasm_max_s_i8x16, "V16cV16cV16c", "nc", "simd128")
104-
TARGET_BUILTIN(__builtin_wasm_max_u_i8x16, "V16cV16cV16c", "nc", "simd128")
101+
TARGET_BUILTIN(__builtin_wasm_min_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
102+
TARGET_BUILTIN(__builtin_wasm_min_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
103+
TARGET_BUILTIN(__builtin_wasm_max_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
104+
TARGET_BUILTIN(__builtin_wasm_max_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
105105
TARGET_BUILTIN(__builtin_wasm_min_s_i16x8, "V8sV8sV8s", "nc", "simd128")
106-
TARGET_BUILTIN(__builtin_wasm_min_u_i16x8, "V8sV8sV8s", "nc", "simd128")
106+
TARGET_BUILTIN(__builtin_wasm_min_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
107107
TARGET_BUILTIN(__builtin_wasm_max_s_i16x8, "V8sV8sV8s", "nc", "simd128")
108-
TARGET_BUILTIN(__builtin_wasm_max_u_i16x8, "V8sV8sV8s", "nc", "simd128")
108+
TARGET_BUILTIN(__builtin_wasm_max_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
109109
TARGET_BUILTIN(__builtin_wasm_min_s_i32x4, "V4iV4iV4i", "nc", "simd128")
110-
TARGET_BUILTIN(__builtin_wasm_min_u_i32x4, "V4iV4iV4i", "nc", "simd128")
110+
TARGET_BUILTIN(__builtin_wasm_min_u_i32x4, "V4UiV4UiV4Ui", "nc", "simd128")
111111
TARGET_BUILTIN(__builtin_wasm_max_s_i32x4, "V4iV4iV4i", "nc", "simd128")
112-
TARGET_BUILTIN(__builtin_wasm_max_u_i32x4, "V4iV4iV4i", "nc", "simd128")
112+
TARGET_BUILTIN(__builtin_wasm_max_u_i32x4, "V4UiV4UiV4Ui", "nc", "simd128")
113113

114-
TARGET_BUILTIN(__builtin_wasm_avgr_u_i8x16, "V16cV16cV16c", "nc", "simd128")
115-
TARGET_BUILTIN(__builtin_wasm_avgr_u_i16x8, "V8sV8sV8s", "nc", "simd128")
114+
TARGET_BUILTIN(__builtin_wasm_avgr_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
115+
TARGET_BUILTIN(__builtin_wasm_avgr_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
116116

117117
TARGET_BUILTIN(__builtin_wasm_bitselect, "V4iV4iV4iV4i", "nc", "simd128")
118-
TARGET_BUILTIN(__builtin_wasm_shuffle_v8x16, "V16cV16cV16cIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi", "nc", "simd128")
118+
TARGET_BUILTIN(__builtin_wasm_shuffle_v8x16, "V16ScV16ScV16ScIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi", "nc", "simd128")
119119

120-
TARGET_BUILTIN(__builtin_wasm_any_true_i8x16, "iV16c", "nc", "simd128")
120+
TARGET_BUILTIN(__builtin_wasm_any_true_i8x16, "iV16Sc", "nc", "simd128")
121121
TARGET_BUILTIN(__builtin_wasm_any_true_i16x8, "iV8s", "nc", "simd128")
122122
TARGET_BUILTIN(__builtin_wasm_any_true_i32x4, "iV4i", "nc", "simd128")
123123
TARGET_BUILTIN(__builtin_wasm_any_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128")
124-
TARGET_BUILTIN(__builtin_wasm_all_true_i8x16, "iV16c", "nc", "simd128")
124+
TARGET_BUILTIN(__builtin_wasm_all_true_i8x16, "iV16Sc", "nc", "simd128")
125125
TARGET_BUILTIN(__builtin_wasm_all_true_i16x8, "iV8s", "nc", "simd128")
126126
TARGET_BUILTIN(__builtin_wasm_all_true_i32x4, "iV4i", "nc", "simd128")
127127
TARGET_BUILTIN(__builtin_wasm_all_true_i64x2, "iV2LLi", "nc", "unimplemented-simd128")
128128

129-
TARGET_BUILTIN(__builtin_wasm_bitmask_i8x16, "iV16c", "nc", "simd128")
129+
TARGET_BUILTIN(__builtin_wasm_bitmask_i8x16, "iV16Sc", "nc", "simd128")
130130
TARGET_BUILTIN(__builtin_wasm_bitmask_i16x8, "iV8s", "nc", "simd128")
131131
TARGET_BUILTIN(__builtin_wasm_bitmask_i32x4, "iV4i", "nc", "simd128")
132132

@@ -164,10 +164,10 @@ TARGET_BUILTIN(__builtin_wasm_qfms_f64x2, "V2dV2dV2dV2d", "nc", "unimplemented-s
164164
TARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32x4_f32x4, "V4iV4f", "nc", "simd128")
165165
TARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32x4_f32x4, "V4iV4f", "nc", "simd128")
166166

167-
TARGET_BUILTIN(__builtin_wasm_narrow_s_i8x16_i16x8, "V16cV8sV8s", "nc", "simd128")
168-
TARGET_BUILTIN(__builtin_wasm_narrow_u_i8x16_i16x8, "V16cV8sV8s", "nc", "simd128")
167+
TARGET_BUILTIN(__builtin_wasm_narrow_s_i8x16_i16x8, "V16ScV8sV8s", "nc", "simd128")
168+
TARGET_BUILTIN(__builtin_wasm_narrow_u_i8x16_i16x8, "V16UcV8UsV8Us", "nc", "simd128")
169169
TARGET_BUILTIN(__builtin_wasm_narrow_s_i16x8_i32x4, "V8sV4iV4i", "nc", "simd128")
170-
TARGET_BUILTIN(__builtin_wasm_narrow_u_i16x8_i32x4, "V8sV4iV4i", "nc", "simd128")
170+
TARGET_BUILTIN(__builtin_wasm_narrow_u_i16x8_i32x4, "V8UsV4UiV4Ui", "nc", "simd128")
171171

172172
TARGET_BUILTIN(__builtin_wasm_load32_zero, "V4ii*", "nU", "simd128")
173173
TARGET_BUILTIN(__builtin_wasm_load64_zero, "V2LLiLLi*", "nU", "simd128")

clang/lib/Headers/wasm_simd128.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ typedef int32_t v128_t __attribute__((__vector_size__(16), __aligned__(16)));
1818

1919
// Internal types determined by clang builtin definitions
2020
typedef int32_t __v128_u __attribute__((__vector_size__(16), __aligned__(1)));
21-
typedef char __i8x16 __attribute__((__vector_size__(16), __aligned__(16)));
22-
typedef signed char __s8x16
21+
typedef signed char __i8x16
2322
__attribute__((__vector_size__(16), __aligned__(16)));
2423
typedef unsigned char __u8x16
2524
__attribute__((__vector_size__(16), __aligned__(16)));
@@ -340,17 +339,17 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_splat(double __a) {
340339

341340
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_eq(v128_t __a,
342341
v128_t __b) {
343-
return (v128_t)((__s8x16)__a == (__s8x16)__b);
342+
return (v128_t)((__i8x16)__a == (__i8x16)__b);
344343
}
345344

346345
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ne(v128_t __a,
347346
v128_t __b) {
348-
return (v128_t)((__s8x16)__a != (__s8x16)__b);
347+
return (v128_t)((__i8x16)__a != (__i8x16)__b);
349348
}
350349

351350
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_lt(v128_t __a,
352351
v128_t __b) {
353-
return (v128_t)((__s8x16)__a < (__s8x16)__b);
352+
return (v128_t)((__i8x16)__a < (__i8x16)__b);
354353
}
355354

356355
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_lt(v128_t __a,
@@ -360,7 +359,7 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_lt(v128_t __a,
360359

361360
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_gt(v128_t __a,
362361
v128_t __b) {
363-
return (v128_t)((__s8x16)__a > (__s8x16)__b);
362+
return (v128_t)((__i8x16)__a > (__i8x16)__b);
364363
}
365364

366365
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_gt(v128_t __a,
@@ -370,7 +369,7 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_gt(v128_t __a,
370369

371370
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_le(v128_t __a,
372371
v128_t __b) {
373-
return (v128_t)((__s8x16)__a <= (__s8x16)__b);
372+
return (v128_t)((__i8x16)__a <= (__i8x16)__b);
374373
}
375374

376375
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_le(v128_t __a,
@@ -380,7 +379,7 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_le(v128_t __a,
380379

381380
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ge(v128_t __a,
382381
v128_t __b) {
383-
return (v128_t)((__s8x16)__a >= (__s8x16)__b);
382+
return (v128_t)((__i8x16)__a >= (__i8x16)__b);
384383
}
385384

386385
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_ge(v128_t __a,
@@ -602,7 +601,7 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shl(v128_t __a,
602601

603602
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shr(v128_t __a,
604603
int32_t __b) {
605-
return (v128_t)((__s8x16)__a >> __b);
604+
return (v128_t)((__i8x16)__a >> __b);
606605
}
607606

608607
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_shr(v128_t __a,

clang/test/CodeGen/builtins-wasm.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// RUN: not %clang_cc1 -triple wasm64-unknown-unknown -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -target-feature +atomics -flax-vector-conversions=none -O3 -emit-llvm -o - %s 2>&1 | FileCheck %s -check-prefixes MISSING-SIMD
44

55
// SIMD convenience types
6-
typedef char i8x16 __attribute((vector_size(16)));
6+
typedef signed char i8x16 __attribute((vector_size(16)));
77
typedef short i16x8 __attribute((vector_size(16)));
88
typedef int i32x4 __attribute((vector_size(16)));
99
typedef long long i64x2 __attribute((vector_size(16)));
@@ -201,7 +201,7 @@ int extract_lane_s_i8x16(i8x16 v) {
201201
// WEBASSEMBLY-NEXT: ret
202202
}
203203

204-
int extract_lane_u_i8x16(i8x16 v) {
204+
int extract_lane_u_i8x16(u8x16 v) {
205205
return __builtin_wasm_extract_lane_u_i8x16(v, 13);
206206
// WEBASSEMBLY: extractelement <16 x i8> %v, i32 13
207207
// WEBASSEMBLY-NEXT: zext
@@ -215,7 +215,7 @@ int extract_lane_s_i16x8(i16x8 v) {
215215
// WEBASSEMBLY-NEXT: ret
216216
}
217217

218-
int extract_lane_u_i16x8(i16x8 v) {
218+
int extract_lane_u_i16x8(u16x8 v) {
219219
return __builtin_wasm_extract_lane_u_i16x8(v, 7);
220220
// WEBASSEMBLY: extractelement <8 x i16> %v, i32 7
221221
// WEBASSEMBLY-NEXT: zext
@@ -291,7 +291,7 @@ i8x16 add_saturate_s_i8x16(i8x16 x, i8x16 y) {
291291
// WEBASSEMBLY-NEXT: ret
292292
}
293293

294-
i8x16 add_saturate_u_i8x16(i8x16 x, i8x16 y) {
294+
u8x16 add_saturate_u_i8x16(u8x16 x, u8x16 y) {
295295
return __builtin_wasm_add_saturate_u_i8x16(x, y);
296296
// WEBASSEMBLY: call <16 x i8> @llvm.uadd.sat.v16i8(
297297
// WEBASSEMBLY-SAME: <16 x i8> %x, <16 x i8> %y)
@@ -305,7 +305,7 @@ i16x8 add_saturate_s_i16x8(i16x8 x, i16x8 y) {
305305
// WEBASSEMBLY-NEXT: ret
306306
}
307307

308-
i16x8 add_saturate_u_i16x8(i16x8 x, i16x8 y) {
308+
u16x8 add_saturate_u_i16x8(u16x8 x, u16x8 y) {
309309
return __builtin_wasm_add_saturate_u_i16x8(x, y);
310310
// WEBASSEMBLY: call <8 x i16> @llvm.uadd.sat.v8i16(
311311
// WEBASSEMBLY-SAME: <8 x i16> %x, <8 x i16> %y)
@@ -319,7 +319,7 @@ i8x16 sub_saturate_s_i8x16(i8x16 x, i8x16 y) {
319319
// WEBASSEMBLY-NEXT: ret
320320
}
321321

322-
i8x16 sub_saturate_u_i8x16(i8x16 x, i8x16 y) {
322+
u8x16 sub_saturate_u_i8x16(u8x16 x, u8x16 y) {
323323
return __builtin_wasm_sub_saturate_u_i8x16(x, y);
324324
// WEBASSEMBLY: call <16 x i8> @llvm.wasm.sub.saturate.unsigned.v16i8(
325325
// WEBASSEMBLY-SAME: <16 x i8> %x, <16 x i8> %y)
@@ -357,7 +357,7 @@ i8x16 min_s_i8x16(i8x16 x, i8x16 y) {
357357
// WEBASSEMBLY-NEXT: ret <16 x i8> %1
358358
}
359359

360-
i8x16 min_u_i8x16(i8x16 x, i8x16 y) {
360+
u8x16 min_u_i8x16(u8x16 x, u8x16 y) {
361361
return __builtin_wasm_min_u_i8x16(x, y);
362362
// WEBASSEMBLY: %0 = icmp ult <16 x i8> %x, %y
363363
// WEBASSEMBLY-NEXT: %1 = select <16 x i1> %0, <16 x i8> %x, <16 x i8> %y
@@ -371,7 +371,7 @@ i8x16 max_s_i8x16(i8x16 x, i8x16 y) {
371371
// WEBASSEMBLY-NEXT: ret <16 x i8> %1
372372
}
373373

374-
i8x16 max_u_i8x16(i8x16 x, i8x16 y) {
374+
u8x16 max_u_i8x16(u8x16 x, u8x16 y) {
375375
return __builtin_wasm_max_u_i8x16(x, y);
376376
// WEBASSEMBLY: %0 = icmp ugt <16 x i8> %x, %y
377377
// WEBASSEMBLY-NEXT: %1 = select <16 x i1> %0, <16 x i8> %x, <16 x i8> %y
@@ -385,7 +385,7 @@ i16x8 min_s_i16x8(i16x8 x, i16x8 y) {
385385
// WEBASSEMBLY-NEXT: ret <8 x i16> %1
386386
}
387387

388-
i16x8 min_u_i16x8(i16x8 x, i16x8 y) {
388+
u16x8 min_u_i16x8(u16x8 x, u16x8 y) {
389389
return __builtin_wasm_min_u_i16x8(x, y);
390390
// WEBASSEMBLY: %0 = icmp ult <8 x i16> %x, %y
391391
// WEBASSEMBLY-NEXT: %1 = select <8 x i1> %0, <8 x i16> %x, <8 x i16> %y
@@ -399,7 +399,7 @@ i16x8 max_s_i16x8(i16x8 x, i16x8 y) {
399399
// WEBASSEMBLY-NEXT: ret <8 x i16> %1
400400
}
401401

402-
i16x8 max_u_i16x8(i16x8 x, i16x8 y) {
402+
u16x8 max_u_i16x8(u16x8 x, u16x8 y) {
403403
return __builtin_wasm_max_u_i16x8(x, y);
404404
// WEBASSEMBLY: %0 = icmp ugt <8 x i16> %x, %y
405405
// WEBASSEMBLY-NEXT: %1 = select <8 x i1> %0, <8 x i16> %x, <8 x i16> %y
@@ -413,7 +413,7 @@ i32x4 min_s_i32x4(i32x4 x, i32x4 y) {
413413
// WEBASSEMBLY-NEXT: ret <4 x i32> %1
414414
}
415415

416-
i32x4 min_u_i32x4(i32x4 x, i32x4 y) {
416+
u32x4 min_u_i32x4(u32x4 x, u32x4 y) {
417417
return __builtin_wasm_min_u_i32x4(x, y);
418418
// WEBASSEMBLY: %0 = icmp ult <4 x i32> %x, %y
419419
// WEBASSEMBLY-NEXT: %1 = select <4 x i1> %0, <4 x i32> %x, <4 x i32> %y
@@ -427,7 +427,7 @@ i32x4 max_s_i32x4(i32x4 x, i32x4 y) {
427427
// WEBASSEMBLY-NEXT: ret <4 x i32> %1
428428
}
429429

430-
i32x4 max_u_i32x4(i32x4 x, i32x4 y) {
430+
u32x4 max_u_i32x4(u32x4 x, u32x4 y) {
431431
return __builtin_wasm_max_u_i32x4(x, y);
432432
// WEBASSEMBLY: %0 = icmp ugt <4 x i32> %x, %y
433433
// WEBASSEMBLY-NEXT: %1 = select <4 x i1> %0, <4 x i32> %x, <4 x i32> %y
@@ -441,21 +441,21 @@ i16x8 sub_saturate_s_i16x8(i16x8 x, i16x8 y) {
441441
// WEBASSEMBLY-NEXT: ret
442442
}
443443

444-
i16x8 sub_saturate_u_i16x8(i16x8 x, i16x8 y) {
444+
u16x8 sub_saturate_u_i16x8(u16x8 x, u16x8 y) {
445445
return __builtin_wasm_sub_saturate_u_i16x8(x, y);
446446
// WEBASSEMBLY: call <8 x i16> @llvm.wasm.sub.saturate.unsigned.v8i16(
447447
// WEBASSEMBLY-SAME: <8 x i16> %x, <8 x i16> %y)
448448
// WEBASSEMBLY-NEXT: ret
449449
}
450450

451-
i8x16 avgr_u_i8x16(i8x16 x, i8x16 y) {
451+
u8x16 avgr_u_i8x16(u8x16 x, u8x16 y) {
452452
return __builtin_wasm_avgr_u_i8x16(x, y);
453453
// WEBASSEMBLY: call <16 x i8> @llvm.wasm.avgr.unsigned.v16i8(
454454
// WEBASSEMBLY-SAME: <16 x i8> %x, <16 x i8> %y)
455455
// WEBASSEMBLY-NEXT: ret
456456
}
457457

458-
i16x8 avgr_u_i16x8(i16x8 x, i16x8 y) {
458+
u16x8 avgr_u_i16x8(u16x8 x, u16x8 y) {
459459
return __builtin_wasm_avgr_u_i16x8(x, y);
460460
// WEBASSEMBLY: call <8 x i16> @llvm.wasm.avgr.unsigned.v8i16(
461461
// WEBASSEMBLY-SAME: <8 x i16> %x, <8 x i16> %y)
@@ -716,7 +716,7 @@ i8x16 narrow_s_i8x16_i16x8(i16x8 low, i16x8 high) {
716716
// WEBASSEMBLY: ret
717717
}
718718

719-
i8x16 narrow_u_i8x16_i16x8(i16x8 low, i16x8 high) {
719+
u8x16 narrow_u_i8x16_i16x8(u16x8 low, u16x8 high) {
720720
return __builtin_wasm_narrow_u_i8x16_i16x8(low, high);
721721
// WEBASSEMBLY: call <16 x i8> @llvm.wasm.narrow.unsigned.v16i8.v8i16(
722722
// WEBASSEMBLY-SAME: <8 x i16> %low, <8 x i16> %high)
@@ -730,7 +730,7 @@ i16x8 narrow_s_i16x8_i32x4(i32x4 low, i32x4 high) {
730730
// WEBASSEMBLY: ret
731731
}
732732

733-
i16x8 narrow_u_i16x8_i32x4(i32x4 low, i32x4 high) {
733+
u16x8 narrow_u_i16x8_i32x4(u32x4 low, u32x4 high) {
734734
return __builtin_wasm_narrow_u_i16x8_i32x4(low, high);
735735
// WEBASSEMBLY: call <8 x i16> @llvm.wasm.narrow.unsigned.v8i16.v4i32(
736736
// WEBASSEMBLY-SAME: <4 x i32> %low, <4 x i32> %high)

0 commit comments

Comments
 (0)