@@ -5524,26 +5524,23 @@ def : Pat<(v16i8 (vnotq QPR:$src)),
5524
5524
// with different register constraints; it just inserts copies.
5525
5525
// That is why pseudo VBSP implemented. Is is expanded later into
5526
5526
// 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, "", []>;
5532
5529
let 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))),
5535
5532
(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))),
5538
5535
(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))),
5541
5538
(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))),
5544
5541
(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))),
5547
5544
(VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5548
5545
5549
5546
def : Pat<(v8i8 (or (and DPR:$Vn, DPR:$Vd),
@@ -5560,26 +5557,23 @@ def : Pat<(v1i64 (or (and DPR:$Vn, DPR:$Vd),
5560
5557
(VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
5561
5558
}
5562
5559
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, "", []>;
5568
5562
let 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))),
5571
5565
(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))),
5574
5568
(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))),
5577
5571
(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))),
5580
5574
(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))),
5583
5577
(VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5584
5578
5585
5579
def : Pat<(v16i8 (or (and QPR:$Vn, QPR:$Vd),
0 commit comments