1 // RUN: %clang_cc1 -triple wasm32-unknown-unknown -O3 -emit-llvm -o - %s \
2 // RUN: | FileCheck %s -check-prefix=WEBASSEMBLY32
3 // RUN: %clang_cc1 -triple wasm64-unknown-unknown -O3 -emit-llvm -o - %s \
4 // RUN: | FileCheck %s -check-prefix=WEBASSEMBLY64
6 __SIZE_TYPE__ f0(void) {
7 return __builtin_wasm_memory_size(0);
8 // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.memory.size.i32(i32 0)
9 // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.memory.size.i64(i32 0)
12 __SIZE_TYPE__ f1(__SIZE_TYPE__ delta) {
13 return __builtin_wasm_memory_grow(0, delta);
14 // WEBASSEMBLY32: call i32 @llvm.wasm.memory.grow.i32(i32 0, i32 %{{.*}})
15 // WEBASSEMBLY64: call i64 @llvm.wasm.memory.grow.i64(i32 0, i64 %{{.*}})
18 __SIZE_TYPE__ f2(void) {
19 return __builtin_wasm_mem_size(0);
20 // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.mem.size.i32(i32 0)
21 // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.mem.size.i64(i32 0)
24 __SIZE_TYPE__ f3(__SIZE_TYPE__ delta) {
25 return __builtin_wasm_mem_grow(0, delta);
26 // WEBASSEMBLY32: call i32 @llvm.wasm.mem.grow.i32(i32 0, i32 %{{.*}})
27 // WEBASSEMBLY64: call i64 @llvm.wasm.mem.grow.i64(i32 0, i64 %{{.*}})
30 __SIZE_TYPE__ f4(void) {
31 return __builtin_wasm_current_memory();
32 // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.current.memory.i32()
33 // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.current.memory.i64()
36 __SIZE_TYPE__ f5(__SIZE_TYPE__ delta) {
37 return __builtin_wasm_grow_memory(delta);
38 // WEBASSEMBLY32: call i32 @llvm.wasm.grow.memory.i32(i32 %{{.*}})
39 // WEBASSEMBLY64: call i64 @llvm.wasm.grow.memory.i64(i64 %{{.*}})
42 void f6(unsigned int tag, void *obj) {
43 return __builtin_wasm_throw(tag, obj);
44 // WEBASSEMBLY32: call void @llvm.wasm.throw(i32 %{{.*}}, i8* %{{.*}})
45 // WEBASSEMBLY64: call void @llvm.wasm.throw(i32 %{{.*}}, i8* %{{.*}})
49 return __builtin_wasm_rethrow();
50 // WEBASSEMBLY32: call void @llvm.wasm.rethrow()
51 // WEBASSEMBLY64: call void @llvm.wasm.rethrow()