[PATCH] D117592: [ARM][AArch64] Introduce qrdmlah and qrdmlsh intrinsics

David Spickett via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 19 02:12:17 PST 2022


DavidSpickett added a comment.

Thanks for working on this!

qrdmilh -> qrdmulh in the commit message.

I'm out of my depth math wise here so can't approve overall but perhaps you can clarify the aim here.

> Since it's introduction, the qrdmlah has been represented as a qrdmilh and a sadd_sat. This doesn't produce the same result for all input values though. This patch fixes that by introducing a qrdmlah (and qrdmlsh) intrinsic specifically for the vqrdmlah and sqrdmlah instructions. The old test cases will now produce a qrdmulh and sqadd, as expected.



- We had `qrdmlah` which output `qrdmulh` then `sadd_sat`. This didn't behave as expected for one set of inputs.
- You've introduced an intrinsic for `qrdmlah`. So now it'll output the one `vqrdmlah` instruction. This behaves as expected for all inputs.
- The existing test cases will now (have always?) output `qrdmulh` and `sqadd`.

That last bit I don't understand. Wouldn't those test cases output the new single instruction? I think I am misunderstanding which cases these are and what they test.



================
Comment at: llvm/test/CodeGen/ARM/neon-v8.1a.ll:31-32
+
+; The sadd intrinsics in this file previously transformed into sqrdmlah where they
+; shouldn't. They should produce sqrdmulh and sqadd.
+
----------------
Should this refer to `vqadd` etc instead?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D117592/new/

https://reviews.llvm.org/D117592



More information about the llvm-commits mailing list