================
@@ -4279,6 +4279,36 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, 
const CallExpr *Call,
           F.subtract(RHS, RM);
           return F;
         });
+  case clang::X86::BI__builtin_ia32_addsubpd:
+  case clang::X86::BI__builtin_ia32_addsubps:
+  case clang::X86::BI__builtin_ia32_addsubpd256:
+  case clang::X86::BI__builtin_ia32_addsubps256: {
+    // Addsub: alternates between subtraction and addition
+    // Result[i] = (i % 2 == 0) ? (a[i] - b[i]) : (a[i] + b[i])
+    const Pointer &RHS = S.Stk.pop<Pointer>();
+    const Pointer &LHS = S.Stk.pop<Pointer>();
+    const Pointer &Dst = S.Stk.peek<Pointer>();
+    FPOptions FPO = Call->getFPFeaturesInEffect(S.Ctx.getLangOpts());
+    llvm::RoundingMode RM = getRoundingMode(FPO);
+    const auto *VT = Call->getArg(0)->getType()->castAs<VectorType>();
+    unsigned NumElts = VT->getNumElements();
----------------
tbaederr wrote:

```suggestion
    unsigned NumElems = VT->getNumElements();
```

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

Reply via email to