https://github.com/topperc updated https://github.com/llvm/llvm-project/pull/227846
>From 078738103ecaa01cbcab53dd81b6996d9cb7ca75 Mon Sep 17 00:00:00 2001 From: Craig Topper <[email protected]> Date: Wed, 30 Sep 2026 13:03:15 -0700 Subject: [PATCH] [RISCV][P-ext] Remove riscv_pmulh(u)intrinsics. These are redundant with the llvm.smulh/umulh intrinsics that were added recently. --- clang/lib/CodeGen/TargetBuiltins/RISCV.cpp | 4 ++-- llvm/include/llvm/IR/IntrinsicsRISCV.td | 2 -- llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 10 ---------- llvm/test/CodeGen/RISCV/rvp-simd-32.ll | 4 ++-- llvm/test/CodeGen/RISCV/rvp-simd-64.ll | 8 ++++---- 5 files changed, 8 insertions(+), 20 deletions(-) diff --git a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp index 869f71b9cdd1d4..b5b6756165e59d 100644 --- a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp @@ -1476,7 +1476,7 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID, case RISCV::BI__builtin_riscv_pmulh_i16x2: case RISCV::BI__builtin_riscv_pmulh_i16x4: case RISCV::BI__builtin_riscv_pmulh_i32x2: - ID = Intrinsic::riscv_pmulh; + ID = Intrinsic::smulh; break; case RISCV::BI__builtin_riscv_pmulhr_i16x2: case RISCV::BI__builtin_riscv_pmulhr_i16x4: @@ -1486,7 +1486,7 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID, case RISCV::BI__builtin_riscv_pmulhu_u16x2: case RISCV::BI__builtin_riscv_pmulhu_u16x4: case RISCV::BI__builtin_riscv_pmulhu_u32x2: - ID = Intrinsic::riscv_pmulhu; + ID = Intrinsic::umulh; break; case RISCV::BI__builtin_riscv_pmulhru_u16x2: case RISCV::BI__builtin_riscv_pmulhru_u16x4: diff --git a/llvm/include/llvm/IR/IntrinsicsRISCV.td b/llvm/include/llvm/IR/IntrinsicsRISCV.td index 140a2397841d9e..2dfe7b7965eac8 100644 --- a/llvm/include/llvm/IR/IntrinsicsRISCV.td +++ b/llvm/include/llvm/IR/IntrinsicsRISCV.td @@ -2132,9 +2132,7 @@ class RVPBinaryIntrinsic def int_riscv_pzext_h : RVPExtIntrinsic; // Packed Multiply High. - def int_riscv_pmulh : RVPBinaryIntrinsic; def int_riscv_pmulhr : RVPBinaryIntrinsic; - def int_riscv_pmulhu : RVPBinaryIntrinsic; def int_riscv_pmulhru : RVPBinaryIntrinsic; def int_riscv_pmulhsu : RVPBinaryIntrinsic; def int_riscv_pmulhrsu : RVPBinaryIntrinsic; diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index 3a650ca20f19ed..d234177cc9e1a9 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -12304,12 +12304,8 @@ static unsigned getRVPMulHighOpcode(unsigned IntNo) { switch (IntNo) { default: llvm_unreachable("Unexpected RISC-V packed multiply high intrinsic"); - case Intrinsic::riscv_pmulh: - return ISD::MULHS; case Intrinsic::riscv_pmulhr: return RISCVISD::MULHR; - case Intrinsic::riscv_pmulhu: - return ISD::MULHU; case Intrinsic::riscv_pmulhru: return RISCVISD::MULHRU; case Intrinsic::riscv_pmulhsu: @@ -13247,9 +13243,7 @@ SDValue RISCVTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, return DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, MVT::i32, AbdsumauId, Lo, Rs1Hi, Rs2Hi); } - case Intrinsic::riscv_pmulh: case Intrinsic::riscv_pmulhr: - case Intrinsic::riscv_pmulhu: case Intrinsic::riscv_pmulhru: case Intrinsic::riscv_pmulhsu: case Intrinsic::riscv_pmulhrsu: { @@ -17821,9 +17815,7 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N, case Intrinsic::riscv_pmerge: case Intrinsic::riscv_pmulq: case Intrinsic::riscv_pmulqr: - case Intrinsic::riscv_pmulh: case Intrinsic::riscv_pmulhr: - case Intrinsic::riscv_pmulhu: case Intrinsic::riscv_pmulhru: case Intrinsic::riscv_pmulhsu: case Intrinsic::riscv_pmulhrsu: @@ -17863,9 +17855,7 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N, case Intrinsic::riscv_pmulqr: Opc = RISCVISD::MULQR; break; - case Intrinsic::riscv_pmulh: case Intrinsic::riscv_pmulhr: - case Intrinsic::riscv_pmulhu: case Intrinsic::riscv_pmulhru: case Intrinsic::riscv_pmulhsu: case Intrinsic::riscv_pmulhrsu: diff --git a/llvm/test/CodeGen/RISCV/rvp-simd-32.ll b/llvm/test/CodeGen/RISCV/rvp-simd-32.ll index 14afeb9c883024..c4a4d99973c6d8 100644 --- a/llvm/test/CodeGen/RISCV/rvp-simd-32.ll +++ b/llvm/test/CodeGen/RISCV/rvp-simd-32.ll @@ -3142,7 +3142,7 @@ define <2 x i16> @test_pmulh_v2i16(<2 x i16> %rs1, <2 x i16> %rs2) { ; CHECK: # %bb.0: ; CHECK-NEXT: pmulh.h a0, a0, a1 ; CHECK-NEXT: ret - %res = call <2 x i16> @llvm.riscv.pmulh.v2i16(<2 x i16> %rs1, <2 x i16> %rs2) + %res = call <2 x i16> @llvm.smulh.v2i16(<2 x i16> %rs1, <2 x i16> %rs2) ret <2 x i16> %res } @@ -3160,7 +3160,7 @@ define <2 x i16> @test_pmulhu_v2i16(<2 x i16> %rs1, <2 x i16> %rs2) { ; CHECK: # %bb.0: ; CHECK-NEXT: pmulhu.h a0, a0, a1 ; CHECK-NEXT: ret - %res = call <2 x i16> @llvm.riscv.pmulhu.v2i16(<2 x i16> %rs1, <2 x i16> %rs2) + %res = call <2 x i16> @llvm.umulh.v2i16(<2 x i16> %rs1, <2 x i16> %rs2) ret <2 x i16> %res } diff --git a/llvm/test/CodeGen/RISCV/rvp-simd-64.ll b/llvm/test/CodeGen/RISCV/rvp-simd-64.ll index 63c22512edc6bb..77376296bfbdf8 100644 --- a/llvm/test/CodeGen/RISCV/rvp-simd-64.ll +++ b/llvm/test/CodeGen/RISCV/rvp-simd-64.ll @@ -6226,7 +6226,7 @@ define <4 x i16> @test_pmulh_v4i16(<4 x i16> %rs1, <4 x i16> %rs2) { ; RV64: # %bb.0: ; RV64-NEXT: pmulh.h a0, a0, a1 ; RV64-NEXT: ret - %res = call <4 x i16> @llvm.riscv.pmulh.v4i16(<4 x i16> %rs1, <4 x i16> %rs2) + %res = call <4 x i16> @llvm.smulh.v4i16(<4 x i16> %rs1, <4 x i16> %rs2) ret <4 x i16> %res } @@ -6256,7 +6256,7 @@ define <4 x i16> @test_pmulhu_v4i16(<4 x i16> %rs1, <4 x i16> %rs2) { ; RV64: # %bb.0: ; RV64-NEXT: pmulhu.h a0, a0, a1 ; RV64-NEXT: ret - %res = call <4 x i16> @llvm.riscv.pmulhu.v4i16(<4 x i16> %rs1, <4 x i16> %rs2) + %res = call <4 x i16> @llvm.umulh.v4i16(<4 x i16> %rs1, <4 x i16> %rs2) ret <4 x i16> %res } @@ -6316,7 +6316,7 @@ define <2 x i32> @test_pmulh_v2i32(<2 x i32> %rs1, <2 x i32> %rs2) { ; RV64: # %bb.0: ; RV64-NEXT: pmulh.w a0, a0, a1 ; RV64-NEXT: ret - %res = call <2 x i32> @llvm.riscv.pmulh.v2i32(<2 x i32> %rs1, <2 x i32> %rs2) + %res = call <2 x i32> @llvm.smulh.v2i32(<2 x i32> %rs1, <2 x i32> %rs2) ret <2 x i32> %res } @@ -6346,7 +6346,7 @@ define <2 x i32> @test_pmulhu_v2i32(<2 x i32> %rs1, <2 x i32> %rs2) { ; RV64: # %bb.0: ; RV64-NEXT: pmulhu.w a0, a0, a1 ; RV64-NEXT: ret - %res = call <2 x i32> @llvm.riscv.pmulhu.v2i32(<2 x i32> %rs1, <2 x i32> %rs2) + %res = call <2 x i32> @llvm.umulh.v2i32(<2 x i32> %rs1, <2 x i32> %rs2) ret <2 x i32> %res } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
