[llvm] [AArch64] Add missing test for clmul.i128 (PR #202961)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 10 05:58:13 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: Matthew Devereau (MDevereau)
<details>
<summary>Changes</summary>
---
Patch is 63.32 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/202961.diff
1 Files Affected:
- (modified) llvm/test/CodeGen/AArch64/clmul.ll (+1308)
``````````diff
diff --git a/llvm/test/CodeGen/AArch64/clmul.ll b/llvm/test/CodeGen/AArch64/clmul.ll
index ee182100fdfd8..bb42e411c4f99 100644
--- a/llvm/test/CodeGen/AArch64/clmul.ll
+++ b/llvm/test/CodeGen/AArch64/clmul.ll
@@ -472,6 +472,1314 @@ define i64 @clmul_i64(i64 %x, i64 %y) {
ret i64 %a
}
+
+define i128 @clmul_i128(i128 %x, i128 %y) {
+; CHECK-NEON-LABEL: clmul_i128:
+; CHECK-NEON: // %bb.0:
+; CHECK-NEON-NEXT: stp x29, x30, [sp, #-96]! // 16-byte Folded Spill
+; CHECK-NEON-NEXT: stp x28, x27, [sp, #16] // 16-byte Folded Spill
+; CHECK-NEON-NEXT: stp x26, x25, [sp, #32] // 16-byte Folded Spill
+; CHECK-NEON-NEXT: stp x24, x23, [sp, #48] // 16-byte Folded Spill
+; CHECK-NEON-NEXT: stp x22, x21, [sp, #64] // 16-byte Folded Spill
+; CHECK-NEON-NEXT: stp x20, x19, [sp, #80] // 16-byte Folded Spill
+; CHECK-NEON-NEXT: sub sp, sp, #1952
+; CHECK-NEON-NEXT: .cfi_def_cfa_offset 2048
+; CHECK-NEON-NEXT: .cfi_offset w19, -8
+; CHECK-NEON-NEXT: .cfi_offset w20, -16
+; CHECK-NEON-NEXT: .cfi_offset w21, -24
+; CHECK-NEON-NEXT: .cfi_offset w22, -32
+; CHECK-NEON-NEXT: .cfi_offset w23, -40
+; CHECK-NEON-NEXT: .cfi_offset w24, -48
+; CHECK-NEON-NEXT: .cfi_offset w25, -56
+; CHECK-NEON-NEXT: .cfi_offset w26, -64
+; CHECK-NEON-NEXT: .cfi_offset w27, -72
+; CHECK-NEON-NEXT: .cfi_offset w28, -80
+; CHECK-NEON-NEXT: .cfi_offset w30, -88
+; CHECK-NEON-NEXT: .cfi_offset w29, -96
+; CHECK-NEON-NEXT: rbit x8, x2
+; CHECK-NEON-NEXT: rbit x9, x0
+; CHECK-NEON-NEXT: and x7, x2, #0x2
+; CHECK-NEON-NEXT: and x18, x2, #0x1
+; CHECK-NEON-NEXT: and x4, x2, #0x4
+; CHECK-NEON-NEXT: and x5, x2, #0x10
+; CHECK-NEON-NEXT: and x10, x8, #0x2
+; CHECK-NEON-NEXT: and x6, x2, #0x80
+; CHECK-NEON-NEXT: and x17, x2, #0x800
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1944] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1936] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x4
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1928] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x8
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1920] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x10
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1912] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x20
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1904] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x40
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1888] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x80
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1896] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x100
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1880] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x200
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1864] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x400
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1872] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x800
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1856] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1832] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x2000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1840] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x4000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1824] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x8000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1848] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x10000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1816] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x20000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1792] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x40000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1784] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x80000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1808] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x100000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1776] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x200000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1800] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x400000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1768] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x800000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1728] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1760] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x2000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1720] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x4000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1752] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x8000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1736] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x10000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1744] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x20000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1696] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x40000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1656] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x80000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1688] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x100000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1672] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x200000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1680] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x400000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1664] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x800000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1704] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1712] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x2000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1640] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x4000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1608] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x8000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1584] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x10000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1632] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x20000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1600] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x40000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1616] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x80000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1592] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x100000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1624] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x200000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1648] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x400000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1568] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x800000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1520] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1536] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x2000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1512] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x4000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1560] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x8000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1504] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x10000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1552] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x20000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1528] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x40000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1576] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x80000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1544] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x100000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1480] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x200000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1448] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x400000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1472] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x800000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1456] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x1000000000000000
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x10, [sp, #1488] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x8, #0x2000000000000000
+; CHECK-NEON-NEXT: and x8, x8, #0x4000000000000000
+; CHECK-NEON-NEXT: mul x8, x9, x8
+; CHECK-NEON-NEXT: mul x10, x9, x10
+; CHECK-NEON-NEXT: str x8, [sp, #1496] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x1, x7
+; CHECK-NEON-NEXT: str x10, [sp, #1464] // 8-byte Spill
+; CHECK-NEON-NEXT: str x8, [sp, #1032] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x1, x18
+; CHECK-NEON-NEXT: mul x18, x0, x18
+; CHECK-NEON-NEXT: str x8, [sp, #1008] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x1, x4
+; CHECK-NEON-NEXT: str x18, [sp, #1128] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x18, x0, x4
+; CHECK-NEON-NEXT: str x8, [sp, #992] // 8-byte Spill
+; CHECK-NEON-NEXT: and x8, x2, #0x8
+; CHECK-NEON-NEXT: mul x9, x1, x8
+; CHECK-NEON-NEXT: str x18, [sp, #1120] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x8
+; CHECK-NEON-NEXT: str x9, [sp, #976] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x9, x1, x5
+; CHECK-NEON-NEXT: str x8, [sp, #1112] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x5
+; CHECK-NEON-NEXT: str x9, [sp, #952] // 8-byte Spill
+; CHECK-NEON-NEXT: and x9, x2, #0x20
+; CHECK-NEON-NEXT: mul x10, x1, x9
+; CHECK-NEON-NEXT: str x8, [sp, #1096] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x9
+; CHECK-NEON-NEXT: ldr x9, [sp, #1008] // 8-byte Reload
+; CHECK-NEON-NEXT: str x10, [sp, #928] // 8-byte Spill
+; CHECK-NEON-NEXT: and x10, x2, #0x40
+; CHECK-NEON-NEXT: mul x11, x1, x10
+; CHECK-NEON-NEXT: str x8, [sp, #1072] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x10
+; CHECK-NEON-NEXT: ldr x10, [sp, #976] // 8-byte Reload
+; CHECK-NEON-NEXT: str x11, [sp, #944] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x11, x1, x6
+; CHECK-NEON-NEXT: str x8, [sp, #1104] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x6
+; CHECK-NEON-NEXT: str x11, [sp, #936] // 8-byte Spill
+; CHECK-NEON-NEXT: and x11, x2, #0x100
+; CHECK-NEON-NEXT: mul x12, x1, x11
+; CHECK-NEON-NEXT: str x8, [sp, #1064] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x11
+; CHECK-NEON-NEXT: ldr x11, [sp, #928] // 8-byte Reload
+; CHECK-NEON-NEXT: str x12, [sp, #920] // 8-byte Spill
+; CHECK-NEON-NEXT: and x12, x2, #0x200
+; CHECK-NEON-NEXT: mul x13, x1, x12
+; CHECK-NEON-NEXT: str x8, [sp, #1048] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x12
+; CHECK-NEON-NEXT: str x13, [sp, #968] // 8-byte Spill
+; CHECK-NEON-NEXT: and x13, x2, #0x400
+; CHECK-NEON-NEXT: mul x14, x1, x13
+; CHECK-NEON-NEXT: str x8, [sp, #1040] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x13
+; CHECK-NEON-NEXT: str x14, [sp, #960] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x14, x1, x17
+; CHECK-NEON-NEXT: str x8, [sp, #1088] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x17
+; CHECK-NEON-NEXT: str x14, [sp, #848] // 8-byte Spill
+; CHECK-NEON-NEXT: and x14, x2, #0x1000
+; CHECK-NEON-NEXT: mul x15, x1, x14
+; CHECK-NEON-NEXT: str x8, [sp, #1000] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x14
+; CHECK-NEON-NEXT: str x15, [sp, #824] // 8-byte Spill
+; CHECK-NEON-NEXT: and x15, x2, #0x2000
+; CHECK-NEON-NEXT: mul x16, x1, x15
+; CHECK-NEON-NEXT: ldr x12, [sp, #824] // 8-byte Reload
+; CHECK-NEON-NEXT: str x8, [sp, #984] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x15
+; CHECK-NEON-NEXT: str x16, [sp, #896] // 8-byte Spill
+; CHECK-NEON-NEXT: and x16, x2, #0x4000
+; CHECK-NEON-NEXT: mul x19, x1, x16
+; CHECK-NEON-NEXT: str x8, [sp, #1024] // 8-byte Spill
+; CHECK-NEON-NEXT: mul x8, x0, x16
+; CHECK-NEON-NEXT: str x19, [sp, #888] // 8-byte Spill
+; CHECK-NEON-NEXT: and x19, x2, #0x8000
+; CHECK-NEON-NEXT: mul x20, x1, x19
+; CHECK-NEON-NEXT: str x8, [sp, #1016] // 8-byte Spill
+; CHECK-NEON-NEXT: ldr x8, [sp, #1032] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x8, x9, x8
+; CHECK-NEON-NEXT: ldr x9, [sp, #992] // 8-byte Reload
+; CHECK-NEON-NEXT: str x20, [sp, #904] // 8-byte Spill
+; CHECK-NEON-NEXT: and x20, x2, #0x10000
+; CHECK-NEON-NEXT: eor x9, x9, x10
+; CHECK-NEON-NEXT: mul x21, x1, x20
+; CHECK-NEON-NEXT: ldr x10, [sp, #952] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x8, x8, x9
+; CHECK-NEON-NEXT: ldr x9, [sp, #944] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: mul x11, x0, x19
+; CHECK-NEON-NEXT: eor x9, x10, x9
+; CHECK-NEON-NEXT: ldr x10, [sp, #936] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x8, x8, x9
+; CHECK-NEON-NEXT: ldr x9, [sp, #968] // 8-byte Reload
+; CHECK-NEON-NEXT: str x21, [sp, #880] // 8-byte Spill
+; CHECK-NEON-NEXT: and x21, x2, #0x20000
+; CHECK-NEON-NEXT: mul x22, x1, x21
+; CHECK-NEON-NEXT: str x11, [sp, #1032] // 8-byte Spill
+; CHECK-NEON-NEXT: ldr x11, [sp, #920] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: ldr x11, [sp, #848] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x9, x10, x9
+; CHECK-NEON-NEXT: ldr x10, [sp, #896] // 8-byte Reload
+; CHECK-NEON-NEXT: str x22, [sp, #840] // 8-byte Spill
+; CHECK-NEON-NEXT: and x22, x2, #0x40000
+; CHECK-NEON-NEXT: eor x11, x11, x12
+; CHECK-NEON-NEXT: mul x23, x1, x22
+; CHECK-NEON-NEXT: eor x10, x11, x10
+; CHECK-NEON-NEXT: ldr x11, [sp, #960] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x9, x9, x11
+; CHECK-NEON-NEXT: ldr x11, [sp, #888] // 8-byte Reload
+; CHECK-NEON-NEXT: mul x12, x0, x20
+; CHECK-NEON-NEXT: eor x8, x8, x9
+; CHECK-NEON-NEXT: ldr x9, [sp, #904] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: mul x11, x0, x21
+; CHECK-NEON-NEXT: str x23, [sp, #832] // 8-byte Spill
+; CHECK-NEON-NEXT: and x23, x2, #0x80000
+; CHECK-NEON-NEXT: eor x9, x10, x9
+; CHECK-NEON-NEXT: mul x24, x1, x23
+; CHECK-NEON-NEXT: ldr x10, [sp, #880] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x8, x8, x9
+; CHECK-NEON-NEXT: str x12, [sp, #1008] // 8-byte Spill
+; CHECK-NEON-NEXT: str x11, [sp, #992] // 8-byte Spill
+; CHECK-NEON-NEXT: ldr x11, [sp, #840] // 8-byte Reload
+; CHECK-NEON-NEXT: str x24, [sp, #872] // 8-byte Spill
+; CHECK-NEON-NEXT: and x24, x2, #0x100000
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: mul x25, x1, x24
+; CHECK-NEON-NEXT: ldr x11, [sp, #832] // 8-byte Reload
+; CHECK-NEON-NEXT: ldr x9, [sp, #872] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: eor x9, x10, x9
+; CHECK-NEON-NEXT: str x25, [sp, #864] // 8-byte Spill
+; CHECK-NEON-NEXT: and x25, x2, #0x200000
+; CHECK-NEON-NEXT: mul x26, x1, x25
+; CHECK-NEON-NEXT: str x26, [sp, #912] // 8-byte Spill
+; CHECK-NEON-NEXT: and x26, x2, #0x400000
+; CHECK-NEON-NEXT: mul x27, x1, x26
+; CHECK-NEON-NEXT: str x27, [sp, #760] // 8-byte Spill
+; CHECK-NEON-NEXT: and x27, x2, #0x800000
+; CHECK-NEON-NEXT: mul x28, x1, x27
+; CHECK-NEON-NEXT: ldr x11, [sp, #760] // 8-byte Reload
+; CHECK-NEON-NEXT: str x28, [sp, #736] // 8-byte Spill
+; CHECK-NEON-NEXT: and x28, x2, #0x1000000
+; CHECK-NEON-NEXT: mul x29, x1, x28
+; CHECK-NEON-NEXT: ldr x12, [sp, #736] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x11, x11, x12
+; CHECK-NEON-NEXT: mul x12, x0, x22
+; CHECK-NEON-NEXT: str x29, [sp, #784] // 8-byte Spill
+; CHECK-NEON-NEXT: and x29, x2, #0x2000000
+; CHECK-NEON-NEXT: mul x30, x1, x29
+; CHECK-NEON-NEXT: ldr x10, [sp, #784] // 8-byte Reload
+; CHECK-NEON-NEXT: str x12, [sp, #976] // 8-byte Spill
+; CHECK-NEON-NEXT: eor x10, x11, x10
+; CHECK-NEON-NEXT: ldr x11, [sp, #864] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x9, x9, x11
+; CHECK-NEON-NEXT: str x30, [sp, #776] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x4000000
+; CHECK-NEON-NEXT: mul x30, x1, x30
+; CHECK-NEON-NEXT: ldr x11, [sp, #776] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: mul x11, x0, x23
+; CHECK-NEON-NEXT: str x30, [sp, #800] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x4000000
+; CHECK-NEON-NEXT: str x30, [sp, #1144] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x8000000
+; CHECK-NEON-NEXT: mul x30, x1, x30
+; CHECK-NEON-NEXT: str x11, [sp, #968] // 8-byte Spill
+; CHECK-NEON-NEXT: ldr x11, [sp, #912] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x9, x9, x11
+; CHECK-NEON-NEXT: ldr x11, [sp, #800] // 8-byte Reload
+; CHECK-NEON-NEXT: eor x8, x8, x9
+; CHECK-NEON-NEXT: eor x10, x10, x11
+; CHECK-NEON-NEXT: str x30, [sp, #792] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x8000000
+; CHECK-NEON-NEXT: str x30, [sp, #1152] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x10000000
+; CHECK-NEON-NEXT: mul x30, x1, x30
+; CHECK-NEON-NEXT: str x30, [sp, #816] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x10000000
+; CHECK-NEON-NEXT: str x30, [sp, #1160] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x20000000
+; CHECK-NEON-NEXT: ldr x9, [sp, #816] // 8-byte Reload
+; CHECK-NEON-NEXT: mul x30, x1, x30
+; CHECK-NEON-NEXT: str x30, [sp, #728] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x20000000
+; CHECK-NEON-NEXT: str x30, [sp, #1168] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x40000000
+; CHECK-NEON-NEXT: ldr x11, [sp, #728] // 8-byte Reload
+; CHECK-NEON-NEXT: mul x30, x1, x30
+; CHECK-NEON-NEXT: str x30, [sp, #696] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x40000000
+; CHECK-NEON-NEXT: str x30, [sp, #1176] // 8-byte Spill
+; CHECK-NEON-NEXT: and x30, x2, #0x80000000
+; CHECK-NEON-NEX...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/202961
More information about the llvm-commits
mailing list