================
@@ -522,6 +522,43 @@ let SimpleBDXStore = 1, mayStore = 1 in {
                        [(store GR128:$src, bdxaddr20only128:$dst)]>;
   }
 }
+
+let hasNoSchedulingInfo = 1, hasSideEffects = 1, mayLoad = 1 in {
+  // load the stack guard's address
+  def LOAD_TLS_BLOCK_ADDR : Pseudo<(outs ADDR64:$grdaddr),
+                                            (ins), []>;
+  def LOAD_GLOBAL_STACKGUARD_ADDR : Pseudo<(outs ADDR64:$grdaddr),
+                                               (ins), []>;
+
+  let mayStore = 1 in {
+    // load the stack guard's address
+    // (via LOAD_[TLS|GLOBAL]_STACKGUARD_ADDR),
+    // and move the stack guard to the stack.
+    let usesCustomInserter = 1 in
+      def MOVE_STACKGUARD_DAG : Pseudo<(outs),
+                                        (ins bdaddr12only:$grdloc), []>;
+    let Constraints = "@earlyclobber $grdaddr" in
+      def MOVE_STACKGUARD : Pseudo<(outs ADDR64:$grdaddr),
+                                    (ins bdaddr12only:$grdloc), []>;
+  }
+  let Defs = [CC] in {
+    // load the stack guard's address
+    // (via LOAD_[TLS|GLOBAL]_STACKGUARD_ADDR),
+    // and compare the stack guard against the one on the stack.
+    let usesCustomInserter = 1 in
+      def COMPARE_STACKGUARD_DAG : Pseudo<(outs),
+                                           (ins bdaddr12only:$grdloc), 
+                                           [(set CC, 
+                                             (z_csg
----------------
dominik-steenken wrote:

Replacing `z_csg` with `z_compare_stackguard` would have required a *lot* of 
whitespace changes in `SystemZOperators.td` to keep the forrmatting as nicely 
aligned as it is now. So as suggested, i used `z_cmp_stackguard` instead and 
renamed all of the pseudos accordingly.

https://github.com/llvm/llvm-project/pull/169317
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to