| ; REQUIRES: asserts | |
| ; RUN: llc < %s -mtriple=arm-eabi -mcpu=cortex-a9 -enable-misched -verify-misched -debug-only=machine-scheduler -o - 2>&1 > \ | |
| ; RUN: /dev/null | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK_A9 | |
| ; RUN: llc < %s -mtriple=arm-eabi -mcpu=swift -enable-misched -verify-misched -debug-only=machine-scheduler -o - 2>&1 > \ | |
| ; RUN: /dev/null | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK_SWIFT | |
| ; RUN: llc < %s -mtriple=arm-eabi -mcpu=cortex-r52 -enable-misched -verify-misched -debug-only=machine-scheduler -o - 2>&1 > \ | |
| ; RUN: /dev/null | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK_R52 | |
| ; | |
| ; Check the latency of instructions for processors with sched-models | |
| ; | |
| ; Function Attrs: norecurse nounwind readnone | |
| define i32 @foo(float %a, float %b, float %c, i32 %d) local_unnamed_addr #0 { | |
| entry: | |
| ; | |
| ; CHECK: ********** MI Scheduling ********** | |
| ; CHECK_A9: VADDS | |
| ; CHECK_SWIFT: VADDfd | |
| ; CHECK_R52: VADDS | |
| ; CHECK_A9: Latency : 5 | |
| ; CHECK_SWIFT: Latency : 4 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| ; CHECK_A9: VMULS | |
| ; CHECK_SWIFT: VMULfd | |
| ; CHECK_R52: VMULS | |
| ; CHECK_SWIFT: Latency : 4 | |
| ; CHECK_A9: Latency : 6 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| ; CHECK: VDIVS | |
| ; CHECK_SWIFT: Latency : 17 | |
| ; CHECK_A9: Latency : 16 | |
| ; CHECK_R52: Latency : 7 | |
| ; | |
| ; CHECK: VCVTDS | |
| ; CHECK_SWIFT: Latency : 4 | |
| ; CHECK_A9: Latency : 5 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| ; CHECK: VADDD | |
| ; CHECK_SWIFT: Latency : 6 | |
| ; CHECK_A9: Latency : 5 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| ; CHECK: VMULD | |
| ; CHECK_SWIFT: Latency : 6 | |
| ; CHECK_A9: Latency : 7 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| ; CHECK: VDIVD | |
| ; CHECK_SWIFT: Latency : 32 | |
| ; CHECK_A9: Latency : 26 | |
| ; CHECK_R52: Latency : 17 | |
| ; | |
| ; CHECK: VTOSIZD | |
| ; CHECK_SWIFT: Latency : 4 | |
| ; CHECK_A9: Latency : 5 | |
| ; CHECK_R52: Latency : 6 | |
| ; | |
| %add = fadd float %a, %b | |
| %mul = fmul float %add, %add | |
| %div = fdiv float %mul, %b | |
| %conv1 = fpext float %div to double | |
| %add3 = fadd double %conv1, %conv1 | |
| %mul4 = fmul double %add3, %add3 | |
| %div5 = fdiv double %mul4, %conv1 | |
| %conv6 = fptosi double %div5 to i32 | |
| ret i32 %conv6 | |
| } |