185071a3cSQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 285071a3cSQiu Chaofan; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix \ 385071a3cSQiu Chaofan; RUN: -mcpu=pwr7 < %s | FileCheck %s 485071a3cSQiu Chaofan; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux \ 585071a3cSQiu Chaofan; RUN: -mcpu=pwr8 < %s | FileCheck %s 685071a3cSQiu Chaofan; RUN: llc < %s -mtriple powerpc64le-unknown-linux -debug-only=machine-scheduler \ 785071a3cSQiu Chaofan; RUN: 2>&1 | FileCheck %s --check-prefix=LOG 885071a3cSQiu Chaofan 9*677ced8aSHans Wennborg; REQUIRES: asserts 10*677ced8aSHans Wennborg 1185071a3cSQiu Chaofandefine dso_local void @test_builtin_ppc_fence() { 1285071a3cSQiu Chaofan; CHECK-LABEL: test_builtin_ppc_fence: 1385071a3cSQiu Chaofan; CHECK: # %bb.0: # %entry 1485071a3cSQiu Chaofan; CHECK-NEXT: #FENCE 1585071a3cSQiu Chaofan; CHECK-NEXT: blr 1685071a3cSQiu Chaofanentry: 1785071a3cSQiu Chaofan call void @llvm.ppc.fence() 1885071a3cSQiu Chaofan ret void 1985071a3cSQiu Chaofan} 2085071a3cSQiu Chaofandeclare void @llvm.ppc.fence() 2185071a3cSQiu Chaofan 2285071a3cSQiu Chaofan; LOG: ***** MI Scheduling ***** 2385071a3cSQiu Chaofan; LOG-NEXT: motion:%bb.0 entry 2485071a3cSQiu Chaofan; LOG: ExitSU: FENCE implicit-def dead $rm 2585071a3cSQiu Chaofan; LOG: ***** MI Scheduling ***** 2685071a3cSQiu Chaofan; LOG-NEXT: motion:%bb.0 entry 2785071a3cSQiu Chaofan; LOG: ExitSU: FENCE implicit-def dead $rm 2885071a3cSQiu Chaofan; 2985071a3cSQiu Chaofan; LOG: ***** MI Scheduling ***** 3085071a3cSQiu Chaofan; LOG-NEXT: motion:%bb.0 entry 3185071a3cSQiu Chaofan; LOG: ExitSU: FENCE implicit-def dead $rm 3285071a3cSQiu Chaofan; LOG: ***** MI Scheduling ***** 3385071a3cSQiu Chaofan; LOG-NEXT: motion:%bb.0 entry 3485071a3cSQiu Chaofan; LOG: ExitSU: FENCE implicit-def dead $rm 3585071a3cSQiu Chaofandefine double @motion(double %a, double %b, double %c, double %d) { 3685071a3cSQiu Chaofanentry: 3785071a3cSQiu Chaofan %0 = fdiv double %a, %b 3885071a3cSQiu Chaofan %1 = fdiv double %b, %d 3985071a3cSQiu Chaofan call void @llvm.ppc.fence() 4085071a3cSQiu Chaofan %2 = fdiv double %c, %d 4185071a3cSQiu Chaofan %3 = fdiv double %a, %c 4285071a3cSQiu Chaofan call void @llvm.ppc.fence() 4385071a3cSQiu Chaofan %4 = fadd double %0, %1 4485071a3cSQiu Chaofan %5 = fadd double %2, %3 4585071a3cSQiu Chaofan %6 = fsub double %4, %5 4685071a3cSQiu Chaofan ret double %6 4785071a3cSQiu Chaofan} 48