xref: /llvm-project/llvm/test/CodeGen/PowerPC/fence.ll (revision 677ced8af239024439e377e06c93704252a8f179)
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