diff options
| author | chuongg3 <chuong.goh@arm.com> | 2023-09-25 09:34:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-25 09:34:51 +0100 |
| commit | 45f51f9f7c5bc36f0f91695bb5e600013c2114ec (patch) | |
| tree | d0f0ef0c9974d041048211f6b4b5c39450a01e45 /clang/lib/CodeGen/CodeGenModule.cpp | |
| parent | 75a71c27c12a943333405a3299c100b04f65a37e (diff) | |
[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 ))) `
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions
