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_17.patch (9218B)


      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 @@ -1720,12 +1720,6 @@ bool VectorCombine::run() {
     44     // dispatching to folding functions if there's no chance of matching.
     45     if (IsFixedVectorType) {
     46       switch (Opcode) {
     47 -      case Instruction::InsertElement:
     48 -        MadeChange |= vectorizeLoadInsert(I);
     49 -        break;
     50 -      case Instruction::ShuffleVector:
     51 -        MadeChange |= widenSubvectorLoad(I);
     52 -        break;
     53       case Instruction::Load:
     54         MadeChange |= scalarizeLoadExtract(I);
     55         break;
     56 @@ -1754,9 +1748,11 @@ bool VectorCombine::run() {
     57     if (IsFixedVectorType) {
     58       switch (Opcode) {
     59       case Instruction::InsertElement:
     60 +        MadeChange |= vectorizeLoadInsert(I);
     61         MadeChange |= foldInsExtFNeg(I);
     62         break;
     63       case Instruction::ShuffleVector:
     64 +        MadeChange |= widenSubvectorLoad(I);
     65         MadeChange |= foldShuffleOfBinops(I);
     66         MadeChange |= foldSelectShuffle(I);
     67         break;
     68 diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
     69 index 13612c3bb459..5f84d28af4a6 100644
     70 --- a/llvm/test/Other/new-pm-defaults.ll
     71 +++ b/llvm/test/Other/new-pm-defaults.ll
     72 @@ -186,7 +186,7 @@
     73 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
     74 ; CHECK-EP-LOOP-END-NEXT: Running pass: NoOpLoopPass
     75 ; CHECK-O-NEXT: Running pass: SROAPass on foo
     76 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
     77 +; CHECK-MATRIX: Running pass: VectorCombinePass
     78 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
     79 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
     80 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
     81 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     82 index 3f5d2d5b153d..ea07128c9f6a 100644
     83 --- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     84 +++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
     85 @@ -159,7 +159,6 @@
     86 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
     87 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
     88 ; CHECK-O-NEXT: Running pass: SROAPass on foo
     89 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
     90 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
     91 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
     92 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
     93 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
     94 index 29021ceace54..43e943cb6011 100644
     95 --- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
     96 +++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
     97 @@ -121,7 +121,6 @@
     98 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
     99 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    100 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    101 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    102 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    103 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    104 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    105 diff --git a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    106 index daf3141a1f2c..78914d1c23b2 100644
    107 --- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    108 +++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    109 @@ -130,7 +130,6 @@
    110 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    111 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    112 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    113 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    114 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    115 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    116 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    117 diff --git a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    118 index bfe80902f806..5b62ba39add3 100644
    119 --- a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    120 +++ b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
    121 @@ -160,7 +160,6 @@
    122 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    123 ; CHECK-O-NEXT: Running pass: LoopFullUnrollPass
    124 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    125 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    126 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    127 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    128 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    129 diff --git a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    130 index c7daf7aa46b1..17475423d696 100644
    131 --- a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    132 +++ b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
    133 @@ -124,7 +124,6 @@
    134 ; CHECK-O-NEXT: Running pass: IndVarSimplifyPass
    135 ; CHECK-O-NEXT: Running pass: LoopDeletionPass
    136 ; CHECK-O-NEXT: Running pass: SROAPass on foo
    137 -; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass
    138 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass
    139 ; CHECK-O23SZ-NEXT: Running pass: GVNPass
    140 ; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis
    141 diff --git a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    142 index 77cbc70ff369..dd7164febea4 100644
    143 --- a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    144 +++ b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll
    145 @@ -12,13 +12,20 @@ $getAt = comdat any
    146 define dso_local noundef <4 x float> @ConvertVectors_ByRef(ptr noundef nonnull align 16 dereferenceable(16) %0) #0 {
    147 ; SSE-LABEL: @ConvertVectors_ByRef(
    148 ; SSE-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr [[TMP0:%.*]], align 16
    149 -; SSE-NEXT:    [[TMP3:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
    150 -; SSE-NEXT:    ret <4 x float> [[TMP3]]
    151 +; SSE-NEXT:    [[TMP3:%.*]] = getelementptr inbounds [4 x float], ptr [[TMP0]], i64 0, i64 1
    152 +; SSE-NEXT:    [[TMP4:%.*]] = load <2 x float>, ptr [[TMP3]], align 4
    153 +; SSE-NEXT:    [[TMP5:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
    154 +; SSE-NEXT:    [[TMP6:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 5, i32 undef>
    155 +; SSE-NEXT:    [[TMP7:%.*]] = shufflevector <4 x float> [[TMP6]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 1, i32 2, i32 5>
    156 +; SSE-NEXT:    ret <4 x float> [[TMP7]]
    157 ;
    158 ; AVX-LABEL: @ConvertVectors_ByRef(
    159 ; AVX-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr [[TMP0:%.*]], align 16
    160 -; AVX-NEXT:    [[TMP3:%.*]] = shufflevector <4 x float> [[TMP2]], <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
    161 -; AVX-NEXT:    ret <4 x float> [[TMP3]]
    162 +; AVX-NEXT:    [[TMP3:%.*]] = getelementptr inbounds [4 x float], ptr [[TMP0]], i64 0, i64 2
    163 +; AVX-NEXT:    [[TMP4:%.*]] = load float, ptr [[TMP3]], align 8
    164 +; AVX-NEXT:    [[TMP5:%.*]] = insertelement <4 x float> [[TMP2]], float [[TMP4]], i64 2
    165 +; AVX-NEXT:    [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[TMP4]], i64 3
    166 +; AVX-NEXT:    ret <4 x float> [[TMP6]]
    167 ;
    168   %2 = alloca ptr, align 8
    169   %3 = alloca <4 x float>, align 16
    170 -- 
    171 2.39.0.1.g6739ec1790