Instead of loading (a potential ton of) scalar constants, load those as a vector and then insert into it.
I don't know how to solve the FP cases, so I'm posting this as-is to see if anyone else has ideas or if I've just approached this in the wrong way. I stepped through the FP examples, and we show something like this:
Legalizing: t6: f32 = ConstantFP<3.000000e+00>
Trying to expand node
Succesfully expanded node
... replacing: t6: f32 = ConstantFP<3.000000e+00>
with: t22: f32,ch = load<LD4[ConstantPool]> t0, ConstantPool:i64<float 3.000000e+00> 0, undef:i64This doesn't happen with int constants...because int constants are legal but FP constants are not? I looked at creating target FP constants instead, but that can cause crashing for reasons I haven't tracked down yet.