_mm_castpd_ps

Microsoft Specific

Applies a type cast to reinterpret two 64-bit floating point values passed in as a 128-bit parameter as packed 32-bit floating point values.

__m128 _mm_castpd_ps( 
   __m128d a
);

Parameters

  • [in] a
    A 128-bit parameter that contains two 64-bit floating point values.

Return value

r := a

Requirements

Intrinsic

Architecture

_mm_castpd_ps

x86, x64

Header file <emmintrin.h>

Remarks

The 128-bit return value r is a copy of the 128-bit parameter a, but cast as four single precision floating point values. This intrinsic changes one data type to another without performing any conversion.

This intrinsic does not map to any specific machine instruction.

Example

// _mm_castpd_ps.cpp
#include <stdio.h>
#include <emmintrin.h>

int main () {
    __m128d a;

    a.m128d_f64[1] = 0.00125;
    a.m128d_f64[0] = 2;

    __m128 res = _mm_castpd_ps( a );

    printf_s("Original a: %8f %8f\n",
                a.m128d_f64[1], a.m128d_f64[0]);

    printf_s("Result res: %8f %8f %8f %8f\n",
                res.m128_f32[3], res.m128_f32[2], 
                res.m128_f32[1], res.m128_f32[0]);

    __m128d newA = _mm_castps_pd( res );

    printf_s("New a:      %8f %8f\n",
                newA.m128d_f64[1], newA.m128d_f64[0]);

    return 0;
}
Original a: 0.001250 2.000000
Result res: 0.830000 89128.960938 2.000000 0.000000
New a:      0.001250 2.000000

See Also

Reference

Compiler Intrinsics