https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116010

--- Comment #3 from Thiago Jung Bauermann <thiago.bauermann at linaro dot org> 
---
Created attachment 58725
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58725&action=edit
mve-vabs.s generated by the test after commit c290e6a0b7a9.

(In reply to Andrew Pinski from comment #1)
> So I think there are 2 different issues here.

If that is the case, then I can open a separate bugzilla so that there's one
for each test failure.

> First gcc.target/arm/simd/mve-vabs.c now calls memcpy because of the
> restrict instead of memmove. That should be a simple fix there.

In my setup I don't see memcpy being called. Instead of memmove, GCC is now
generating the load and store instruction. E.g.:

 test_vabs_u32x4:                                                               
        @ args = 0, pretend = 0, frame = 0                                      
        @ frame_needed = 0, uses_anonymous_args = 0                             
-       @ link register save eliminated.                                        
-       movs    r2, #16
-       b       memmove
+       push    {lr}
+       ldr     ip, [r1, #4]    @ unaligned
+       ldr     lr, [r1]        @ unaligned
+       ldr     r2, [r1, #8]    @ unaligned
+       ldr     r3, [r1, #12]   @ unaligned
+       str     lr, [r0]        @ unaligned
+       str     ip, [r0, #4]    @ unaligned
+       str     r2, [r0, #8]    @ unaligned
+       str     r3, [r0, #12]   @ unaligned
+       ldr     pc, [sp], #4
        .size   test_vabs_u32x4, .-test_vabs_u32x4
        .align  1
        .p2align 2,,3

I'm attaching the complete assembly file for the test.

Reply via email to