================ @@ -1883,6 +1931,10 @@ void SystemZInstrInfo::getLoadStoreOpcodes(const TargetRegisterClass *RC, } else if (RC == &SystemZ::FP128BitRegClass) { LoadOpcode = SystemZ::LX; StoreOpcode = SystemZ::STX; + } else if (RC == &SystemZ::FP16BitRegClass || + RC == &SystemZ::VR16BitRegClass) { + LoadOpcode = SystemZ::VL16; ---------------- uweigand wrote:
What I meant is that `VL16` is defined as having a `v16hb` return value ``` def VL16 : UnaryAliasVRX<z_load, v16hb, bdxaddr12pair>; ``` and `v16hb` is defined to live in `VR16` - *not* `FP16`: ``` def v16hb : TypedReg<f16, VR16>; ``` So it seems to me forcing a `FP16` register into the instruction, even if it might seem to do what we want, is not really allowed and might e.g. trigger strict MI checking failures ... https://github.com/llvm/llvm-project/pull/109164 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits