47 lines
1.4 KiB
LLVM
47 lines
1.4 KiB
LLVM
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10
|
|
|
|
@newname = dso_local alias i32 (...), bitcast (i32 ()* @oldname to i32 (...)*)
|
|
|
|
; Function Attrs: noinline nounwind optnone
|
|
define dso_local signext i32 @oldname() #0 {
|
|
entry:
|
|
ret i32 55
|
|
}
|
|
|
|
; Function Attrs: noinline nounwind optnone
|
|
define dso_local signext i32 @caller() #0 {
|
|
; #P9-LABEL: caller
|
|
; #P9: bl newname
|
|
; #P9-NOT: nop
|
|
; #P9: blr
|
|
; #P10-LABEL: caller
|
|
; #P10: bl newname@notoc
|
|
; #P10-NOT: nop
|
|
; #P10: blr
|
|
entry:
|
|
%call = call signext i32 bitcast (i32 (...)* @newname to i32 ()*)()
|
|
ret i32 %call
|
|
}
|
|
|
|
; Function Attrs: noinline nounwind optnone -pcrelative-memops
|
|
; This caller does not use PC Relative memops
|
|
define dso_local signext i32 @caller_nopcrel() #1 {
|
|
; #P9-LABEL: caller_nopcrel
|
|
; #P9: bl newname
|
|
; #P9-NOT: nop
|
|
; #P9: blr
|
|
; #P10-LABEL: caller_nopcrel
|
|
; #P10: bl newname
|
|
; #P10-NEXT: nop
|
|
; #P10: blr
|
|
entry:
|
|
%call = call signext i32 bitcast (i32 (...)* @newname to i32 ()*)()
|
|
ret i32 %call
|
|
}
|
|
|
|
attributes #0 = { noinline nounwind optnone }
|
|
attributes #1 = { noinline nounwind optnone "target-features"="-pcrelative-memops" }
|