Commit 6084dcdd authored by Kai Backman's avatar Kai Backman

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
parent d8b461df
......@@ -42,7 +42,7 @@ void
cgen(Node *n, Node *res)
{
Node *nl, *nr, *r;
Node n1, n2, n3;
Node n1, n2, n3, f0, f1;
int a, w;
Prog *p1, *p2, *p3;
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) {
default:
dump("cgen", n);
......@@ -372,6 +375,45 @@ abop: // asymmetric binary
regfree(&n2);
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:
;
}
......
......@@ -21,7 +21,7 @@ chmod +x $GOBIN/quietgcc
# 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/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
# pkg/hash
# pkg/math
......
64bit.go
args.go
assign.go
bigalg.go
blank1.go
......@@ -10,6 +11,7 @@ bugs/bug193.go
bugs/bug196.go
bugs/bug198.go
chan/perm.go
char_lit.go
cmp1.go
cmp2.go
cmp3.go
......@@ -32,6 +34,7 @@ fixedbugs/bug002.go
fixedbugs/bug003.go
fixedbugs/bug004.go
fixedbugs/bug005.go
fixedbugs/bug006.go
fixedbugs/bug007.go
fixedbugs/bug008.go
fixedbugs/bug009.go
......@@ -47,6 +50,7 @@ fixedbugs/bug022.go
fixedbugs/bug023.go
fixedbugs/bug024.go
fixedbugs/bug026.go
fixedbugs/bug027.go
fixedbugs/bug028.go
fixedbugs/bug030.go
fixedbugs/bug031.go
......@@ -64,9 +68,11 @@ fixedbugs/bug050.go
fixedbugs/bug051.go
fixedbugs/bug052.go
fixedbugs/bug053.go
fixedbugs/bug054.go
fixedbugs/bug056.go
fixedbugs/bug057.go
fixedbugs/bug058.go
fixedbugs/bug060.go
fixedbugs/bug061.go
fixedbugs/bug062.go
fixedbugs/bug063.go
......@@ -156,6 +162,7 @@ fixedbugs/bug156.go
fixedbugs/bug157.go
fixedbugs/bug158.go
fixedbugs/bug159.go
fixedbugs/bug160.go
fixedbugs/bug161.go
fixedbugs/bug163.go
fixedbugs/bug164.go
......@@ -178,6 +185,7 @@ fixedbugs/bug182.go
fixedbugs/bug183.go
fixedbugs/bug185.go
fixedbugs/bug186.go
fixedbugs/bug187.go
fixedbugs/bug188.go
fixedbugs/bug189.go
fixedbugs/bug191.go
......@@ -198,20 +206,26 @@ func1.go
func2.go
func3.go
func4.go
gc.go
gc1.go
hashmap.go
helloworld.go
if.go
if1.go
import.go
import1.go
indirect.go
indirect1.go
initcomma.go
initializerr.go
initsyscall.go
int_lit.go
intcvt.go
interface/bigdata.go
interface/convert.go
interface/convert1.go
interface/convert2.go
interface/embed.go
interface/explicit.go
interface/fail.go
interface/pointer.go
......@@ -251,7 +265,10 @@ parentype.go
printbig.go
rename1.go
sieve.go
sigchld.go
simassign.go
string_lit.go
switch.go
switch1.go
test0.go
varinit.go
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment