48 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix \3; RUN: -mcpu=pwr7 < %s | FileCheck %s4; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux \5; RUN: -mcpu=pwr8 < %s | FileCheck %s6; RUN: llc < %s -mtriple powerpc64le-unknown-linux -debug-only=machine-scheduler \7; RUN: 2>&1 | FileCheck %s --check-prefix=LOG8 9; REQUIRES: asserts10 11define dso_local void @test_builtin_ppc_fence() {12; CHECK-LABEL: test_builtin_ppc_fence:13; CHECK: # %bb.0: # %entry14; CHECK-NEXT: #FENCE15; CHECK-NEXT: blr16entry:17 call void @llvm.ppc.fence()18 ret void19}20declare void @llvm.ppc.fence()21 22; LOG: ***** MI Scheduling *****23; LOG-NEXT: motion:%bb.0 entry24; LOG: ExitSU: FENCE implicit-def dead $rm25; LOG: ***** MI Scheduling *****26; LOG-NEXT: motion:%bb.0 entry27; LOG: ExitSU: FENCE implicit-def dead $rm28;29; LOG: ***** MI Scheduling *****30; LOG-NEXT: motion:%bb.0 entry31; LOG: ExitSU: FENCE implicit-def dead $rm32; LOG: ***** MI Scheduling *****33; LOG-NEXT: motion:%bb.0 entry34; LOG: ExitSU: FENCE implicit-def dead $rm35define double @motion(double %a, double %b, double %c, double %d) {36entry:37 %0 = fdiv double %a, %b38 %1 = fdiv double %b, %d39 call void @llvm.ppc.fence()40 %2 = fdiv double %c, %d41 %3 = fdiv double %a, %c42 call void @llvm.ppc.fence()43 %4 = fadd double %0, %144 %5 = fadd double %2, %345 %6 = fsub double %4, %546 ret double %647}48