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
5 
6 __SIZE_TYPE__ f0(void) {
7   return __builtin_wasm_mem_size(0);
8 // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.mem.size.i32(i32 0)
9 // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.mem.size.i64(i32 0)
10 }
11 
12 __SIZE_TYPE__ f1(__SIZE_TYPE__ delta) {
13   return __builtin_wasm_mem_grow(0, delta);
14 // WEBASSEMBLY32: call i32 @llvm.wasm.mem.grow.i32(i32 0, i32 %{{.*}})
15 // WEBASSEMBLY64: call i64 @llvm.wasm.mem.grow.i64(i32 0, i64 %{{.*}})
16 }
17 
18 __SIZE_TYPE__ f2(void) {
19   return __builtin_wasm_current_memory();
20 // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.current.memory.i32()
21 // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.current.memory.i64()
22 }
23 
24 __SIZE_TYPE__ f3(__SIZE_TYPE__ delta) {
25   return __builtin_wasm_grow_memory(delta);
26 // WEBASSEMBLY32: call i32 @llvm.wasm.grow.memory.i32(i32 %{{.*}})
27 // WEBASSEMBLY64: call i64 @llvm.wasm.grow.memory.i64(i64 %{{.*}})
28 }
29 
30 void f4(unsigned int tag, void *obj) {
31   return __builtin_wasm_throw(tag, obj);
32 // WEBASSEMBLY32: call void @llvm.wasm.throw(i32 %{{.*}}, i8* %{{.*}})
33 // WEBASSEMBLY64: call void @llvm.wasm.throw(i32 %{{.*}}, i8* %{{.*}})
34 }
35 
36 void f5(void) {
37   return __builtin_wasm_rethrow();
38 // WEBASSEMBLY32: call void @llvm.wasm.rethrow()
39 // WEBASSEMBLY64: call void @llvm.wasm.rethrow()
40 }
41