@@ -1294,6 +1294,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtepi32_pd(__m128i __a) {
1294
1294
/// returned in the lower 64 bits of a 128-bit vector of [4 x i32]. The upper
1295
1295
/// 64 bits of the result vector are set to zero.
1296
1296
///
1297
+ /// If a converted value does not fit in a 32-bit integer, raises a
1298
+ /// floating-point invalid exception. If the exception is masked, returns
1299
+ /// the most negative integer.
1300
+ ///
1297
1301
/// \headerfile <x86intrin.h>
1298
1302
///
1299
1303
/// This intrinsic corresponds to the <c> VCVTPD2DQ / CVTPD2DQ </c> instruction.
@@ -1309,6 +1313,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtpd_epi32(__m128d __a) {
1309
1313
/// Converts the low-order element of a 128-bit vector of [2 x double]
1310
1314
/// into a 32-bit signed integer value.
1311
1315
///
1316
+ /// If the converted value does not fit in a 32-bit integer, raises a
1317
+ /// floating-point invalid exception. If the exception is masked, returns
1318
+ /// the most negative integer.
1319
+ ///
1312
1320
/// \headerfile <x86intrin.h>
1313
1321
///
1314
1322
/// This intrinsic corresponds to the <c> VCVTSD2SI / CVTSD2SI </c> instruction.
@@ -1394,12 +1402,13 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtss_sd(__m128d __a,
1394
1402
}
1395
1403
1396
1404
/// Converts the two double-precision floating-point elements of a
1397
- /// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1398
- /// returned in the lower 64 bits of a 128-bit vector of [4 x i32].
1405
+ /// 128-bit vector of [2 x double] into two signed truncated (rounded
1406
+ /// toward zero) 32-bit integer values, returned in the lower 64 bits
1407
+ /// of a 128-bit vector of [4 x i32].
1399
1408
///
1400
- /// If the result of either conversion is inexact, the result is truncated
1401
- /// (rounded towards zero) regardless of the current MXCSR setting. The upper
1402
- /// 64 bits of the result vector are set to zero .
1409
+ /// If a converted value does not fit in a 32-bit integer, raises a
1410
+ /// floating-point invalid exception. If the exception is masked, returns
1411
+ /// the most negative integer .
1403
1412
///
1404
1413
/// \headerfile <x86intrin.h>
1405
1414
///
@@ -1415,7 +1424,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttpd_epi32(__m128d __a) {
1415
1424
}
1416
1425
1417
1426
/// Converts the low-order element of a [2 x double] vector into a 32-bit
1418
- /// signed integer value, truncating the result when it is inexact.
1427
+ /// signed truncated (rounded toward zero) integer value.
1428
+ ///
1429
+ /// If the converted value does not fit in a 32-bit integer, raises a
1430
+ /// floating-point invalid exception. If the exception is masked, returns
1431
+ /// the most negative integer.
1419
1432
///
1420
1433
/// \headerfile <x86intrin.h>
1421
1434
///
@@ -1434,6 +1447,10 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) {
1434
1447
/// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1435
1448
/// returned in a 64-bit vector of [2 x i32].
1436
1449
///
1450
+ /// If a converted value does not fit in a 32-bit integer, raises a
1451
+ /// floating-point invalid exception. If the exception is masked, returns
1452
+ /// the most negative integer.
1453
+ ///
1437
1454
/// \headerfile <x86intrin.h>
1438
1455
///
1439
1456
/// This intrinsic corresponds to the <c> CVTPD2PI </c> instruction.
@@ -1446,11 +1463,12 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) {
1446
1463
}
1447
1464
1448
1465
/// Converts the two double-precision floating-point elements of a
1449
- /// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1450
- /// returned in a 64-bit vector of [2 x i32].
1466
+ /// 128-bit vector of [2 x double] into two signed truncated (rounded toward
1467
+ /// zero) 32-bit integer values, returned in a 64-bit vector of [2 x i32].
1451
1468
///
1452
- /// If the result of either conversion is inexact, the result is truncated
1453
- /// (rounded towards zero) regardless of the current MXCSR setting.
1469
+ /// If a converted value does not fit in a 32-bit integer, raises a
1470
+ /// floating-point invalid exception. If the exception is masked, returns
1471
+ /// the most negative integer.
1454
1472
///
1455
1473
/// \headerfile <x86intrin.h>
1456
1474
///
@@ -3216,7 +3234,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi64_sd(__m128d __a,
3216
3234
}
3217
3235
3218
3236
/// Converts the first (lower) element of a vector of [2 x double] into a
3219
- /// 64-bit signed integer value, according to the current rounding mode.
3237
+ /// 64-bit signed integer value.
3238
+ ///
3239
+ /// If the converted value does not fit in a 64-bit integer, raises a
3240
+ /// floating-point invalid exception. If the exception is masked, returns
3241
+ /// the most negative integer.
3220
3242
///
3221
3243
/// \headerfile <x86intrin.h>
3222
3244
///
@@ -3231,7 +3253,11 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvtsd_si64(__m128d __a) {
3231
3253
}
3232
3254
3233
3255
/// Converts the first (lower) element of a vector of [2 x double] into a
3234
- /// 64-bit signed integer value, truncating the result when it is inexact.
3256
+ /// 64-bit signed truncated (rounded toward zero) integer value.
3257
+ ///
3258
+ /// If a converted value does not fit in a 64-bit integer, raises a
3259
+ /// floating-point invalid exception. If the exception is masked, returns
3260
+ /// the most negative integer.
3235
3261
///
3236
3262
/// \headerfile <x86intrin.h>
3237
3263
///
@@ -3262,6 +3288,10 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtepi32_ps(__m128i __a) {
3262
3288
3263
3289
/// Converts a vector of [4 x float] into a vector of [4 x i32].
3264
3290
///
3291
+ /// If a converted value does not fit in a 32-bit integer, raises a
3292
+ /// floating-point invalid exception. If the exception is masked, returns
3293
+ /// the most negative integer.
3294
+ ///
3265
3295
/// \headerfile <x86intrin.h>
3266
3296
///
3267
3297
/// This intrinsic corresponds to the <c> VCVTPS2DQ / CVTPS2DQ </c> instruction.
@@ -3274,8 +3304,12 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtps_epi32(__m128 __a) {
3274
3304
return (__m128i )__builtin_ia32_cvtps2dq ((__v4sf )__a );
3275
3305
}
3276
3306
3277
- /// Converts a vector of [4 x float] into a vector of [4 x i32],
3278
- /// truncating the result when it is inexact.
3307
+ /// Converts a vector of [4 x float] into four signed truncated (rounded toward
3308
+ /// zero) 32-bit integers, returned in a vector of [4 x i32].
3309
+ ///
3310
+ /// If a converted value does not fit in a 32-bit integer, raises a
3311
+ /// floating-point invalid exception. If the exception is masked, returns
3312
+ /// the most negative integer.
3279
3313
///
3280
3314
/// \headerfile <x86intrin.h>
3281
3315
///
0 commit comments