[gen] Add pair-cell offset annotation for AArch64. - #1886
Conversation
bb96221 to
4aeba6b
Compare
fb65a22 to
c90041b
Compare
869d875 to
efa6f2c
Compare
efa6f2c to
b2be27c
Compare
relokin
left a comment
There was a problem hiding this comment.
This is great, I haven't had a very thorough look at the code but I am happy with the tests we can now generate. One issue that would be good to address is the type mismatch is tests like this:
$> diyone7 -arch AArch64 -metadata false w4 PosWW Rfe PaIQ Fre -oneloc
AArch64 WW+R+posw4p+PaIQ
{
int x[2]={0,0};
uint32_t 0:X0=0; 0:X1=x;
1:X1=x;
}
P0 | P1 ;
MOV W0,#2 | LDIAPP W0,W2,[X1] ;
STR W0,[X1,#4] | ;
MOV W2,#1 | ;
STR W2,[X1] | ;
exists (x={1,2} /\ 1:X0=1 /\ 1:X2=0)
Notice that x is an array of int but 0:X0 and 0:X1 are uint32_t.
Do not emit redundant type initialisers for AArch64 registers whose values are materialised by generated move instructions.
Should we remove If so, I think I fixed it in 4d72160. |
relokin
left a comment
There was a problem hiding this comment.
Thanks Shale that fixes the problem.
Expose a non-mixed AArch64 offset annotation to generate ordinary accesses to the second cell of a pair-backed location. The surface spelling follows the current natural type size.
int, the added annotation isw4-type int64_t, it isq8.We also remove the synthetic
ADDafterAArch64pair loads but check both register values in the final condition.Given the new annotation and change, we can generate test, e.g.
diyone7 -metadata false -arch AArch64 -oneloc Rfe PaIQ Fre w4 PosWW