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