465 @Override
466 @ForceInline
467 public int addAll() {
468 return (int) VectorIntrinsics.reductionCoerced(
469 VECTOR_OP_ADD, Int64Vector.class, int.class, LENGTH,
470 this,
471 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a + b)));
472 }
473
474 @Override
475 @ForceInline
476 public int andAll() {
477 return (int) VectorIntrinsics.reductionCoerced(
478 VECTOR_OP_AND, Int64Vector.class, int.class, LENGTH,
479 this,
480 v -> (long) v.rOp((int) -1, (i, a, b) -> (int) (a & b)));
481 }
482
483 @Override
484 @ForceInline
485 public int mulAll() {
486 return (int) VectorIntrinsics.reductionCoerced(
487 VECTOR_OP_MUL, Int64Vector.class, int.class, LENGTH,
488 this,
489 v -> (long) v.rOp((int) 1, (i, a, b) -> (int) (a * b)));
490 }
491
492 @Override
493 @ForceInline
494 public int orAll() {
495 return (int) VectorIntrinsics.reductionCoerced(
496 VECTOR_OP_OR, Int64Vector.class, int.class, LENGTH,
497 this,
498 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a | b)));
499 }
500
501 @Override
502 @ForceInline
503 public int xorAll() {
504 return (int) VectorIntrinsics.reductionCoerced(
505 VECTOR_OP_XOR, Int64Vector.class, int.class, LENGTH,
506 this,
507 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a ^ b)));
508 }
509
510 @Override
511 @ForceInline
512 public int subAll() {
513 return (int) VectorIntrinsics.reductionCoerced(
514 VECTOR_OP_SUB, Int64Vector.class, int.class, LENGTH,
515 this,
516 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a - b)));
517 }
518
519 // Memory operations
520
521 @Override
522 @ForceInline
523 public void intoArray(int[] a, int ix) {
524 Objects.requireNonNull(a);
525 ix = VectorIntrinsics.checkIndex(ix, a.length, LENGTH);
526 VectorIntrinsics.store(Int64Vector.class, int.class, LENGTH,
527 a, ix, this,
528 (arr, idx, v) -> v.forEach((i, a_) -> ((int[])arr)[idx + i] = a_));
529 }
530
531 @Override
532 @ForceInline
533 public void intoArray(int[] a, int ax, Mask<Integer, Shapes.S64Bit> m) {
534 // TODO: use better default impl: forEach(m, (i, a_) -> a[ax + i] = a_);
535 Int64Vector oldVal = SPECIES.fromArray(a, ax);
536 Int64Vector newVal = oldVal.blend(this, m);
|
465 @Override
466 @ForceInline
467 public int addAll() {
468 return (int) VectorIntrinsics.reductionCoerced(
469 VECTOR_OP_ADD, Int64Vector.class, int.class, LENGTH,
470 this,
471 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a + b)));
472 }
473
474 @Override
475 @ForceInline
476 public int andAll() {
477 return (int) VectorIntrinsics.reductionCoerced(
478 VECTOR_OP_AND, Int64Vector.class, int.class, LENGTH,
479 this,
480 v -> (long) v.rOp((int) -1, (i, a, b) -> (int) (a & b)));
481 }
482
483 @Override
484 @ForceInline
485 public int subAll() {
486 return (int) VectorIntrinsics.reductionCoerced(
487 VECTOR_OP_SUB, Int64Vector.class, int.class, LENGTH,
488 this,
489 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a - b)));
490 }
491
492 @Override
493 @ForceInline
494 public int mulAll() {
495 return (int) VectorIntrinsics.reductionCoerced(
496 VECTOR_OP_MUL, Int64Vector.class, int.class, LENGTH,
497 this,
498 v -> (long) v.rOp((int) 1, (i, a, b) -> (int) (a * b)));
499 }
500
501 @Override
502 @ForceInline
503 public int orAll() {
504 return (int) VectorIntrinsics.reductionCoerced(
505 VECTOR_OP_OR, Int64Vector.class, int.class, LENGTH,
506 this,
507 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a | b)));
508 }
509
510 @Override
511 @ForceInline
512 public int xorAll() {
513 return (int) VectorIntrinsics.reductionCoerced(
514 VECTOR_OP_XOR, Int64Vector.class, int.class, LENGTH,
515 this,
516 v -> (long) v.rOp((int) 0, (i, a, b) -> (int) (a ^ b)));
517 }
518
519 // Memory operations
520
521 @Override
522 @ForceInline
523 public void intoArray(int[] a, int ix) {
524 Objects.requireNonNull(a);
525 ix = VectorIntrinsics.checkIndex(ix, a.length, LENGTH);
526 VectorIntrinsics.store(Int64Vector.class, int.class, LENGTH,
527 a, ix, this,
528 (arr, idx, v) -> v.forEach((i, a_) -> ((int[])arr)[idx + i] = a_));
529 }
530
531 @Override
532 @ForceInline
533 public void intoArray(int[] a, int ax, Mask<Integer, Shapes.S64Bit> m) {
534 // TODO: use better default impl: forEach(m, (i, a_) -> a[ax + i] = a_);
535 Int64Vector oldVal = SPECIES.fromArray(a, ax);
536 Int64Vector newVal = oldVal.blend(this, m);
|