2 #define X(NMemArgs, SetsZeroFlag, LeavesFlags)
5 #ifndef V /* riscv64 */
10 #define P(CanFold, HasId, IdVal)
14 #define T(a,b,c,d,e,f,g,h) { \
15 {[Kw]=K##a, [Kl]=K##b, [Ks]=K##c, [Kd]=K##d}, \
16 {[Kw]=K##e, [Kl]=K##f, [Ks]=K##g, [Kd]=K##h} \
20 /*********************/
21 /* PUBLIC OPERATIONS */
22 /*********************/
24 /* Arithmetic and Bits */
25 O(add
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(1,1,0)) X(2,1,0) V(1)
26 O(sub
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(1,1,0)) X(2,1,0) V(0)
27 O(neg
, T(w
,l
,s
,d
, x
,x
,x
,x
), P(1,0,0)) X(1,1,0) V(0)
28 O(div
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(1,1,1)) X(0,0,0) V(0)
29 O(rem
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,0,0)) X(0,0,0) V(0)
30 O(udiv
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,1,1)) X(0,0,0) V(0)
31 O(urem
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,0,0)) X(0,0,0) V(0)
32 O(mul
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(1,1,1)) X(2,0,0) V(0)
33 O(and, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,0,0)) X(2,1,0) V(1)
34 O(or, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,1,0)) X(2,1,0) V(1)
35 O(xor, T(w
,l
,e
,e
, w
,l
,e
,e
), P(1,1,0)) X(2,1,0) V(1)
36 O(sar
, T(w
,l
,e
,e
, w
,w
,e
,e
), P(1,1,0)) X(1,1,0) V(1)
37 O(shr
, T(w
,l
,e
,e
, w
,w
,e
,e
), P(1,1,0)) X(1,1,0) V(1)
38 O(shl
, T(w
,l
,e
,e
, w
,w
,e
,e
), P(1,1,0)) X(1,1,0) V(1)
41 O(ceqw
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
42 O(cnew
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
43 O(csgew
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
44 O(csgtw
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
45 O(cslew
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
46 O(csltw
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(1)
47 O(cugew
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
48 O(cugtw
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
49 O(culew
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
50 O(cultw
, T(w
,w
,e
,e
, w
,w
,e
,e
), P(1,0,0)) X(0,1,0) V(1)
52 O(ceql
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
53 O(cnel
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
54 O(csgel
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
55 O(csgtl
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
56 O(cslel
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
57 O(csltl
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(1)
58 O(cugel
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
59 O(cugtl
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
60 O(culel
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
61 O(cultl
, T(l
,l
,e
,e
, l
,l
,e
,e
), P(1,0,0)) X(0,1,0) V(1)
63 O(ceqs
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
64 O(cges
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
65 O(cgts
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
66 O(cles
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
67 O(clts
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
68 O(cnes
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
69 O(cos
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
70 O(cuos
, T(s
,s
,e
,e
, s
,s
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
72 O(ceqd
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
73 O(cged
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
74 O(cgtd
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
75 O(cled
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
76 O(cltd
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
77 O(cned
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
78 O(cod
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
79 O(cuod
, T(d
,d
,e
,e
, d
,d
,e
,e
), P(1,0,0)) X(0,1,0) V(0)
82 O(storeb
, T(w
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
83 O(storeh
, T(w
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
84 O(storew
, T(w
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
85 O(storel
, T(l
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
86 O(stores
, T(s
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
87 O(stored
, T(d
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
89 O(loadsb
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
90 O(loadub
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
91 O(loadsh
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
92 O(loaduh
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
93 O(loadsw
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
94 O(loaduw
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
95 O(load
, T(m
,m
,m
,m
, x
,x
,x
,x
), P(0,0,0)) X(0,0,1) V(0)
97 /* Extensions and Truncations */
98 O(extsb
, T(w
,w
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
99 O(extub
, T(w
,w
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
100 O(extsh
, T(w
,w
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
101 O(extuh
, T(w
,w
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
102 O(extsw
, T(e
,w
,e
,e
, e
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
103 O(extuw
, T(e
,w
,e
,e
, e
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
105 O(exts
, T(e
,e
,e
,s
, e
,e
,e
,x
), P(1,0,0)) X(0,0,1) V(0)
106 O(truncd
, T(e
,e
,d
,e
, e
,e
,x
,e
), P(1,0,0)) X(0,0,1) V(0)
107 O(stosi
, T(s
,s
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
108 O(stoui
, T(s
,s
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
109 O(dtosi
, T(d
,d
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
110 O(dtoui
, T(d
,d
,e
,e
, x
,x
,e
,e
), P(1,0,0)) X(0,0,1) V(0)
111 O(swtof
, T(e
,e
,w
,w
, e
,e
,x
,x
), P(1,0,0)) X(0,0,1) V(0)
112 O(uwtof
, T(e
,e
,w
,w
, e
,e
,x
,x
), P(1,0,0)) X(0,0,1) V(0)
113 O(sltof
, T(e
,e
,l
,l
, e
,e
,x
,x
), P(1,0,0)) X(0,0,1) V(0)
114 O(ultof
, T(e
,e
,l
,l
, e
,e
,x
,x
), P(1,0,0)) X(0,0,1) V(0)
115 O(cast
, T(s
,d
,w
,l
, x
,x
,x
,x
), P(1,0,0)) X(0,0,1) V(0)
117 /* Stack Allocation */
118 O(alloc4
, T(e
,l
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
119 O(alloc8
, T(e
,l
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
120 O(alloc16
, T(e
,l
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
122 /* Variadic Function Helpers */
123 O(vaarg
, T(m
,m
,m
,m
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
124 O(vastart
, T(m
,e
,e
,e
, x
,e
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
126 O(copy
, T(w
,l
,s
,d
, x
,x
,x
,x
), P(0,0,0)) X(0,0,1) V(0)
129 O(dbgloc
, T(w
,e
,e
,e
, w
,e
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
131 /****************************************/
132 /* INTERNAL OPERATIONS (keep nop first) */
133 /****************************************/
135 /* Miscellaneous and Architecture-Specific Operations */
136 O(nop
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,1) V(0)
137 O(addr
, T(m
,m
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
138 O(blit0
, T(m
,e
,e
,e
, m
,e
,e
,e
), P(0,0,0)) X(0,1,0) V(0)
139 O(blit1
, T(w
,e
,e
,e
, x
,e
,e
,e
), P(0,0,0)) X(0,1,0) V(0)
140 O(swap
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(0,0,0)) X(1,0,0) V(0)
141 O(sign
, T(w
,l
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
142 O(salloc
, T(e
,l
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
143 O(xidiv
, T(w
,l
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(1,0,0) V(0)
144 O(xdiv
, T(w
,l
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(1,0,0) V(0)
145 O(xcmp
, T(w
,l
,s
,d
, w
,l
,s
,d
), P(0,0,0)) X(1,1,0) V(0)
146 O(xtest
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(0,0,0)) X(1,1,0) V(0)
147 O(acmp
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
148 O(acmn
, T(w
,l
,e
,e
, w
,l
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
149 O(afcmp
, T(e
,e
,s
,d
, e
,e
,s
,d
), P(0,0,0)) X(0,0,0) V(0)
150 O(reqz
, T(w
,l
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
151 O(rnez
, T(w
,l
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
153 /* Arguments, Parameters, and Calls */
154 O(par
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
155 O(parsb
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
156 O(parub
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
157 O(parsh
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
158 O(paruh
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
159 O(parc
, T(e
,x
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
160 O(pare
, T(e
,x
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
161 O(arg
, T(w
,l
,s
,d
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
162 O(argsb
, T(w
,e
,e
,e
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
163 O(argub
, T(w
,e
,e
,e
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
164 O(argsh
, T(w
,e
,e
,e
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
165 O(arguh
, T(w
,e
,e
,e
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
166 O(argc
, T(e
,x
,e
,e
, e
,l
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
167 O(arge
, T(e
,l
,e
,e
, e
,x
,e
,e
), P(0,0,0)) X(0,0,0) V(0)
168 O(argv
, T(x
,x
,x
,x
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
169 O(call
, T(m
,m
,m
,m
, x
,x
,x
,x
), P(0,0,0)) X(0,0,0) V(0)
172 O(flagieq
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
173 O(flagine
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
174 O(flagisge
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
175 O(flagisgt
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
176 O(flagisle
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
177 O(flagislt
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
178 O(flagiuge
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
179 O(flagiugt
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
180 O(flagiule
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
181 O(flagiult
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
182 O(flagfeq
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
183 O(flagfge
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
184 O(flagfgt
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
185 O(flagfle
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
186 O(flagflt
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
187 O(flagfne
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
188 O(flagfo
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)
189 O(flagfuo
, T(x
,x
,e
,e
, x
,x
,e
,e
), P(0,0,0)) X(0,0,1) V(0)