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

--- Comment #4 from luoxhu at gcc dot gnu.org ---

vect-simd-17.p10.c.335r.final:
3379: %v1:V16QI=unspec[%v1:V16QI,%v1:V16QI,%v9:V16QI] 254
3372: {%v11:V4SI=~%v0:V4SI&%v13:V4SI|%v11:V4SI;clobber %r10:V4SI;}  // wrong
code.
  REG_DEAD %v0:V4SI
  REG_UNUSED %r10:V4SI
3373: [%r1:DI+0x80]=%v11:V4SI


ASM:

.L149:
        lxvx %vs32,%r9,%r8
        vadduwm %v12,%v12,%v13
        mfvsrd %r5,%vs42
        mfvsrld %r4,%vs42
        vadduwm %v10,%v10,%v8
        stxv %vs44,112(%r1)
        xxperm %vs32,%vs32,%vs41
        vadduwm %v1,%v13,%v0
        vcmpequw %v0,%v0,%v13
        xxperm %vs33,%vs33,%vs41
        vandc %r10,%v13,%v0   // wrong code
        vor %v11,%r10,%v11    // wrong code
        stxv %vs43,128(%r1)
        stxvx %vs33,%r9,%r8
        addi %r8,%r8,-16
        bdnz .L149

But the binary is (/opt/binutils-power10/bin/objdump -d vect-simd-17.p10 |
less):

    10002ea0:   19 42 09 7c     lxvx    vs32,r9,r8
    10002ea4:   80 68 8c 11     vadduwm v12,v12,v13
    10002ea8:   67 00 45 7d     mfvrd   r5,v10
    10002eac:   67 02 44 7d     mfvsrld r4,vs42
    10002eb0:   80 40 4a 11     vadduwm v10,v10,v8
    10002eb4:   7d 00 81 f5     stxv    vs44,112(r1)
    10002eb8:   d7 48 00 f0     xxperm  vs32,vs32,vs41
    10002ebc:   80 00 2d 10     vadduwm v1,v13,v0
    10002ec0:   86 68 00 10     vcmpequw v0,v0,v13
    10002ec4:   d7 48 21 f0     xxperm  vs33,vs33,vs41
    10002ec8:   44 04 4d 11     vandc   v10,v13,v0    // wrong code
    10002ecc:   84 5c 6a 11     vor     v11,v10,v11   // wrong code
    10002ed0:   8d 00 61 f5     stxv    vs43,128(r1)
    10002ed4:   19 43 29 7c     stxvx   vs33,r9,r8
    10002ed8:   f0 ff 08 39     addi    r8,r8,-16
    10002edc:   c4 ff 00 42     bdnz    10002ea0 <doit+0x26f0>

%vs42 is a global constant data loaded from memory, it was modified at address
0x10002ec8, there r10 is changed to v10 from ASM to binary, which was supposed
to be never change in the loop.


(gdb)
   0x0000000010002eb4 <doit+9988>:      7d 00 81 f5     stxv    vs44,112(r1)
   0x0000000010002eb8 <doit+9992>:      d7 48 00 f0     xxperm  vs32,vs32,vs41
   0x0000000010002ebc <doit+9996>:      80 00 2d 10     vadduwm v1,v13,v0
   0x0000000010002ec0 <doit+10000>:     86 68 00 10     vcmpequw v0,v0,v13
   0x0000000010002ec4 <doit+10004>:     d7 48 21 f0     xxperm  vs33,vs33,vs41
=> 0x0000000010002ec8 <doit+10008>:     44 04 4d 11     vandc   v10,v13,v0
   0x0000000010002ecc <doit+10012>:     84 5c 6a 11     vor     v11,v10,v11
   0x0000000010002ed0 <doit+10016>:     8d 00 61 f5     stxv    vs43,128(r1)
7: $vs42.v4_int32 = {-30, -29, -28, -27}
(gdb) si
   0x0000000010002eb4 <doit+9988>:      7d 00 81 f5     stxv    vs44,112(r1)
   0x0000000010002eb8 <doit+9992>:      d7 48 00 f0     xxperm  vs32,vs32,vs41
   0x0000000010002ebc <doit+9996>:      80 00 2d 10     vadduwm v1,v13,v0
   0x0000000010002ec0 <doit+10000>:     86 68 00 10     vcmpequw v0,v0,v13
   0x0000000010002ec4 <doit+10004>:     d7 48 21 f0     xxperm  vs33,vs33,vs41
   0x0000000010002ec8 <doit+10008>:     44 04 4d 11     vandc   v10,v13,v0
=> 0x0000000010002ecc <doit+10012>:     84 5c 6a 11     vor     v11,v10,v11
   0x0000000010002ed0 <doit+10016>:     8d 00 61 f5     stxv    vs43,128(r1)
7: $vs42.v4_int32 = {0, 0, 0, 0}

Reply via email to