@@ -5524,26 +5524,23 @@ def : Pat<(v16i8 (vnotq QPR:$src)),
55245524// with different register constraints; it just inserts copies.
55255525// That is why pseudo VBSP implemented. Is is expanded later into
55265526// VBIT/VBIF/VBSL taking into account register constraints to avoid copies.
5527- def VBSPd
5528- : PseudoNeonI<(outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5529- IIC_VBINiD, "",
5530- [(set DPR:$Vd,
5531- (v2i32 (NEONvbsp DPR:$src1, DPR:$Vn, DPR:$Vm)))]>;
5527+ def VBSPd : PseudoNeonI<(outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5528+ IIC_VBINiD, "", []>;
55325529let Predicates = [HasNEON] in {
5533- def : Pat<(v8i8 (int_arm_neon_vbsl (v8i8 DPR:$src1),
5534- (v8i8 DPR:$Vn), (v8i8 DPR:$Vm))),
5530+ def : Pat<(v8i8 (NEONvbsp (v8i8 DPR:$src1),
5531+ (v8i8 DPR:$Vn), (v8i8 DPR:$Vm))),
55355532 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5536- def : Pat<(v4i16 (int_arm_neon_vbsl (v4i16 DPR:$src1),
5537- (v4i16 DPR:$Vn), (v4i16 DPR:$Vm))),
5533+ def : Pat<(v4i16 (NEONvbsp (v4i16 DPR:$src1),
5534+ (v4i16 DPR:$Vn), (v4i16 DPR:$Vm))),
55385535 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5539- def : Pat<(v2i32 (int_arm_neon_vbsl (v2i32 DPR:$src1),
5540- (v2i32 DPR:$Vn), (v2i32 DPR:$Vm))),
5536+ def : Pat<(v2i32 (NEONvbsp (v2i32 DPR:$src1),
5537+ (v2i32 DPR:$Vn), (v2i32 DPR:$Vm))),
55415538 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5542- def : Pat<(v2f32 (int_arm_neon_vbsl (v2f32 DPR:$src1),
5543- (v2f32 DPR:$Vn), (v2f32 DPR:$Vm))),
5539+ def : Pat<(v2f32 (NEONvbsp (v2f32 DPR:$src1),
5540+ (v2f32 DPR:$Vn), (v2f32 DPR:$Vm))),
55445541 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5545- def : Pat<(v1i64 (int_arm_neon_vbsl (v1i64 DPR:$src1),
5546- (v1i64 DPR:$Vn), (v1i64 DPR:$Vm))),
5542+ def : Pat<(v1i64 (NEONvbsp (v1i64 DPR:$src1),
5543+ (v1i64 DPR:$Vn), (v1i64 DPR:$Vm))),
55475544 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
55485545
55495546def : Pat<(v8i8 (or (and DPR:$Vn, DPR:$Vd),
@@ -5560,26 +5557,23 @@ def : Pat<(v1i64 (or (and DPR:$Vn, DPR:$Vd),
55605557 (VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
55615558}
55625559
5563- def VBSPq
5564- : PseudoNeonI<(outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5565- IIC_VBINiQ, "",
5566- [(set QPR:$Vd,
5567- (v4i32 (NEONvbsp QPR:$src1, QPR:$Vn, QPR:$Vm)))]>;
5560+ def VBSPq : PseudoNeonI<(outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5561+ IIC_VBINiQ, "", []>;
55685562let Predicates = [HasNEON] in {
5569- def : Pat<(v16i8 (int_arm_neon_vbsl (v16i8 QPR:$src1),
5570- (v16i8 QPR:$Vn), (v16i8 QPR:$Vm))),
5563+ def : Pat<(v16i8 (NEONvbsp (v16i8 QPR:$src1),
5564+ (v16i8 QPR:$Vn), (v16i8 QPR:$Vm))),
55715565 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5572- def : Pat<(v8i16 (int_arm_neon_vbsl (v8i16 QPR:$src1),
5573- (v8i16 QPR:$Vn), (v8i16 QPR:$Vm))),
5566+ def : Pat<(v8i16 (NEONvbsp (v8i16 QPR:$src1),
5567+ (v8i16 QPR:$Vn), (v8i16 QPR:$Vm))),
55745568 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5575- def : Pat<(v4i32 (int_arm_neon_vbsl (v4i32 QPR:$src1),
5576- (v4i32 QPR:$Vn), (v4i32 QPR:$Vm))),
5569+ def : Pat<(v4i32 (NEONvbsp (v4i32 QPR:$src1),
5570+ (v4i32 QPR:$Vn), (v4i32 QPR:$Vm))),
55775571 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5578- def : Pat<(v4f32 (int_arm_neon_vbsl (v4f32 QPR:$src1),
5579- (v4f32 QPR:$Vn), (v4f32 QPR:$Vm))),
5572+ def : Pat<(v4f32 (NEONvbsp (v4f32 QPR:$src1),
5573+ (v4f32 QPR:$Vn), (v4f32 QPR:$Vm))),
55805574 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5581- def : Pat<(v2i64 (int_arm_neon_vbsl (v2i64 QPR:$src1),
5582- (v2i64 QPR:$Vn), (v2i64 QPR:$Vm))),
5575+ def : Pat<(v2i64 (NEONvbsp (v2i64 QPR:$src1),
5576+ (v2i64 QPR:$Vn), (v2i64 QPR:$Vm))),
55835577 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
55845578
55855579def : Pat<(v16i8 (or (and QPR:$Vn, QPR:$Vd),
0 commit comments