Looks like this patch is already outdated by D85546, but thought I'd offer it anyway in case the framework helps...
This patch is an attempt to lower fixed-width ZEXT by bitcasting the input to the result type, then AND'ing with an immediate that matches the input type.
The test's output shows this is not really a zero extend.
The load will read 32 bytes into consecutive byte lanes. The and will zero the odd numbered bytes (i.e. zero-extend the even lanes). The store will write those 16 zero-extend even numbered bytes along with 16 more zeros that result from the load zeroing byte 32 onward.
I'm afraid to say that currently the extends are not going to be a cheap operation being they are effectively the reverse of the truncate operation. Truncates use a uzp1 sequence, so the extends require an upklo sequence.
I've got a patch already to do this that I'll add you to.