diff --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td index 990b381341f07..3d34ea3bed318 100644 --- a/llvm/lib/Target/X86/X86.td +++ b/llvm/lib/Target/X86/X86.td @@ -1291,7 +1291,9 @@ def ProcessorFeatures { list ADLAdditionalTuning = [TuningPERMFalseDeps, TuningPreferMovmskOverVTest, TuningFastImmVectorShift]; - list ADLTuning = !listconcat(SKLTuning, ADLAdditionalTuning); + list ADLRemoveTuning = [TuningPOPCNTFalseDeps]; + list ADLTuning = + !listremove(!listconcat(SKLTuning, ADLAdditionalTuning), ADLRemoveTuning); list ADLFeatures = !listconcat(TRMFeatures, ADLAdditionalFeatures); diff --git a/llvm/test/CodeGen/X86/bitcnt-false-dep.ll b/llvm/test/CodeGen/X86/bitcnt-false-dep.ll index 5f576c8586285..793cbb8f75bdc 100644 --- a/llvm/test/CodeGen/X86/bitcnt-false-dep.ll +++ b/llvm/test/CodeGen/X86/bitcnt-false-dep.ll @@ -1,6 +1,7 @@ ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=haswell | FileCheck %s --check-prefix=HSW ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=skylake | FileCheck %s --check-prefix=SKL ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=skx | FileCheck %s --check-prefix=SKL +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=alderlake | FileCheck %s --check-prefix=ADL ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=silvermont -mattr=+lzcnt,+bmi | FileCheck %s --check-prefix=SKL ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=goldmont -mattr=+lzcnt,+bmi | FileCheck %s --check-prefix=SKL @@ -37,6 +38,10 @@ ret: ;SKL-LABEL:@loopdep_popcnt32 ;SKL: xorl [[GPR0:%e[a-d]x]], [[GPR0]] ;SKL-NEXT: popcntl {{.*}}, [[GPR0]] + +;ADL-LABEL:@loopdep_popcnt32 +;ADL-NOT: xor +;ADL: popcntl } define i64 @loopdep_popcnt64(ptr nocapture %x, ptr nocapture %y) nounwind { @@ -63,6 +68,10 @@ ret: ;SKL-LABEL:@loopdep_popcnt64 ;SKL: xorl %e[[GPR0:[a-d]x]], %e[[GPR0]] ;SKL-NEXT: popcntq {{.*}}, %r[[GPR0]] + +;ADL-LABEL:@loopdep_popcnt64 +;ADL-NOT: xor +;ADL: popcntq } define i32 @loopdep_tzct32(ptr nocapture %x, ptr nocapture %y) nounwind {