From 3cc975813da24e5a19f065916959bba2aa14849c Mon Sep 17 00:00:00 2001 From: xushiwei Date: Fri, 24 May 2024 22:47:45 +0800 Subject: [PATCH 1/2] abiType: support pointer --- cl/_testgo/strucintf/in.go | 9 +-- cl/_testgo/strucintf/out.ll | 122 +++++++++++++++++------------- cl/_testrt/any/in.go | 6 +- cl/_testrt/any/out.ll | 68 +++++++++++++++-- internal/runtime/llgo_autogen.lla | Bin 5677 -> 5763 bytes internal/runtime/z_type.go | 13 ++++ ssa/interface.go | 87 +++++++++++---------- ssa/stmt_builder.go | 2 +- 8 files changed, 201 insertions(+), 106 deletions(-) diff --git a/cl/_testgo/strucintf/in.go b/cl/_testgo/strucintf/in.go index 1af4b02d..ae87c15d 100644 --- a/cl/_testgo/strucintf/in.go +++ b/cl/_testgo/strucintf/in.go @@ -1,20 +1,19 @@ package main import ( - "github.com/goplus/llgo/c" "github.com/goplus/llgo/cl/internal/foo" ) func main() { bar := foo.Bar() if x, ok := bar.(struct{ V int }); ok { - c.Printf(c.Str("%d\n"), x.V) + println(x.V) } else { - c.Printf(c.Str("Bar: not ok\n")) + println("Bar: not ok") } if x, ok := foo.F().(struct{ v int }); ok { - c.Printf(c.Str("%d\n"), x.v) + println(x.v) } else { - c.Printf(c.Str("F: not ok\n")) + println("F: not ok") } } diff --git a/cl/_testgo/strucintf/out.ll b/cl/_testgo/strucintf/out.ll index 57492612..6872eb18 100644 --- a/cl/_testgo/strucintf/out.ll +++ b/cl/_testgo/strucintf/out.ll @@ -11,17 +11,15 @@ source_filename = "main" @__llgo_argc = global ptr null @__llgo_argv = global ptr null @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk" = linkonce global ptr null -@0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88" = global ptr null -@1 = private unnamed_addr constant [13 x i8] c"Bar: not ok\0A\00", align 1 -@2 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 -@3 = private unnamed_addr constant [11 x i8] c"F: not ok\0A\00", align 1 -@4 = private unnamed_addr constant [2 x i8] c"V\00", align 1 -@5 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@6 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@7 = private unnamed_addr constant [2 x i8] c"v\00", align 1 -@8 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@9 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@0 = private unnamed_addr constant [12 x i8] c"Bar: not ok\00", align 1 +@1 = private unnamed_addr constant [10 x i8] c"F: not ok\00", align 1 +@2 = private unnamed_addr constant [2 x i8] c"V\00", align 1 +@3 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@4 = private unnamed_addr constant [5 x i8] c"main\00", align 1 +@5 = private unnamed_addr constant [2 x i8] c"v\00", align 1 +@6 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@7 = private unnamed_addr constant [5 x i8] c"main\00", align 1 define void @main.init() { _llgo_0: @@ -77,55 +75,71 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %24 = getelementptr inbounds { i64 }, ptr %4, i32 0, i32 0 %25 = load i64, ptr %24, align 4 - %26 = call i32 (ptr, ...) @printf(ptr @0, i64 %25) + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %25) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_2 _llgo_2: ; preds = %_llgo_3, %_llgo_1 - %27 = alloca { i64 }, align 8 - %28 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %27, i64 8) - %29 = call %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"() - %30 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %29, 0 - %31 = load ptr, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 - %32 = icmp eq ptr %30, %31 - %33 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %29, 1 - %34 = ptrtoint ptr %33 to i64 - %35 = alloca { i64 }, align 8 - %36 = getelementptr inbounds { i64 }, ptr %35, i32 0, i32 0 - store i64 %34, ptr %36, align 4 - %37 = load { i64 }, ptr %35, align 4 - %38 = alloca { { i64 }, i1 }, align 8 - %39 = getelementptr inbounds { { i64 }, i1 }, ptr %38, i32 0, i32 0 - store { i64 } %37, ptr %39, align 4 - %40 = getelementptr inbounds { { i64 }, i1 }, ptr %38, i32 0, i32 1 - store i1 true, ptr %40, align 1 - %41 = load { { i64 }, i1 }, ptr %38, align 4 - %42 = alloca { { i64 }, i1 }, align 8 - %43 = getelementptr inbounds { { i64 }, i1 }, ptr %42, i32 0, i32 0 - store { i64 } zeroinitializer, ptr %43, align 4 - %44 = getelementptr inbounds { { i64 }, i1 }, ptr %42, i32 0, i32 1 - store i1 false, ptr %44, align 1 - %45 = load { { i64 }, i1 }, ptr %42, align 4 - %46 = select i1 %32, { { i64 }, i1 } %41, { { i64 }, i1 } %45 - %47 = extractvalue { { i64 }, i1 } %46, 0 - store { i64 } %47, ptr %28, align 4 - %48 = extractvalue { { i64 }, i1 } %46, 1 - br i1 %48, label %_llgo_4, label %_llgo_6 + %26 = alloca { i64 }, align 8 + %27 = call ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr %26, i64 8) + %28 = call %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"() + %29 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %28, 0 + %30 = load ptr, ptr @"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88", align 8 + %31 = icmp eq ptr %29, %30 + %32 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %28, 1 + %33 = ptrtoint ptr %32 to i64 + %34 = alloca { i64 }, align 8 + %35 = getelementptr inbounds { i64 }, ptr %34, i32 0, i32 0 + store i64 %33, ptr %35, align 4 + %36 = load { i64 }, ptr %34, align 4 + %37 = alloca { { i64 }, i1 }, align 8 + %38 = getelementptr inbounds { { i64 }, i1 }, ptr %37, i32 0, i32 0 + store { i64 } %36, ptr %38, align 4 + %39 = getelementptr inbounds { { i64 }, i1 }, ptr %37, i32 0, i32 1 + store i1 true, ptr %39, align 1 + %40 = load { { i64 }, i1 }, ptr %37, align 4 + %41 = alloca { { i64 }, i1 }, align 8 + %42 = getelementptr inbounds { { i64 }, i1 }, ptr %41, i32 0, i32 0 + store { i64 } zeroinitializer, ptr %42, align 4 + %43 = getelementptr inbounds { { i64 }, i1 }, ptr %41, i32 0, i32 1 + store i1 false, ptr %43, align 1 + %44 = load { { i64 }, i1 }, ptr %41, align 4 + %45 = select i1 %31, { { i64 }, i1 } %40, { { i64 }, i1 } %44 + %46 = extractvalue { { i64 }, i1 } %45, 0 + store { i64 } %46, ptr %27, align 4 + %47 = extractvalue { { i64 }, i1 } %45, 1 + br i1 %47, label %_llgo_4, label %_llgo_6 _llgo_3: ; preds = %_llgo_0 - %49 = call i32 (ptr, ...) @printf(ptr @1) + %48 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %48, i32 0, i32 0 + store ptr @0, ptr %49, align 8 + %50 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %48, i32 0, i32 1 + store i64 11, ptr %50, align 4 + %51 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %48, align 8 + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %51) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_2 _llgo_4: ; preds = %_llgo_2 - %50 = getelementptr inbounds { i64 }, ptr %28, i32 0, i32 0 - %51 = load i64, ptr %50, align 4 - %52 = call i32 (ptr, ...) @printf(ptr @2, i64 %51) + %52 = getelementptr inbounds { i64 }, ptr %27, i32 0, i32 0 + %53 = load i64, ptr %52, align 4 + call void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64 %53) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_5 _llgo_5: ; preds = %_llgo_6, %_llgo_4 ret i32 0 _llgo_6: ; preds = %_llgo_2 - %53 = call i32 (ptr, ...) @printf(ptr @3) + %54 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %55 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 0 + store ptr @1, ptr %55, align 8 + %56 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %54, i32 0, i32 1 + store i64 9, ptr %56, align 4 + %57 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %54, align 8 + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %57) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_5 } @@ -137,10 +151,14 @@ declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llg declare ptr @"github.com/goplus/llgo/internal/runtime.Zeroinit"(ptr, i64) -declare i32 @printf(ptr, ...) +declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"() +declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") + define void @"main.init$abi"() { _llgo_0: %0 = load ptr, ptr @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk", align 8 @@ -150,21 +168,21 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 %2 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 0 - store ptr @4, ptr %3, align 8 + store ptr @2, ptr %3, align 8 %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1 store i64 1, ptr %4, align 4 %5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8 %6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) %7 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 0 - store ptr @5, ptr %8, align 8 + store ptr @3, ptr %8, align 8 %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 1 store i64 0, ptr %9, align 4 %10 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %7, align 8 %11 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %5, ptr %6, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %10, i1 true, i1 false) %12 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 0 - store ptr @6, ptr %13, align 8 + store ptr @4, ptr %13, align 8 %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %12, i32 0, i32 1 store i64 4, ptr %14, align 4 %15 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %12, align 8 @@ -186,21 +204,21 @@ _llgo_1: ; preds = %_llgo_0 _llgo_2: ; preds = %_llgo_1, %_llgo_0 %24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0 - store ptr @7, ptr %25, align 8 + store ptr @5, ptr %25, align 8 %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1 store i64 1, ptr %26, align 4 %27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8 %28 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) %29 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 0 - store ptr @8, ptr %30, align 8 + store ptr @6, ptr %30, align 8 %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %29, i32 0, i32 1 store i64 0, ptr %31, align 4 %32 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %29, align 8 %33 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %27, ptr %28, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %32, i1 false, i1 false) %34 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %35 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 0 - store ptr @9, ptr %35, align 8 + store ptr @7, ptr %35, align 8 %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %34, i32 0, i32 1 store i64 4, ptr %36, align 4 %37 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %34, align 8 diff --git a/cl/_testrt/any/in.go b/cl/_testrt/any/in.go index 4d9300ed..4120c735 100644 --- a/cl/_testrt/any/in.go +++ b/cl/_testrt/any/in.go @@ -4,10 +4,14 @@ import ( "github.com/goplus/llgo/internal/runtime/c" ) +func hi(a any) *c.Char { + return a.(*c.Char) +} + func incVal(a any) int { return a.(int) + 1 } func main() { - c.Printf(c.Str("Hello %d\n"), incVal(100)) + c.Printf(c.Str("%s %d\n"), hi(c.Str("Hello")), incVal(100)) } diff --git a/cl/_testrt/any/out.ll b/cl/_testrt/any/out.ll index 207fc6d3..612c682e 100644 --- a/cl/_testrt/any/out.ll +++ b/cl/_testrt/any/out.ll @@ -5,10 +5,35 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } @"main.init$guard" = global ptr null +@"*_llgo_int8" = linkonce global ptr null @0 = private unnamed_addr constant [22 x i8] c"type assertion failed\00", align 1 +@1 = private unnamed_addr constant [22 x i8] c"type assertion failed\00", align 1 @__llgo_argc = global ptr null @__llgo_argv = global ptr null -@1 = private unnamed_addr constant [10 x i8] c"Hello %d\0A\00", align 1 +@2 = private unnamed_addr constant [7 x i8] c"%s %d\0A\00", align 1 +@3 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 + +define ptr @main.hi(%"github.com/goplus/llgo/internal/runtime.eface" %0) { +_llgo_0: + %1 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 0 + %2 = load ptr, ptr @"*_llgo_int8", align 8 + %3 = icmp eq ptr %1, %2 + br i1 %3, label %_llgo_1, label %_llgo_2 + +_llgo_1: ; preds = %_llgo_0 + %4 = extractvalue %"github.com/goplus/llgo/internal/runtime.eface" %0, 1 + ret ptr %4 + +_llgo_2: ; preds = %_llgo_0 + %5 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %6 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 0 + store ptr @0, ptr %6, align 8 + %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %5, i32 0, i32 1 + store i64 21, ptr %7, align 4 + %8 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %5, align 8 + call void @"github.com/goplus/llgo/internal/runtime.TracePanic"(%"github.com/goplus/llgo/internal/runtime.String" %8) + unreachable +} define i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %0) { _llgo_0: @@ -26,7 +51,7 @@ _llgo_1: ; preds = %_llgo_0 _llgo_2: ; preds = %_llgo_0 %7 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 0 - store ptr @0, ptr %8, align 8 + store ptr @1, ptr %8, align 8 %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %7, i32 0, i32 1 store i64 21, ptr %9, align 4 %10 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %7, align 8 @@ -41,6 +66,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 + call void @"main.init$abi"() br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 @@ -53,22 +79,48 @@ _llgo_0: store ptr %1, ptr @__llgo_argv, align 8 call void @"github.com/goplus/llgo/internal/runtime.init"() call void @main.init() - %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %2 = load ptr, ptr @"*_llgo_int8", align 8 %3 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, i32 0, i32 0 store ptr %2, ptr %4, align 8 %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, i32 0, i32 1 - store ptr inttoptr (i64 100 to ptr), ptr %5, align 8 + store ptr @3, ptr %5, align 8 %6 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %3, align 8 - %7 = call i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %6) - %8 = call i32 (ptr, ...) @printf(ptr @1, i64 %7) + %7 = call ptr @main.hi(%"github.com/goplus/llgo/internal/runtime.eface" %6) + %8 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2) + %9 = alloca %"github.com/goplus/llgo/internal/runtime.eface", align 8 + %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, i32 0, i32 0 + store ptr %8, ptr %10, align 8 + %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, i32 0, i32 1 + store ptr inttoptr (i64 100 to ptr), ptr %11, align 8 + %12 = load %"github.com/goplus/llgo/internal/runtime.eface", ptr %9, align 8 + %13 = call i64 @main.incVal(%"github.com/goplus/llgo/internal/runtime.eface" %12) + %14 = call i32 (ptr, ...) @printf(ptr @2, ptr %7, i64 %13) ret i32 0 } -declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) - declare void @"github.com/goplus/llgo/internal/runtime.TracePanic"(%"github.com/goplus/llgo/internal/runtime.eface") +declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64) + declare void @"github.com/goplus/llgo/internal/runtime.init"() declare i32 @printf(ptr, ...) + +define void @"main.init$abi"() { +_llgo_0: + %0 = load ptr, ptr @"*_llgo_int8", align 8 + %1 = icmp eq ptr %0, null + br i1 %1, label %_llgo_1, label %_llgo_2 + +_llgo_1: ; preds = %_llgo_0 + %2 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3) + %3 = call ptr @"github.com/goplus/llgo/internal/runtime.Pointer"(ptr %2) + store ptr %3, ptr @"*_llgo_int8", align 8 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + +declare ptr @"github.com/goplus/llgo/internal/runtime.Pointer"(ptr) diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index a5c5b75bc81fc925cd674fcc15e25965e95a45cc..08e35c39a24245609732392d3e53dee61d59638b 100644 GIT binary patch literal 5763 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 Date: Fri, 24 May 2024 22:55:21 +0800 Subject: [PATCH 2/2] x --- internal/runtime/llgo_autogen.lla | Bin 10105 -> 10105 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index 58e14bf89568a29d5d48eea0b7b851f08bd399f3..06b2a807e9ede1c8ddd4c968e5a0addb2bf66283 100644 GIT binary patch delta 9048 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 K0!gZqQYR;4!N0Ts delta 9048 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