diff --git a/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp b/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp index 0f258b42bdf3..3d3e2cb0aea5 100644 --- a/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp +++ b/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp @@ -150,44 +150,9 @@ bool MipsDAGToDAGISel::selectVSplat(SDNode *N, APInt &Imm, return false; } -bool MipsDAGToDAGISel::selectVSplatUimm1(SDValue N, SDValue &Imm) const { +bool MipsDAGToDAGISel::selectVSplatCommon(SDValue N, SDValue &Imm, bool Signed, + unsigned ImmBitSize) const { llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm2(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm3(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm4(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm5(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm6(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatUimm8(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; -} - -bool MipsDAGToDAGISel::selectVSplatSimm5(SDValue N, SDValue &Imm) const { - llvm_unreachable("Unimplemented function."); - return false; } bool MipsDAGToDAGISel::selectVSplatUimmPow2(SDValue N, SDValue &Imm) const { diff --git a/llvm/lib/Target/Mips/MipsISelDAGToDAG.h b/llvm/lib/Target/Mips/MipsISelDAGToDAG.h index 6135f9680785..f757dbe65f97 100644 --- a/llvm/lib/Target/Mips/MipsISelDAGToDAG.h +++ b/llvm/lib/Target/Mips/MipsISelDAGToDAG.h @@ -92,22 +92,18 @@ private: /// Select constant vector splats. virtual bool selectVSplat(SDNode *N, APInt &Imm, unsigned MinSizeInBits) const; - /// Select constant vector splats whose value fits in a uimm1. - virtual bool selectVSplatUimm1(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm2. - virtual bool selectVSplatUimm2(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm3. - virtual bool selectVSplatUimm3(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm4. - virtual bool selectVSplatUimm4(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm5. - virtual bool selectVSplatUimm5(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm6. - virtual bool selectVSplatUimm6(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a uimm8. - virtual bool selectVSplatUimm8(SDValue N, SDValue &Imm) const; - /// Select constant vector splats whose value fits in a simm5. - virtual bool selectVSplatSimm5(SDValue N, SDValue &Imm) const; + virtual bool selectVSplatCommon(SDValue N, SDValue &Imm, bool Signed, + unsigned ImmBitSize) const; + /// Select constant vector splats whose value fits in a uimm. + template + bool selectVSplatUimm(SDValue N, SDValue &Imm) const { + return selectVSplatCommon(N, Imm, false, Bits); + } + /// Select constant vector splats whose value fits in a simm. + template + bool selectVSplatSimm(SDValue N, SDValue &Imm) const { + return selectVSplatCommon(N, Imm, true, Bits); + } /// Select constant vector splats whose value is a power of 2. virtual bool selectVSplatUimmPow2(SDValue N, SDValue &Imm) const; /// Select constant vector splats whose value is the inverse of a diff --git a/llvm/lib/Target/Mips/MipsMSAInstrInfo.td b/llvm/lib/Target/Mips/MipsMSAInstrInfo.td index c4abccb24c6f..ac9ced388118 100644 --- a/llvm/lib/Target/Mips/MipsMSAInstrInfo.td +++ b/llvm/lib/Target/Mips/MipsMSAInstrInfo.td @@ -249,67 +249,67 @@ class SplatComplexPattern", [build_vector, bitconvert]>; def vsplati8_uimm4 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati8_uimm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati8_uimm8 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati8_simm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati16_uimm3 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati16_uimm4 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati16_uimm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati16_simm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati32_uimm2 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati32_uimm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati32_simm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati64_uimm1 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati64_uimm5 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati64_uimm6 : SplatComplexPattern", [build_vector, bitconvert]>; def vsplati64_simm5 : SplatComplexPattern", [build_vector, bitconvert]>; // Any build_vector that is a constant splat with a value that is an exact diff --git a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp index 6b966e69353d..92ab03b14ada 100644 --- a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp +++ b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp @@ -564,52 +564,6 @@ selectVSplatCommon(SDValue N, SDValue &Imm, bool Signed, return false; } -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatUimm1(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 1); -} - -bool MipsSEDAGToDAGISel:: -selectVSplatUimm2(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 2); -} - -bool MipsSEDAGToDAGISel:: -selectVSplatUimm3(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 3); -} - -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatUimm4(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 4); -} - -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatUimm5(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 5); -} - -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatUimm6(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 6); -} - -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatUimm8(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, false, 8); -} - -// Select constant vector splats. -bool MipsSEDAGToDAGISel:: -selectVSplatSimm5(SDValue N, SDValue &Imm) const { - return selectVSplatCommon(N, Imm, true, 5); -} - // Select constant vector splats whose value is a power of 2. // // In addition to the requirements of selectVSplat(), this function returns diff --git a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h index 7b843b0e0b25..45d23591187f 100644 --- a/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h +++ b/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h @@ -95,23 +95,7 @@ private: unsigned MinSizeInBits) const override; /// Select constant vector splats whose value fits in a given integer. bool selectVSplatCommon(SDValue N, SDValue &Imm, bool Signed, - unsigned ImmBitSize) const; - /// Select constant vector splats whose value fits in a uimm1. - bool selectVSplatUimm1(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm2. - bool selectVSplatUimm2(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm3. - bool selectVSplatUimm3(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm4. - bool selectVSplatUimm4(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm5. - bool selectVSplatUimm5(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm6. - bool selectVSplatUimm6(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a uimm8. - bool selectVSplatUimm8(SDValue N, SDValue &Imm) const override; - /// Select constant vector splats whose value fits in a simm5. - bool selectVSplatSimm5(SDValue N, SDValue &Imm) const override; + unsigned ImmBitSize) const override; /// Select constant vector splats whose value is a power of 2. bool selectVSplatUimmPow2(SDValue N, SDValue &Imm) const override; /// Select constant vector splats whose value is the inverse of a