transform: update wasm-abi to use opaque pointers
Этот коммит содержится в:
родитель
4acb1a5845
коммит
6c40ee93fe
2 изменённых файлов: 17 добавлений и 17 удалений
10
transform/testdata/wasm-abi.ll
предоставленный
10
transform/testdata/wasm-abi.ll
предоставленный
|
@ -1,19 +1,19 @@
|
||||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||||
target triple = "wasm32-unknown-unknown-wasm"
|
target triple = "wasm32-unknown-unknown-wasm"
|
||||||
|
|
||||||
declare i64 @externalCall(i8*, i32, i64)
|
declare i64 @externalCall(ptr, i32, i64)
|
||||||
|
|
||||||
define internal i64 @testCall(i8* %ptr, i32 %len, i64 %foo) {
|
define internal i64 @testCall(ptr %ptr, i32 %len, i64 %foo) {
|
||||||
%val = call i64 @externalCall(i8* %ptr, i32 %len, i64 %foo)
|
%val = call i64 @externalCall(ptr %ptr, i32 %len, i64 %foo)
|
||||||
ret i64 %val
|
ret i64 %val
|
||||||
}
|
}
|
||||||
|
|
||||||
define internal i64 @testCallNonEntry(i8* %ptr, i32 %len) {
|
define internal i64 @testCallNonEntry(ptr %ptr, i32 %len) {
|
||||||
entry:
|
entry:
|
||||||
br label %bb1
|
br label %bb1
|
||||||
|
|
||||||
bb1:
|
bb1:
|
||||||
%val = call i64 @externalCall(i8* %ptr, i32 %len, i64 3)
|
%val = call i64 @externalCall(ptr %ptr, i32 %len, i64 3)
|
||||||
ret i64 %val
|
ret i64 %val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
24
transform/testdata/wasm-abi.out.ll
предоставленный
24
transform/testdata/wasm-abi.out.ll
предоставленный
|
@ -1,27 +1,27 @@
|
||||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||||
target triple = "wasm32-unknown-unknown-wasm"
|
target triple = "wasm32-unknown-unknown-wasm"
|
||||||
|
|
||||||
declare i64 @"externalCall$i64wrap"(i8*, i32, i64)
|
declare i64 @"externalCall$i64wrap"(ptr, i32, i64)
|
||||||
|
|
||||||
define internal i64 @testCall(i8* %ptr, i32 %len, i64 %foo) {
|
define internal i64 @testCall(ptr %ptr, i32 %len, i64 %foo) {
|
||||||
%i64asptr = alloca i64, align 8
|
%i64asptr = alloca i64, align 8
|
||||||
%i64asptr1 = alloca i64, align 8
|
%i64asptr1 = alloca i64, align 8
|
||||||
store i64 %foo, i64* %i64asptr1, align 8
|
store i64 %foo, ptr %i64asptr1, align 8
|
||||||
call void @externalCall(i64* %i64asptr, i8* %ptr, i32 %len, i64* %i64asptr1)
|
call void @externalCall(ptr %i64asptr, ptr %ptr, i32 %len, ptr %i64asptr1)
|
||||||
%retval = load i64, i64* %i64asptr, align 8
|
%retval = load i64, ptr %i64asptr, align 8
|
||||||
ret i64 %retval
|
ret i64 %retval
|
||||||
}
|
}
|
||||||
|
|
||||||
define internal i64 @testCallNonEntry(i8* %ptr, i32 %len) {
|
define internal i64 @testCallNonEntry(ptr %ptr, i32 %len) {
|
||||||
entry:
|
entry:
|
||||||
%i64asptr = alloca i64, align 8
|
%i64asptr = alloca i64, align 8
|
||||||
%i64asptr1 = alloca i64, align 8
|
%i64asptr1 = alloca i64, align 8
|
||||||
br label %bb1
|
br label %bb1
|
||||||
|
|
||||||
bb1: ; preds = %entry
|
bb1: ; preds = %entry
|
||||||
store i64 3, i64* %i64asptr1, align 8
|
store i64 3, ptr %i64asptr1, align 8
|
||||||
call void @externalCall(i64* %i64asptr, i8* %ptr, i32 %len, i64* %i64asptr1)
|
call void @externalCall(ptr %i64asptr, ptr %ptr, i32 %len, ptr %i64asptr1)
|
||||||
%retval = load i64, i64* %i64asptr, align 8
|
%retval = load i64, ptr %i64asptr, align 8
|
||||||
ret i64 %retval
|
ret i64 %retval
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,11 +35,11 @@ define internal void @callExportedFunction(i64 %foo) {
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
declare void @externalCall(i64*, i8*, i32, i64*)
|
declare void @externalCall(ptr, ptr, i32, ptr)
|
||||||
|
|
||||||
define void @exportedFunction(i64* %0) {
|
define void @exportedFunction(ptr %0) {
|
||||||
entry:
|
entry:
|
||||||
%i64 = load i64, i64* %0, align 8
|
%i64 = load i64, ptr %0, align 8
|
||||||
call void @"exportedFunction$i64wrap"(i64 %i64)
|
call void @"exportedFunction$i64wrap"(i64 %i64)
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче