tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch (9666B)


      1 From cf00b30288c4c81b2c6a5af01c38f236148777a0 Mon Sep 17 00:00:00 2001
      2 From: Mike Hommey <mh@glandium.org>
      3 Date: Tue, 28 Mar 2023 06:13:36 +0900
      4 Subject: [PATCH] Revert "[Passes][VectorCombine] enable early run generally
      5 and try load folds"
      6 
      7 This reverts commit 163bb6d64e5f1220777c3ec2a8b58c0666a74d91.
      8 It causes various reftest regressions.
      9 ---
     10 llvm/lib/Passes/PassBuilderPipelines.cpp          |  7 ++++---
     11 llvm/lib/Transforms/Vectorize/VectorCombine.cpp   |  8 ++------
     12 llvm/test/Other/new-pm-defaults.ll                |  2 +-
     13 .../Other/new-pm-thinlto-postlink-defaults.ll     |  1 -
     14 .../Other/new-pm-thinlto-postlink-pgo-defaults.ll |  1 -
     15 .../new-pm-thinlto-postlink-samplepgo-defaults.ll |  1 -
     16 .../Other/new-pm-thinlto-prelink-pgo-defaults.ll  |  1 -
     17 .../new-pm-thinlto-prelink-samplepgo-defaults.ll  |  1 -
     18 .../PhaseOrdering/X86/vec-load-combine.ll         | 15 +++++++++++----
     19 9 files changed, 18 insertions(+), 19 deletions(-)
     20 
     21 diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
     22 index eed29c25714b..b925448cd6c0 100644
     23 --- a/llvm/lib/Passes/PassBuilderPipelines.cpp
     24 +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
     25 @@ -611,9 +611,10 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
     26   // Delete small array after loop unroll.
     27   FPM.addPass(SROAPass(SROAOptions::ModifyCFG));
     28 
     29 -  // Try vectorization/scalarization transforms that are both improvements
     30 -  // themselves and can allow further folds with GVN and InstCombine.
     31 -  FPM.addPass(VectorCombinePass(/*TryEarlyFoldsOnly=*/true));
     32 +  // The matrix extension can introduce large vector operations early, which can
     33 +  // benefit from running vector-combine early on.
     34 +  if (EnableMatrix)
     35 +    FPM.addPass(VectorCombinePass(/*TryEarlyFoldsOnly=*/true));
     36 
     37   // Eliminate redundancies.
     38   FPM.addPass(MergedLoadStoreMotionPass());
     39 diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
     40 index 2e489757ebc1..810a9f92bb7a 100644
     41 --- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
     42 +++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
     43 @@ -1715,23 +1715,6 @@ bool VectorCombine::run() {
     44     bool IsFixedVectorType = isa<FixedVectorType>(I.getType());
     45     auto Opcode = I.getOpcode();
     46 
     47 -    // These folds should be beneficial regardless of when this pass is run
     48 -    // in the optimization pipeline.
     49 -    // The type checking is for run-time efficiency. We can avoid wasting time
     50 -    // dispatching to folding functions if there's no chance of matching.
     51 -    if (IsFixedVectorType) {
     52 -      switch (Opcode) {
     53 -      case Instruction::InsertElement:
     54 -        MadeChange |= vectorizeLoadInsert(I);
     55 -        break;
     56 -      case Instruction::ShuffleVector:
     57 -        MadeChange |= widenSubvectorLoad(I);
     58 -        break;
     59 -      default:
     60 -        break;
     61 -      }
     62 -    }
     63 -
     64     // This transform works with scalable and fixed vectors
     65     // TODO: Identify and allow other scalable transforms
     66     if (isa<VectorType>(I.getType())) {
     67 @@ -1753,9 +1736,11 @@ bool VectorCombine::run() {
     68     if (IsFixedVectorType) {
     69       switch (Opcode) {
     70       case Instruction::InsertElement:
     71 +        MadeChange |= vectorizeLoadInsert(I);
     72         MadeChange |= foldInsExtFNeg(I);
     73         break;
     74       case Instruction::ShuffleVector:
     75 +        MadeChange |= widenSubvectorLoad(I);
     76         MadeChange |= foldShuffleOfBinops(I);
     77         MadeChange |= foldShuffleOfCastops(I);
     78         MadeChange |= foldShuffleOfShuffles(I);
     79 diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
     80 index 13612c3bb459..5f84d28af4a6 100644
     81 --- a/llvm/test/Other/new-pm-defaults.ll
     82 +++ b/llvm/test/Other/new-pm-defaults.ll
     83 @@ -186,7 +186,7 @@
     84 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
     85 ; CHECK-EP-LOOP-END-NEXT: Running pass: NoOpLoopPass
     86 ; CHECK-O-NEXT: Running pass: SROAPass on foo
     87 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
     88 +; CHECK-MATRIX: Running pass: VectorCombinePass
     89 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
     90 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
     91 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
     92 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     93 index 3f5d2d5b153d..ea07128c9f6a 100644
     94 --- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     95 +++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     96 @@ -159,7 +159,6 @@
     97 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
     98 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
     99 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    100 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    101 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    102 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    103 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    104 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
    105 index 29021ceace54..43e943cb6011 100644
    106 --- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
    107 +++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
    108 @@ -121,7 +121,6 @@
    109 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    110 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    111 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    112 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    113 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    114 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    115 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    116 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    117 index daf3141a1f2c..78914d1c23b2 100644
    118 --- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    119 +++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    120 @@ -130,7 +130,6 @@
    121 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    122 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    123 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    124 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    125 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    126 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    127 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    128 diff --git a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    129 index bfe80902f806..5b62ba39add3 100644
    130 --- a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    131 +++ b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    132 @@ -160,7 +160,6 @@
    133 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    134 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    135 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    136 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    137 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    138 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    139 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    140 diff --git a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    141 index c7daf7aa46b1..17475423d696 100644
    142 --- a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    143 +++ b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    144 @@ -124,7 +124,6 @@
    145 ; CHECK-O-NEXT: Running pass: IndVarSimplifyPass
    146 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    147 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    148 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    149 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    150 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    151 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    152 diff --git a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    153 index 77cbc70ff369..dd7164febea4 100644
    154 --- a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    155 +++ b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    156 @@ -12,13 +12,20 @@ $getAt = comdat any
    157 define dso_local noundef <4 x float> @ConvertVectors_ByRef(ptr noundef nonnull align 16 dereferenceable(16) %0) #0 {
    158 ; SSE-LABEL: @ConvertVectors_ByRef(
    159 ; SSE-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr [[TMP0:%.*]], align 16
    160 -; SSE-NEXT:    [[TMP3:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
    161 -; SSE-NEXT:    ret <4 x float> [[TMP3]]
    162 +; SSE-NEXT:    [[TMP3:%.*]] = getelementptr inbounds [4 x float], ptr [[TMP0]], i64 0, i64 1
    163 +; SSE-NEXT:    [[TMP4:%.*]] = load <2 x float>, ptr [[TMP3]], align 4
    164 +; SSE-NEXT:    [[TMP5:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
    165 +; SSE-NEXT:    [[TMP6:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 5, i32 undef>
    166 +; SSE-NEXT:    [[TMP7:%.*]] = shufflevector <4 x float> [[TMP6]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 1, i32 2, i32 5>
    167 +; SSE-NEXT:    ret <4 x float> [[TMP7]]
    168 ;
    169 ; AVX-LABEL: @ConvertVectors_ByRef(
    170 ; AVX-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr [[TMP0:%.*]], align 16
    171 -; AVX-NEXT:    [[TMP3:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
    172 -; AVX-NEXT:    ret <4 x float> [[TMP3]]
    173 +; AVX-NEXT:    [[TMP3:%.*]] = getelementptr inbounds [4 x float], ptr [[TMP0]], i64 0, i64 2
    174 +; AVX-NEXT:    [[TMP4:%.*]] = load float, ptr [[TMP3]], align 8
    175 +; AVX-NEXT:    [[TMP5:%.*]] = insertelement <4 x float> [[TMP2]], float [[TMP4]], i64 2
    176 +; AVX-NEXT:    [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[TMP4]], i64 3
    177 +; AVX-NEXT:    ret <4 x float> [[TMP6]]
    178 ;
    179   %2 = alloca ptr, align 8
    180   %3 = alloca <4 x float>, align 16
    181 -- 
    182 2.39.0.1.g6739ec1790