[aarch64-port-dev ] RFR(S): 8241475: AArch64: Add missing support for PopCountVI node

Pengfei Li Pengfei.Li at arm.com
Wed Apr 1 02:05:04 UTC 2020


Hi Andrew,

Thanks for review.

>    INSN(absr,   0, 0b100000101110, 1); // accepted arrangements: T8B, T16B,
> T4H, T8H,      T4S
> -  INSN(negr,   1, 0b100000101110, 2); // accepted arrangements: T8B, T16B,
> T4H, T8H, T2S, T4S, T2D
> 
> is actually related to some other work you are doing?

This change is related to
-    if (accepted < 2) guarantee(T != T2S && T != T2D, "incorrect arrangement");         \
-    if (accepted == 0) guarantee(T == T8B || T == T16B, "incorrect arrangement");       \
+    if (accepted < 3) guarantee(T != T2D, "incorrect arrangement");                     \
+    if (accepted < 2) guarantee(T != T2S, "incorrect arrangement");                     \
+    if (accepted < 1) guarantee(T == T8B || T == T16B, "incorrect arrangement");        \

Before my patch, the candidate values of "accepted" are 0, 1 and 2 meaning different accepted arrangements as below:
0 - Only T8B and T16B are accepted
1 - All arrangements but T2S and T2D are accepted
2 - All arrangements are accepted

In my patch, the newly added instruction UADDLP supports T2S but doesn't support T2D. So I changed the value range to 0 - 3, where 3 means all arrangements are accepted now. That's why the value for parameter "accepted" of NEGR is promoted from 2 to 3 now.

--
Thanks,
Pengfei



More information about the aarch64-port-dev mailing list