Felix Fietkau wrote:
> Actually, it emits -16384 in both the working and non-working case,
> I think what makes the difference of working vs non-working is this:
> 
> Broken: (0xffffc000 is in v0)
> -  e8:        00021a02        srl     v1,v0,0x8
> -  ec:        00021200        sll     v0,v0,0x8
> 
> Working: (0xffffc000 is in v1)
> +  e8:        7c623a00        ext     v0,v1,0x8,0x8
> +  ec:        00031a00        sll     v1,v1,0x8
> 
> using ext instead of srl prevents the extra bits from spilling over.

Sure. I was looking at the assembly emitted by the other compilers I tested. 
None of those even ever use -16384 (0xffffc000). They all simply OR in 0xc000 
(as an immediate value).

I’m in touch with Linaro about this bug, so maybe we’ll get some traction 
without having to commit my workaround patch.
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to