================
@@ -354,24 +354,21 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
   case NEON::BI__builtin_neon_vrecpxh_f16:
   case NEON::BI__builtin_neon_vrsqrteh_f16:
   case NEON::BI__builtin_neon_vrsqrtsh_f16:
-  case NEON::BI__builtin_neon_vmaxv_s8:
-  case NEON::BI__builtin_neon_vmaxvq_s8:
-  case NEON::BI__builtin_neon_vmaxv_s16:
-  case NEON::BI__builtin_neon_vmaxvq_s16:
-  case NEON::BI__builtin_neon_vmaxv_s32:
-  case NEON::BI__builtin_neon_vmaxvq_s32:
-  case NEON::BI__builtin_neon_vmaxv_u8:
-  case NEON::BI__builtin_neon_vmaxvq_u8:
-  case NEON::BI__builtin_neon_vmaxv_u16:
-  case NEON::BI__builtin_neon_vmaxvq_u16:
-  case NEON::BI__builtin_neon_vmaxv_u32:
-  case NEON::BI__builtin_neon_vmaxvq_u32:
-  case NEON::BI__builtin_neon_vmaxv_f32:
-  case NEON::BI__builtin_neon_vmaxvq_f32:
-  case NEON::BI__builtin_neon_vmaxvq_f64:
     return emitNeonCall(cgf.cgm, cgf.getBuilder(),
                         {cgf.convertType(expr->getArg(0)->getType())}, ops,
                         llvmIntrName, cgf.convertType(expr->getType()), loc);
+  case NEON::BI__builtin_neon_vslid_n_s64:
+  case NEON::BI__builtin_neon_vslid_n_u64: {
+    // The LLVM intrinsic is aarch64.neon.vsli.v1i64, so wrap the i64 inputs
+    // in <1 x i64> and unwrap the result back to i64.
+    mlir::Type scalarTy = cgf.convertType(expr->getArg(0)->getType());
+    cir::VectorType vecTy = cir::VectorType::get(scalarTy, 1);
+    llvm::SmallVector<mlir::Type> argTypes = {vecTy, vecTy, ops[2].getType()};
+    mlir::Value result = emitNeonCall(cgf.cgm, cgf.getBuilder(), argTypes, ops,
+                                      llvmIntrName, vecTy, loc);
+    return cgf.getBuilder().createBitcast(result,
+                                          cgf.convertType(expr->getType()));
----------------
banach-space wrote:

This one should go via `emitCommonNeonSISDBuiltinExpr` ;-) See also 
clang/include/clang/Basic/AArch64CodeGenUtils.h (search for e.g. `vslid_n_u64)

https://github.com/llvm/llvm-project/pull/199415
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to