mirror of
https://github.com/golang/go
synced 2024-11-25 06:37:58 -07:00
floating point calc, added a few more packages that pass
go/test: passes 80% (274/340) R=rsc APPROVED=rsc DELTA=61 (59 added, 0 deleted, 2 changed) OCL=35506 CL=35517
This commit is contained in:
parent
d8b461dfca
commit
6084dcdd07
@ -42,7 +42,7 @@ void
|
|||||||
cgen(Node *n, Node *res)
|
cgen(Node *n, Node *res)
|
||||||
{
|
{
|
||||||
Node *nl, *nr, *r;
|
Node *nl, *nr, *r;
|
||||||
Node n1, n2, n3;
|
Node n1, n2, n3, f0, f1;
|
||||||
int a, w;
|
int a, w;
|
||||||
Prog *p1, *p2, *p3;
|
Prog *p1, *p2, *p3;
|
||||||
Addr addr;
|
Addr addr;
|
||||||
@ -180,6 +180,9 @@ cgen(Node *n, Node *res)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(nl != N && isfloat[n->type->etype] && isfloat[nl->type->etype])
|
||||||
|
goto flt;
|
||||||
|
|
||||||
switch(n->op) {
|
switch(n->op) {
|
||||||
default:
|
default:
|
||||||
dump("cgen", n);
|
dump("cgen", n);
|
||||||
@ -372,6 +375,45 @@ abop: // asymmetric binary
|
|||||||
regfree(&n2);
|
regfree(&n2);
|
||||||
goto ret;
|
goto ret;
|
||||||
|
|
||||||
|
flt: // floating-point.
|
||||||
|
regalloc(&f0, nl->type, res);
|
||||||
|
if(nr != N)
|
||||||
|
goto flt2;
|
||||||
|
|
||||||
|
if(n->op == OMINUS) {
|
||||||
|
nr = nodintconst(-1);
|
||||||
|
convlit(&nr, n->type);
|
||||||
|
n->op = OMUL;
|
||||||
|
goto flt2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// unary
|
||||||
|
cgen(nl, &f0);
|
||||||
|
if(n->op != OCONV && n->op != OPLUS)
|
||||||
|
gins(optoas(n->op, n->type), &f0, &f0);
|
||||||
|
gmove(&f0, res);
|
||||||
|
regfree(&f0);
|
||||||
|
goto ret;
|
||||||
|
|
||||||
|
flt2: // binary
|
||||||
|
if(nl->ullman >= nr->ullman) {
|
||||||
|
cgen(nl, &f0);
|
||||||
|
regalloc(&f1, n->type, N);
|
||||||
|
gmove(&f0, &f1);
|
||||||
|
cgen(nr, &f0);
|
||||||
|
gins(optoas(n->op, n->type), &f1, &f0);
|
||||||
|
} else {
|
||||||
|
cgen(nr, &f0);
|
||||||
|
regalloc(&f1, n->type, N);
|
||||||
|
gmove(&f0, &f1);
|
||||||
|
cgen(nl, &f0);
|
||||||
|
gins(optoas(n->op, n->type), &f1, &f0);
|
||||||
|
}
|
||||||
|
gmove(&f1, res);
|
||||||
|
regfree(&f0);
|
||||||
|
regfree(&f1);
|
||||||
|
goto ret;
|
||||||
|
|
||||||
ret:
|
ret:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ chmod +x $GOBIN/quietgcc
|
|||||||
|
|
||||||
# TODO(kaib): converge with normal build
|
# TODO(kaib): converge with normal build
|
||||||
#for i in lib9 libbio libmach libregexp cmd pkg cmd/ebnflint cmd/godoc cmd/gofmt
|
#for i in lib9 libbio libmach libregexp cmd pkg cmd/ebnflint cmd/godoc cmd/gofmt
|
||||||
for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/syscall pkg/os pkg/unicode pkg/utf8 pkg/bytes pkg/strings pkg/io
|
for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/syscall pkg/os pkg/unicode pkg/utf8 pkg/bytes pkg/strings pkg/io pkg/malloc pkg/time
|
||||||
#for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/malloc pkg/sort pkg/unicode
|
#for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/malloc pkg/sort pkg/unicode
|
||||||
# pkg/hash
|
# pkg/hash
|
||||||
# pkg/math
|
# pkg/math
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
64bit.go
|
64bit.go
|
||||||
|
args.go
|
||||||
assign.go
|
assign.go
|
||||||
bigalg.go
|
bigalg.go
|
||||||
blank1.go
|
blank1.go
|
||||||
@ -10,6 +11,7 @@ bugs/bug193.go
|
|||||||
bugs/bug196.go
|
bugs/bug196.go
|
||||||
bugs/bug198.go
|
bugs/bug198.go
|
||||||
chan/perm.go
|
chan/perm.go
|
||||||
|
char_lit.go
|
||||||
cmp1.go
|
cmp1.go
|
||||||
cmp2.go
|
cmp2.go
|
||||||
cmp3.go
|
cmp3.go
|
||||||
@ -32,6 +34,7 @@ fixedbugs/bug002.go
|
|||||||
fixedbugs/bug003.go
|
fixedbugs/bug003.go
|
||||||
fixedbugs/bug004.go
|
fixedbugs/bug004.go
|
||||||
fixedbugs/bug005.go
|
fixedbugs/bug005.go
|
||||||
|
fixedbugs/bug006.go
|
||||||
fixedbugs/bug007.go
|
fixedbugs/bug007.go
|
||||||
fixedbugs/bug008.go
|
fixedbugs/bug008.go
|
||||||
fixedbugs/bug009.go
|
fixedbugs/bug009.go
|
||||||
@ -47,6 +50,7 @@ fixedbugs/bug022.go
|
|||||||
fixedbugs/bug023.go
|
fixedbugs/bug023.go
|
||||||
fixedbugs/bug024.go
|
fixedbugs/bug024.go
|
||||||
fixedbugs/bug026.go
|
fixedbugs/bug026.go
|
||||||
|
fixedbugs/bug027.go
|
||||||
fixedbugs/bug028.go
|
fixedbugs/bug028.go
|
||||||
fixedbugs/bug030.go
|
fixedbugs/bug030.go
|
||||||
fixedbugs/bug031.go
|
fixedbugs/bug031.go
|
||||||
@ -64,9 +68,11 @@ fixedbugs/bug050.go
|
|||||||
fixedbugs/bug051.go
|
fixedbugs/bug051.go
|
||||||
fixedbugs/bug052.go
|
fixedbugs/bug052.go
|
||||||
fixedbugs/bug053.go
|
fixedbugs/bug053.go
|
||||||
|
fixedbugs/bug054.go
|
||||||
fixedbugs/bug056.go
|
fixedbugs/bug056.go
|
||||||
fixedbugs/bug057.go
|
fixedbugs/bug057.go
|
||||||
fixedbugs/bug058.go
|
fixedbugs/bug058.go
|
||||||
|
fixedbugs/bug060.go
|
||||||
fixedbugs/bug061.go
|
fixedbugs/bug061.go
|
||||||
fixedbugs/bug062.go
|
fixedbugs/bug062.go
|
||||||
fixedbugs/bug063.go
|
fixedbugs/bug063.go
|
||||||
@ -156,6 +162,7 @@ fixedbugs/bug156.go
|
|||||||
fixedbugs/bug157.go
|
fixedbugs/bug157.go
|
||||||
fixedbugs/bug158.go
|
fixedbugs/bug158.go
|
||||||
fixedbugs/bug159.go
|
fixedbugs/bug159.go
|
||||||
|
fixedbugs/bug160.go
|
||||||
fixedbugs/bug161.go
|
fixedbugs/bug161.go
|
||||||
fixedbugs/bug163.go
|
fixedbugs/bug163.go
|
||||||
fixedbugs/bug164.go
|
fixedbugs/bug164.go
|
||||||
@ -178,6 +185,7 @@ fixedbugs/bug182.go
|
|||||||
fixedbugs/bug183.go
|
fixedbugs/bug183.go
|
||||||
fixedbugs/bug185.go
|
fixedbugs/bug185.go
|
||||||
fixedbugs/bug186.go
|
fixedbugs/bug186.go
|
||||||
|
fixedbugs/bug187.go
|
||||||
fixedbugs/bug188.go
|
fixedbugs/bug188.go
|
||||||
fixedbugs/bug189.go
|
fixedbugs/bug189.go
|
||||||
fixedbugs/bug191.go
|
fixedbugs/bug191.go
|
||||||
@ -198,20 +206,26 @@ func1.go
|
|||||||
func2.go
|
func2.go
|
||||||
func3.go
|
func3.go
|
||||||
func4.go
|
func4.go
|
||||||
|
gc.go
|
||||||
gc1.go
|
gc1.go
|
||||||
hashmap.go
|
hashmap.go
|
||||||
helloworld.go
|
helloworld.go
|
||||||
if.go
|
if.go
|
||||||
|
if1.go
|
||||||
import.go
|
import.go
|
||||||
import1.go
|
import1.go
|
||||||
indirect.go
|
indirect.go
|
||||||
indirect1.go
|
indirect1.go
|
||||||
initcomma.go
|
initcomma.go
|
||||||
initializerr.go
|
initializerr.go
|
||||||
|
initsyscall.go
|
||||||
|
int_lit.go
|
||||||
intcvt.go
|
intcvt.go
|
||||||
|
interface/bigdata.go
|
||||||
interface/convert.go
|
interface/convert.go
|
||||||
interface/convert1.go
|
interface/convert1.go
|
||||||
interface/convert2.go
|
interface/convert2.go
|
||||||
|
interface/embed.go
|
||||||
interface/explicit.go
|
interface/explicit.go
|
||||||
interface/fail.go
|
interface/fail.go
|
||||||
interface/pointer.go
|
interface/pointer.go
|
||||||
@ -251,7 +265,10 @@ parentype.go
|
|||||||
printbig.go
|
printbig.go
|
||||||
rename1.go
|
rename1.go
|
||||||
sieve.go
|
sieve.go
|
||||||
|
sigchld.go
|
||||||
simassign.go
|
simassign.go
|
||||||
|
string_lit.go
|
||||||
switch.go
|
switch.go
|
||||||
|
switch1.go
|
||||||
test0.go
|
test0.go
|
||||||
varinit.go
|
varinit.go
|
||||||
|
Loading…
Reference in New Issue
Block a user