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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [ken/] [modconst.go] - Rev 700

Compare with Previous | Blame | View Log

// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import "math/rand"

const Count = 1e5

func i64rand() int64 {
        for {
                a := int64(rand.Uint32())
                a = (a << 32) | int64(rand.Uint32())
                a >>= uint(rand.Intn(64))
                if -a != a {
                        return a
                }
        }
        return 0 // impossible
}

func i64test(a, b, c int64) {
        d := a % c
        if d != b {
                println("i64", a, b, c, d)
                panic("fail")
        }
}

func i64run() {
        var a, b int64

        for i := 0; i < Count; i++ {
                a = i64rand()

                b = a % 1
                i64test(a, b, 1)
                b = a % 2
                i64test(a, b, 2)
                b = a % 3
                i64test(a, b, 3)
                b = a % 4
                i64test(a, b, 4)
                b = a % 5
                i64test(a, b, 5)
                b = a % 6
                i64test(a, b, 6)
                b = a % 7
                i64test(a, b, 7)
                b = a % 8
                i64test(a, b, 8)
                b = a % 10
                i64test(a, b, 10)
                b = a % 16
                i64test(a, b, 16)
                b = a % 20
                i64test(a, b, 20)
                b = a % 32
                i64test(a, b, 32)
                b = a % 60
                i64test(a, b, 60)
                b = a % 64
                i64test(a, b, 64)
                b = a % 128
                i64test(a, b, 128)
                b = a % 256
                i64test(a, b, 256)
                b = a % 16384
                i64test(a, b, 16384)

                b = a % -1
                i64test(a, b, -1)
                b = a % -2
                i64test(a, b, -2)
                b = a % -3
                i64test(a, b, -3)
                b = a % -4
                i64test(a, b, -4)
                b = a % -5
                i64test(a, b, -5)
                b = a % -6
                i64test(a, b, -6)
                b = a % -7
                i64test(a, b, -7)
                b = a % -8
                i64test(a, b, -8)
                b = a % -10
                i64test(a, b, -10)
                b = a % -16
                i64test(a, b, -16)
                b = a % -20
                i64test(a, b, -20)
                b = a % -32
                i64test(a, b, -32)
                b = a % -60
                i64test(a, b, -60)
                b = a % -64
                i64test(a, b, -64)
                b = a % -128
                i64test(a, b, -128)
                b = a % -256
                i64test(a, b, -256)
                b = a % -16384
                i64test(a, b, -16384)
        }
}

func u64rand() uint64 {
        a := uint64(rand.Uint32())
        a = (a << 32) | uint64(rand.Uint32())
        a >>= uint(rand.Intn(64))
        return a
}

func u64test(a, b, c uint64) {
        d := a % c
        if d != b {
                println("u64", a, b, c, d)
                panic("fail")
        }
}

func u64run() {
        var a, b uint64

        for i := 0; i < Count; i++ {
                a = u64rand()

                b = a % 1
                u64test(a, b, 1)
                b = a % 2
                u64test(a, b, 2)
                b = a % 3
                u64test(a, b, 3)
                b = a % 4
                u64test(a, b, 4)
                b = a % 5
                u64test(a, b, 5)
                b = a % 6
                u64test(a, b, 6)
                b = a % 7
                u64test(a, b, 7)
                b = a % 8
                u64test(a, b, 8)
                b = a % 10
                u64test(a, b, 10)
                b = a % 16
                u64test(a, b, 16)
                b = a % 20
                u64test(a, b, 20)
                b = a % 32
                u64test(a, b, 32)
                b = a % 60
                u64test(a, b, 60)
                b = a % 64
                u64test(a, b, 64)
                b = a % 128
                u64test(a, b, 128)
                b = a % 256
                u64test(a, b, 256)
                b = a % 16384
                u64test(a, b, 16384)
        }
}

func i32rand() int32 {
        for {
                a := int32(rand.Uint32())
                a >>= uint(rand.Intn(32))
                if -a != a {
                        return a
                }
        }
        return 0 // impossible
}

func i32test(a, b, c int32) {
        d := a % c
        if d != b {
                println("i32", a, b, c, d)
                panic("fail")
        }
}

