OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [235.go] - Blame information for rev 858

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 700 jeremybenn
// $G $F.go && $L $F.$A && ./$A.out
2
 
3
// Copyright 2009 The Go Authors. All rights reserved.
4
// Use of this source code is governed by a BSD-style
5
// license that can be found in the LICENSE file.
6
 
7
package main
8
 
9
type T chan uint64
10
 
11
func M(f uint64) (in, out T) {
12
        in = make(T, 100)
13
        out = make(T, 100)
14
        go func(in, out T, f uint64) {
15
                for {
16
                        out <- f*<-in
17
                }
18
        }(in, out, f)
19
        return in, out
20
}
21
 
22
 
23
func min(xs []uint64) uint64 {
24
        m := xs[0]
25
        for i := 1; i < len(xs); i++ {
26
                if xs[i] < m {
27
                        m = xs[i]
28
                }
29
        }
30
        return m
31
}
32
 
33
 
34
func main() {
35
        F := []uint64{2, 3, 5}
36
        var n = len(F)
37
        OUT := []uint64{
38
                2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36,
39
                40, 45, 48, 50, 54, 60, 64, 72, 75, 80, 81, 90, 96, 100, 108, 120, 125,
40
                128, 135, 144, 150, 160, 162, 180, 192, 200, 216, 225, 240, 243, 250,
41
                256, 270, 288, 300, 320, 324, 360, 375, 384, 400, 405, 432, 450, 480,
42
                486, 500, 512, 540, 576, 600, 625, 640, 648, 675, 720, 729, 750, 768,
43
                800, 810, 864, 900, 960, 972, 1000, 1024, 1080, 1125, 1152, 1200, 1215,
44
                1250, 1280, 1296, 1350, 1440, 1458, 1500, 1536, 1600}
45
 
46
        x := uint64(1)
47
        ins := make([]T, n)
48
        outs := make([]T, n)
49
        xs := make([]uint64, n)
50
        for i := 0; i < n; i++ {
51
                ins[i], outs[i] = M(F[i])
52
                xs[i] = x
53
        }
54
 
55
        for i := 0; i < len(OUT); i++ {
56
                for i := 0; i < n; i++ {
57
                        ins[i] <- x
58
                }
59
 
60
                for i := 0; i < n; i++ {
61
                        if xs[i] == x {
62
                                xs[i] = <-outs[i]
63
                        }
64
                }
65
 
66
                x = min(xs)
67
                if x != OUT[i] {
68
                        println("bad: ", x, " should be ", OUT[i])
69
                        panic("235")
70
                }
71
        }
72
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.