Anil Mahmud b413e5c309 [PowerPC] Add support for intrinsics llvm.ppc.dcbfl and llvm.ppc.dcbflp
Added support for the intrinsic llvm.ppc.dcbfl and llvm.ppc.dcbflp.
These will be used for emitting cache control instructions dcbfl and dcbflp
which are actually mnemonics for using dcbf instruction with different
immediate arguments.

dcbfl ra, rb -> dcbf ra, rb, 1
dcbflp, ra, rb -> dcbf ra, rb, 3

Differential Revision: https://reviews.llvm.org/D68411
2020-02-12 09:02:17 -06:00

42 lines
913 B
LLVM

; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s \
; RUN: -verify-machineinstrs -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr | FileCheck %s
; Function Attrs: nounwind
define void @dcbf_test(i8* %a) {
entry:
tail call void @llvm.ppc.dcbf(i8* %a)
; CHECK-LABEL: @dcbf_test
; CHECK: dcbf 0, r3
; CHECK-NEXT: blr
ret void
}
declare void @llvm.ppc.dcbf(i8*)
; Function Attrs: nounwind
define void @dcbfl_test(i8* %a) {
entry:
tail call void @llvm.ppc.dcbfl(i8* %a)
; CHECK-LABEL: @dcbfl_test
; CHECK: dcbfl 0, r3
; CHECK-NEXT: blr
ret void
}
declare void @llvm.ppc.dcbfl(i8*)
; Function Attrs: nounwind
define void @dcbflp_test(i8* %a) {
entry:
%add.a = getelementptr inbounds i8, i8* %a, i64 3
tail call void @llvm.ppc.dcbflp(i8* %add.a)
; CHECK-LABEL: @dcbflp_test
; CHECK: addi r3, r3, 3
; CHECK-NEXT: dcbflp 0, r3
; CHECK-NEXT: blr
ret void
}
declare void @llvm.ppc.dcbflp(i8*)