[aarch64-port-dev ] AArch64: vectorization fails RSA crypto tests

Edward Nevill edward.nevill at linaro.org
Mon Jun 15 20:24:59 UTC 2015


On 15 June 2015 at 17:21, Andrew Haley <aph at redhat.com> wrote:

>
>
> diff -r 6217fd2c767b src/cpu/aarch64/vm/assembler_aarch64.hpp
> --- a/src/cpu/aarch64/vm/assembler_aarch64.hpp  Fri Jun 12 16:09:45 2015
> +0100
> +++ b/src/cpu/aarch64/vm/assembler_aarch64.hpp  Mon Jun 15 17:16:58 2015
> +0100
> @@ -491,6 +491,11 @@
>          i->rf(_index, 16);
>          i->f(_ext.option(), 15, 13);
>          unsigned size = i->get(31, 30);
> +        if (i->get(26, 26) && i->get(23, 23)) {
> +          // SIMD Q Type - Size = 128 bits
> +          assert(size == 0, "bad size");
> +          size = 0b100;
> +        }
>          if (size == 0) // It's a byte
>            i->f(_ext.shift() >= 0, 12);
>          else {
>

Oops, sorry about that.

The following fixes the assertion failure in
java/math/BigInteger/BigIntegerTest.java

diff -r 6217fd2c767b src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp     Fri Jun 12 16:09:45
2015 +0100
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp     Mon Jun 15 20:20:12
2015 +0000
@@ -477,8 +477,11 @@
   //   T1D/T2D: invalid
   void mov(FloatRegister Vd, SIMD_Arrangement T, u_int32_t imm32) {
     assert(T != T1D && T != T2D, "invalid arrangement");
+    if (T == T8B || T == T16B) {
+      movi(Vd, T, imm32 & 0xff, 0);
+      return;
+    }
     u_int32_t nimm32 = ~imm32;
-    if (T == T8B || T == T16B) { imm32 &= 0xff; nimm32 &= 0xff; }
     if (T == T4H || T == T8H) { imm32 &= 0xffff; nimm32 &= 0xffff; }
     u_int32_t x = imm32;
     int movi_cnt = 0;

Would you like me to merge these two as a single patch, file a JBS
"regression" bug report and push a cr.

All the best,
Ed.


More information about the aarch64-port-dev mailing list