forked from OSchip/llvm-project
[PowerPC] Option controling scalar MASS convertion
differential: https://reviews.llvm.org/D119035 reviewer: bmahjour
This commit is contained in:
parent
f457863ae3
commit
8ce13bc93b
|
@ -142,7 +142,7 @@ namespace llvm {
|
|||
SupportsDebugEntryValues(false), EnableDebugEntryValues(false),
|
||||
ValueTrackingVariableLocations(false), ForceDwarfFrameSection(false),
|
||||
XRayOmitFunctionIndex(false), DebugStrictDwarf(false),
|
||||
Hotpatch(false),
|
||||
Hotpatch(false), PPCGenScalarMASSEntries(false),
|
||||
FPDenormalMode(DenormalMode::IEEE, DenormalMode::IEEE) {}
|
||||
|
||||
/// DisableFramePointerElim - This returns true if frame pointer elimination
|
||||
|
@ -345,6 +345,9 @@ namespace llvm {
|
|||
/// Emit the hotpatch flag in CodeView debug.
|
||||
unsigned Hotpatch : 1;
|
||||
|
||||
/// Enables scalar MASS conversions
|
||||
unsigned PPCGenScalarMASSEntries : 1;
|
||||
|
||||
/// Name of the stack usage file (i.e., .su file) if user passes
|
||||
/// -fstack-usage. If empty, it can be implied that -fstack-usage is not
|
||||
/// passed on the command line.
|
||||
|
|
|
@ -382,7 +382,8 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
|
|||
|
||||
// MASS transformation for LLVM intrinsics with replicating fast-math flag
|
||||
// to be consistent to PPCGenScalarMASSEntries pass
|
||||
if (TM.getOptLevel() == CodeGenOpt::Aggressive){
|
||||
if (TM.getOptLevel() == CodeGenOpt::Aggressive &&
|
||||
TM.Options.PPCGenScalarMASSEntries) {
|
||||
setOperationAction(ISD::FSIN , MVT::f64, Custom);
|
||||
setOperationAction(ISD::FCOS , MVT::f64, Custom);
|
||||
setOperationAction(ISD::FPOW , MVT::f64, Custom);
|
||||
|
|
|
@ -97,6 +97,13 @@ static cl::opt<bool>
|
|||
ReduceCRLogical("ppc-reduce-cr-logicals",
|
||||
cl::desc("Expand eligible cr-logical binary ops to branches"),
|
||||
cl::init(true), cl::Hidden);
|
||||
|
||||
static cl::opt<bool> EnablePPCGenScalarMASSEntries(
|
||||
"enable-ppc-gen-scalar-mass", cl::init(false),
|
||||
cl::desc("Enable lowering math functions to their corresponding MASS "
|
||||
"(scalar) entries"),
|
||||
cl::Hidden);
|
||||
|
||||
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCTarget() {
|
||||
// Register the targets
|
||||
RegisterTargetMachine<PPCTargetMachine> A(getThePPC32Target());
|
||||
|
@ -432,7 +439,9 @@ void PPCPassConfig::addIRPasses() {
|
|||
|
||||
// Generate PowerPC target-specific entries for scalar math functions
|
||||
// that are available in IBM MASS (scalar) library.
|
||||
if (TM->getOptLevel() == CodeGenOpt::Aggressive) {
|
||||
if (TM->getOptLevel() == CodeGenOpt::Aggressive &&
|
||||
EnablePPCGenScalarMASSEntries) {
|
||||
TM->Options.PPCGenScalarMASSEntries = EnablePPCGenScalarMASSEntries;
|
||||
addPass(createPPCGenScalarMASSEntriesPass());
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
; CHECK-NEXT: Convert i1 constants to i32/i64 if they are returned
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: PPC Lower MASS Entries
|
||||
; CHECK-NEXT: PPC Generate Scalar MASS Entries
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @llvm.cos.f32(float)
|
||||
declare float @llvm.exp.f32(float)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @llvm.cos.f32(float)
|
||||
declare float @llvm.exp.f32(float)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @llvm.cos.f32(float)
|
||||
declare float @llvm.exp.f32(float)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @acosf (float);
|
||||
declare float @acoshf (float);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @acosf (float);
|
||||
declare float @acoshf (float);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
|
||||
|
||||
declare float @acosf (float);
|
||||
declare float @acoshf (float);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
|
||||
declare float @llvm.pow.f32 (float, float);
|
||||
declare double @llvm.pow.f64 (double, double);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
|
||||
declare float @llvm.pow.f32 (float, float);
|
||||
declare double @llvm.pow.f64 (double, double);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK-LNX %s
|
||||
; RUN: llc -enable-ppc-gen-scalar-mass -verify-machineinstrs -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK-AIX %s
|
||||
|
||||
declare float @powf (float, float);
|
||||
declare double @pow (double, double);
|
||||
|
|
Loading…
Reference in New Issue