[SystemZ] Add SystemZPostRewrite in addPostRegAlloc() instead at -O0.
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Mon, 30 Sep 2019 07:29:54 +0000 (07:29 +0000)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Mon, 30 Sep 2019 07:29:54 +0000 (07:29 +0000)
SystemZPostRewrite needs to be run before (it may emit COPYs) the Post-RA
pseudo pass also at -O0, so it should be added in addPostRegAlloc().

Review: Ulrich Weigand
llvm-svn: 373182

llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
llvm/test/CodeGen/SystemZ/cond-move-09.mir [new file with mode: 0644]

index bf8c24e..2086503 100644 (file)
@@ -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 (file)
index 0000000..9eb4885
--- /dev/null
@@ -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
+...