Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assertion fails on "stp/ldp q0, q1, [x0]" #8

Open
dc-mak opened this issue Aug 27, 2020 · 3 comments
Open

Assertion fails on "stp/ldp q0, q1, [x0]" #8

dc-mak opened this issue Aug 27, 2020 · 3 comments

Comments

@dc-mak
Copy link

dc-mak commented Aug 27, 2020

opcode ad{0,4}00400

function memory_pair_simdfp_offset_memory_pair_simdfp_postidx__decode (Rt, Rn, Rt2, imm7, L, V, opc) = {                                                                                                          
    ...                                                                                                                                                                                                      
    let 'scale = 2 + UInt(opc);                                                                                                                                                                                   
    let 'datasize = shl_int(8, scale);                                                                                                                                                                            
    assert(constraint('datasize in {8, 16, 32, 64}));                                                                                                                                                             
    ...                                                                                                                  
}

and similarly for memory_pair_simdfp_preidx_memory_pair_simdfp_postidx__decode but for
opcode ad{8,c}f7c1e
"stp/ldp q30, q31, [x0, #480]!"

Also, shouldn't 'datasize be in 32 and 64 only because UInt(opc) is either 0 or 1?

@Alasdair
Copy link
Contributor

The constraints are added automatically it doesn't understand anything intricate about shifts and the range of opc, it just knows what is required as a precondition for memory_pair_simdfp_postidx

That said I think maybe opc can be two allowing a 128 bit load.

@Alasdair
Copy link
Contributor

Should be fixed now I think

@Alasdair
Copy link
Contributor

I should add that we will likely need to ensure that the CPTR_EL2, CPACR, and HCR_EL2 registers are set appropriately to allow advanced simd instructions in EL2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants