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>