Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(684)

Delta Between Two Patch Sets: test/torture.go

Issue 6586072: cmd/5g: fix out of registers in nested calls, add compi... (Closed)
Left Patch Set: Created 11 years, 5 months ago
Right Patch Set: diff -r c6f9c0f01c09 https://go.googlecode.com/hg/ Created 11 years, 5 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « src/cmd/5g/cgen.c ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 // compile
2
3 // Copyright 2012 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 // Various tests for expressions with high complexity.
8
9 package main
10
11 // Concatenate 16 4-bit integers into a 64-bit number.
12 func concat(s *[16]byte) uint64 {
13 r := (((((((((((((((uint64(s[0])<<4|
14 uint64(s[1]))<<4|
15 uint64(s[2]))<<4|
16 uint64(s[3]))<<4|
17 uint64(s[4]))<<4|
18 uint64(s[5]))<<4|
19 uint64(s[6]))<<4|
20 uint64(s[7]))<<4|
21 uint64(s[8]))<<4|
22 uint64(s[9]))<<4|
23 uint64(s[10]))<<4|
24 uint64(s[11]))<<4|
25 uint64(s[12]))<<4|
26 uint64(s[13]))<<4|
27 uint64(s[14]))<<4 |
28 uint64(s[15]))
29 return r
30 }
31
32 // Compute the determinant of a 4x4-matrix by the sum
33 // over all index permutations.
34 func determinant(m [4][4]float64) float64 {
35 return m[0][0]*m[1][1]*m[2][2]*m[3][3] -
36 m[0][0]*m[1][1]*m[2][3]*m[3][2] -
37 m[0][0]*m[1][2]*m[2][1]*m[3][3] +
38 m[0][0]*m[1][2]*m[2][3]*m[3][1] +
39 m[0][0]*m[1][3]*m[2][1]*m[3][2] -
40 m[0][0]*m[1][3]*m[2][2]*m[3][1] -
41 m[0][1]*m[1][0]*m[2][2]*m[3][3] +
42 m[0][1]*m[1][0]*m[2][3]*m[3][2] +
43 m[0][1]*m[1][2]*m[2][0]*m[3][3] -
44 m[0][1]*m[1][2]*m[2][3]*m[3][0] -
45 m[0][1]*m[1][3]*m[2][0]*m[3][2] +
46 m[0][1]*m[1][3]*m[2][2]*m[3][0] +
47 m[0][2]*m[1][0]*m[2][1]*m[3][3] -
48 m[0][2]*m[1][0]*m[2][3]*m[3][1] -
49 m[0][2]*m[1][1]*m[2][0]*m[3][3] +
50 m[0][2]*m[1][1]*m[2][3]*m[3][0] +
51 m[0][2]*m[1][3]*m[2][0]*m[3][1] -
52 m[0][2]*m[1][3]*m[2][1]*m[3][0] -
53 m[0][3]*m[1][0]*m[2][1]*m[3][2] +
54 m[0][3]*m[1][0]*m[2][2]*m[3][1] +
55 m[0][3]*m[1][1]*m[2][0]*m[3][2] -
56 m[0][3]*m[1][1]*m[2][2]*m[3][0] -
57 m[0][3]*m[1][2]*m[2][0]*m[3][1] +
58 m[0][3]*m[1][2]*m[2][1]*m[3][0]
59 }
60
61 // A right-leaning tree of byte multiplications.
62 func righttree(a, b, c, d uint8) uint8 {
63 return a * (b * (c * (d *
64 (a * (b * (c * (d *
65 (a * (b * (c * (d *
66 (a * (b * (c * (d *
67 (a * (b * (c * (d *
68 a * (b * (c * d))))))))))))))))) ))))
69
70 }
71
72 // A left-leaning tree of byte multiplications.
73 func lefttree(a, b, c, d uint8) uint8 {
74 return ((((((((((((((((((a * b) * c) * d *
75 a) * b) * c) * d *
76 a) * b) * c) * d *
77 a) * b) * c) * d *
78 a) * b) * c) * d *
79 a) * b) * c) * d)
80 }
81
82 type T struct {
83 Next I
84 }
85
86 type I interface{}
87
88 // A chains of type assertions.
89 func ChainT(t *T) *T {
90 return t.
91 Next.(*T).
92 Next.(*T).
93 Next.(*T).
94 Next.(*T).
95 Next.(*T).
96 Next.(*T).
97 Next.(*T).
98 Next.(*T).
99 Next.(*T).
100 Next.(*T).
101 Next.(*T).
102 Next.(*T).
103 Next.(*T).
104 Next.(*T).
105 Next.(*T).
106 Next.(*T).
107 Next.(*T).
108 Next.(*T).
109 Next.(*T).
110 Next.(*T)
111 }
112
113 type U struct {
114 Children []J
115 }
116
117 func (u *U) Child(n int) J { return u.Children[n] }
118
119 type J interface {
120 Child(n int) J
121 }
122
123 func ChainUAssert(u *U) *U {
124 return u.Child(0).(*U).
125 Child(0).(*U).
126 Child(0).(*U).
127 Child(0).(*U).
128 Child(0).(*U).
129 Child(0).(*U).
130 Child(0).(*U).
131 Child(0).(*U).
132 Child(0).(*U).
133 Child(0).(*U).
134 Child(0).(*U).
135 Child(0).(*U).
136 Child(0).(*U).
137 Child(0).(*U).
138 Child(0).(*U).
139 Child(0).(*U).
140 Child(0).(*U).
141 Child(0).(*U).
142 Child(0).(*U).
143 Child(0).(*U).
144 Child(0).(*U).
145 Child(0).(*U)
146 }
147
148 func ChainUNoAssert(u *U) *U {
149 return u.Child(0).
150 Child(0).
151 Child(0).
152 Child(0).
153 Child(0).
154 Child(0).
155 Child(0).
156 Child(0).
157 Child(0).
158 Child(0).
159 Child(0).
160 Child(0).
161 Child(0).
162 Child(0).
163 Child(0).
164 Child(0).
165 Child(0).
166 Child(0).
167 Child(0).
168 Child(0).
169 Child(0).
170 Child(0).(*U)
171 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b