diff options
-rw-r--r-- | llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp | 5 | ||||
-rw-r--r-- | llvm/test/CodeGen/SystemZ/cond-move-09.mir | 29 |
2 files changed, 33 insertions, 1 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp index bf8c24e50f5..20865037fe3 100644 --- a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp +++ b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp @@ -184,6 +184,7 @@ public: bool addInstSelector() override; bool addILPOpts() override; void addPostRewrite() override; + void addPostRegAlloc() override; void addPreSched2() override; void addPreEmitPass() override; }; @@ -217,12 +218,14 @@ void SystemZPassConfig::addPostRewrite() { addPass(createSystemZPostRewritePass(getSystemZTargetMachine())); } -void SystemZPassConfig::addPreSched2() { +void SystemZPassConfig::addPostRegAlloc() { // PostRewrite needs to be run at -O0 also (in which case addPostRewrite() // is not called). if (getOptLevel() == CodeGenOpt::None) addPass(createSystemZPostRewritePass(getSystemZTargetMachine())); +} +void SystemZPassConfig::addPreSched2() { if (getOptLevel() != CodeGenOpt::None) addPass(&IfConverterID); } diff --git a/llvm/test/CodeGen/SystemZ/cond-move-09.mir b/llvm/test/CodeGen/SystemZ/cond-move-09.mir new file mode 100644 index 00000000000..9eb4885c2b4 --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/cond-move-09.mir @@ -0,0 +1,29 @@ +# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -O0 -start-after=regallocfast %s \ +# RUN: -o - | FileCheck %s +# +# Test that LOCRMux expansion works at -O0. + +--- | + define internal i32 @fun(i16 %arg) { bb: ret i32 0 } +... + +# CHECK-LABEL: fun +# CHECK: risbhg %r13, %r13, 0, 159, 32 + +--- +name: 'fun' +alignment: 16 +tracksRegLiveness: true +frameInfo: + maxAlignment: 8 +machineFunctionInfo: {} +body: | + bb.0.bb: + renamable $r0d = IMPLICIT_DEF + CGHI killed renamable $r0d, 8, implicit-def $cc + renamable $r13l = LHIMux 0 + renamable $r13h = LHIMux -1 + renamable $r13h = LOCRMux renamable $r13h, killed renamable $r13l, 14, 10, implicit $cc + renamable $r2l = COPY killed renamable $r13h + Return implicit killed $r2l +... |