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