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>