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>