[clang] [llvm] [RISCV][P-ext] Support Packed Multiply High (PR #211236)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 22 04:19:08 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86
Author: TelGome
<details>
<summary>Changes</summary>
This pr support RISC-V P extension intrinsics [Packed Multiply High](https://github.com/riscv/riscv-p-spec/blob/master/P-ext-intrinsics.adoc#packed-multiply-high)
---
Patch is 64.83 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/211236.diff
9 Files Affected:
- (modified) clang/include/clang/Basic/BuiltinsRISCV.td (+22)
- (modified) clang/lib/CodeGen/TargetBuiltins/RISCV.cpp (+50-1)
- (modified) clang/lib/Headers/riscv_packed_simd.h (+112-96)
- (modified) clang/test/CodeGen/RISCV/rvp-intrinsics.c (+400)
- (modified) cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c (+132)
- (modified) llvm/include/llvm/IR/IntrinsicsRISCV.td (+8)
- (modified) llvm/lib/Target/RISCV/RISCVISelLowering.cpp (+87-1)
- (modified) llvm/test/CodeGen/RISCV/rvp-simd-32.ll (+54)
- (modified) llvm/test/CodeGen/RISCV/rvp-simd-64.ll (+180)
``````````diff
diff --git a/clang/include/clang/Basic/BuiltinsRISCV.td b/clang/include/clang/Basic/BuiltinsRISCV.td
index 3814958d81f8b..238db03cb24e7 100644
--- a/clang/include/clang/Basic/BuiltinsRISCV.td
+++ b/clang/include/clang/Basic/BuiltinsRISCV.td
@@ -265,6 +265,28 @@ def psabs_i16x2 : RISCVBuiltin<"_Vector<2, short>(_Vector<2, short>)">;
def psabs_i8x8 : RISCVBuiltin<"_Vector<8, signed char>(_Vector<8, signed char>)">;
def psabs_i16x4 : RISCVBuiltin<"_Vector<4, short>(_Vector<4, short>)">;
+// Packed Multiply High (32-bit)
+def pmulh_i16x2 : RISCVBuiltin<"_Vector<2, short>(_Vector<2, short>, _Vector<2, short>)">;
+def pmulhu_u16x2 : RISCVBuiltin<"_Vector<2, unsigned short>(_Vector<2, unsigned short>, _Vector<2, unsigned short>)">;
+def pmulhsu_i16x2 : RISCVBuiltin<"_Vector<2, short>(_Vector<2, short>, _Vector<2, unsigned short>)">;
+def pmulhr_i16x2 : RISCVBuiltin<"_Vector<2, short>(_Vector<2, short>, _Vector<2, short>)">;
+def pmulhru_u16x2 : RISCVBuiltin<"_Vector<2, unsigned short>(_Vector<2, unsigned short>, _Vector<2, unsigned short>)">;
+def pmulhrsu_i16x2 : RISCVBuiltin<"_Vector<2, short>(_Vector<2, short>, _Vector<2, unsigned short>)">;
+
+// Packed Multiply High (64-bit)
+def pmulh_i16x4 : RISCVBuiltin<"_Vector<4, short>(_Vector<4, short>, _Vector<4, short>)">;
+def pmulhu_u16x4 : RISCVBuiltin<"_Vector<4, unsigned short>(_Vector<4, unsigned short>, _Vector<4, unsigned short>)">;
+def pmulhsu_i16x4 : RISCVBuiltin<"_Vector<4, short>(_Vector<4, short>, _Vector<4, unsigned short>)">;
+def pmulhr_i16x4 : RISCVBuiltin<"_Vector<4, short>(_Vector<4, short>, _Vector<4, short>)">;
+def pmulhru_u16x4 : RISCVBuiltin<"_Vector<4, unsigned short>(_Vector<4, unsigned short>, _Vector<4, unsigned short>)">;
+def pmulhrsu_i16x4 : RISCVBuiltin<"_Vector<4, short>(_Vector<4, short>, _Vector<4, unsigned short>)">;
+def pmulh_i32x2 : RISCVBuiltin<"_Vector<2, int>(_Vector<2, int>, _Vector<2, int>)">;
+def pmulhu_u32x2 : RISCVBuiltin<"_Vector<2, unsigned int>(_Vector<2, unsigned int>, _Vector<2, unsigned int>)">;
+def pmulhsu_i32x2 : RISCVBuiltin<"_Vector<2, int>(_Vector<2, int>, _Vector<2, unsigned int>)">;
+def pmulhr_i32x2 : RISCVBuiltin<"_Vector<2, int>(_Vector<2, int>, _Vector<2, int>)">;
+def pmulhru_u32x2 : RISCVBuiltin<"_Vector<2, unsigned int>(_Vector<2, unsigned int>, _Vector<2, unsigned int>)">;
+def pmulhrsu_i32x2 : RISCVBuiltin<"_Vector<2, int>(_Vector<2, int>, _Vector<2, unsigned int>)">;
+
} // Features = "experimental-p"
//===----------------------------------------------------------------------===//
diff --git a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
index a3b1db1732af9..df1c8790ef232 100644
--- a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
@@ -1263,7 +1263,26 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
case RISCV::BI__builtin_riscv_psabs_i8x4:
case RISCV::BI__builtin_riscv_psabs_i16x2:
case RISCV::BI__builtin_riscv_psabs_i8x8:
- case RISCV::BI__builtin_riscv_psabs_i16x4: {
+ case RISCV::BI__builtin_riscv_psabs_i16x4:
+ // Packed Multiply High
+ case RISCV::BI__builtin_riscv_pmulh_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhu_u16x2:
+ case RISCV::BI__builtin_riscv_pmulhsu_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhr_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhru_u16x2:
+ case RISCV::BI__builtin_riscv_pmulhrsu_i16x2:
+ case RISCV::BI__builtin_riscv_pmulh_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhu_u16x4:
+ case RISCV::BI__builtin_riscv_pmulhsu_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhr_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhru_u16x4:
+ case RISCV::BI__builtin_riscv_pmulhrsu_i16x4:
+ case RISCV::BI__builtin_riscv_pmulh_i32x2:
+ case RISCV::BI__builtin_riscv_pmulhu_u32x2:
+ case RISCV::BI__builtin_riscv_pmulhsu_i32x2:
+ case RISCV::BI__builtin_riscv_pmulhr_i32x2:
+ case RISCV::BI__builtin_riscv_pmulhru_u32x2:
+ case RISCV::BI__builtin_riscv_pmulhrsu_i32x2: {
switch (BuiltinID) {
default:
llvm_unreachable("unexpected builtin ID");
@@ -1355,6 +1374,36 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
case RISCV::BI__builtin_riscv_psabs_i16x4:
ID = Intrinsic::riscv_psabs;
break;
+ 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;
+ break;
+ 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;
+ break;
+ case RISCV::BI__builtin_riscv_pmulhsu_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhsu_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhsu_i32x2:
+ ID = Intrinsic::riscv_pmulhsu;
+ break;
+ case RISCV::BI__builtin_riscv_pmulhr_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhr_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhr_i32x2:
+ ID = Intrinsic::riscv_pmulhr;
+ break;
+ case RISCV::BI__builtin_riscv_pmulhru_u16x2:
+ case RISCV::BI__builtin_riscv_pmulhru_u16x4:
+ case RISCV::BI__builtin_riscv_pmulhru_u32x2:
+ ID = Intrinsic::riscv_pmulhru;
+ break;
+ case RISCV::BI__builtin_riscv_pmulhrsu_i16x2:
+ case RISCV::BI__builtin_riscv_pmulhrsu_i16x4:
+ case RISCV::BI__builtin_riscv_pmulhrsu_i32x2:
+ ID = Intrinsic::riscv_pmulhrsu;
+ break;
}
IntrinsicTypes = {ResultType};
diff --git a/clang/lib/Headers/riscv_packed_simd.h b/clang/lib/Headers/riscv_packed_simd.h
index 7d40f046eba80..91215aa2f039d 100644
--- a/clang/lib/Headers/riscv_packed_simd.h
+++ b/clang/lib/Headers/riscv_packed_simd.h
@@ -66,9 +66,10 @@ typedef uint32_t uint32x2_t __attribute__((__vector_size__(8)));
return op __rs1; \
}
-#define __packed_binary_builtin(name, ty, builtin) \
- static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
- return builtin(__rs1, __rs2); \
+#define __packed_binary_builtin(name, rty, ty1, ty2, builtin) \
+ static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty1 __rs1, \
+ ty2 __rs2) { \
+ return (rty)builtin(__rs1, __rs2); \
}
#define __packed_sh1add(name, ty) \
@@ -97,12 +98,6 @@ typedef uint32_t uint32x2_t __attribute__((__vector_size__(8)));
return (rty)__builtin_elementwise_abs(__rs1); \
}
-#define __packed_binary_builtin_cast(name, ty, rty, builtin) \
- static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
- ty __rs2) { \
- return (rty)builtin(__rs1, __rs2); \
- }
-
#define __packed_reduction(name, rty, ty, builtin) \
static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
rty __rs2) { \
@@ -320,28 +315,28 @@ __packed_scalar_binary_op(padd_s_i32x2, int32x2_t, int32_t, +,
__packed_splat2)
/* Packed Saturating Addition and Subtraction (32-bit) */
-__packed_binary_builtin(psadd_i8x4, int8x4_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psadd_i16x2, int16x2_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psaddu_u8x4, uint8x4_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psaddu_u16x2, uint16x2_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(pssub_i8x4, int8x4_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssub_i16x2, int16x2_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssubu_u8x4, uint8x4_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssubu_u16x2, uint16x2_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(psadd_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psadd_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psaddu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psaddu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(pssub_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssub_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssubu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssubu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_elementwise_sub_sat)
/* Packed Saturating Addition and Subtraction (64-bit) */
-__packed_binary_builtin(psadd_i8x8, int8x8_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psadd_i16x4, int16x4_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psadd_i32x2, int32x2_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psaddu_u8x8, uint8x8_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psaddu_u16x4, uint16x4_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(psaddu_u32x2, uint32x2_t, __builtin_elementwise_add_sat)
-__packed_binary_builtin(pssub_i8x8, int8x8_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssub_i16x4, int16x4_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssub_i32x2, int32x2_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssubu_u8x8, uint8x8_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssubu_u16x4, uint16x4_t, __builtin_elementwise_sub_sat)
-__packed_binary_builtin(pssubu_u32x2, uint32x2_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(psadd_i8x8, int8x8_t, int8x8_t, int8x8_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psadd_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psadd_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psaddu_u8x8, uint8x8_t, uint8x8_t, uint8x8_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psaddu_u16x4, uint16x4_t, uint16x4_t, uint16x4_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(psaddu_u32x2, uint32x2_t, uint32x2_t, uint32x2_t, __builtin_elementwise_add_sat)
+__packed_binary_builtin(pssub_i8x8, int8x8_t, int8x8_t, int8x8_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssub_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssub_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssubu_u8x8, uint8x8_t, uint8x8_t, uint8x8_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssubu_u16x4, uint16x4_t, uint16x4_t, uint16x4_t, __builtin_elementwise_sub_sat)
+__packed_binary_builtin(pssubu_u32x2, uint32x2_t, uint32x2_t, uint32x2_t, __builtin_elementwise_sub_sat)
/* Packed Shift-Add (32-bit) */
__packed_sh1add(psh1add_i16x2, int16x2_t)
@@ -357,50 +352,50 @@ __packed_sh1sadd(pssh1sadd_i16x4, int16x4_t)
__packed_sh1sadd(pssh1sadd_i32x2, int32x2_t)
/* Packed Exchanged Addition and Subtraction (32-bit) */
-__packed_binary_builtin(pas_x_i16x2, int16x2_t, __builtin_riscv_pas_x_i16x2)
-__packed_binary_builtin(psa_x_i16x2, int16x2_t, __builtin_riscv_psa_x_i16x2)
-__packed_binary_builtin(psas_x_i16x2, int16x2_t, __builtin_riscv_psas_x_i16x2)
-__packed_binary_builtin(pssa_x_i16x2, int16x2_t, __builtin_riscv_pssa_x_i16x2)
-__packed_binary_builtin(paas_x_i16x2, int16x2_t, __builtin_riscv_paas_x_i16x2)
-__packed_binary_builtin(pasa_x_i16x2, int16x2_t, __builtin_riscv_pasa_x_i16x2)
+__packed_binary_builtin(pas_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_pas_x_i16x2)
+__packed_binary_builtin(psa_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_psa_x_i16x2)
+__packed_binary_builtin(psas_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_psas_x_i16x2)
+__packed_binary_builtin(pssa_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_pssa_x_i16x2)
+__packed_binary_builtin(paas_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_paas_x_i16x2)
+__packed_binary_builtin(pasa_x_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_pasa_x_i16x2)
/* Packed Exchanged Addition and Subtraction (64-bit) */
-__packed_binary_builtin(pas_x_i16x4, int16x4_t, __builtin_riscv_pas_x_i16x4)
-__packed_binary_builtin(psa_x_i16x4, int16x4_t, __builtin_riscv_psa_x_i16x4)
-__packed_binary_builtin(psas_x_i16x4, int16x4_t, __builtin_riscv_psas_x_i16x4)
-__packed_binary_builtin(pssa_x_i16x4, int16x4_t, __builtin_riscv_pssa_x_i16x4)
-__packed_binary_builtin(paas_x_i16x4, int16x4_t, __builtin_riscv_paas_x_i16x4)
-__packed_binary_builtin(pasa_x_i16x4, int16x4_t, __builtin_riscv_pasa_x_i16x4)
-__packed_binary_builtin(pas_x_i32x2, int32x2_t, __builtin_riscv_pas_x_i32x2)
-__packed_binary_builtin(psa_x_i32x2, int32x2_t, __builtin_riscv_psa_x_i32x2)
-__packed_binary_builtin(psas_x_i32x2, int32x2_t, __builtin_riscv_psas_x_i32x2)
-__packed_binary_builtin(pssa_x_i32x2, int32x2_t, __builtin_riscv_pssa_x_i32x2)
-__packed_binary_builtin(paas_x_i32x2, int32x2_t, __builtin_riscv_paas_x_i32x2)
-__packed_binary_builtin(pasa_x_i32x2, int32x2_t, __builtin_riscv_pasa_x_i32x2)
+__packed_binary_builtin(pas_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_pas_x_i16x4)
+__packed_binary_builtin(psa_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_psa_x_i16x4)
+__packed_binary_builtin(psas_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_psas_x_i16x4)
+__packed_binary_builtin(pssa_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_pssa_x_i16x4)
+__packed_binary_builtin(paas_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_paas_x_i16x4)
+__packed_binary_builtin(pasa_x_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_riscv_pasa_x_i16x4)
+__packed_binary_builtin(pas_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_pas_x_i32x2)
+__packed_binary_builtin(psa_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_psa_x_i32x2)
+__packed_binary_builtin(psas_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_psas_x_i32x2)
+__packed_binary_builtin(pssa_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_pssa_x_i32x2)
+__packed_binary_builtin(paas_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_paas_x_i32x2)
+__packed_binary_builtin(pasa_x_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_riscv_pasa_x_i32x2)
/* Packed Minimum and Maximum (32-bit) */
-__packed_binary_builtin(pmin_i8x4, int8x4_t, __builtin_elementwise_min)
-__packed_binary_builtin(pmin_i16x2, int16x2_t, __builtin_elementwise_min)
-__packed_binary_builtin(pminu_u8x4, uint8x4_t, __builtin_elementwise_min)
-__packed_binary_builtin(pminu_u16x2, uint16x2_t, __builtin_elementwise_min)
-__packed_binary_builtin(pmax_i8x4, int8x4_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmax_i16x2, int16x2_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmaxu_u8x4, uint8x4_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmaxu_u16x2, uint16x2_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmin_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_elementwise_min)
+__packed_binary_builtin(pmin_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_elementwise_min)
+__packed_binary_builtin(pminu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_elementwise_min)
+__packed_binary_builtin(pminu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_elementwise_min)
+__packed_binary_builtin(pmax_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmax_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmaxu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmaxu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_elementwise_max)
/* Packed Minimum and Maximum (64-bit) */
-__packed_binary_builtin(pmin_i8x8, int8x8_t, __builtin_elementwise_min)
-__packed_binary_builtin(pmin_i16x4, int16x4_t, __builtin_elementwise_min)
-__packed_binary_builtin(pmin_i32x2, int32x2_t, __builtin_elementwise_min)
-__packed_binary_builtin(pminu_u8x8, uint8x8_t, __builtin_elementwise_min)
-__packed_binary_builtin(pminu_u16x4, uint16x4_t, __builtin_elementwise_min)
-__packed_binary_builtin(pminu_u32x2, uint32x2_t, __builtin_elementwise_min)
-__packed_binary_builtin(pmax_i8x8, int8x8_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmax_i16x4, int16x4_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmax_i32x2, int32x2_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmaxu_u8x8, uint8x8_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmaxu_u16x4, uint16x4_t, __builtin_elementwise_max)
-__packed_binary_builtin(pmaxu_u32x2, uint32x2_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmin_i8x8, int8x8_t, int8x8_t, int8x8_t, __builtin_elementwise_min)
+__packed_binary_builtin(pmin_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_elementwise_min)
+__packed_binary_builtin(pmin_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_elementwise_min)
+__packed_binary_builtin(pminu_u8x8, uint8x8_t, uint8x8_t, uint8x8_t, __builtin_elementwise_min)
+__packed_binary_builtin(pminu_u16x4, uint16x4_t, uint16x4_t, uint16x4_t, __builtin_elementwise_min)
+__packed_binary_builtin(pminu_u32x2, uint32x2_t, uint32x2_t, uint32x2_t, __builtin_elementwise_min)
+__packed_binary_builtin(pmax_i8x8, int8x8_t, int8x8_t, int8x8_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmax_i16x4, int16x4_t, int16x4_t, int16x4_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmax_i32x2, int32x2_t, int32x2_t, int32x2_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmaxu_u8x8, uint8x8_t, uint8x8_t, uint8x8_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmaxu_u16x4, uint16x4_t, uint16x4_t, uint16x4_t, __builtin_elementwise_max)
+__packed_binary_builtin(pmaxu_u32x2, uint32x2_t, uint32x2_t, uint32x2_t, __builtin_elementwise_max)
/* Packed Comparison (32-bit) */
__packed_cmp(pmseq_i8x4_u8x4, int8x4_t, uint8x4_t, ==)
@@ -601,44 +596,44 @@ __packed_nziph2(pnziph_i16x4, int16x4_t, int32x2_t)
__packed_nziph2(pnziph_u16x4, uint16x4_t, uint32x2_t)
/* Packed Averaging Addition and Subtraction (32-bit) */
-__packed_binary_builtin(paadd_i8x4, int8x4_t, __builtin_riscv_paadd_i8x4)
-__packed_binary_builtin(paadd_i16x2, int16x2_t, __builtin_riscv_paadd_i16x2)
-__packed_binary_builtin(paaddu_u8x4, uint8x4_t, __builtin_riscv_paaddu_u8x4)
-__packed_binary_builtin(paaddu_u16x2, uint16x2_t, __builtin_riscv_paaddu_u16x2)
-__packed_binary_builtin(pasub_i8x4, int8x4_t, __builtin_riscv_pasub_i8x4)
-__packed_binary_builtin(pasub_i16x2, int16x2_t, __builtin_riscv_pasub_i16x2)
-__packed_binary_builtin(pasubu_u8x4, uint8x4_t, __builtin_riscv_pasubu_u8x4)
-__packed_binary_builtin(pasubu_u16x2, uint16x2_t, __builtin_riscv_pasubu_u16x2)
+__packed_binary_builtin(paadd_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_riscv_paadd_i8x4)
+__packed_binary_builtin(paadd_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_paadd_i16x2)
+__packed_binary_builtin(paaddu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_riscv_paaddu_u8x4)
+__packed_binary_builtin(paaddu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_riscv_paaddu_u16x2)
+__packed_binary_builtin(pasub_i8x4, int8x4_t, int8x4_t, int8x4_t, __builtin_riscv_pasub_i8x4)
+__packed_binary_builtin(pasub_i16x2, int16x2_t, int16x2_t, int16x2_t, __builtin_riscv_pasub_i16x2)
+__packed_binary_builtin(pasubu_u8x4, uint8x4_t, uint8x4_t, uint8x4_t, __builtin_riscv_pasubu_u8x4)
+__packed_binary_builtin(pasubu_u16x2, uint16x2_t, uint16x2_t, uint16x2_t, __builtin_riscv_pasubu_u16x2)
/* Packed Averaging Addition and Subtraction (64-bit) */
-__packed_binary_builtin(paadd_i8x8, int8x8_t, __builtin_riscv_paadd_i8x8)
-__packed_binary_builtin(paadd_i16x4, int16x4_t, __builtin_riscv_paadd_i16x4)
-__packed_binary_builtin(paadd_i32x2, int32x2_t, __builtin_riscv_paadd_i32x2)
-__packed_binary_builtin(paaddu_u8x8, uint8x8_t, __builtin_riscv_paaddu_u8x8)
-__packed_binary_builtin(paaddu_u16x4, uint16x4_t, __builtin_riscv_paaddu_u16...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/211236
More information about the cfe-commits
mailing list