func i32run() {
        var a, b int32

        for i := 0; i < Count; i++ {
                a = i32rand()

                b = a % 1
                i32test(a, b, 1)
                b = a % 2
                i32test(a, b, 2)
                b = a % 3
                i32test(a, b, 3)
                b = a % 4
                i32test(a, b, 4)
                b = a % 5
                i32test(a, b, 5)
                b = a % 6
                i32test(a, b, 6)
                b = a % 7
                i32test(a, b, 7)
                b = a % 8
                i32test(a, b, 8)
                b = a % 10
                i32test(a, b, 10)
                b = a % 16
                i32test(a, b, 16)
                b = a % 20
                i32test(a, b, 20)
                b = a % 32
                i32test(a, b, 32)
                b = a % 60
                i32test(a, b, 60)
                b = a % 64
                i32test(a, b, 64)
                b = a % 128
                i32test(a, b, 128)
                b = a % 256
                i32test(a, b, 256)
                b = a % 16384
                i32test(a, b, 16384)

                b = a % -1
                i32test(a, b, -1)
                b = a % -2
                i32test(a, b, -2)
                b = a % -3
                i32test(a, b, -3)
                b = a % -4
                i32test(a, b, -4)
                b = a % -5
                i32test(a, b, -5)
                b = a % -6
                i32test(a, b, -6)
                b = a % -7
                i32test(a, b, -7)
                b = a % -8
                i32test(a, b, -8)
                b = a % -10
                i32test(a, b, -10)
                b = a % -16
                i32test(a, b, -16)
                b = a % -20
                i32test(a, b, -20)
                b = a % -32
                i32test(a, b, -32)
                b = a % -60
                i32test(a, b, -60)
                b = a % -64
                i32test(a, b, -64)
                b = a % -128
                i32test(a, b, -128)
                b = a % -256
                i32test(a, b, -256)
        }
}

func u32rand() uint32 {
        a := uint32(rand.Uint32())
        a >>= uint(rand.Intn(32))
        return a
}

func u32test(a, b, c uint32) {
        d := a % c
        if d != b {
                println("u32", a, b, c, d)
                panic("fail")
        }
}

func u32run() {
        var a, b uint32

        for i := 0; i < Count; i++ {
                a = u32rand()

                b = a % 1
                u32test(a, b, 1)
                b = a % 2
                u32test(a, b, 2)
                b = a % 3
                u32test(a, b, 3)
                b = a % 4
                u32test(a, b, 4)
                b = a % 5
                u32test(a, b, 5)
                b = a % 6
                u32test(a, b, 6)
                b = a % 7
                u32test(a, b, 7)
                b = a % 8
                u32test(a, b, 8)
                b = a % 10
                u32test(a, b, 10)
                b = a % 16
                u32test(a, b, 16)
                b = a % 20
                u32test(a, b, 20)
                b = a % 32
                u32test(a, b, 32)
                b = a % 60
                u32test(a, b, 60)
                b = a % 64
                u32test(a, b, 64)
                b = a % 128
                u32test(a, b, 128)
                b = a % 256
                u32test(a, b, 256)
                b = a % 16384
                u32test(a, b, 16384)
        }
}

func i16rand() int16 {
        for {
                a := int16(rand.Uint32())
                a >>= uint(rand.Intn(16))
                if -a != a {
                        return a
                }
        }
        return 0 // impossible
}

func i16test(a, b, c int16) {
        d := a % c
        if d != b {
                println("i16", a, b, c, d)
                panic("fail")
        }
}

func i16run() {
        var a, b int16

        for i := 0; i < Count; i++ {
                a = i16rand()

                b = a % 1
                i16test(a, b, 1)
                b = a % 2
                i16test(a, b, 2)
                b = a % 3
                i16test(a, b, 3)
                b = a % 4
                i16test(a, b, 4)
                b = a % 5
                i16test(a, b, 5)
                b = a % 6
                i16test(a, b, 6)
                b = a % 7
                i16test(a, b, 7)
                b = a % 8
                i16test(a, b, 8)
                b = a % 10
                i16test(a, b, 10)
                b = a % 16
                i16test(a, b, 16)
                b = a % 20
                i16test(a, b, 20)
                b = a % 32
                i16test(a, b, 32)
                b = a % 60
                i16test(a, b, 60)
                b = a % 64
                i16test(a, b, 64)
                b = a % 128
                i16test(a, b, 128)
                b = a % 256
                i16test(a, b, 256)
                b = a % 16384
                i16test(a, b, 16384)

                b = a % -1
                i16test(a, b, -1)
                b = a % -2
                i16test(a, b, -2)
                b = a % -3
                i16test(a, b, -3)
                b = a % -4
                i16test(a, b, -4)
                b = a % -5
                i16test(a, b, -5)
                b = a % -6
                i16test(a, b, -6)
                b = a % -7
                i16test(a, b, -7)
                b = a % -8
                i16test(a, b, -8)
                b = a % -10
                i16test(a, b, -10)
                b = a % -16
                i16test(a, b, -16)
                b = a % -20
                i16test(a, b, -20)
                b = a % -32
                i16test(a, b, -32)
                b = a % -60
                i16test(a, b, -60)
                b = a % -64
                i16test(a, b, -64)
                b = a % -128
                i16test(a, b, -128)
                b = a % -256
                i16test(a, b, -256)
                b = a % -16384
                i16test(a, b, -16384)
        }
}

