]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/builtins-wasm.c
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / test / CodeGen / builtins-wasm.c
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_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)
10 }
11
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 %{{.*}})
16 }
17
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)
22 }
23
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 %{{.*}})
28 }
29
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()
34 }
35
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 %{{.*}})
40 }
41
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* %{{.*}})
46 }
47
48 void f7(void) {
49   return __builtin_wasm_rethrow();
50 // WEBASSEMBLY32: call void @llvm.wasm.rethrow()
51 // WEBASSEMBLY64: call void @llvm.wasm.rethrow()
52 }