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

--- Comment #3 from Li Pan <pan2.li at intel dot com> ---
The related asm looks abnormal up to a point, there should be a reduce insn for
a but actually not, the insn and flow may looks like below.

 114   │    1028c:   cc847057            vsetivli    zero,8,e16,m1,ta,ma
 115   │    10290:   5e064157            vmv.v.x v2,a2
 116   │    10294:   01479603            lh  a2,20(a5)
 117   │    10298:   5e084057            vmv.v.x v0,a6
 118   │    1029c:   5e0740d7            vmv.v.x v1,a4
 119   │    102a0:   26008057            vand.vv v0,v0,v1
 120   │    102a4:   66003057            vmsne.vi    v0,v0,0          // v0.s =
0xffff
 121   │    102a8:   5e05c0d7            vmv.v.x v1,a1                    // a1
= 3
 122   │    102ac:   261100d7            vand.vv v1,v1,v2                 //
v1.s = {3}, v2.s = {3}
 123   │    102b0:   661030d7            vmsne.vi    v1,v1,0          // v1.s =
0xffff
 124   │    102b4:   6e00a057            vmxor.mm    v0,v0,v1         // v0.s =
0xff00 => {0, 0xff}
 125   │    102b8:   0c707057            vsetvli zero,zero,e8,mf2,ta,ma   // vl
= 8
 126   │    102bc:   5e06c0d7            vmv.v.x v1,a3                    //
$a3 = -1
 127   │    102c0:   661030d7            vmsne.vi    v1,v1,0          // v1.b =
{0xff}
 128   │    102c4:   6e00a057            vmxor.mm    v0,v0,v1         // v0.b =
{0xff}
 129   │    102c8:   5e0030d7            vmv.v.i v1,0                     //
v1.b = {0}
 130   │    102cc:   5c10b0d7            vmerge.vim  v1,v1,1,v0       // v1.b =
{1}
 131   │    102d0:   421026d7            vmv.x.s a3,v1                    // a3
= 1
 132   │    102d4:   8f71                    and a4,a4,a2                 // a2
= 3, a4 = 3
 133   │    102d6:   00e03733            snez    a4,a4                    // a4
= 1
 134   │    102da:   40e00733            neg a4,a4                    // a4 =
-1
 135   │    102de:   8f35                    xor a4,a4,a3                 // a4
=  -2, a3 = 1
 136   │    102e0:   01c79683            lh  a3,28(a5)                // a3 = 3
 137   │    102e4:   01879783            lh  a5,24(a5)                // a5 = 3
 138   │    102e8:   0c807057            vsetvli zero,zero,e16,m1,ta,ma   // vl
= 8
 139   │    102ec:   5e06c057            vmv.v.x v0,a3                    //
v0.s = {3}
 140   │    102f0:   5e0640d7            vmv.v.x v1,a2                    //
v1.s = {3}, a2 = 3
 141   │    102f4:   26008057            vand.vv v0,v0,v1                 //
v0.s = {3}
 142   │    102f8:   66003057            vmsne.vi    v0,v0,0          // v0.s =
{0xffff}
 143   │    102fc:   5e07c0d7            vmv.v.x v1,a5                    //
v1.s = {3}, a5 = 3
 144   │    10300:   261100d7            vand.vv v1,v1,v2                 //
v1.s = {3}, v2 = {3}
 145   │    10304:   661030d7            vmsne.vi    v1,v1,0          // v1.s =
{0xffff}
 146   │    10308:   6e00a057            vmxor.mm    v0,v0,v1         // v0.s =
{0xff00}
 147   │    1030c:   0c707057            vsetvli zero,zero,e8,mf2,ta,ma   // vl
= 8
 148   │    10310:   5e0740d7            vmv.v.x v1,a4                    //
v1.b = {0xfe}, a4 = -2
 149   │    10314:   661030d7            vmsne.vi    v1,v1,0          // v1.b =
{0xff}
 150   │    10318:   6e00a057            vmxor.mm    v0,v0,v1         // v0.b =
{0xff}
 151   │    1031c:   5e0030d7            vmv.v.i v1,0                     //
v1.b = {0}
 152   │    10320:   5c10b0d7            vmerge.vim  v1,v1,1,v0       // v1.b =
{0x1}
 153   │    10324:   421025d7            vmv.x.s a1,v1                    // a1
= 0x1
 154   │    10328:   8985                    andi    a1,a1,1
 155   │    1032a:   88b18823            sb  a1,-1904(gp) # 1abf0 <a>
 156   │    1032e:   6565                    lui a0,0x19
 157   │    10330:   66050513            addi    a0,a0,1632 # 19660
<__clzdi2+0x2e>
 158   │    10334:   482000ef            jal 107b6 <printf>

Reply via email to