Floating Point Conversion

__m256d __lasx_xvfcvth_d_s (__m256 a)

Synopsis

__m256d __lasx_xvfcvth_d_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvfcvth.d.s xr, xr
CPU Flags: LASX

Description

Convert single precision floating point elements in higher half of a to double precision.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = a.fp32[4 + i];
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256d __lasx_xvfcvtl_d_s (__m256 a)

Synopsis

__m256d __lasx_xvfcvtl_d_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvfcvtl.d.s xr, xr
CPU Flags: LASX

Description

Convert single precision floating point elements in lower half of a to double precision.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = a.fp32[i];
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256 __lasx_xvfcvt_s_d (__m256d a, __m256d b)

Synopsis

__m256 __lasx_xvfcvt_s_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvfcvt.s.d xr, xr, xr
CPU Flags: LASX

Description

Convert double precision floating point elements in a and b to single precision.

Operation

for (int i = 0; i < 8; i++) {
  if (i < 4) {
    dst.fp32[i] = b.fp64[i];
  } else {
    dst.fp32[i] = a.fp64[i - 4];
  }
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256 __lasx_xvfcvth_s_h (__m256i a)

Synopsis

__m256 __lasx_xvfcvth_s_h (__m256i a)
#include <lasxintrin.h>
Instruction: xvfcvth.s.h xr, xr
CPU Flags: LASX

Description

Convert half precision floating point elements in higher half of a to single precision.

Operation

for (int i = 0; i < 8; i++) {
  dst.fp32[i] = a.fp16[8 + i];
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256 __lasx_xvfcvtl_s_h (__m256i a)

Synopsis

__m256 __lasx_xvfcvtl_s_h (__m256i a)
#include <lasxintrin.h>
Instruction: xvfcvtl.s.h xr, xr
CPU Flags: LASX

Description

Convert half precision floating point elements in lower half of a to single precision.

Operation

for (int i = 0; i < 8; i++) {
  dst.fp32[i] = a.fp16[i];
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256i __lasx_xvfcvt_h_s (__m256 a, __m256 b)

Synopsis

__m256i __lasx_xvfcvt_h_s (__m256 a, __m256 b)
#include <lasxintrin.h>
Instruction: xvfcvt.h.s xr, xr, xr
CPU Flags: LASX

Description

Convert single precision floating point elements in a and b to half precision.

Operation

for (int i = 0; i < 16; i++) {
  if (i < 8) {
    dst.fp16[i] = b.fp32[i];
  } else {
    dst.fp16[i] = a.fp32[i - 8];
  }
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 3 2
3C5000 3 1

__m256d __lasx_xvffinth_d_w (__m256i a)

Synopsis

__m256d __lasx_xvffinth_d_w (__m256i a)
#include <lasxintrin.h>
Instruction: xvffinth.d.w xr, xr
CPU Flags: LASX

Description

Convert 32-bit integer elements in higher part of a to double precision floating point numbers.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = (f64)(s32)a.word[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256d __lasx_xvffintl_d_w (__m256i a)

Synopsis

__m256d __lasx_xvffintl_d_w (__m256i a)
#include <lasxintrin.h>
Instruction: xvffintl.d.w xr, xr
CPU Flags: LASX

Description

Convert 32-bit integer elements in lower part of a to double precision floating point numbers.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = (f64)(s32)a.word[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256d __lasx_xvffint_d_l (__m256i a)

Synopsis

__m256d __lasx_xvffint_d_l (__m256i a)
#include <lasxintrin.h>
Instruction: xvffint.d.l xr, xr
CPU Flags: LASX

Description

Convert signed 64-bit integer elements in a to double-precision floating point numbers.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = (f64)(s64)a.dword[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256d __lasx_xvffint_d_lu (__m256i a)

Synopsis

__m256d __lasx_xvffint_d_lu (__m256i a)
#include <lasxintrin.h>
Instruction: xvffint.d.lu xr, xr
CPU Flags: LASX

Description

Convert unsigned 64-bit integer elements in a to double-precision floating point numbers.

Operation

for (int i = 0; i < 4; i++) {
  dst.fp64[i] = (f64)(u64)a.dword[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256 __lasx_xvffint_s_w (__m256i a)

Synopsis

__m256 __lasx_xvffint_s_w (__m256i a)
#include <lasxintrin.h>
Instruction: xvffint.s.w xr, xr
CPU Flags: LASX

Description

Convert signed 32-bit integer elements in a to single-precision floating point numbers.

Operation

for (int i = 0; i < 8; i++) {
  dst.fp32[i] = (f32)(s32)a.word[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256 __lasx_xvffint_s_wu (__m256i a)

Synopsis

__m256 __lasx_xvffint_s_wu (__m256i a)
#include <lasxintrin.h>
Instruction: xvffint.s.wu xr, xr
CPU Flags: LASX

Description

Convert unsigned 32-bit integer elements in a to single-precision floating point numbers.

Operation

for (int i = 0; i < 8; i++) {
  dst.fp32[i] = (f32)(u32)a.word[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256 __lasx_xvffint_s_l (__m256i a, __m256i b)

Synopsis

__m256 __lasx_xvffint_s_l (__m256i a, __m256i b)
#include <lasxintrin.h>
Instruction: xvffint.s.l xr, xr, xr
CPU Flags: LASX

Description

Convert 64-bit integer elements in a and b to single-precision floating point numbers.

Operation

for (int i = 0; i < 8; i++) {
  dst.fp32[i] =
      (i < 4) ? (f32)(s32)a.dword[i]
              : (f32)(s32)b.dword[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintl_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintl_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintl.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in lower part of a to 64-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftinth_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftinth_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftinth.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in higher part of a to 64-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrml_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrml_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrml.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in lower part of a to 64-bit integer, rounding towards negative infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrmh_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrmh_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrmh.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in higher part of a to 64-bit integer, rounding towards negative infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrpl_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrpl_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrpl.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in lower part of a to 64-bit integer, rounding towards positive infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrph_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrph_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrph.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in higher part of a to 64-bit integer, rounding towards positive infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrzl_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrzl_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrzl.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in lower part of a to 64-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrzh_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrzh_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrzh.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in higher part of a to 64-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrnel_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrnel_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrnel.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in lower part of a to 64-bit integer, rounding towards nearest even.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrneh_l_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrneh_l_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrneh.l.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in higher part of a to 64-bit integer, rounding towards nearest even.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s32)a.fp32[i + 4]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftint_l_d (__m256d a)

Synopsis

__m256i __lasx_xvftint_l_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftint.l.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to signed 64-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftint_w_s (__m256 a)

Synopsis

__m256i __lasx_xvftint_w_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftint.w.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to signed 32-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrm_l_d (__m256d a)

Synopsis

__m256i __lasx_xvftintrm_l_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftintrm.l.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to signed 64-bit integer, rounding towards negative infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrm_w_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrm_w_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrm.w.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to signed 32-bit integer, rounding towards negative infinity.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrp_l_d (__m256d a)

Synopsis

__m256i __lasx_xvftintrp_l_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftintrp.l.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to signed 64-bit integer, rounding towards positive infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrp_w_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrp_w_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrp.w.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to signed 32-bit integer, rounding towards positive infinity.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrz_l_d (__m256d a)

Synopsis

__m256i __lasx_xvftintrz_l_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftintrz.l.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to signed 64-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrz_w_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrz_w_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrz.w.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to signed 32-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrne_l_d (__m256d a)

Synopsis

__m256i __lasx_xvftintrne_l_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftintrne.l.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to signed 64-bit integer, rounding towards nearest even.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (s64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrne_w_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrne_w_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrne.w.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to signed 32-bit integer, rounding towards nearest even.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (s32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftint_lu_d (__m256d a)

Synopsis

__m256i __lasx_xvftint_lu_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftint.lu.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to unsigned 64-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (u64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftint_wu_s (__m256 a)

Synopsis

__m256i __lasx_xvftint_wu_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftint.wu.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to unsigned 32-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (u32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrz_lu_d (__m256d a)

Synopsis

__m256i __lasx_xvftintrz_lu_d (__m256d a)
#include <lasxintrin.h>
Instruction: xvftintrz.lu.d xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a to unsigned 64-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (u64)a.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftintrz_wu_s (__m256 a)

Synopsis

__m256i __lasx_xvftintrz_wu_s (__m256 a)
#include <lasxintrin.h>
Instruction: xvftintrz.wu.s xr, xr
CPU Flags: LASX

Description

Convert single-precision floating point elements in a to unsigned 32-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 8; i++) {
  dst.word[i] = (u32)a.fp32[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 4 4
3C5000 4 2

__m256i __lasx_xvftint_w_d (__m256d a, __m256d b)

Synopsis

__m256i __lasx_xvftint_w_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvftint.w.d xr, xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a and b to 32-bit integer, using current rounding mode specified in fscr.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (i < 2)
                     ? (s64)a.fp64[i]
                     : (s64)b.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrm_w_d (__m256d a, __m256d b)

Synopsis

__m256i __lasx_xvftintrm_w_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvftintrm.w.d xr, xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a and b to 32-bit integer, rounding towards negative infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (i < 2)
                     ? (s64)a.fp64[i]
                     : (s64)b.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrp_w_d (__m256d a, __m256d b)

Synopsis

__m256i __lasx_xvftintrp_w_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvftintrp.w.d xr, xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a and b to 32-bit integer, rounding towards positive infinity.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (i < 2)
                     ? (s64)a.fp64[i]
                     : (s64)b.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrz_w_d (__m256d a, __m256d b)

Synopsis

__m256i __lasx_xvftintrz_w_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvftintrz.w.d xr, xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a and b to 32-bit integer, rounding towards zero.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (i < 2)
                     ? (s64)a.fp64[i]
                     : (s64)b.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1

__m256i __lasx_xvftintrne_w_d (__m256d a, __m256d b)

Synopsis

__m256i __lasx_xvftintrne_w_d (__m256d a, __m256d b)
#include <lasxintrin.h>
Instruction: xvftintrne.w.d xr, xr, xr
CPU Flags: LASX

Description

Convert double-precision floating point elements in a and b to 32-bit integer, rounding towards nearest even.

Operation

for (int i = 0; i < 4; i++) {
  dst.dword[i] = (i < 2)
                     ? (s64)a.fp64[i]
                     : (s64)b.fp64[i]; // rounding mode is not expressed in C
}

Latency and Throughput

CPU Latency Throughput (IPC)
3A6000 5 2
3C5000 5 1