
Utilize common API in PPCTargetParser (https://github.com/llvm/llvm-project/pull/97541) to set default CPU with same interfaces for LLC. This will update AIX default CPU to pwr7 and LoP powerppc64 default CPU to ppc64.
116 lines
3.8 KiB
LLVM
116 lines
3.8 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
|
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mcpu=ppc -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
|
|
|
define void @cos_f64(ptr %arg) {
|
|
; CHECK-LNX-LABEL: cos_f64:
|
|
; CHECK-LNX: # %bb.0: # %bb
|
|
; CHECK-LNX-NEXT: mflr 0
|
|
; CHECK-LNX-NEXT: stdu 1, -32(1)
|
|
; CHECK-LNX-NEXT: std 0, 48(1)
|
|
; CHECK-LNX-NEXT: .cfi_def_cfa_offset 32
|
|
; CHECK-LNX-NEXT: .cfi_offset lr, 16
|
|
; CHECK-LNX-NEXT: addis 3, 2, .LCPI0_0@toc@ha
|
|
; CHECK-LNX-NEXT: lfs 1, .LCPI0_0@toc@l(3)
|
|
; CHECK-LNX-NEXT: bl __xl_cos_finite
|
|
; CHECK-LNX-NEXT: nop
|
|
; CHECK-LNX-NEXT: xssqrtdp 0, 0
|
|
; CHECK-LNX-NEXT: xsmuldp 0, 0, 1
|
|
; CHECK-LNX-NEXT: .p2align 4
|
|
; CHECK-LNX-NEXT: .LBB0_1: # %bb2
|
|
; CHECK-LNX-NEXT: #
|
|
; CHECK-LNX-NEXT: stfd 0, 0(3)
|
|
; CHECK-LNX-NEXT: b .LBB0_1
|
|
;
|
|
; CHECK-AIX-LABEL: cos_f64:
|
|
; CHECK-AIX: # %bb.0: # %bb
|
|
; CHECK-AIX-NEXT: mflr 0
|
|
; CHECK-AIX-NEXT: stwu 1, -64(1)
|
|
; CHECK-AIX-NEXT: stw 0, 72(1)
|
|
; CHECK-AIX-NEXT: stfd 31, 56(1) # 8-byte Folded Spill
|
|
; CHECK-AIX-NEXT: bl .sqrt[PR]
|
|
; CHECK-AIX-NEXT: nop
|
|
; CHECK-AIX-NEXT: lwz 3, L..C0(2) # %const.0
|
|
; CHECK-AIX-NEXT: fmr 31, 1
|
|
; CHECK-AIX-NEXT: lfs 0, 0(3)
|
|
; CHECK-AIX-NEXT: fmr 1, 0
|
|
; CHECK-AIX-NEXT: bl .__xl_cos_finite[PR]
|
|
; CHECK-AIX-NEXT: nop
|
|
; CHECK-AIX-NEXT: fmul 0, 31, 1
|
|
; CHECK-AIX-NEXT: L..BB0_1: # %bb2
|
|
; CHECK-AIX-NEXT: #
|
|
; CHECK-AIX-NEXT: stfd 0, 0(3)
|
|
; CHECK-AIX-NEXT: b L..BB0_1
|
|
bb:
|
|
%i1 = getelementptr i8, ptr %arg, i64 undef
|
|
br label %bb2
|
|
|
|
bb2:
|
|
%i3 = getelementptr inbounds i8, ptr %i1, i64 undef
|
|
store double undef, ptr %i3, align 8
|
|
%i7 = tail call fast double @llvm.sqrt.f64(double undef)
|
|
%i8 = fmul fast double undef, 0x401921FB54442D28
|
|
%i9 = tail call fast double @llvm.cos.f64(double %i8) #2
|
|
%i10 = fmul fast double %i7, %i9
|
|
store double %i10, ptr %i1, align 8
|
|
br label %bb2
|
|
}
|
|
|
|
define void @log_f64(ptr %arg) {
|
|
; CHECK-LNX-LABEL: log_f64:
|
|
; CHECK-LNX: # %bb.0: # %bb
|
|
; CHECK-LNX-NEXT: mflr 0
|
|
; CHECK-LNX-NEXT: stdu 1, -32(1)
|
|
; CHECK-LNX-NEXT: std 0, 48(1)
|
|
; CHECK-LNX-NEXT: .cfi_def_cfa_offset 32
|
|
; CHECK-LNX-NEXT: .cfi_offset lr, 16
|
|
; CHECK-LNX-NEXT: addis 3, 2, .LCPI1_0@toc@ha
|
|
; CHECK-LNX-NEXT: lfs 1, .LCPI1_0@toc@l(3)
|
|
; CHECK-LNX-NEXT: bl __xl_log_finite
|
|
; CHECK-LNX-NEXT: nop
|
|
; CHECK-LNX-NEXT: xssqrtdp 0, 0
|
|
; CHECK-LNX-NEXT: xsmuldp 0, 0, 1
|
|
; CHECK-LNX-NEXT: .p2align 4
|
|
; CHECK-LNX-NEXT: .LBB1_1: # %bb2
|
|
; CHECK-LNX-NEXT: #
|
|
; CHECK-LNX-NEXT: stfd 0, 0(3)
|
|
; CHECK-LNX-NEXT: b .LBB1_1
|
|
;
|
|
; CHECK-AIX-LABEL: log_f64:
|
|
; CHECK-AIX: # %bb.0: # %bb
|
|
; CHECK-AIX-NEXT: mflr 0
|
|
; CHECK-AIX-NEXT: stwu 1, -64(1)
|
|
; CHECK-AIX-NEXT: stw 0, 72(1)
|
|
; CHECK-AIX-NEXT: stfd 31, 56(1) # 8-byte Folded Spill
|
|
; CHECK-AIX-NEXT: bl .sqrt[PR]
|
|
; CHECK-AIX-NEXT: nop
|
|
; CHECK-AIX-NEXT: lwz 3, L..C1(2) # %const.0
|
|
; CHECK-AIX-NEXT: fmr 31, 1
|
|
; CHECK-AIX-NEXT: lfs 0, 0(3)
|
|
; CHECK-AIX-NEXT: fmr 1, 0
|
|
; CHECK-AIX-NEXT: bl .__xl_log_finite[PR]
|
|
; CHECK-AIX-NEXT: nop
|
|
; CHECK-AIX-NEXT: fmul 0, 31, 1
|
|
; CHECK-AIX-NEXT: L..BB1_1: # %bb2
|
|
; CHECK-AIX-NEXT: #
|
|
; CHECK-AIX-NEXT: stfd 0, 0(3)
|
|
; CHECK-AIX-NEXT: b L..BB1_1
|
|
bb:
|
|
%i1 = getelementptr i8, ptr %arg, i64 undef
|
|
br label %bb2
|
|
|
|
bb2:
|
|
%i3 = getelementptr inbounds i8, ptr %i1, i64 undef
|
|
store double undef, ptr %i3, align 8
|
|
%i7 = tail call fast double @llvm.sqrt.f64(double undef)
|
|
%i8 = fmul fast double undef, 0x401921FB54442D28
|
|
%i9 = tail call fast double @llvm.log.f64(double %i8) #2
|
|
%i10 = fmul fast double %i7, %i9
|
|
store double %i10, ptr %i1, align 8
|
|
br label %bb2
|
|
}
|
|
|
|
declare double @llvm.sqrt.f64(double)
|
|
declare double @llvm.cos.f64(double)
|
|
declare double @llvm.log.f64(double)
|