mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-12 23:13:40 +00:00
Switch interp tests to opaque pointers
This commit is contained in:
committed by
Ayke
parent
2b1dc4fee5
commit
b4c9b579b8
Vendored
+27
-28
@@ -13,41 +13,41 @@ target triple = "x86_64--linux"
|
||||
|
||||
declare void @externalCall(i64) local_unnamed_addr
|
||||
|
||||
declare i64 @ptrHash(i8* nocapture) local_unnamed_addr
|
||||
declare i64 @ptrHash(ptr nocapture) local_unnamed_addr
|
||||
|
||||
define void @runtime.initAll() unnamed_addr {
|
||||
entry:
|
||||
call fastcc void @baz.init(i8* undef)
|
||||
call fastcc void @foo.init(i8* undef)
|
||||
%val = load i64, i64* @foo.knownAtRuntime, align 8
|
||||
store i64 %val, i64* @bar.knownAtRuntime, align 8
|
||||
call fastcc void @baz.init(ptr undef)
|
||||
call fastcc void @foo.init(ptr undef)
|
||||
%val = load i64, ptr @foo.knownAtRuntime, align 8
|
||||
store i64 %val, ptr @bar.knownAtRuntime, align 8
|
||||
call void @externalCall(i64 3)
|
||||
store atomic i32 1, i32* @x.atomicNum seq_cst, align 4
|
||||
%x = load atomic i32, i32* @x.atomicNum seq_cst, align 4
|
||||
store i32 %x, i32* @x.atomicNum, align 4
|
||||
%y = load volatile i32, i32* @x.volatileNum, align 4
|
||||
store volatile i32 %y, i32* @x.volatileNum, align 4
|
||||
call fastcc void @y.init(i8* undef)
|
||||
call fastcc void @z.set(i8* bitcast (i64* @z.bloom to i8*), i8* bitcast (i64* @z.bloom to i8*))
|
||||
call fastcc void @z.setArr(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @z.arr, i32 0, i32 0), i64 32, i8* bitcast (i64* @z.bloom to i8*))
|
||||
store atomic i32 1, ptr @x.atomicNum seq_cst, align 4
|
||||
%x = load atomic i32, ptr @x.atomicNum seq_cst, align 4
|
||||
store i32 %x, ptr @x.atomicNum, align 4
|
||||
%y = load volatile i32, ptr @x.volatileNum, align 4
|
||||
store volatile i32 %y, ptr @x.volatileNum, align 4
|
||||
call fastcc void @y.init(ptr undef)
|
||||
call fastcc void @z.set(ptr @z.bloom, ptr @z.bloom)
|
||||
call fastcc void @z.setArr(ptr @z.arr, i64 32, ptr @z.bloom)
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal fastcc void @foo.init(i8* %context) unnamed_addr {
|
||||
store i64 5, i64* @foo.knownAtRuntime, align 8
|
||||
define internal fastcc void @foo.init(ptr %context) unnamed_addr {
|
||||
store i64 5, ptr @foo.knownAtRuntime, align 8
|
||||
unreachable
|
||||
}
|
||||
|
||||
define internal fastcc void @baz.init(i8* %context) unnamed_addr {
|
||||
define internal fastcc void @baz.init(ptr %context) unnamed_addr {
|
||||
unreachable
|
||||
}
|
||||
|
||||
define internal fastcc void @y.init(i8* %context) unnamed_addr {
|
||||
define internal fastcc void @y.init(ptr %context) unnamed_addr {
|
||||
entry:
|
||||
br label %loop
|
||||
|
||||
loop: ; preds = %loop, %entry
|
||||
%val = load atomic i32, i32* @y.ready seq_cst, align 4
|
||||
%val = load atomic i32, ptr @y.ready seq_cst, align 4
|
||||
%ready = icmp eq i32 %val, 1
|
||||
br i1 %ready, label %end, label %loop
|
||||
|
||||
@@ -55,15 +55,15 @@ end: ; preds = %loop
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal fastcc void @z.setArr(i8* %arr, i64 %n, i8* %context) unnamed_addr {
|
||||
define internal fastcc void @z.setArr(ptr %arr, i64 %n, ptr %context) unnamed_addr {
|
||||
entry:
|
||||
br label %loop
|
||||
|
||||
|
||||
loop: ; preds = %loop, %entry
|
||||
%prev = phi i64 [ %n, %entry ], [ %idx, %loop ]
|
||||
%idx = sub i64 %prev, 1
|
||||
%elem = getelementptr i8, i8* %arr, i64 %idx
|
||||
call fastcc void @z.set(i8* %elem, i8* %context)
|
||||
%elem = getelementptr i8, ptr %arr, i64 %idx
|
||||
call fastcc void @z.set(ptr %elem, ptr %context)
|
||||
%done = icmp eq i64 %idx, 0
|
||||
br i1 %done, label %end, label %loop
|
||||
|
||||
@@ -71,13 +71,12 @@ end: ; preds = %loop
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal fastcc void @z.set(i8* %ptr, i8* %context) unnamed_addr {
|
||||
%hash = call i64 @ptrHash(i8* %ptr)
|
||||
define internal fastcc void @z.set(ptr %ptr, ptr %context) unnamed_addr {
|
||||
%hash = call i64 @ptrHash(ptr %ptr)
|
||||
%index = lshr i64 %hash, 58
|
||||
%bit = shl i64 1, %index
|
||||
%bloom = bitcast i8* %context to i64*
|
||||
%old = load i64, i64* %bloom, align 8
|
||||
%old = load i64, ptr %context, align 8
|
||||
%new = or i64 %old, %bit
|
||||
store i64 %new, i64* %bloom, align 8
|
||||
store i64 %new, ptr %context, align 8
|
||||
ret void
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user