[llvm] [AArch64] Combine and and lsl into ubfiz (PR #118974)

Alexander Kornienko via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 17 06:44:21 PST 2025


alexfh wrote:

Here a reduced test case: https://gcc.godbolt.org/z/K9csK5znc

```
$ cat r.ll
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-gnu"


define void @_f(ptr %0, ptr %1, i64 %2) {
  store i64 -2401053089408754003, ptr %1, align 8
  %4 = and i64 %2, -2401053089408754003
  %5 = shl i64 %4, 1
  store i64 %5, ptr %0, align 1
  %6 = lshr i64 %4, 54
  %7 = shl i64 %2, 10
  %8 = and i64 %7, 131072
  %9 = or disjoint i64 %8, %6
  store i64 %9, ptr %1, align 1
  ret void
}
$ ./clang-slow -O1 --target=aarch64-unknown-linux-gnu  -mcpu=neoverse-n1 -mtune=generic -c r.ll
<takes forever>
```

Please fix or revert soon.

https://github.com/llvm/llvm-project/pull/118974


More information about the llvm-commits mailing list