Lines Matching +full:zero +full:- +full:point
2 .. _gmir-opcodes:
13 scalar/integer/floating-point operations can also take vectors.
16 ---------
23 .. code-block:: none
32 .. code-block:: none
39 A floating point constant.
41 .. code-block:: none
50 .. code-block:: none
59 .. code-block:: none
67 key (32-bit imm), address for address discrimination (zero if not needed) and
68 an extra discriminator (64-bit imm).
70 .. code-block:: none
79 .. code-block:: none
81 %0:_(p0) = G_BLOCK_ADDR blockaddress(@test_blockaddress, %ir-block.block)
88 .. code-block:: none
93 --------------------------------
101 .. code-block:: none
109 into the newly-created space.
111 .. code-block:: none
122 lowered. This opcode is particularly useful if the target has sign-extension
127 .. code-block:: none
134 Zero extend the underlying scalar type of an operation, putting zero bits
135 into the newly-created space.
137 .. code-block:: none
147 .. code-block:: none
152 ----------------
159 .. code-block:: none
168 .. code-block:: none
177 definition of the :ref:`LLVM-IR Bitcast Instruction <i_bitcast>`. It
181 .. code-block:: none
190 .. code-block:: none
200 -----------------
206 index. This will almost certainly be mapped to sub-register COPYs after
209 .. code-block:: none
216 Insert a smaller register into a larger one at the specified bit-index.
218 .. code-block:: none
228 .. code-block:: none
237 indexes. This will almost certainly be mapped to sub-register COPYs after
241 .. code-block:: none
251 .. code-block:: none
260 .. code-block:: none
271 - Source
272 - The least-significant bit for the extraction
273 - The width of the extraction
275 The least-significant bit (lsb) and width operands are in the range:
281 G_SBFX sign-extends the result, while G_UBFX zero-extends the result.
283 .. code-block:: none
286 ; Sign-extend the result.
289 ; %x = 0...0000[10110]1 ---> %a = 1...111111[10110]
294 ; Extract 3 bits starting at bit 2 from %x and store them in %b. Zero-extend
298 ; %x = 1...11111[100]11 ---> %b = 0...00000[100]
304 -------------------
311 .. code-block:: none
322 .. code-block:: none
331 .. code-block:: none
338 Shift the bits of a scalar left or right inserting zeros (sign-bit for G_ASHR).
348 Perform integer comparison producing non-zero (true) or zero (false). It's
349 target specific whether a true value is 1, ~0U, or some other non-zero value.
354 Perform signed 3-way integer comparison producing -1 (smaller), 0 (equal), or 1 (larger).
356 .. code-block:: none
364 Perform unsigned 3-way integer comparison producing -1 (smaller), 0 (equal), or 1 (larger).
366 .. code-block:: none
374 Select between two values depending on a zero/non-zero value.
376 .. code-block:: none
386 .. code-block:: none
392 There are currently no in-tree targets that use this with addressable units
398 Zero out an arbitrary mask of bits of a pointer. The mask type must be
402 .. code-block:: none
411 .. code-block:: none
419 negative value (e.g. the 8-bit value `0x80`) is defined to be itself.
421 .. code-block:: none
431 .. code-block:: none
441 .. code-block:: none
451 .. code-block:: none
460 .. code-block:: none
469 Count leading zeros or trailing zeros. If the value is zero then the result is
472 .. code-block:: none
480 Compute the absolute difference (signed and unsigned), e.g. abs(x-y).
482 .. code-block:: none
487 Floating Point Operations
488 -------------------------
493 Perform floating point comparison producing non-zero (true) or zero
495 non-zero value.
500 Floating point negation.
505 Convert a floating point value to a larger type.
510 Convert a floating point value to a narrower type.
515 Convert between integer and floating point.
520 Saturating convert between integer and floating point.
525 Take the absolute value of a floating point value.
541 Tests if the first operand, which must be floating-point scalar or vector, has
542 floating-point class specified by the second operand. Returns non-zero (true)
543 or zero (false). It's target specific whether a true value is 1, ~0U, or some
544 other non-zero value. If the first operand is a vector, the returned value is a
550 Perform floating-point minimum on two values.
553 the non-NaN input is returned.
555 The return value of (FMINNUM 0.0, -0.0) could be either 0.0 or -0.0.
560 Perform floating-point maximum on two values.
563 the non-NaN input is returned.
565 The return value of (FMAXNUM 0.0, -0.0) could be either 0.0 or -0.0.
570 Perform floating-point minimum on two values, following IEEE-754
575 IEEE-754 2008's minnum/maxnum for signaling NaNs (which differs from
578 These treat -0 as ordered less than +0, matching the behavior of
579 IEEE-754 2019's minimumNumber/maximumNumber (which was unspecified in
585 Perform floating-point maximum on two values, following IEEE-754
590 IEEE-754 2008's minnum/maxnum for signaling NaNs (which differs from
593 These treat -0 as ordered less than +0, matching the behavior of
594 IEEE-754 2019's minimumNumber/maximumNumber (which was unspecified in
600 NaN-propagating minimum that also treat -0.0 as less than 0.0. While
601 FMINNUM_IEEE follow IEEE 754-2008 semantics, FMINIMUM follows IEEE
602 754-2019 semantics.
607 NaN-propagating maximum that also treat -0.0 as less than 0.0. While
608 FMAXNUM_IEEE follow IEEE 754-2008 semantics, FMAXIMUM follows IEEE
609 754-2019 semantics.
614 Perform the specified floating point arithmetic.
624 Perform a non-fused multiply add (i.e. with the intermediate rounding step).
634 Calculate the base-e or base-2 exponential of a value
639 Calculate the base-e, base-2, or base-10 respectively.
665 zero.
669 .. code-block:: none
675 --------------------------
684 .. code-block::
701 .. code-block:: none
721 .. code-block:: none
774 Otherwise the vector is zero.
776 .. code-block::
792 ---------------------------
831 -----------------
838 high bits are undefined, sign-extended, or zero-extended respectively.
842 per-element, vector anyextload)
852 If $am is 0 (post-indexed), then the value is loaded from $base; if $am is 1 (pre-indexed)
858 Same as G_INDEXED_LOAD except that the load performed is sign-extending, as with G_SEXTLOAD.
863 Same as G_INDEXED_LOAD except that the load performed is zero-extending, as with G_ZEXTLOAD.
871 high elements are discarded (i.e. this does not function as a per-lane
947 ------------
954 .. code-block:: none
963 .. code-block:: none
972 .. code-block:: none
981 .. code-block:: none
990 .. code-block:: none
1002 .. code-block:: none
1004 %dst:_(p0) = G_JUMP_TABLE %jump-table.0
1011 A marker instruction that acts as a pseudo-terminator for regions of code that may
1020 Call an intrinsic that has no side-effects.
1027 to have zero, one, or multiple results.
1032 Call an intrinsic that is considered to have unknown side-effects and as such
1033 cannot be reordered across other side-effecting instructions.
1040 to have zero, one, or multiple results.
1049 .. code-block:: none
1053 .. code-block:: none
1057 .. code-block:: none
1062 ------------------
1079 ----------------
1087 .. code-block:: none
1092 ------------------
1107 .. code-block:: none
1118 - Be virtual
1119 - Belong to the same register class
1120 - Belong to the same register bank
1124 - Look through the source register
1125 - Replace the destination register with the source register
1129 -------------