diff options
author | Antonio Sanchez <cantonios@google.com> | 2020-06-19 16:07:05 -0700 |
---|---|---|
committer | Antonio Sanchez <cantonios@google.com> | 2020-06-21 09:32:31 -0700 |
commit | 03ebdf6acbad3eb7d272311522ba6414c47a6ef2 (patch) | |
tree | b75ca80029bd04eb341cefaa5194914071be0fff /Eigen/src/Core/arch/NEON/PacketMath.h | |
parent | 386d809bde475c65b7940f290efe80e6a05878c4 (diff) |
Added missing NEON pcasts, update packetmath tests.
The NEON `pcast` operators are all implemented and tested for existing
packets. This requires adding a `pcast(a,b,c,d,e,f,g,h)` for casting
between `int64_t` and `int8_t` in `GenericPacketMath.h`.
Removed incorrect `HasHalfPacket` definition for NEON's
`Packet2l`/`Packet2ul`.
Adjustments were also made to the `packetmath` tests. These include
- minor bug fixes for cast tests (i.e. 4:1 casts, only casting for
packets that are vectorizable)
- added 8:1 cast tests
- random number generation
- original had uninteresting 0 to 0 casts for many casts between
floating-point and integers, and exhibited signed overflow
undefined behavior
Tested:
```
$ aarch64-linux-gnu-g++ -static -I./ '-DEIGEN_TEST_PART_ALL=1' test/packetmath.cpp -o packetmath
$ adb push packetmath /data/local/tmp/
$ adb shell "/data/local/tmp/packetmath"
```
Diffstat (limited to 'Eigen/src/Core/arch/NEON/PacketMath.h')
-rw-r--r-- | Eigen/src/Core/arch/NEON/PacketMath.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/Eigen/src/Core/arch/NEON/PacketMath.h index ddd43c377..340e1b1c5 100644 --- a/Eigen/src/Core/arch/NEON/PacketMath.h +++ b/Eigen/src/Core/arch/NEON/PacketMath.h @@ -338,7 +338,7 @@ struct packet_traits<int64_t> : default_packet_traits Vectorizable = 1, AlignedOnScalar = 1, size = 2, - HasHalfPacket = 1, + HasHalfPacket = 0, HasCmp = 1, HasAdd = 1, @@ -368,7 +368,7 @@ struct packet_traits<uint64_t> : default_packet_traits Vectorizable = 1, AlignedOnScalar = 1, size = 2, - HasHalfPacket = 1, + HasHalfPacket = 0, HasCmp = 1, HasAdd = 1, |