]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/5c/machcap.c
disk/format: implement long name support
[plan9front.git] / sys / src / cmd / 5c / machcap.c
1 #include "gc.h"
2
3 int
4 machcap(Node *n)
5 {
6         if(n == Z)
7                 return 0;       /* test */
8         switch(n->op) {
9         case OASADD:
10         case OASSUB:
11         case OASAND:
12         case OASXOR:
13         case OASOR:
14         case OADD:
15         case OSUB:
16         case OAND:
17         case OXOR:
18         case OOR:
19                 if(typev[n->type->etype] && typev[n->left->type->etype] && typev[n->right->type->etype])
20                         return 1;
21                 break;
22
23         case OMUL:
24         case OLMUL:
25                 if(typev[n->type->etype] && typeil[n->left->type->etype] && typeil[n->right->type->etype]
26                 && typeu[n->type->etype] == typeu[n->left->type->etype]
27                 && typeu[n->type->etype] == typeu[n->right->type->etype])
28                         return 1;
29                 break;
30
31         case OASASHL:
32         case OASASHR:
33         case OASLSHR:
34         case OASHL:
35         case OASHR:
36         case OLSHR:
37                 if(typev[n->type->etype] && typev[n->left->type->etype] && n->right->op == OCONST)
38                         return 1;
39                 break;
40
41         case OCAST:
42                 if(typeilp[n->type->etype] && typev[n->left->type->etype])
43                         return 1;
44                 if(typev[n->type->etype] && typeilp[n->left->type->etype])
45                         return 1;
46                 break;
47         }
48         return 0;
49 }