mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
Switch the select to branch transformation on by default.
The primitive conservative heuristic seems to give a slight overall improvement while not regressing stuff. Make it available to wider testing. If you notice any speed regressions (or significant code size regressions) let me know! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156258 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -71,8 +71,9 @@ static cl::opt<bool> DisableDeleteDeadBlocks(
|
|||||||
"disable-cgp-delete-dead-blocks", cl::Hidden, cl::init(false),
|
"disable-cgp-delete-dead-blocks", cl::Hidden, cl::init(false),
|
||||||
cl::desc("Disable deleting dead blocks in CodeGenPrepare"));
|
cl::desc("Disable deleting dead blocks in CodeGenPrepare"));
|
||||||
|
|
||||||
static cl::opt<bool> EnableSelectToBranch("enable-cgp-select2branch", cl::Hidden,
|
static cl::opt<bool> DisableSelectToBranch(
|
||||||
cl::desc("Enable select to branch conversion."));
|
"disable-cgp-select2branch", cl::Hidden, cl::init(false),
|
||||||
|
cl::desc("Disable select to branch conversion."));
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class CodeGenPrepare : public FunctionPass {
|
class CodeGenPrepare : public FunctionPass {
|
||||||
@@ -1132,7 +1133,7 @@ static bool isFormingBranchFromSelectProfitable(SelectInst *SI) {
|
|||||||
bool CodeGenPrepare::OptimizeSelectInst(SelectInst *SI) {
|
bool CodeGenPrepare::OptimizeSelectInst(SelectInst *SI) {
|
||||||
// If we have a SelectInst that will likely profit from branch prediction,
|
// If we have a SelectInst that will likely profit from branch prediction,
|
||||||
// turn it into a branch.
|
// turn it into a branch.
|
||||||
if (!EnableSelectToBranch || OptSize || !TLI->isPredictableSelectExpensive())
|
if (DisableSelectToBranch || OptSize || !TLI->isPredictableSelectExpensive())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!SI->getCondition()->getType()->isIntegerTy(1) ||
|
if (!SI->getCondition()->getType()->isIntegerTy(1) ||
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
; RUN: llc -march=x86-64 -mcpu=core2 -enable-cgp-select2branch < %s | FileCheck %s
|
; RUN: llc -march=x86-64 -mcpu=core2 < %s | FileCheck %s
|
||||||
|
|
||||||
; cmp with single-use load, should not form cmov.
|
; cmp with single-use load, should not form cmov.
|
||||||
define i32 @test1(double %a, double* nocapture %b, i32 %x, i32 %y) {
|
define i32 @test1(double %a, double* nocapture %b, i32 %x, i32 %y) {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s
|
; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -disable-cgp-select2branch | FileCheck %s
|
||||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
||||||
|
|
||||||
define i32 @test1(i32 %x, i32 %n, i32 %w, i32* %vp) nounwind readnone {
|
define i32 @test1(i32 %x, i32 %n, i32 %w, i32* %vp) nounwind readnone {
|
||||||
|
Reference in New Issue
Block a user