func u16rand() uint16 {
        a := uint16(rand.Uint32())
        a >>= uint(rand.Intn(16))
        return a
}

func u16test(a, b, c uint16) {
        d := a % c
        if d != b {
                println("u16", a, b, c, d)
                panic("fail")
        }
}

func u16run() {
        var a, b uint16

        for i := 0; i < Count; i++ {
                a = u16rand()

                b = a % 1
                u16test(a, b, 1)
                b = a % 2
                u16test(a, b, 2)
                b = a % 3
                u16test(a, b, 3)
                b = a % 4
                u16test(a, b, 4)
                b = a % 5
                u16test(a, b, 5)
                b = a % 6
                u16test(a, b, 6)
                b = a % 7
                u16test(a, b, 7)
                b = a % 8
                u16test(a, b, 8)
                b = a % 10
                u16test(a, b, 10)
                b = a % 16
                u16test(a, b, 16)
                b = a % 20
                u16test(a, b, 20)
                b = a % 32
                u16test(a, b, 32)
                b = a % 60
                u16test(a, b, 60)
                b = a % 64
                u16test(a, b, 64)
                b = a % 128
                u16test(a, b, 128)
                b = a % 256
                u16test(a, b, 256)
                b = a % 16384
                u16test(a, b, 16384)
        }
}

func i8rand() int8 {
        for {
                a := int8(rand.Uint32())
                a >>= uint(rand.Intn(8))
                if -a != a {
                        return a
                }
        }
        return 0 // impossible
}

func i8test(a, b, c int8) {
        d := a % c
        if d != b {
                println("i8", a, b, c, d)
                panic("fail")
        }
}

func i8run() {
        var a, b int8

        for i := 0; i < Count; i++ {
                a = i8rand()

                b = a % 1
                i8test(a, b, 1)
                b = a % 2
                i8test(a, b, 2)
                b = a % 3
                i8test(a, b, 3)
                b = a % 4
                i8test(a, b, 4)
                b = a % 5
                i8test(a, b, 5)
                b = a % 6
                i8test(a, b, 6)
                b = a % 7
                i8test(a, b, 7)
                b = a % 8
                i8test(a, b, 8)
                b = a % 10
                i8test(a, b, 10)
                b = a % 8
                i8test(a, b, 8)
                b = a % 20
                i8test(a, b, 20)
                b = a % 32
                i8test(a, b, 32)
                b = a % 60
                i8test(a, b, 60)
                b = a % 64
                i8test(a, b, 64)
                b = a % 127
                i8test(a, b, 127)

                b = a % -1
                i8test(a, b, -1)
                b = a % -2
                i8test(a, b, -2)
                b = a % -3
                i8test(a, b, -3)
                b = a % -4
                i8test(a, b, -4)
                b = a % -5
                i8test(a, b, -5)
                b = a % -6
                i8test(a, b, -6)
                b = a % -7
                i8test(a, b, -7)
                b = a % -8
                i8test(a, b, -8)
                b = a % -10
                i8test(a, b, -10)
                b = a % -8
                i8test(a, b, -8)
                b = a % -20
                i8test(a, b, -20)
                b = a % -32
                i8test(a, b, -32)
                b = a % -60
                i8test(a, b, -60)
                b = a % -64
                i8test(a, b, -64)
                b = a % -128
                i8test(a, b, -128)
                b = a % -101
                i8test(a, b, -101)
        }
}

func u8rand() uint8 {
        a := uint8(rand.Uint32())
        a >>= uint(rand.Intn(8))
        return a
}

func u8test(a, b, c uint8) {
        d := a % c
        if d != b {
                println("u8", a, b, c, d)
                panic("fail")
        }
}

func u8run() {
        var a, b uint8

        for i := 0; i < Count; i++ {
                a = u8rand()

                b = a % 1
                u8test(a, b, 1)
                b = a % 2
                u8test(a, b, 2)
                b = a % 3
                u8test(a, b, 3)
                b = a % 4
                u8test(a, b, 4)
                b = a % 5
                u8test(a, b, 5)
                b = a % 6
                u8test(a, b, 6)
                b = a % 7
                u8test(a, b, 7)
                b = a % 8
                u8test(a, b, 8)
                b = a % 10
                u8test(a, b, 10)
                b = a % 8
                u8test(a, b, 8)
                b = a % 20
                u8test(a, b, 20)
                b = a % 32
                u8test(a, b, 32)
                b = a % 60
                u8test(a, b, 60)
                b = a % 64
                u8test(a, b, 64)
                b = a % 127
                u8test(a, b, 127)
        }
}

func main() {
        xtest()
        i64run()
        u64run()
        i32run()
        u32run()
        i16run()
        u16run()
        i8run()
        u8run()
}

func xtest() {
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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