[all-commits] [llvm/llvm-project] 45f51f: [AArch64][GlobalISel] Select UMULL instruction (#6...
chuongg3 via All-commits
all-commits at lists.llvm.org
Mon Sep 25 01:35:04 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 45f51f9f7c5bc36f0f91695bb5e600013c2114ec
https://github.com/llvm/llvm-project/commit/45f51f9f7c5bc36f0f91695bb5e600013c2114ec
Author: chuongg3 <chuong.goh at arm.com>
Date: 2023-09-25 (Mon, 25 Sep 2023)
Changed paths:
M llvm/lib/Target/AArch64/AArch64Combine.td
M llvm/lib/Target/AArch64/AArch64InstrGISel.td
M llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
M llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
M llvm/test/CodeGen/AArch64/GlobalISel/legalize-mul.mir
M llvm/test/CodeGen/AArch64/GlobalISel/legalize-rem.mir
M llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
M llvm/test/CodeGen/AArch64/aarch64-smull.ll
M llvm/test/CodeGen/AArch64/aarch64-wide-mul.ll
Log Message:
-----------
[AArch64][GlobalISel] Select UMULL instruction (#65469)
Global ISel now selects `UMULL` and `UMULL2` instructions.
G_MUL instruction with input operands coming from `SEXT` or `ZEXT`
operations are turned into UMULL
G_MUL instructions with v2s64 result type is always scalarised except:
`mul ( unmerge( ext ), unmerge( ext ))`
So the extend could be unmerged and fold away the unmerge in the middle:
`mul ( unmerge( ext ), unmerge( ext ))` =>
`mul ( unmerge( merge( ext( unmerge )), unmerge( merge( ext( unmerge
))))` =>
`mul ( ext(unmerge)), ( ext( unmerge ))) `
More information about the All-commits
mailing list