[clang] [llvm] [PowerPC] Add AES Builtins (PR #186895)

Lei Huang via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 28 06:01:19 PDT 2026


================
@@ -1138,20 +1138,84 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
       break;
   #include "clang/Basic/BuiltinsPPC.def"
     }
-    if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
-        BuiltinID == PPC::BI__builtin_vsx_stxvp ||
-        BuiltinID == PPC::BI__builtin_mma_lxvp ||
-        BuiltinID == PPC::BI__builtin_mma_stxvp) {
-      if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
-          BuiltinID == PPC::BI__builtin_mma_lxvp) {
-        Ops[0] = Builder.CreateGEP(Int8Ty, Ops[1], Ops[0]);
-      } else {
-        Ops[1] = Builder.CreateGEP(Int8Ty, Ops[2], Ops[1]);
-      }
+    // Handle Accumulate=false custom builtins that returns directly.
+    switch (BuiltinID) {
+    case PPC::BI__builtin_vsx_lxvp:
+    case PPC::BI__builtin_mma_lxvp:
+      Ops[0] = Builder.CreateGEP(Int8Ty, Ops[1], Ops[0]);
+      Ops.pop_back();
+      return Builder.CreateCall(CGM.getIntrinsic(ID), Ops, "");
+    case PPC::BI__builtin_vsx_stxvp:
+    case PPC::BI__builtin_mma_stxvp:
+      Ops[1] = Builder.CreateGEP(Int8Ty, Ops[2], Ops[1]);
       Ops.pop_back();
-      llvm::Function *F = CGM.getIntrinsic(ID);
-      return Builder.CreateCall(F, Ops, "");
+      return Builder.CreateCall(CGM.getIntrinsic(ID), Ops, "");
+    case PPC::BI__builtin_disassemble_dmr:
+      Ops[1] = Builder.CreateLoad(EmitPointerWithAlignment(E->getArg(1)));
+      return Builder.CreateAlignedStore(Ops[1], Ops[0], MaybeAlign());
+
+    // Handle AES encrypt paired builtins - they return a value directly.
+    // For variant builtins, add the appropriate immediate value.
+    case PPC::BI__builtin_aes128_encrypt_paired:
+      Ops.push_back(llvm::ConstantInt::get(Int32Ty, 0));
+      return Builder.CreateCall(CGM.getIntrinsic(ID), Ops, "");
----------------
lei137 wrote:

I prefer to keep this as it's clear and simple and we can easily see the difference for the different builtins.

https://github.com/llvm/llvm-project/pull/186895


More information about the cfe-commits mailing list