annotate llvm/docs/GlobalISel/GenericOpcode.rst @ 201:a96fbbdf2d0f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Jun 2021 21:07:06 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1
anatofuz
parents:
diff changeset
2 .. _gmir-opcodes:
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 Generic Opcodes
anatofuz
parents:
diff changeset
5 ===============
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 .. contents::
anatofuz
parents:
diff changeset
8 :local:
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 .. note::
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 This documentation does not yet fully account for vectors. Many of the
anatofuz
parents:
diff changeset
13 scalar/integer/floating-point operations can also take vectors.
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 Constants
anatofuz
parents:
diff changeset
16 ---------
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 G_IMPLICIT_DEF
anatofuz
parents:
diff changeset
19 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 An undefined value.
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 .. code-block:: none
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 %0:_(s32) = G_IMPLICIT_DEF
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 G_CONSTANT
anatofuz
parents:
diff changeset
28 ^^^^^^^^^^
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 An integer constant.
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 .. code-block:: none
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 %0:_(s32) = G_CONSTANT i32 1
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 G_FCONSTANT
anatofuz
parents:
diff changeset
37 ^^^^^^^^^^^
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 A floating point constant.
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 .. code-block:: none
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 %0:_(s32) = G_FCONSTANT float 1.0
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 G_FRAME_INDEX
anatofuz
parents:
diff changeset
46 ^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 The address of an object in the stack frame.
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 .. code-block:: none
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 %1:_(p0) = G_FRAME_INDEX %stack.0.ptr0
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 G_GLOBAL_VALUE
anatofuz
parents:
diff changeset
55 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 The address of a global value.
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 .. code-block:: none
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 %0(p0) = G_GLOBAL_VALUE @var_local
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 G_BLOCK_ADDR
anatofuz
parents:
diff changeset
64 ^^^^^^^^^^^^
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 The address of a basic block.
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 .. code-block:: none
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 %0:_(p0) = G_BLOCK_ADDR blockaddress(@test_blockaddress, %ir-block.block)
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 Integer Extension and Truncation
anatofuz
parents:
diff changeset
73 --------------------------------
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 G_ANYEXT
anatofuz
parents:
diff changeset
76 ^^^^^^^^
anatofuz
parents:
diff changeset
77
anatofuz
parents:
diff changeset
78 Extend the underlying scalar type of an operation, leaving the high bits
anatofuz
parents:
diff changeset
79 unspecified.
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 .. code-block:: none
anatofuz
parents:
diff changeset
82
anatofuz
parents:
diff changeset
83 %1:_(s32) = G_ANYEXT %0:_(s16)
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 G_SEXT
anatofuz
parents:
diff changeset
86 ^^^^^^
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 Sign extend the underlying scalar type of an operation, copying the sign bit
anatofuz
parents:
diff changeset
89 into the newly-created space.
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 .. code-block:: none
anatofuz
parents:
diff changeset
92
anatofuz
parents:
diff changeset
93 %1:_(s32) = G_SEXT %0:_(s16)
anatofuz
parents:
diff changeset
94
anatofuz
parents:
diff changeset
95 G_SEXT_INREG
anatofuz
parents:
diff changeset
96 ^^^^^^^^^^^^
anatofuz
parents:
diff changeset
97
anatofuz
parents:
diff changeset
98 Sign extend the value from an arbitrary bit position, copying the sign bit
anatofuz
parents:
diff changeset
99 into all bits above it. This is equivalent to a shl + ashr pair with an
anatofuz
parents:
diff changeset
100 appropriate shift amount. $sz is an immediate (MachineOperand::isImm()
anatofuz
parents:
diff changeset
101 returns true) to allow targets to have some bitwidths legal and others
anatofuz
parents:
diff changeset
102 lowered. This opcode is particularly useful if the target has sign-extension
anatofuz
parents:
diff changeset
103 instructions that are cheaper than the constituent shifts as the optimizer is
anatofuz
parents:
diff changeset
104 able to make decisions on whether it's better to hang on to the G_SEXT_INREG
anatofuz
parents:
diff changeset
105 or to lower it and optimize the individual shifts.
anatofuz
parents:
diff changeset
106
anatofuz
parents:
diff changeset
107 .. code-block:: none
anatofuz
parents:
diff changeset
108
anatofuz
parents:
diff changeset
109 %1:_(s32) = G_SEXT_INREG %0:_(s32), 16
anatofuz
parents:
diff changeset
110
anatofuz
parents:
diff changeset
111 G_ZEXT
anatofuz
parents:
diff changeset
112 ^^^^^^
anatofuz
parents:
diff changeset
113
anatofuz
parents:
diff changeset
114 Zero extend the underlying scalar type of an operation, putting zero bits
anatofuz
parents:
diff changeset
115 into the newly-created space.
anatofuz
parents:
diff changeset
116
anatofuz
parents:
diff changeset
117 .. code-block:: none
anatofuz
parents:
diff changeset
118
anatofuz
parents:
diff changeset
119 %1:_(s32) = G_ZEXT %0:_(s16)
anatofuz
parents:
diff changeset
120
anatofuz
parents:
diff changeset
121 G_TRUNC
anatofuz
parents:
diff changeset
122 ^^^^^^^
anatofuz
parents:
diff changeset
123
anatofuz
parents:
diff changeset
124 Truncate the underlying scalar type of an operation. This is equivalent to
anatofuz
parents:
diff changeset
125 G_EXTRACT for scalar types, but acts elementwise on vectors.
anatofuz
parents:
diff changeset
126
anatofuz
parents:
diff changeset
127 .. code-block:: none
anatofuz
parents:
diff changeset
128
anatofuz
parents:
diff changeset
129 %1:_(s16) = G_TRUNC %0:_(s32)
anatofuz
parents:
diff changeset
130
anatofuz
parents:
diff changeset
131 Type Conversions
anatofuz
parents:
diff changeset
132 ----------------
anatofuz
parents:
diff changeset
133
anatofuz
parents:
diff changeset
134 G_INTTOPTR
anatofuz
parents:
diff changeset
135 ^^^^^^^^^^
anatofuz
parents:
diff changeset
136
anatofuz
parents:
diff changeset
137 Convert an integer to a pointer.
anatofuz
parents:
diff changeset
138
anatofuz
parents:
diff changeset
139 .. code-block:: none
anatofuz
parents:
diff changeset
140
anatofuz
parents:
diff changeset
141 %1:_(p0) = G_INTTOPTR %0:_(s32)
anatofuz
parents:
diff changeset
142
anatofuz
parents:
diff changeset
143 G_PTRTOINT
anatofuz
parents:
diff changeset
144 ^^^^^^^^^^
anatofuz
parents:
diff changeset
145
anatofuz
parents:
diff changeset
146 Convert a pointer to an integer.
anatofuz
parents:
diff changeset
147
anatofuz
parents:
diff changeset
148 .. code-block:: none
anatofuz
parents:
diff changeset
149
anatofuz
parents:
diff changeset
150 %1:_(s32) = G_PTRTOINT %0:_(p0)
anatofuz
parents:
diff changeset
151
anatofuz
parents:
diff changeset
152 G_BITCAST
anatofuz
parents:
diff changeset
153 ^^^^^^^^^
anatofuz
parents:
diff changeset
154
anatofuz
parents:
diff changeset
155 Reinterpret a value as a new type. This is usually done without changing any
anatofuz
parents:
diff changeset
156 bits but this is not always the case due a sublety in the definition of the
anatofuz
parents:
diff changeset
157 :ref:`LLVM-IR Bitcast Instruction <i_bitcast>`.
anatofuz
parents:
diff changeset
158
anatofuz
parents:
diff changeset
159 .. code-block:: none
anatofuz
parents:
diff changeset
160
anatofuz
parents:
diff changeset
161 %1:_(s64) = G_BITCAST %0:_(<2 x s32>)
anatofuz
parents:
diff changeset
162
anatofuz
parents:
diff changeset
163 G_ADDRSPACE_CAST
anatofuz
parents:
diff changeset
164 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
165
anatofuz
parents:
diff changeset
166 Convert a pointer to an address space to a pointer to another address space.
anatofuz
parents:
diff changeset
167
anatofuz
parents:
diff changeset
168 .. code-block:: none
anatofuz
parents:
diff changeset
169
anatofuz
parents:
diff changeset
170 %1:_(p1) = G_ADDRSPACE_CAST %0:_(p0)
anatofuz
parents:
diff changeset
171
anatofuz
parents:
diff changeset
172 .. caution::
anatofuz
parents:
diff changeset
173
anatofuz
parents:
diff changeset
174 :ref:`i_addrspacecast` doesn't mention what happens if the cast is simply
anatofuz
parents:
diff changeset
175 invalid (i.e. if the address spaces are disjoint).
anatofuz
parents:
diff changeset
176
anatofuz
parents:
diff changeset
177 Scalar Operations
anatofuz
parents:
diff changeset
178 -----------------
anatofuz
parents:
diff changeset
179
anatofuz
parents:
diff changeset
180 G_EXTRACT
anatofuz
parents:
diff changeset
181 ^^^^^^^^^
anatofuz
parents:
diff changeset
182
anatofuz
parents:
diff changeset
183 Extract a register of the specified size, starting from the block given by
anatofuz
parents:
diff changeset
184 index. This will almost certainly be mapped to sub-register COPYs after
anatofuz
parents:
diff changeset
185 register banks have been selected.
anatofuz
parents:
diff changeset
186
anatofuz
parents:
diff changeset
187 G_INSERT
anatofuz
parents:
diff changeset
188 ^^^^^^^^
anatofuz
parents:
diff changeset
189
anatofuz
parents:
diff changeset
190 Insert a smaller register into a larger one at the specified bit-index.
anatofuz
parents:
diff changeset
191
anatofuz
parents:
diff changeset
192 G_MERGE_VALUES
anatofuz
parents:
diff changeset
193 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
194
anatofuz
parents:
diff changeset
195 Concatenate multiple registers of the same size into a wider register.
anatofuz
parents:
diff changeset
196 The input operands are always ordered from lowest bits to highest:
anatofuz
parents:
diff changeset
197
anatofuz
parents:
diff changeset
198 .. code-block:: none
anatofuz
parents:
diff changeset
199
anatofuz
parents:
diff changeset
200 %0:(s32) = G_MERGE_VALUES %bits_0_7:(s8), %bits_8_15:(s8),
anatofuz
parents:
diff changeset
201 %bits_16_23:(s8), %bits_24_31:(s8)
anatofuz
parents:
diff changeset
202
anatofuz
parents:
diff changeset
203 G_UNMERGE_VALUES
anatofuz
parents:
diff changeset
204 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
205
anatofuz
parents:
diff changeset
206 Extract multiple registers of the specified size, starting from blocks given by
anatofuz
parents:
diff changeset
207 indexes. This will almost certainly be mapped to sub-register COPYs after
anatofuz
parents:
diff changeset
208 register banks have been selected.
anatofuz
parents:
diff changeset
209 The output operands are always ordered from lowest bits to highest:
anatofuz
parents:
diff changeset
210
anatofuz
parents:
diff changeset
211 .. code-block:: none
anatofuz
parents:
diff changeset
212
anatofuz
parents:
diff changeset
213 %bits_0_7:(s8), %bits_8_15:(s8),
anatofuz
parents:
diff changeset
214 %bits_16_23:(s8), %bits_24_31:(s8) = G_UNMERGE_VALUES %0:(s32)
anatofuz
parents:
diff changeset
215
anatofuz
parents:
diff changeset
216 G_BSWAP
anatofuz
parents:
diff changeset
217 ^^^^^^^
anatofuz
parents:
diff changeset
218
anatofuz
parents:
diff changeset
219 Reverse the order of the bytes in a scalar.
anatofuz
parents:
diff changeset
220
anatofuz
parents:
diff changeset
221 .. code-block:: none
anatofuz
parents:
diff changeset
222
anatofuz
parents:
diff changeset
223 %1:_(s32) = G_BSWAP %0:_(s32)
anatofuz
parents:
diff changeset
224
anatofuz
parents:
diff changeset
225 G_BITREVERSE
anatofuz
parents:
diff changeset
226 ^^^^^^^^^^^^
anatofuz
parents:
diff changeset
227
anatofuz
parents:
diff changeset
228 Reverse the order of the bits in a scalar.
anatofuz
parents:
diff changeset
229
anatofuz
parents:
diff changeset
230 .. code-block:: none
anatofuz
parents:
diff changeset
231
anatofuz
parents:
diff changeset
232 %1:_(s32) = G_BITREVERSE %0:_(s32)
anatofuz
parents:
diff changeset
233
anatofuz
parents:
diff changeset
234 Integer Operations
anatofuz
parents:
diff changeset
235 -------------------
anatofuz
parents:
diff changeset
236
anatofuz
parents:
diff changeset
237 G_ADD, G_SUB, G_MUL, G_AND, G_OR, G_XOR, G_SDIV, G_UDIV, G_SREM, G_UREM
anatofuz
parents:
diff changeset
238 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
239
anatofuz
parents:
diff changeset
240 These each perform their respective integer arithmetic on a scalar.
anatofuz
parents:
diff changeset
241
anatofuz
parents:
diff changeset
242 .. code-block:: none
anatofuz
parents:
diff changeset
243
anatofuz
parents:
diff changeset
244 %2:_(s32) = G_ADD %0:_(s32), %1:_(s32)
anatofuz
parents:
diff changeset
245
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
246 G_SADDSAT, G_UADDSAT, G_SSUBSAT, G_USUBSAT
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
247 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
248
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
249 Signed and unsigned addition and subtraction with saturation.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
250
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
251 .. code-block:: none
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
252
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
253 %2:_(s32) = G_SADDSAT %0:_(s32), %1:_(s32)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
254
150
anatofuz
parents:
diff changeset
255 G_SHL, G_LSHR, G_ASHR
anatofuz
parents:
diff changeset
256 ^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
257
anatofuz
parents:
diff changeset
258 Shift the bits of a scalar left or right inserting zeros (sign-bit for G_ASHR).
anatofuz
parents:
diff changeset
259
anatofuz
parents:
diff changeset
260 G_ICMP
anatofuz
parents:
diff changeset
261 ^^^^^^
anatofuz
parents:
diff changeset
262
anatofuz
parents:
diff changeset
263 Perform integer comparison producing non-zero (true) or zero (false). It's
anatofuz
parents:
diff changeset
264 target specific whether a true value is 1, ~0U, or some other non-zero value.
anatofuz
parents:
diff changeset
265
anatofuz
parents:
diff changeset
266 G_SELECT
anatofuz
parents:
diff changeset
267 ^^^^^^^^
anatofuz
parents:
diff changeset
268
anatofuz
parents:
diff changeset
269 Select between two values depending on a zero/non-zero value.
anatofuz
parents:
diff changeset
270
anatofuz
parents:
diff changeset
271 .. code-block:: none
anatofuz
parents:
diff changeset
272
anatofuz
parents:
diff changeset
273 %5:_(s32) = G_SELECT %4(s1), %6, %2
anatofuz
parents:
diff changeset
274
anatofuz
parents:
diff changeset
275 G_PTR_ADD
anatofuz
parents:
diff changeset
276 ^^^^^^^^^
anatofuz
parents:
diff changeset
277
anatofuz
parents:
diff changeset
278 Add a scalar offset in addressible units to a pointer. Addressible units are
anatofuz
parents:
diff changeset
279 typically bytes but this may vary between targets.
anatofuz
parents:
diff changeset
280
anatofuz
parents:
diff changeset
281 .. code-block:: none
anatofuz
parents:
diff changeset
282
anatofuz
parents:
diff changeset
283 %1:_(p0) = G_PTR_ADD %0:_(p0), %1:_(s32)
anatofuz
parents:
diff changeset
284
anatofuz
parents:
diff changeset
285 .. caution::
anatofuz
parents:
diff changeset
286
anatofuz
parents:
diff changeset
287 There are currently no in-tree targets that use this with addressable units
anatofuz
parents:
diff changeset
288 not equal to 8 bit.
anatofuz
parents:
diff changeset
289
anatofuz
parents:
diff changeset
290 G_PTR_MASK
anatofuz
parents:
diff changeset
291 ^^^^^^^^^^
anatofuz
parents:
diff changeset
292
anatofuz
parents:
diff changeset
293 Zero the least significant N bits of a pointer.
anatofuz
parents:
diff changeset
294
anatofuz
parents:
diff changeset
295 .. code-block:: none
anatofuz
parents:
diff changeset
296
anatofuz
parents:
diff changeset
297 %1:_(p0) = G_PTR_MASK %0, 3
anatofuz
parents:
diff changeset
298
anatofuz
parents:
diff changeset
299 G_SMIN, G_SMAX, G_UMIN, G_UMAX
anatofuz
parents:
diff changeset
300 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
301
anatofuz
parents:
diff changeset
302 Take the minimum/maximum of two values.
anatofuz
parents:
diff changeset
303
anatofuz
parents:
diff changeset
304 .. code-block:: none
anatofuz
parents:
diff changeset
305
anatofuz
parents:
diff changeset
306 %5:_(s32) = G_SMIN %6, %2
anatofuz
parents:
diff changeset
307
anatofuz
parents:
diff changeset
308 G_UADDO, G_SADDO, G_USUBO, G_SSUBO, G_SMULO, G_UMULO
anatofuz
parents:
diff changeset
309 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
310
anatofuz
parents:
diff changeset
311 Perform the requested arithmetic and produce a carry output in addition to the
anatofuz
parents:
diff changeset
312 normal result.
anatofuz
parents:
diff changeset
313
anatofuz
parents:
diff changeset
314 .. code-block:: none
anatofuz
parents:
diff changeset
315
anatofuz
parents:
diff changeset
316 %3:_(s32), %4:_(s1) = G_UADDO %0, %1
anatofuz
parents:
diff changeset
317
anatofuz
parents:
diff changeset
318 G_UADDE, G_SADDE, G_USUBE, G_SSUBE
anatofuz
parents:
diff changeset
319 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
320
anatofuz
parents:
diff changeset
321 Perform the requested arithmetic and consume a carry input in addition to the
anatofuz
parents:
diff changeset
322 normal input. Also produce a carry output in addition to the normal result.
anatofuz
parents:
diff changeset
323
anatofuz
parents:
diff changeset
324 .. code-block:: none
anatofuz
parents:
diff changeset
325
anatofuz
parents:
diff changeset
326 %4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3:_(s1)
anatofuz
parents:
diff changeset
327
anatofuz
parents:
diff changeset
328 G_UMULH, G_SMULH
anatofuz
parents:
diff changeset
329 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
330
anatofuz
parents:
diff changeset
331 Multiply two numbers at twice the incoming bit width (signed) and return
anatofuz
parents:
diff changeset
332 the high half of the result.
anatofuz
parents:
diff changeset
333
anatofuz
parents:
diff changeset
334 .. code-block:: none
anatofuz
parents:
diff changeset
335
anatofuz
parents:
diff changeset
336 %3:_(s32) = G_UMULH %0, %1
anatofuz
parents:
diff changeset
337
anatofuz
parents:
diff changeset
338 G_CTLZ, G_CTTZ, G_CTPOP
anatofuz
parents:
diff changeset
339 ^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
340
anatofuz
parents:
diff changeset
341 Count leading zeros, trailing zeros, or number of set bits.
anatofuz
parents:
diff changeset
342
anatofuz
parents:
diff changeset
343 .. code-block:: none
anatofuz
parents:
diff changeset
344
anatofuz
parents:
diff changeset
345 %2:_(s33) = G_CTLZ_ZERO_UNDEF %1
anatofuz
parents:
diff changeset
346 %2:_(s33) = G_CTTZ_ZERO_UNDEF %1
anatofuz
parents:
diff changeset
347 %2:_(s33) = G_CTPOP %1
anatofuz
parents:
diff changeset
348
anatofuz
parents:
diff changeset
349 G_CTLZ_ZERO_UNDEF, G_CTTZ_ZERO_UNDEF
anatofuz
parents:
diff changeset
350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
351
anatofuz
parents:
diff changeset
352 Count leading zeros or trailing zeros. If the value is zero then the result is
anatofuz
parents:
diff changeset
353 undefined.
anatofuz
parents:
diff changeset
354
anatofuz
parents:
diff changeset
355 .. code-block:: none
anatofuz
parents:
diff changeset
356
anatofuz
parents:
diff changeset
357 %2:_(s33) = G_CTLZ_ZERO_UNDEF %1
anatofuz
parents:
diff changeset
358 %2:_(s33) = G_CTTZ_ZERO_UNDEF %1
anatofuz
parents:
diff changeset
359
anatofuz
parents:
diff changeset
360 Floating Point Operations
anatofuz
parents:
diff changeset
361 -------------------------
anatofuz
parents:
diff changeset
362
anatofuz
parents:
diff changeset
363 G_FCMP
anatofuz
parents:
diff changeset
364 ^^^^^^
anatofuz
parents:
diff changeset
365
anatofuz
parents:
diff changeset
366 Perform floating point comparison producing non-zero (true) or zero
anatofuz
parents:
diff changeset
367 (false). It's target specific whether a true value is 1, ~0U, or some other
anatofuz
parents:
diff changeset
368 non-zero value.
anatofuz
parents:
diff changeset
369
anatofuz
parents:
diff changeset
370 G_FNEG
anatofuz
parents:
diff changeset
371 ^^^^^^
anatofuz
parents:
diff changeset
372
anatofuz
parents:
diff changeset
373 Floating point negation.
anatofuz
parents:
diff changeset
374
anatofuz
parents:
diff changeset
375 G_FPEXT
anatofuz
parents:
diff changeset
376 ^^^^^^^
anatofuz
parents:
diff changeset
377
anatofuz
parents:
diff changeset
378 Convert a floating point value to a larger type.
anatofuz
parents:
diff changeset
379
anatofuz
parents:
diff changeset
380 G_FPTRUNC
anatofuz
parents:
diff changeset
381 ^^^^^^^^^
anatofuz
parents:
diff changeset
382
anatofuz
parents:
diff changeset
383 Convert a floating point value to a narrower type.
anatofuz
parents:
diff changeset
384
anatofuz
parents:
diff changeset
385 G_FPTOSI, G_FPTOUI, G_SITOFP, G_UITOFP
anatofuz
parents:
diff changeset
386 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
387
anatofuz
parents:
diff changeset
388 Convert between integer and floating point.
anatofuz
parents:
diff changeset
389
anatofuz
parents:
diff changeset
390 G_FABS
anatofuz
parents:
diff changeset
391 ^^^^^^
anatofuz
parents:
diff changeset
392
anatofuz
parents:
diff changeset
393 Take the absolute value of a floating point value.
anatofuz
parents:
diff changeset
394
anatofuz
parents:
diff changeset
395 G_FCOPYSIGN
anatofuz
parents:
diff changeset
396 ^^^^^^^^^^^
anatofuz
parents:
diff changeset
397
anatofuz
parents:
diff changeset
398 Copy the value of the first operand, replacing the sign bit with that of the
anatofuz
parents:
diff changeset
399 second operand.
anatofuz
parents:
diff changeset
400
anatofuz
parents:
diff changeset
401 G_FCANONICALIZE
anatofuz
parents:
diff changeset
402 ^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
403
anatofuz
parents:
diff changeset
404 See :ref:`i_intr_llvm_canonicalize`.
anatofuz
parents:
diff changeset
405
anatofuz
parents:
diff changeset
406 G_FMINNUM
anatofuz
parents:
diff changeset
407 ^^^^^^^^^
anatofuz
parents:
diff changeset
408
anatofuz
parents:
diff changeset
409 Perform floating-point minimum on two values.
anatofuz
parents:
diff changeset
410
anatofuz
parents:
diff changeset
411 In the case where a single input is a NaN (either signaling or quiet),
anatofuz
parents:
diff changeset
412 the non-NaN input is returned.
anatofuz
parents:
diff changeset
413
anatofuz
parents:
diff changeset
414 The return value of (FMINNUM 0.0, -0.0) could be either 0.0 or -0.0.
anatofuz
parents:
diff changeset
415
anatofuz
parents:
diff changeset
416 G_FMAXNUM
anatofuz
parents:
diff changeset
417 ^^^^^^^^^
anatofuz
parents:
diff changeset
418
anatofuz
parents:
diff changeset
419 Perform floating-point maximum on two values.
anatofuz
parents:
diff changeset
420
anatofuz
parents:
diff changeset
421 In the case where a single input is a NaN (either signaling or quiet),
anatofuz
parents:
diff changeset
422 the non-NaN input is returned.
anatofuz
parents:
diff changeset
423
anatofuz
parents:
diff changeset
424 The return value of (FMAXNUM 0.0, -0.0) could be either 0.0 or -0.0.
anatofuz
parents:
diff changeset
425
anatofuz
parents:
diff changeset
426 G_FMINNUM_IEEE
anatofuz
parents:
diff changeset
427 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
428
anatofuz
parents:
diff changeset
429 Perform floating-point minimum on two values, following the IEEE-754 2008
anatofuz
parents:
diff changeset
430 definition. This differs from FMINNUM in the handling of signaling NaNs. If one
anatofuz
parents:
diff changeset
431 input is a signaling NaN, returns a quiet NaN.
anatofuz
parents:
diff changeset
432
anatofuz
parents:
diff changeset
433 G_FMAXNUM_IEEE
anatofuz
parents:
diff changeset
434 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
435
anatofuz
parents:
diff changeset
436 Perform floating-point maximum on two values, following the IEEE-754 2008
anatofuz
parents:
diff changeset
437 definition. This differs from FMAXNUM in the handling of signaling NaNs. If one
anatofuz
parents:
diff changeset
438 input is a signaling NaN, returns a quiet NaN.
anatofuz
parents:
diff changeset
439
anatofuz
parents:
diff changeset
440 G_FMINIMUM
anatofuz
parents:
diff changeset
441 ^^^^^^^^^^
anatofuz
parents:
diff changeset
442
anatofuz
parents:
diff changeset
443 NaN-propagating minimum that also treat -0.0 as less than 0.0. While
anatofuz
parents:
diff changeset
444 FMINNUM_IEEE follow IEEE 754-2008 semantics, FMINIMUM follows IEEE 754-2018
anatofuz
parents:
diff changeset
445 draft semantics.
anatofuz
parents:
diff changeset
446
anatofuz
parents:
diff changeset
447 G_FMAXIMUM
anatofuz
parents:
diff changeset
448 ^^^^^^^^^^
anatofuz
parents:
diff changeset
449
anatofuz
parents:
diff changeset
450 NaN-propagating maximum that also treat -0.0 as less than 0.0. While
anatofuz
parents:
diff changeset
451 FMAXNUM_IEEE follow IEEE 754-2008 semantics, FMAXIMUM follows IEEE 754-2018
anatofuz
parents:
diff changeset
452 draft semantics.
anatofuz
parents:
diff changeset
453
anatofuz
parents:
diff changeset
454 G_FADD, G_FSUB, G_FMUL, G_FDIV, G_FREM
anatofuz
parents:
diff changeset
455 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
456
anatofuz
parents:
diff changeset
457 Perform the specified floating point arithmetic.
anatofuz
parents:
diff changeset
458
anatofuz
parents:
diff changeset
459 G_FMA
anatofuz
parents:
diff changeset
460 ^^^^^
anatofuz
parents:
diff changeset
461
anatofuz
parents:
diff changeset
462 Perform a fused multiply add (i.e. without the intermediate rounding step).
anatofuz
parents:
diff changeset
463
anatofuz
parents:
diff changeset
464 G_FMAD
anatofuz
parents:
diff changeset
465 ^^^^^^
anatofuz
parents:
diff changeset
466
anatofuz
parents:
diff changeset
467 Perform a non-fused multiply add (i.e. with the intermediate rounding step).
anatofuz
parents:
diff changeset
468
anatofuz
parents:
diff changeset
469 G_FPOW
anatofuz
parents:
diff changeset
470 ^^^^^^
anatofuz
parents:
diff changeset
471
anatofuz
parents:
diff changeset
472 Raise the first operand to the power of the second.
anatofuz
parents:
diff changeset
473
anatofuz
parents:
diff changeset
474 G_FEXP, G_FEXP2
anatofuz
parents:
diff changeset
475 ^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
476
anatofuz
parents:
diff changeset
477 Calculate the base-e or base-2 exponential of a value
anatofuz
parents:
diff changeset
478
anatofuz
parents:
diff changeset
479 G_FLOG, G_FLOG2, G_FLOG10
anatofuz
parents:
diff changeset
480 ^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
481
anatofuz
parents:
diff changeset
482 Calculate the base-e, base-2, or base-10 respectively.
anatofuz
parents:
diff changeset
483
anatofuz
parents:
diff changeset
484 G_FCEIL, G_FCOS, G_FSIN, G_FSQRT, G_FFLOOR, G_FRINT, G_FNEARBYINT
anatofuz
parents:
diff changeset
485 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
486
anatofuz
parents:
diff changeset
487 These correspond to the standard C functions of the same name.
anatofuz
parents:
diff changeset
488
anatofuz
parents:
diff changeset
489 G_INTRINSIC_TRUNC
anatofuz
parents:
diff changeset
490 ^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
491
anatofuz
parents:
diff changeset
492 Returns the operand rounded to the nearest integer not larger in magnitude than the operand.
anatofuz
parents:
diff changeset
493
anatofuz
parents:
diff changeset
494 G_INTRINSIC_ROUND
anatofuz
parents:
diff changeset
495 ^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
496
anatofuz
parents:
diff changeset
497 Returns the operand rounded to the nearest integer.
anatofuz
parents:
diff changeset
498
anatofuz
parents:
diff changeset
499 Vector Specific Operations
anatofuz
parents:
diff changeset
500 --------------------------
anatofuz
parents:
diff changeset
501
anatofuz
parents:
diff changeset
502 G_CONCAT_VECTORS
anatofuz
parents:
diff changeset
503 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
504
anatofuz
parents:
diff changeset
505 Concatenate two vectors to form a longer vector.
anatofuz
parents:
diff changeset
506
anatofuz
parents:
diff changeset
507 G_BUILD_VECTOR, G_BUILD_VECTOR_TRUNC
anatofuz
parents:
diff changeset
508 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
509
anatofuz
parents:
diff changeset
510 Create a vector from multiple scalar registers. No implicit
anatofuz
parents:
diff changeset
511 conversion is performed (i.e. the result element type must be the
anatofuz
parents:
diff changeset
512 same as all source operands)
anatofuz
parents:
diff changeset
513
anatofuz
parents:
diff changeset
514 The _TRUNC version truncates the larger operand types to fit the
anatofuz
parents:
diff changeset
515 destination vector elt type.
anatofuz
parents:
diff changeset
516
anatofuz
parents:
diff changeset
517 G_INSERT_VECTOR_ELT
anatofuz
parents:
diff changeset
518 ^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
519
anatofuz
parents:
diff changeset
520 Insert an element into a vector
anatofuz
parents:
diff changeset
521
anatofuz
parents:
diff changeset
522 G_EXTRACT_VECTOR_ELT
anatofuz
parents:
diff changeset
523 ^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
524
anatofuz
parents:
diff changeset
525 Extract an element from a vector
anatofuz
parents:
diff changeset
526
anatofuz
parents:
diff changeset
527 G_SHUFFLE_VECTOR
anatofuz
parents:
diff changeset
528 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
529
anatofuz
parents:
diff changeset
530 Concatenate two vectors and shuffle the elements according to the mask operand.
anatofuz
parents:
diff changeset
531 The mask operand should be an IR Constant which exactly matches the
anatofuz
parents:
diff changeset
532 corresponding mask for the IR shufflevector instruction.
anatofuz
parents:
diff changeset
533
anatofuz
parents:
diff changeset
534 Memory Operations
anatofuz
parents:
diff changeset
535 -----------------
anatofuz
parents:
diff changeset
536
anatofuz
parents:
diff changeset
537 G_LOAD, G_SEXTLOAD, G_ZEXTLOAD
anatofuz
parents:
diff changeset
538 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
539
anatofuz
parents:
diff changeset
540 Generic load. Expects a MachineMemOperand in addition to explicit
anatofuz
parents:
diff changeset
541 operands. If the result size is larger than the memory size, the
anatofuz
parents:
diff changeset
542 high bits are undefined, sign-extended, or zero-extended respectively.
anatofuz
parents:
diff changeset
543
anatofuz
parents:
diff changeset
544 Only G_LOAD is valid if the result is a vector type. If the result is larger
anatofuz
parents:
diff changeset
545 than the memory size, the high elements are undefined (i.e. this is not a
anatofuz
parents:
diff changeset
546 per-element, vector anyextload)
anatofuz
parents:
diff changeset
547
anatofuz
parents:
diff changeset
548 G_INDEXED_LOAD
anatofuz
parents:
diff changeset
549 ^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
550
anatofuz
parents:
diff changeset
551 Generic indexed load. Combines a GEP with a load. $newaddr is set to $base + $offset.
anatofuz
parents:
diff changeset
552 If $am is 0 (post-indexed), then the value is loaded from $base; if $am is 1 (pre-indexed)
anatofuz
parents:
diff changeset
553 then the value is loaded from $newaddr.
anatofuz
parents:
diff changeset
554
anatofuz
parents:
diff changeset
555 G_INDEXED_SEXTLOAD
anatofuz
parents:
diff changeset
556 ^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
557
anatofuz
parents:
diff changeset
558 Same as G_INDEXED_LOAD except that the load performed is sign-extending, as with G_SEXTLOAD.
anatofuz
parents:
diff changeset
559
anatofuz
parents:
diff changeset
560 G_INDEXED_ZEXTLOAD
anatofuz
parents:
diff changeset
561 ^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
562
anatofuz
parents:
diff changeset
563 Same as G_INDEXED_LOAD except that the load performed is zero-extending, as with G_ZEXTLOAD.
anatofuz
parents:
diff changeset
564
anatofuz
parents:
diff changeset
565 G_STORE
anatofuz
parents:
diff changeset
566 ^^^^^^^
anatofuz
parents:
diff changeset
567
anatofuz
parents:
diff changeset
568 Generic store. Expects a MachineMemOperand in addition to explicit operands.
anatofuz
parents:
diff changeset
569
anatofuz
parents:
diff changeset
570 G_INDEXED_STORE
anatofuz
parents:
diff changeset
571 ^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
572
anatofuz
parents:
diff changeset
573 Combines a store with a GEP. See description of G_INDEXED_LOAD for indexing behaviour.
anatofuz
parents:
diff changeset
574
anatofuz
parents:
diff changeset
575 G_ATOMIC_CMPXCHG_WITH_SUCCESS
anatofuz
parents:
diff changeset
576 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
577
anatofuz
parents:
diff changeset
578 Generic atomic cmpxchg with internal success check. Expects a
anatofuz
parents:
diff changeset
579 MachineMemOperand in addition to explicit operands.
anatofuz
parents:
diff changeset
580
anatofuz
parents:
diff changeset
581 G_ATOMIC_CMPXCHG
anatofuz
parents:
diff changeset
582 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
583
anatofuz
parents:
diff changeset
584 Generic atomic cmpxchg. Expects a MachineMemOperand in addition to explicit
anatofuz
parents:
diff changeset
585 operands.
anatofuz
parents:
diff changeset
586
anatofuz
parents:
diff changeset
587 G_ATOMICRMW_XCHG, G_ATOMICRMW_ADD, G_ATOMICRMW_SUB, G_ATOMICRMW_AND, G_ATOMICRMW_NAND, G_ATOMICRMW_OR, G_ATOMICRMW_XOR, G_ATOMICRMW_MAX, G_ATOMICRMW_MIN, G_ATOMICRMW_UMAX, G_ATOMICRMW_UMIN, G_ATOMICRMW_FADD, G_ATOMICRMW_FSUB
anatofuz
parents:
diff changeset
588 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
589
anatofuz
parents:
diff changeset
590 Generic atomicrmw. Expects a MachineMemOperand in addition to explicit
anatofuz
parents:
diff changeset
591 operands.
anatofuz
parents:
diff changeset
592
anatofuz
parents:
diff changeset
593 G_FENCE
anatofuz
parents:
diff changeset
594 ^^^^^^^
anatofuz
parents:
diff changeset
595
anatofuz
parents:
diff changeset
596 .. caution::
anatofuz
parents:
diff changeset
597
anatofuz
parents:
diff changeset
598 I couldn't find any documentation on this at the time of writing.
anatofuz
parents:
diff changeset
599
anatofuz
parents:
diff changeset
600 Control Flow
anatofuz
parents:
diff changeset
601 ------------
anatofuz
parents:
diff changeset
602
anatofuz
parents:
diff changeset
603 G_PHI
anatofuz
parents:
diff changeset
604 ^^^^^
anatofuz
parents:
diff changeset
605
anatofuz
parents:
diff changeset
606 Implement the φ node in the SSA graph representing the function.
anatofuz
parents:
diff changeset
607
anatofuz
parents:
diff changeset
608 .. code-block:: none
anatofuz
parents:
diff changeset
609
anatofuz
parents:
diff changeset
610 %1(s8) = G_PHI %7(s8), %bb.0, %3(s8), %bb.1
anatofuz
parents:
diff changeset
611
anatofuz
parents:
diff changeset
612 G_BR
anatofuz
parents:
diff changeset
613 ^^^^
anatofuz
parents:
diff changeset
614
anatofuz
parents:
diff changeset
615 Unconditional branch
anatofuz
parents:
diff changeset
616
anatofuz
parents:
diff changeset
617 G_BRCOND
anatofuz
parents:
diff changeset
618 ^^^^^^^^
anatofuz
parents:
diff changeset
619
anatofuz
parents:
diff changeset
620 Conditional branch
anatofuz
parents:
diff changeset
621
anatofuz
parents:
diff changeset
622 G_BRINDIRECT
anatofuz
parents:
diff changeset
623 ^^^^^^^^^^^^
anatofuz
parents:
diff changeset
624
anatofuz
parents:
diff changeset
625 Indirect branch
anatofuz
parents:
diff changeset
626
anatofuz
parents:
diff changeset
627 G_BRJT
anatofuz
parents:
diff changeset
628 ^^^^^^
anatofuz
parents:
diff changeset
629
anatofuz
parents:
diff changeset
630 Indirect branch to jump table entry
anatofuz
parents:
diff changeset
631
anatofuz
parents:
diff changeset
632 G_JUMP_TABLE
anatofuz
parents:
diff changeset
633 ^^^^^^^^^^^^
anatofuz
parents:
diff changeset
634
anatofuz
parents:
diff changeset
635 .. caution::
anatofuz
parents:
diff changeset
636
anatofuz
parents:
diff changeset
637 I found no documentation for this instruction at the time of writing.
anatofuz
parents:
diff changeset
638
anatofuz
parents:
diff changeset
639 G_INTRINSIC, G_INTRINSIC_W_SIDE_EFFECTS
anatofuz
parents:
diff changeset
640 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
641
anatofuz
parents:
diff changeset
642 Call an intrinsic
anatofuz
parents:
diff changeset
643
anatofuz
parents:
diff changeset
644 The _W_SIDE_EFFECTS version is considered to have unknown side-effects and
anatofuz
parents:
diff changeset
645 as such cannot be reordered across other side-effecting instructions.
anatofuz
parents:
diff changeset
646
anatofuz
parents:
diff changeset
647 .. note::
anatofuz
parents:
diff changeset
648
anatofuz
parents:
diff changeset
649 Unlike SelectionDAG, there is no _VOID variant. Both of these are permitted
anatofuz
parents:
diff changeset
650 to have zero, one, or multiple results.
anatofuz
parents:
diff changeset
651
anatofuz
parents:
diff changeset
652 Variadic Arguments
anatofuz
parents:
diff changeset
653 ------------------
anatofuz
parents:
diff changeset
654
anatofuz
parents:
diff changeset
655 G_VASTART
anatofuz
parents:
diff changeset
656 ^^^^^^^^^
anatofuz
parents:
diff changeset
657
anatofuz
parents:
diff changeset
658 .. caution::
anatofuz
parents:
diff changeset
659
anatofuz
parents:
diff changeset
660 I found no documentation for this instruction at the time of writing.
anatofuz
parents:
diff changeset
661
anatofuz
parents:
diff changeset
662 G_VAARG
anatofuz
parents:
diff changeset
663 ^^^^^^^
anatofuz
parents:
diff changeset
664
anatofuz
parents:
diff changeset
665 .. caution::
anatofuz
parents:
diff changeset
666
anatofuz
parents:
diff changeset
667 I found no documentation for this instruction at the time of writing.
anatofuz
parents:
diff changeset
668
anatofuz
parents:
diff changeset
669 Other Operations
anatofuz
parents:
diff changeset
670 ----------------
anatofuz
parents:
diff changeset
671
anatofuz
parents:
diff changeset
672 G_DYN_STACKALLOC
anatofuz
parents:
diff changeset
673 ^^^^^^^^^^^^^^^^
anatofuz
parents:
diff changeset
674
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
675 Dynamically realigns the stack pointer to the specified size and alignment.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
676 An alignment value of `0` or `1` mean no specific alignment.
150
anatofuz
parents:
diff changeset
677
anatofuz
parents:
diff changeset
678 .. code-block:: none
anatofuz
parents:
diff changeset
679
anatofuz
parents:
diff changeset
680 %8:_(p0) = G_DYN_STACKALLOC %7(s64), 32