[llvm] e21bb31 - CodeGen: Require SSA to run PeepholeOptimizer

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 11 15:03:10 PDT 2020


Author: Matt Arsenault
Date: 2020-09-11T18:03:04-04:00
New Revision: e21bb31eb6c6fcff652ecfb338e8558362473150

URL: https://github.com/llvm/llvm-project/commit/e21bb31eb6c6fcff652ecfb338e8558362473150
DIFF: https://github.com/llvm/llvm-project/commit/e21bb31eb6c6fcff652ecfb338e8558362473150.diff

LOG: CodeGen: Require SSA to run PeepholeOptimizer

Added: 
    

Modified: 
    llvm/lib/CodeGen/PeepholeOptimizer.cpp
    llvm/test/CodeGen/AMDGPU/fold_16bit_imm.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/PeepholeOptimizer.cpp b/llvm/lib/CodeGen/PeepholeOptimizer.cpp
index 05c843078fb1..ed2a50e90ffe 100644
--- a/llvm/lib/CodeGen/PeepholeOptimizer.cpp
+++ b/llvm/lib/CodeGen/PeepholeOptimizer.cpp
@@ -178,6 +178,11 @@ namespace {
       }
     }
 
+    MachineFunctionProperties getRequiredProperties() const override {
+      return MachineFunctionProperties()
+        .set(MachineFunctionProperties::Property::IsSSA);
+    }
+
     /// Track Def -> Use info used for rewriting copies.
     using RewriteMapTy = SmallDenseMap<RegSubRegPair, ValueTrackerResult>;
 

diff  --git a/llvm/test/CodeGen/AMDGPU/fold_16bit_imm.mir b/llvm/test/CodeGen/AMDGPU/fold_16bit_imm.mir
index 458bdcef1a58..eae7e4807f76 100644
--- a/llvm/test/CodeGen/AMDGPU/fold_16bit_imm.mir
+++ b/llvm/test/CodeGen/AMDGPU/fold_16bit_imm.mir
@@ -16,21 +16,6 @@ body:             |
 
 ...
 
----
-name:            fold_simm_16_sub_to_sub
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_simm_16_sub_to_sub
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: SI_RETURN_TO_EPILOG [[S_MOV_B32_1]]
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:sreg_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
 ---
 name:            fold_simm_16_sub_to_phys
 body:             |
@@ -46,36 +31,6 @@ body:             |
 
 ...
 
----
-name:            fold_aimm_16_sub_to_sub_2048
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_aimm_16_sub_to_sub_2048
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: %1.lo16:agpr_32 = COPY killed [[S_MOV_B32_]].lo16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:agpr_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_aimm_16_sub_to_sub_0
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_aimm_16_sub_to_sub_0
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
-    ; GCN: [[V_ACCVGPR_WRITE_B32_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32 0, implicit $exec
-    ; GCN: SI_RETURN_TO_EPILOG [[V_ACCVGPR_WRITE_B32_]]
-    %0:sreg_32 = S_MOV_B32 0
-    %1.lo16:agpr_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
 ---
 name:            fold_aimm_16_sub_to_phys
 body:             |
@@ -106,21 +61,6 @@ body:             |
 
 ...
 
----
-name:            fold_vimm_16_sub_to_sub
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_vimm_16_sub_to_sub
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: %1.lo16:vgpr_32 = COPY killed [[S_MOV_B32_]].lo16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:vgpr_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
 ---
 name:            fold_vimm_16_sub_to_phys
 body:             |
@@ -135,123 +75,3 @@ body:             |
     SI_RETURN_TO_EPILOG $vgpr0_lo16
 
 ...
-
----
-name:            fold_vimm_16_lo_to_hi
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_vimm_16_lo_to_hi
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: %1.hi16:vgpr_32 = COPY killed [[S_MOV_B32_]].lo16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.hi16:vgpr_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_vimm_16_hi_to_lo
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_vimm_16_hi_to_lo
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: %1.lo16:vgpr_32 = COPY killed [[S_MOV_B32_]].hi16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:vgpr_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_simm_16_sub_to_sub_lo_to_hi
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_simm_16_sub_to_sub_lo_to_hi
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: %1.hi16:sreg_32 = COPY killed [[S_MOV_B32_]].lo16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.hi16:sreg_32 = COPY killed %0.lo16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_simm_16_sub_to_sub_hi_to_lo_2048
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_simm_16_sub_to_sub_hi_to_lo_2048
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 0
-    ; GCN: SI_RETURN_TO_EPILOG [[S_MOV_B32_1]]
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:sreg_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_simm_16_sub_to_sub_hi_to_lo_shifted_2048
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_simm_16_sub_to_sub_hi_to_lo_shifted_2048
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 134217728
-    ; GCN: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: SI_RETURN_TO_EPILOG [[S_MOV_B32_1]]
-    %0:sreg_32 = S_MOV_B32 134217728
-    %1.lo16:sreg_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_aimm_16_sub_to_sub_hi_to_lo_2048
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_aimm_16_sub_to_sub_hi_to_lo_2048
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2048
-    ; GCN: [[V_ACCVGPR_WRITE_B32_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32 0, implicit $exec
-    ; GCN: SI_RETURN_TO_EPILOG [[V_ACCVGPR_WRITE_B32_]]
-    %0:sreg_32 = S_MOV_B32 2048
-    %1.lo16:agpr_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_aimm_16_sub_to_sub_hi_to_lo_shifted_1
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_aimm_16_sub_to_sub_hi_to_lo_shifted_1
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65536
-    ; GCN: [[V_ACCVGPR_WRITE_B32_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32 1, implicit $exec
-    ; GCN: SI_RETURN_TO_EPILOG [[V_ACCVGPR_WRITE_B32_]]
-    %0:sreg_32 = S_MOV_B32 65536
-    %1.lo16:agpr_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...
-
----
-name:            fold_aimm_16_sub_to_sub_hi_to_lo_shifted_2048
-body:             |
-  bb.0:
-
-    ; GCN-LABEL: name: fold_aimm_16_sub_to_sub_hi_to_lo_shifted_2048
-    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 134217728
-    ; GCN: %1.lo16:agpr_32 = COPY killed [[S_MOV_B32_]].hi16
-    ; GCN: SI_RETURN_TO_EPILOG %1
-    %0:sreg_32 = S_MOV_B32 134217728
-    %1.lo16:agpr_32 = COPY killed %0.hi16
-    SI_RETURN_TO_EPILOG %1
-
-...


        


More information about the llvm-commits mailing list