Files
clang-p2996/llvm/test/CodeGen/AArch64/pr61549.ll
Harvin Iriawan db158c7c83 [AArch64] Update generic sched model to A510
Refresh of the generic scheduling model to use A510 instead of A55.
  Main benefits are to the little core, and introducing SVE scheduling information.
  Changes tested on various OoO cores, no performance degradation is seen.

  Differential Revision: https://reviews.llvm.org/D156799
2023-08-21 12:25:15 +01:00

35 lines
1.0 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=aarch64 | FileCheck %s
; RUN: llc < %s -mtriple=aarch64 --global-isel | FileCheck %s --check-prefix=GISEL
define i35 @f(i35 %0) {
; CHECK-LABEL: f:
; CHECK: // %bb.0:
; CHECK-NEXT: sbfx x8, x0, #0, #35
; CHECK-NEXT: mov w9, #1 // =0x1
; CHECK-NEXT: sdiv x10, x9, x8
; CHECK-NEXT: msub x8, x10, x8, x9
; CHECK-NEXT: clz x8, x8
; CHECK-NEXT: sub x8, x8, #29
; CHECK-NEXT: ubfx x0, x8, #5, #30
; CHECK-NEXT: ret
;
; GISEL-LABEL: f:
; GISEL: // %bb.0:
; GISEL-NEXT: sbfx x8, x0, #0, #35
; GISEL-NEXT: mov w9, #1 // =0x1
; GISEL-NEXT: sdiv x10, x9, x8
; GISEL-NEXT: msub x8, x10, x8, x9
; GISEL-NEXT: and x8, x8, #0x7ffffffff
; GISEL-NEXT: clz x8, x8
; GISEL-NEXT: sub x8, x8, #29
; GISEL-NEXT: ubfx x0, x8, #5, #30
; GISEL-NEXT: ret
%2 = srem i35 1, %0
%3 = call i35 @llvm.ctlz.i35(i35 %2, i1 false)
%4 = lshr i35 %3, 5
ret i35 %4
}
declare i35 @llvm.ctlz.i35(i35, i1 immarg)