xref: /plan9-contrib/sys/src/cmd/4c/machcap.c (revision f8bc6aaf8056e137bcdfb6117a990ac3eff62cc9)
1*f8bc6aafSDavid du Colombier #include "gc.h"
2*f8bc6aafSDavid du Colombier 
3*f8bc6aafSDavid du Colombier int
machcap(Node * n)4*f8bc6aafSDavid du Colombier machcap(Node *n)
5*f8bc6aafSDavid du Colombier {
6*f8bc6aafSDavid du Colombier 
7*f8bc6aafSDavid du Colombier 	if(n == Z)
8*f8bc6aafSDavid du Colombier 		return 1;	/* test */
9*f8bc6aafSDavid du Colombier 
10*f8bc6aafSDavid du Colombier 	switch(n->op) {
11*f8bc6aafSDavid du Colombier 	case OMUL:
12*f8bc6aafSDavid du Colombier 	case OLMUL:
13*f8bc6aafSDavid du Colombier 	case OASMUL:
14*f8bc6aafSDavid du Colombier 	case OASLMUL:
15*f8bc6aafSDavid du Colombier 		if(typechlv[n->type->etype])
16*f8bc6aafSDavid du Colombier 			return 1;
17*f8bc6aafSDavid du Colombier 		break;
18*f8bc6aafSDavid du Colombier 
19*f8bc6aafSDavid du Colombier 	case OADD:
20*f8bc6aafSDavid du Colombier 	case OAND:
21*f8bc6aafSDavid du Colombier 	case OOR:
22*f8bc6aafSDavid du Colombier 	case OSUB:
23*f8bc6aafSDavid du Colombier 	case OXOR:
24*f8bc6aafSDavid du Colombier 	case OASHL:
25*f8bc6aafSDavid du Colombier 	case OLSHR:
26*f8bc6aafSDavid du Colombier 	case OASHR:
27*f8bc6aafSDavid du Colombier 		if(typechlv[n->left->type->etype])
28*f8bc6aafSDavid du Colombier 			return 1;
29*f8bc6aafSDavid du Colombier 		break;
30*f8bc6aafSDavid du Colombier 
31*f8bc6aafSDavid du Colombier 	case OCAST:
32*f8bc6aafSDavid du Colombier 		return 1;
33*f8bc6aafSDavid du Colombier 
34*f8bc6aafSDavid du Colombier 	case OCOND:
35*f8bc6aafSDavid du Colombier 	case OCOMMA:
36*f8bc6aafSDavid du Colombier 	case OLIST:
37*f8bc6aafSDavid du Colombier 	case OANDAND:
38*f8bc6aafSDavid du Colombier 	case OOROR:
39*f8bc6aafSDavid du Colombier 	case ONOT:
40*f8bc6aafSDavid du Colombier 		return 1;
41*f8bc6aafSDavid du Colombier 
42*f8bc6aafSDavid du Colombier 	case OASADD:
43*f8bc6aafSDavid du Colombier 	case OASSUB:
44*f8bc6aafSDavid du Colombier 	case OASAND:
45*f8bc6aafSDavid du Colombier 	case OASOR:
46*f8bc6aafSDavid du Colombier 	case OASXOR:
47*f8bc6aafSDavid du Colombier 		return 1;
48*f8bc6aafSDavid du Colombier 
49*f8bc6aafSDavid du Colombier 	case OASASHL:
50*f8bc6aafSDavid du Colombier 	case OASASHR:
51*f8bc6aafSDavid du Colombier 	case OASLSHR:
52*f8bc6aafSDavid du Colombier 		return 1;
53*f8bc6aafSDavid du Colombier 
54*f8bc6aafSDavid du Colombier 	case OPOSTINC:
55*f8bc6aafSDavid du Colombier 	case OPOSTDEC:
56*f8bc6aafSDavid du Colombier 	case OPREINC:
57*f8bc6aafSDavid du Colombier 	case OPREDEC:
58*f8bc6aafSDavid du Colombier 		return 1;
59*f8bc6aafSDavid du Colombier 
60*f8bc6aafSDavid du Colombier 	case OEQ:
61*f8bc6aafSDavid du Colombier 	case ONE:
62*f8bc6aafSDavid du Colombier 	case OLE:
63*f8bc6aafSDavid du Colombier 	case OGT:
64*f8bc6aafSDavid du Colombier 	case OLT:
65*f8bc6aafSDavid du Colombier 	case OGE:
66*f8bc6aafSDavid du Colombier 	case OHI:
67*f8bc6aafSDavid du Colombier 	case OHS:
68*f8bc6aafSDavid du Colombier 	case OLO:
69*f8bc6aafSDavid du Colombier 	case OLS:
70*f8bc6aafSDavid du Colombier 		return 1;
71*f8bc6aafSDavid du Colombier 
72*f8bc6aafSDavid du Colombier 	case OCOM:
73*f8bc6aafSDavid du Colombier 	case ONEG:
74*f8bc6aafSDavid du Colombier 		break;
75*f8bc6aafSDavid du Colombier 	}
76*f8bc6aafSDavid du Colombier 	return 0;
77*f8bc6aafSDavid du Colombier }
78