@@ -551,8 +551,8 @@ implementations:
551
551
##### Integer vector semantics
552
552
553
553
The behavior of these operations for integer vectors is the same as that of the
554
- scalar integer types. That is: ` panic! ` on both overflow and division by zero in
555
- debug mode .
554
+ scalar integer types. That is: ` panic! ` on both overflow and division by zero if
555
+ ` -C overflow-checks=on ` .
556
556
557
557
##### Floating-point semantics
558
558
@@ -600,13 +600,7 @@ pub fn max(self, other: Self) -> Self;
600
600
##### Floating-point semantics
601
601
602
602
The floating-point semantics follow the semantics of ` min ` and ` max ` for the
603
- scalar ` f32 ` and ` f64 ` types. That is:
604
-
605
- If either operand is a ` NaN ` , returns the other non-NaN operand. Returns ` NaN `
606
- only if both operands are ` NaN ` . If the operands compare equal, returns a value
607
- that compares equal to both operands. This means that ` min(+/-0.0, +/-0.0) `
608
- could return either ` -0.0 ` or ` 0.0 ` . Otherwise, ` min ` and ` max ` return the
609
- smallest and largest operand, respectively.
603
+ scalar ` f32 ` and ` f64 ` types.
610
604
611
605
#### Arithmetic reductions
612
606
@@ -1287,13 +1281,13 @@ that have withstood the test of time, and it adapts these designs to Rust.
1287
1281
# Unresolved questions
1288
1282
[ unresolved ] : #unresolved-questions
1289
1283
1290
- ### Interaction with scalable vectors
1284
+ ### Interaction with Cray vectors
1291
1285
1292
1286
The vector types proposed in this RFC are packed, that is, their size is fixed
1293
1287
at compile-time.
1294
1288
1295
1289
Many modern architectures support vector operations of run-time size, often
1296
- called scalable Vectors or scalable vectors. These include, amongst others,
1290
+ called Cray Vectors or scalable vectors. These include, amongst others,
1297
1291
NecSX, ARM SVE, and RISC-V's Vector Extension Proposal. These architectures have
1298
1292
traditionally relied on auto-vectorization combined with support for explicit
1299
1293
vectorization annotations, but newer architectures like ARM SVE introduce
@@ -1337,24 +1331,24 @@ fn add_constant(dst: &mut [f64], src: &[f64], c: f64) {
1337
1331
The RISC-V vector extension proposal introduces a model similar in spirit to ARM
1338
1332
SVE. These extensions are, however, not official yet, and it is currently
1339
1333
unknown whether GCC and LLVM will expose explicit intrinsics for them. It would
1340
- not be surprising if they do, and it would not be surprising if similar scalable
1334
+ not be surprising if they do, and it would not be surprising if similar Cray
1341
1335
vector extensions are introduced in other architectures in the future.
1342
1336
1343
- The main differences between scalable and portable vectors are that:
1337
+ The main differences between Cray vectors and portable vectors are that:
1344
1338
1345
- * the number of lanes of scalable vectors is a run-time dynamic value
1346
- * the scalable vector "objects" are like magical compiler token values
1339
+ * the number of lanes of Cray vectors is a run-time dynamic value
1340
+ * the Cray vector "objects" are like magical compiler token values
1347
1341
* the induction loop variable must be incremented by the dynamic number of lanes
1348
1342
of the vector type
1349
- * most scalable vector operations require a mask indicating which elements of
1343
+ * most Cray vector operations require a mask indicating which elements of
1350
1344
the vector the operation applies to
1351
1345
1352
- These differences will probably force the API of scalable vector types to be
1346
+ These differences will probably force the API of Cray vector types to be
1353
1347
slightly different than that of packed vector types.
1354
1348
1355
- The current RFC, therefore, assumes no interaction with scalable vector types.
1349
+ The current RFC, therefore, assumes no interaction with Cray vector types.
1356
1350
1357
- It does not prevent for portable scalable vector types to be added to Rust in
1351
+ It does not prevent for portable Cray vector types to be added to Rust in
1358
1352
the future via an orthogonal API, nor it does prevent adding a way to interact
1359
1353
between both of them (e.g. through memory). But at this point in time whether
1360
1354
these things are possible are open research problems.
0 commit comments