================ @@ -447,19 +470,23 @@ def VST1_X3 : WInst<"vst1_x3", "v*(3!)", def VST1_X4 : WInst<"vst1_x4", "v*(4!)", "cfilsUcUiUlUsQcQfQiQlQsQUcQUiQUlQUsPcPsQPcQPs">; def VST1_LANE : WInst<"vst1_lane", "v*(.!)I", - "QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs">; + "QUcQUsQUiQUlQcQsQiQlQfQPcQPsUcUsUiUlcsilfPcPs", + [ImmCheck<2, ImmCheckLaneIndex, 1>]>; + let ArchGuard = "(__ARM_FP & 2)" in { def VLD1_F16 : WInst<"vld1", ".(c*!)", "hQh">; def VLD1_X2_F16 : WInst<"vld1_x2", "2(c*!)", "hQh">; def VLD1_X3_F16 : WInst<"vld1_x3", "3(c*!)", "hQh">; def VLD1_X4_F16 : WInst<"vld1_x4", "4(c*!)", "hQh">; -def VLD1_LANE_F16 : WInst<"vld1_lane", ".(c*!).I", "hQh">; +def VLD1_LANE_F16 : WInst<"vld1_lane", ".(c*!).I", "hQh", + [ImmCheck<2, ImmCheck0_3, 1>]>; def VLD1_DUP_F16 : WInst<"vld1_dup", ".(c*!)", "hQh">; def VST1_F16 : WInst<"vst1", "v*(.!)", "hQh">; def VST1_X2_F16 : WInst<"vst1_x2", "v*(2!)", "hQh">; def VST1_X3_F16 : WInst<"vst1_x3", "v*(3!)", "hQh">; def VST1_X4_F16 : WInst<"vst1_x4", "v*(4!)", "hQh">; -def VST1_LANE_F16 : WInst<"vst1_lane", "v*(.!)I", "hQh">; +def VST1_LANE_F16 : WInst<"vst1_lane", "v*(.!)I", "hQh", + [ImmCheck<2, ImmCheck0_3, 1>]>; ---------------- SpencerAbson wrote:
Have changed them to use a more general `ImmCheckLaneIndex`. I overlooked `vst[x]q_lane_f16` in this approach, which was not flagged by any tests - these will be added too. https://github.com/llvm/llvm-project/pull/100278 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits