From 54f500fb6355d3c4b32dc3f93a4e299ef7382893 Mon Sep 17 00:00:00 2001 From: tomershafir Date: Mon, 24 Nov 2025 17:32:03 +0200 Subject: [PATCH] [AArch64] Assert `expandMOVImm` prioritizes optimal single MOVZ/N The expansion of move immediate in `expandMOVImm` follows the priority of the `MOV` alias. In addition, the selection there properly prefers expansion based on perf optimality order. This change adds a simple assert that `expandMOVImmSimple` expands a single optimal MOVZ/N. --- llvm/lib/Target/AArch64/AArch64ExpandImm.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/AArch64/AArch64ExpandImm.cpp b/llvm/lib/Target/AArch64/AArch64ExpandImm.cpp index e9660ac140301..ae5818419cba5 100644 --- a/llvm/lib/Target/AArch64/AArch64ExpandImm.cpp +++ b/llvm/lib/Target/AArch64/AArch64ExpandImm.cpp @@ -549,6 +549,8 @@ void AArch64_IMM::expandMOVImm(uint64_t Imm, unsigned BitSize, // Prefer MOVZ/MOVN over ORR because of the rules for the "mov" alias. if ((BitSize / 16) - OneChunks <= 1 || (BitSize / 16) - ZeroChunks <= 1) { expandMOVImmSimple(Imm, BitSize, OneChunks, ZeroChunks, Insn); + assert(Insn.size() == 1 && + "Move of immediate should have expanded to a single MOVZ/MOVN"); return; }