This patch implements custom lowering for ZEXT to N x i32 vector types. Currently llvm just crashes.<div><br></div><div>I'm not very qualified either in the backend or with ARM assembly. Please review carefully!</div><div>


<br></div><div>Since you're probably wondering, the code it produces is lengthy:</div><div><br></div><div><div>test1:                                  @ @test1</div><div>@ BB#0:</div><div>        str     r11, [sp, #-4]!</div>


<div>        mov     r11, sp</div><div>        sub     sp, sp, #28</div><div>        bic     sp, sp, #15</div><div>        vmov.i32        d0, #0x0</div><div>        vmov.u16        r2, d0[0]</div><div>        vmov    d0, r0, r1</div>


<div>        strh    r2, [sp, #14]</div><div>        strh    r2, [sp, #10]</div><div>        strh    r2, [sp, #6]</div><div>        strh    r2, [sp, #2]</div><div>        vmov.u16        r0, d0[3]</div><div>        vmov.u16        r2, d0[2]</div>


<div>        vmov.u16        r1, d0[1]</div><div>        strh    r0, [sp, #12]</div><div>        strh    r2, [sp, #8]</div><div>        vmov.u16        r2, d0[0]</div><div>        strh    r1, [sp, #4]</div><div>        mov     r1, sp</div>


<div>        strh    r2, [sp]</div><div>        vldmia  r1, {d0, d1}</div></div><div><div>        vmov    r0, r1, d0</div><div>        vmov    r2, r3, d1</div><div>        mov     sp, r11</div><div>        ldr     r11, [sp], #4</div>


<div>        mov     pc, lr</div></div><div><br></div><div>Nick</div><div><br></div>