[all-commits] [llvm/llvm-project] e54365: [AArch64][SVE] Detect MOV (imm, pred, zeroing/merg...

Ricardo Jesus via All-commits all-commits at lists.llvm.org
Fri Nov 15 00:50:36 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e54365006a46850e25bb2546c78a7e0ec88a544e
      https://github.com/llvm/llvm-project/commit/e54365006a46850e25bb2546c78a7e0ec88a544e
  Author: Ricardo Jesus <rjj at nvidia.com>
  Date:   2024-11-15 (Fri, 15 Nov 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
    M llvm/lib/Target/AArch64/SVEInstrFormats.td
    A llvm/test/CodeGen/AArch64/sve-mov-imm-pred.ll

  Log Message:
  -----------
  [AArch64][SVE] Detect MOV (imm, pred, zeroing/merging) (#116032)

Add patterns to fold MOV (scalar, predicated) to MOV (imm, pred,
merging) or MOV (imm, pred, zeroing) as appropriate.

This affects the `@llvm.aarch64.sve.dup` intrinsics, which currently
generate MOV (scalar, predicated) instructions even when the
immediate forms are possible. For example:
```
svuint8_t mov_z_b(svbool_t p) {
  return svdup_u8_z(p, 1);
}
```
Currently generates:
```
mov_z_b(__SVBool_t):
        mov     z0.b, #0
        mov     w8, #1
        mov     z0.b, p0/m, w8
        ret
```
Instead of:
```
mov_z_b(__SVBool_t):
        mov     z0.b, p0/z, #1
        ret
```



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list