Skip to main content

function

bswap

bswap[type: DType, simd_width: Int](val: SIMD[type, simd_width]) -> SIMD[$0, $1]

Byte-swaps a value.

Byte swap an integer value or vector of integer values with an even number of bytes (positive multiple of 16 bits). This is equivalent to llvm.bswap intrinsic that has the following semantics:

The llvm.bswap.i16 intrinsic returns an i16 value that has the high and low byte of the input i16 swapped. Similarly, the llvm.bswap.i32 intrinsic returns an i32 value that has the four bytes of the input i32 swapped, so that if the input bytes are numbered 0, 1, 2, 3 then the returned i32 will have its bytes in 3, 2, 1, 0 order. The llvm.bswap.i48, llvm.bswap.i64 and other intrinsics extend this concept to additional even-byte lengths (6 bytes, 8 bytes and more, respectively).

Parameters:

  • type (DType): dtype used for the computation. Constraints: must be an integral type with an even number of bytes (Bitwidth % 16 == 0).
  • simd_width (Int): SIMD width used for the computation.

Args:

  • val (SIMD[type, simd_width]): The input value.

Returns:

A SIMD value where the element at position i is the value of the element at position i of the input value with its bytes swapped.