[llvm] [X86][APX] Enable prefer-legacy-setcc tuning for Novalake and Diamondrapids (PR #202480)

Feng Zou via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 8 18:51:29 PDT 2026


https://github.com/fzou1 created https://github.com/llvm/llvm-project/pull/202480

Performance measurements show legacy SetCC is still good on these platforms.

>From 9ba6f9b4cc00874a6182f33e8efb73ff7e719cd8 Mon Sep 17 00:00:00 2001
From: "Zou, Feng" <feng.zou at intel.com>
Date: Sat, 30 May 2026 16:41:37 +0530
Subject: [PATCH 1/2] [X86][APX] Enable prefer-legacy-setcc tuning for Novalake
 and Diamondrapids

Performance measurements show legacy SetCC is still good on these platforms.
---
 llvm/lib/Target/X86/X86.td                    |    8 +-
 llvm/lib/Target/X86/X86FixupSetCC.cpp         |    9 +-
 llvm/test/CodeGen/X86/apx/ccmp.ll             | 1233 ++++++++++-------
 llvm/test/CodeGen/X86/apx/ctest.ll            | 1012 ++++++++------
 llvm/test/CodeGen/X86/apx/setzucc.ll          |  142 +-
 llvm/test/CodeGen/X86/fast-isel-fcmp.ll       |    2 +
 .../CodeGen/X86/fast-isel-select-cmov2.ll     |    2 +
 llvm/test/CodeGen/X86/pr27591.ll              |    2 +
 llvm/test/CodeGen/X86/pr32284.ll              |   34 +-
 llvm/test/CodeGen/X86/pr54369.ll              |    2 +
 10 files changed, 1455 insertions(+), 991 deletions(-)

diff --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td
index 50fb7204ebfa1..9388ce0ca3d8e 100644
--- a/llvm/lib/Target/X86/X86.td
+++ b/llvm/lib/Target/X86/X86.td
@@ -1216,6 +1216,8 @@ def ProcessorFeatures {
                                                   FeatureAMXTF32];
   list<SubtargetFeature> DMRFeatures =
     !listconcat(GNRDFeatures, DMRAdditionalFeatures);
+  list<SubtargetFeature> DMRAdditionalTuning = [TuningPreferLegacySetCC];
+  list<SubtargetFeature> DMRTuning = !listconcat(GNRTuning, DMRAdditionalTuning);
 
   // Atom
   list<SubtargetFeature> AtomFeatures = [FeatureX87,
@@ -1387,6 +1389,8 @@ def ProcessorFeatures {
                                                   FeaturePREFETCHI];
   list<SubtargetFeature> NVLFeatures =
       !listconcat(PTLFeatures, NVLAdditionalFeatures);
+  list<SubtargetFeature> NVLAdditionalTuning = [TuningPreferLegacySetCC];
+  list<SubtargetFeature> NVLTuning = !listconcat(ADLTuning, NVLAdditionalTuning);
 
   // Clearwaterforest
   list<SubtargetFeature> CWFAdditionalFeatures = [FeaturePREFETCHI,
@@ -1946,7 +1950,7 @@ def : ProcModel<P, AlderlakePModel,
                 ProcessorFeatures.PTLFeatures, ProcessorFeatures.ADLTuning>;
 }
 def : ProcModel<"novalake", AlderlakePModel, ProcessorFeatures.NVLFeatures,
-                ProcessorFeatures.ADLTuning>;
+                ProcessorFeatures.NVLTuning>;
 
 def : ProcModel<"clearwaterforest", AlderlakePModel,
                 ProcessorFeatures.CWFFeatures, ProcessorFeatures.ADLTuning>;
@@ -1959,7 +1963,7 @@ def : ProcModel<P, SapphireRapidsModel,
                 ProcessorFeatures.GNRDFeatures, ProcessorFeatures.GNRTuning>;
 }
 def : ProcModel<"diamondrapids", SapphireRapidsModel,
-                ProcessorFeatures.DMRFeatures, ProcessorFeatures.GNRTuning>;
+                ProcessorFeatures.DMRFeatures, ProcessorFeatures.DMRTuning>;
 
 // AMD CPUs.
 
diff --git a/llvm/lib/Target/X86/X86FixupSetCC.cpp b/llvm/lib/Target/X86/X86FixupSetCC.cpp
index d4c7ecd270244..059141ca9bf38 100644
--- a/llvm/lib/Target/X86/X86FixupSetCC.cpp
+++ b/llvm/lib/Target/X86/X86FixupSetCC.cpp
@@ -97,7 +97,7 @@ static bool fixupSetCC(MachineFunction &MF) {
       // it, itself, by definition, clobbers eflags. But it may happen that
       // FlagsDefMI also *uses* eflags, in which case the transformation is
       // invalid.
-      if (!ST->hasZU() &&
+      if ((!ST->hasZU() || ST->preferLegacySetCC()) &&
           FlagsDefMI->readsRegister(X86::EFLAGS, /*TRI=*/nullptr))
         continue;
 
@@ -117,11 +117,8 @@ static bool fixupSetCC(MachineFunction &MF) {
       // inserting the setcc/setzucc result into the low byte of the zeroed
       // register.
       Register ZeroReg = MRI->createVirtualRegister(RC);
-      if (ST->hasZU()) {
-        if (!ST->preferLegacySetCC())
-          assert((MI.getOpcode() == X86::SETZUCCr) &&
-                 "Expect setzucc instruction!");
-        else
+      if (ST->hasZU() && !ST->preferLegacySetCC()) {
+        if (MI.getOpcode() != X86::SETZUCCr)
           MI.setDesc(TII->get(X86::SETZUCCr));
         BuildMI(*ZExt->getParent(), ZExt, ZExt->getDebugLoc(),
                 TII->get(TargetOpcode::IMPLICIT_DEF), ZeroReg);
diff --git a/llvm/test/CodeGen/X86/apx/ccmp.ll b/llvm/test/CodeGen/X86/apx/ccmp.ll
index 2c62e608223bc..94cbb7786721c 100644
--- a/llvm/test/CodeGen/X86/apx/ccmp.ll
+++ b/llvm/test/CodeGen/X86/apx/ccmp.ll
@@ -1,7 +1,8 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp -show-mc-encoding -verify-machineinstrs | FileCheck %s
 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp,+ndd -show-mc-encoding -verify-machineinstrs | FileCheck %s --check-prefix=NDD
-; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu -show-mc-encoding -verify-machineinstrs | FileCheck %s --check-prefix=SETZUCC
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu -show-mc-encoding -verify-machineinstrs | FileCheck %s --check-prefixes=ZU_COMMON,PREFER_NO_LEGACY_SETCC
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu,+prefer-legacy-setcc -show-mc-encoding -verify-machineinstrs | FileCheck %s --check-prefixes=ZU_COMMON,PREFER_LEGACY_SETCC
 
 define void @ccmp8rr_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c) {
 ; CHECK-LABEL: ccmp8rr_zf:
@@ -32,22 +33,22 @@ define void @ccmp8rr_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c) {
 ; NDD-NEXT:  .LBB0_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8rr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
-; SETZUCC-NEXT:    je .LBB0_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpb %dl, %sil # encoding: [0x40,0x38,0xd6]
-; SETZUCC-NEXT:    je .LBB0_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB0_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp8rr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
+; ZU_COMMON-NEXT:    je .LBB0_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpb %dl, %sil # encoding: [0x40,0x38,0xd6]
+; ZU_COMMON-NEXT:    je .LBB0_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB0_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i8 %a, %c
   %cmp1 = icmp eq i8 %b, %c
@@ -91,22 +92,39 @@ define void @ccmp8rr_cf(i8 noundef %a, i8 noundef %b) {
 ; NDD-NEXT:  .LBB1_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8rr_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb $2, %dil # encoding: [0x40,0x80,0xff,0x02]
-; SETZUCC-NEXT:    setzul %al # encoding: [0x62,0xf4,0x7f,0x18,0x4c,0xc0]
-; SETZUCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
-; SETZUCC-NEXT:    setzub %cl # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    jne .LBB1_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB1_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB1_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp8rr_cf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $2, %dil # encoding: [0x40,0x80,0xff,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzul %al # encoding: [0x62,0xf4,0x7f,0x18,0x4c,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %cl # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB1_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB1_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB1_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp8rr_cf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $2, %dil # encoding: [0x40,0x80,0xff,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setl %al # encoding: [0x0f,0x9c,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setb %cl # encoding: [0x0f,0x92,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB1_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB1_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB1_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i8 %a, 1
   %tobool = icmp ugt i8 %b, 1
@@ -146,21 +164,37 @@ define i8 @ccmp8rr_sf(i8 %a, i8 %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8rr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
-; SETZUCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
-; SETZUCC-NEXT:    jne .LBB2_2 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB2_2, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
-; SETZUCC-NEXT:  .LBB2_2: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp8rr_sf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB2_2 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB2_2, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB2_2: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp8rr_sf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB2_2 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB2_2, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_LEGACY_SETCC-NEXT:  .LBB2_2: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = icmp sgt i8 %b, 1
@@ -200,21 +234,37 @@ define i8 @ccmp8rr_none(i8 %a, i8 %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8rr_none:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
-; SETZUCC-NEXT:    jne .LBB3_2 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB3_2, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
-; SETZUCC-NEXT:  .LBB3_2: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp8rr_none:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB3_2 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB3_2, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB3_2: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp8rr_none:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $2, %sil # encoding: [0x40,0x80,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB3_2 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB3_2, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_LEGACY_SETCC-NEXT:  .LBB3_2: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = icmp sgt i8 %b, 1
@@ -258,22 +308,39 @@ define void @ccmp16rr_sf(i16 noundef %a, i16 noundef %b, i16 noundef %c) {
 ; NDD-NEXT:  .LBB4_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp16rr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
-; SETZUCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
-; SETZUCC-NEXT:    cmpw %dx, %si # encoding: [0x66,0x39,0xd6]
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB4_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp16rr_sf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpw %dx, %si # encoding: [0x66,0x39,0xd6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB4_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp16rr_sf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setle %al # encoding: [0x0f,0x9e,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpw %dx, %si # encoding: [0x66,0x39,0xd6]
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB4_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i16 %a, %c
   %cmp1 = icmp slt i16 %b, %c
@@ -317,22 +384,39 @@ define void @ccmp32rr_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c) {
 ; NDD-NEXT:  .LBB5_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp32rr_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
-; SETZUCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
-; SETZUCC-NEXT:    cmpl %edx, %esi # encoding: [0x39,0xd6]
-; SETZUCC-NEXT:    setzua %cl # encoding: [0x62,0xf4,0x7f,0x18,0x47,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB5_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB5_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB5_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp32rr_cf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl %edx, %esi # encoding: [0x39,0xd6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzua %cl # encoding: [0x62,0xf4,0x7f,0x18,0x47,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB5_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB5_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB5_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp32rr_cf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setb %al # encoding: [0x0f,0x92,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl %edx, %esi # encoding: [0x39,0xd6]
+; PREFER_LEGACY_SETCC-NEXT:    seta %cl # encoding: [0x0f,0x97,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB5_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB5_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB5_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp uge i32 %a, %c
   %cmp1 = icmp ule i32 %b, %c
@@ -376,22 +460,39 @@ define void @ccmp64rr_of(i64 %a, i64 %b, i64 %c) {
 ; NDD-NEXT:  .LBB6_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64rr_of:
-; SETZUCC:       # %bb.0: # %bb
-; SETZUCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
-; SETZUCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
-; SETZUCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
-; SETZUCC-NEXT:    setzuno %cl # encoding: [0x62,0xf4,0x7f,0x18,0x41,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB6_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB6_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB6_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp64rr_of:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %bb
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuno %cl # encoding: [0x62,0xf4,0x7f,0x18,0x41,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB6_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB6_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB6_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp64rr_of:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %bb
+; PREFER_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setb %al # encoding: [0x0f,0x92,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
+; PREFER_LEGACY_SETCC-NEXT:    setno %cl # encoding: [0x0f,0x91,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB6_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB6_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB6_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 bb:
   %cmp = icmp uge i64 %a, %c
   %smul = call {i64, i1} @llvm.ssub.with.overflow.i64(i64 %a, i64 %b)
@@ -428,15 +529,15 @@ define void @ccmp64rr_of_crossbb(i64 %a, i64 %b) {
 ; NDD-NEXT:  .LBB7_2: # %bb3
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64rr_of_crossbb:
-; SETZUCC:       # %bb.0: # %bb
-; SETZUCC-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB7_2 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB7_2, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %bb1
-; SETZUCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
-; SETZUCC-NEXT:  .LBB7_2: # %bb3
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ccmp64rr_of_crossbb:
+; ZU_COMMON:       # %bb.0: # %bb
+; ZU_COMMON-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB7_2 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB7_2, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %bb1
+; ZU_COMMON-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
+; ZU_COMMON-NEXT:  .LBB7_2: # %bb3
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 bb:
   %cond1 = icmp eq i64 %a, 0
   br i1 %cond1, label %bb3, label %bb1
@@ -483,22 +584,39 @@ define void @ccmp8ri_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c) {
 ; NDD-NEXT:  .LBB8_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8ri_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
-; SETZUCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
-; SETZUCC-NEXT:    cmpb $123, %sil # encoding: [0x40,0x80,0xfe,0x7b]
-; SETZUCC-NEXT:    setzune %cl # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB8_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp8ri_zf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $123, %sil # encoding: [0x40,0x80,0xfe,0x7b]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %cl # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB8_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp8ri_zf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setle %al # encoding: [0x0f,0x9e,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $123, %sil # encoding: [0x40,0x80,0xfe,0x7b]
+; PREFER_LEGACY_SETCC-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB8_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i8 %a, %c
   %cmp1 = icmp eq i8 %b, 123
@@ -540,21 +658,21 @@ define i8 @ccmp8ri_zf_double(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8ri_zf_double:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
-; SETZUCC-NEXT:    je .LBB9_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]
-; SETZUCC-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
-; SETZUCC-NEXT:    jne .LBB9_3 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB9_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ccmp8ri_zf_double:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
+; ZU_COMMON-NEXT:    je .LBB9_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]
+; ZU_COMMON-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
+; ZU_COMMON-NEXT:    jne .LBB9_3 # encoding: [0x75,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB9_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 123
   %cmp = fcmp ueq double %b, 0.0
@@ -602,20 +720,20 @@ define i8 @ccmp8ri_zf_double_p(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8ri_zf_double_p:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
-; SETZUCC-NEXT:    je .LBB10_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
-; SETZUCC-NEXT:    jnp .LBB10_3 # encoding: [0x7b,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB10_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ccmp8ri_zf_double_p:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
+; ZU_COMMON-NEXT:    je .LBB10_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
+; ZU_COMMON-NEXT:    jnp .LBB10_3 # encoding: [0x7b,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB10_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 123
   %cmp = fcmp uno double %b, 0.0
@@ -663,20 +781,20 @@ define i8 @ccmp8ri_zf_double_np(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8ri_zf_double_np:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
-; SETZUCC-NEXT:    je .LBB11_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
-; SETZUCC-NEXT:    jp .LBB11_3 # encoding: [0x7a,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB11_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ccmp8ri_zf_double_np:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]
+; ZU_COMMON-NEXT:    je .LBB11_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
+; ZU_COMMON-NEXT:    jp .LBB11_3 # encoding: [0x7a,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB11_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 123
   %cmp = fcmp ord double %b, 0.0
@@ -724,24 +842,43 @@ define void @ccmp16ri_zf(i16 noundef %a, i16 noundef %b, i16 noundef %c) {
 ; NDD-NEXT:  .LBB12_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp16ri_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
-; SETZUCC-NEXT:    setzuae %al # encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc0]
-; SETZUCC-NEXT:    movswl %si, %ecx # encoding: [0x0f,0xbf,0xce]
-; SETZUCC-NEXT:    cmpl $1234, %ecx # encoding: [0x81,0xf9,0xd2,0x04,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x4D2
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB12_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB12_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB12_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp16ri_zf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuae %al # encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movswl %si, %ecx # encoding: [0x0f,0xbf,0xce]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $1234, %ecx # encoding: [0x81,0xf9,0xd2,0x04,0x00,0x00]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # imm = 0x4D2
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB12_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB12_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB12_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp16ri_zf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setae %al # encoding: [0x0f,0x93,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    movswl %si, %ecx # encoding: [0x0f,0xbf,0xce]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $1234, %ecx # encoding: [0x81,0xf9,0xd2,0x04,0x00,0x00]
+; PREFER_LEGACY_SETCC-NEXT:    # imm = 0x4D2
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB12_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB12_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB12_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp ult i16 %a, %c
   %cmp1 = icmp slt i16 %b, 1234
@@ -787,23 +924,41 @@ define void @ccmp32ri_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c) {
 ; NDD-NEXT:  .LBB13_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp32ri_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
-; SETZUCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
-; SETZUCC-NEXT:    cmpl $1048577, %esi # encoding: [0x81,0xfe,0x01,0x00,0x10,0x00]
-; SETZUCC-NEXT:    # imm = 0x100001
-; SETZUCC-NEXT:    setzuae %cl # encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB13_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB13_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB13_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp32ri_cf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %al # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $1048577, %esi # encoding: [0x81,0xfe,0x01,0x00,0x10,0x00]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # imm = 0x100001
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuae %cl # encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB13_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB13_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB13_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp32ri_cf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setb %al # encoding: [0x0f,0x92,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $1048577, %esi # encoding: [0x81,0xfe,0x01,0x00,0x10,0x00]
+; PREFER_LEGACY_SETCC-NEXT:    # imm = 0x100001
+; PREFER_LEGACY_SETCC-NEXT:    setae %cl # encoding: [0x0f,0x93,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB13_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB13_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB13_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp uge i32 %a, %c
   %cmp1 = icmp ule i32 %b, 1048576
@@ -849,23 +1004,41 @@ define void @ccmp64ri32_zf(i64 noundef %a, i64 noundef %b, i64 noundef %c) {
 ; NDD-NEXT:  .LBB14_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64ri32_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
-; SETZUCC-NEXT:    setzube %al # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc0]
-; SETZUCC-NEXT:    cmpq $123456, %rsi # encoding: [0x48,0x81,0xfe,0x40,0xe2,0x01,0x00]
-; SETZUCC-NEXT:    # imm = 0x1E240
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB14_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB14_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB14_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp64ri32_zf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzube %al # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq $123456, %rsi # encoding: [0x48,0x81,0xfe,0x40,0xe2,0x01,0x00]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # imm = 0x1E240
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB14_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB14_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB14_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp64ri32_zf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setbe %al # encoding: [0x0f,0x96,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpq $123456, %rsi # encoding: [0x48,0x81,0xfe,0x40,0xe2,0x01,0x00]
+; PREFER_LEGACY_SETCC-NEXT:    # imm = 0x1E240
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB14_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB14_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB14_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp ugt i64 %a, %c
   %cmp1 = icmp slt i64 %b, 123456
@@ -909,22 +1082,22 @@ define void @ccmp8rm_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB15_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8rm_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
-; SETZUCC-NEXT:    je .LBB15_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpb (%rcx), %sil # encoding: [0x40,0x3a,0x31]
-; SETZUCC-NEXT:    je .LBB15_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB15_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp8rm_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]
+; ZU_COMMON-NEXT:    je .LBB15_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpb (%rcx), %sil # encoding: [0x40,0x3a,0x31]
+; ZU_COMMON-NEXT:    je .LBB15_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB15_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %d = load i8, ptr %ptr
   %cmp = icmp eq i8 %a, %c
@@ -969,22 +1142,22 @@ define void @ccmp16rm_sf(i16 noundef %a, i16 noundef %b, i16 noundef %c, ptr %pt
 ; NDD-NEXT:  .LBB16_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp16rm_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
-; SETZUCC-NEXT:    jg .LBB16_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpw (%rcx), %si # encoding: [0x66,0x3b,0x31]
-; SETZUCC-NEXT:    jl .LBB16_3 # encoding: [0x7c,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB16_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp16rm_sf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]
+; ZU_COMMON-NEXT:    jg .LBB16_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpw (%rcx), %si # encoding: [0x66,0x3b,0x31]
+; ZU_COMMON-NEXT:    jl .LBB16_3 # encoding: [0x7c,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB16_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %d = load i16, ptr %ptr
   %cmp = icmp sgt i16 %a, %c
@@ -1029,22 +1202,22 @@ define void @ccmp32rm_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c, ptr %pt
 ; NDD-NEXT:  .LBB17_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp32rm_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
-; SETZUCC-NEXT:    jle .LBB17_3 # encoding: [0x7e,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpl (%rcx), %esi # encoding: [0x3b,0x31]
-; SETZUCC-NEXT:    jbe .LBB17_3 # encoding: [0x76,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB17_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp32rm_cf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]
+; ZU_COMMON-NEXT:    jle .LBB17_3 # encoding: [0x7e,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpl (%rcx), %esi # encoding: [0x3b,0x31]
+; ZU_COMMON-NEXT:    jbe .LBB17_3 # encoding: [0x76,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB17_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %d = load i32, ptr %ptr
   %cmp = icmp sle i32 %a, %c
@@ -1089,22 +1262,22 @@ define void @ccmp64rm_sf(i64 noundef %a, i64 noundef %b, i64 noundef %c, ptr %pt
 ; NDD-NEXT:  .LBB18_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64rm_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
-; SETZUCC-NEXT:    jg .LBB18_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpq (%rcx), %rsi # encoding: [0x48,0x3b,0x31]
-; SETZUCC-NEXT:    jl .LBB18_3 # encoding: [0x7c,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB18_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp64rm_sf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; ZU_COMMON-NEXT:    jg .LBB18_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpq (%rcx), %rsi # encoding: [0x48,0x3b,0x31]
+; ZU_COMMON-NEXT:    jl .LBB18_3 # encoding: [0x7c,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB18_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %d = load i64, ptr %ptr
   %cmp = icmp sgt i64 %a, %c
@@ -1149,22 +1322,22 @@ define void @ccmp8mr_zf(i8 noundef %a, i8 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB19_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8mr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]
-; SETZUCC-NEXT:    jl .LBB19_3 # encoding: [0x7c,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpb %sil, (%rdx) # encoding: [0x40,0x38,0x32]
-; SETZUCC-NEXT:    je .LBB19_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB19_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp8mr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]
+; ZU_COMMON-NEXT:    jl .LBB19_3 # encoding: [0x7c,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpb %sil, (%rdx) # encoding: [0x40,0x38,0x32]
+; ZU_COMMON-NEXT:    je .LBB19_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB19_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i8, ptr %ptr
   %cmp = icmp slt i8 %a, %c
@@ -1209,22 +1382,22 @@ define void @ccmp16mr_sf(i16 noundef %a, i16 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB20_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp16mr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]
-; SETZUCC-NEXT:    jg .LBB20_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpw %si, (%rdx) # encoding: [0x66,0x39,0x32]
-; SETZUCC-NEXT:    jl .LBB20_3 # encoding: [0x7c,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB20_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp16mr_sf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]
+; ZU_COMMON-NEXT:    jg .LBB20_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpw %si, (%rdx) # encoding: [0x66,0x39,0x32]
+; ZU_COMMON-NEXT:    jl .LBB20_3 # encoding: [0x7c,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB20_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i16, ptr %ptr
   %cmp = icmp sgt i16 %a, %c
@@ -1269,22 +1442,22 @@ define void @ccmp32mr_cf(i32 noundef %a, i32 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB21_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp32mr_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
-; SETZUCC-NEXT:    jge .LBB21_3 # encoding: [0x7d,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB21_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpl %esi, (%rdx) # encoding: [0x39,0x32]
-; SETZUCC-NEXT:    jbe .LBB21_3 # encoding: [0x76,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB21_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB21_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp32mr_cf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; ZU_COMMON-NEXT:    jge .LBB21_3 # encoding: [0x7d,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB21_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpl %esi, (%rdx) # encoding: [0x39,0x32]
+; ZU_COMMON-NEXT:    jbe .LBB21_3 # encoding: [0x76,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB21_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB21_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i32, ptr %ptr
   %cmp = icmp sge i32 %a, %c
@@ -1329,22 +1502,22 @@ define void @ccmp64mr_sf(i64 noundef %a, i64 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB22_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64mr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
-; SETZUCC-NEXT:    jg .LBB22_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB22_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpq %rsi, (%rdx) # encoding: [0x48,0x39,0x32]
-; SETZUCC-NEXT:    jl .LBB22_3 # encoding: [0x7c,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB22_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB22_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp64mr_sf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
+; ZU_COMMON-NEXT:    jg .LBB22_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB22_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpq %rsi, (%rdx) # encoding: [0x48,0x39,0x32]
+; ZU_COMMON-NEXT:    jl .LBB22_3 # encoding: [0x7c,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB22_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB22_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i64, ptr %ptr
   %cmp = icmp sgt i64 %a, %c
@@ -1389,22 +1562,22 @@ define void @ccmp8mi_zf(i8 noundef %a, i8 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB23_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp8mi_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]
-; SETZUCC-NEXT:    je .LBB23_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB23_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpb $123, (%rdx) # encoding: [0x80,0x3a,0x7b]
-; SETZUCC-NEXT:    je .LBB23_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB23_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB23_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp8mi_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]
+; ZU_COMMON-NEXT:    je .LBB23_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB23_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpb $123, (%rdx) # encoding: [0x80,0x3a,0x7b]
+; ZU_COMMON-NEXT:    je .LBB23_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB23_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB23_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i8, ptr %ptr
   %cmp = icmp eq i8 %a, %c
@@ -1451,24 +1624,24 @@ define void @ccmp16mi_zf(i16 noundef %a, i16 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB24_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp16mi_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]
-; SETZUCC-NEXT:    jg .LBB24_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movswl (%rdx), %eax # encoding: [0x0f,0xbf,0x02]
-; SETZUCC-NEXT:    cmpl $1233, %eax # encoding: [0x3d,0xd1,0x04,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x4D1
-; SETZUCC-NEXT:    jle .LBB24_3 # encoding: [0x7e,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB24_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp16mi_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]
+; ZU_COMMON-NEXT:    jg .LBB24_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movswl (%rdx), %eax # encoding: [0x0f,0xbf,0x02]
+; ZU_COMMON-NEXT:    cmpl $1233, %eax # encoding: [0x3d,0xd1,0x04,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x4D1
+; ZU_COMMON-NEXT:    jle .LBB24_3 # encoding: [0x7e,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB24_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i16, ptr %ptr
   %cmp = icmp sgt i16 %a, %c
@@ -1515,23 +1688,23 @@ define void @ccmp32mi_cf(i32 noundef %a, i32 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB25_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp32mi_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
-; SETZUCC-NEXT:    je .LBB25_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB25_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpl $123456, (%rdx) # encoding: [0x81,0x3a,0x40,0xe2,0x01,0x00]
-; SETZUCC-NEXT:    # imm = 0x1E240
-; SETZUCC-NEXT:    jbe .LBB25_3 # encoding: [0x76,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB25_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB25_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp32mi_cf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; ZU_COMMON-NEXT:    je .LBB25_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB25_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpl $123456, (%rdx) # encoding: [0x81,0x3a,0x40,0xe2,0x01,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x1E240
+; ZU_COMMON-NEXT:    jbe .LBB25_3 # encoding: [0x76,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB25_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB25_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i32, ptr %ptr
   %cmp = icmp eq i32 %a, %c
@@ -1578,23 +1751,23 @@ define void @ccmp64mi32_zf(i64 noundef %a, i64 noundef %c, ptr %ptr) {
 ; NDD-NEXT:  .LBB26_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64mi32_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
-; SETZUCC-NEXT:    jg .LBB26_3 # encoding: [0x7f,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB26_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpq $123455, (%rdx) # encoding: [0x48,0x81,0x3a,0x3f,0xe2,0x01,0x00]
-; SETZUCC-NEXT:    # imm = 0x1E23F
-; SETZUCC-NEXT:    jle .LBB26_3 # encoding: [0x7e,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB26_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB26_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ccmp64mi32_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]
+; ZU_COMMON-NEXT:    jg .LBB26_3 # encoding: [0x7f,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB26_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpq $123455, (%rdx) # encoding: [0x48,0x81,0x3a,0x3f,0xe2,0x01,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x1E23F
+; ZU_COMMON-NEXT:    jle .LBB26_3 # encoding: [0x7e,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB26_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB26_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i64, ptr %ptr
   %cmp = icmp sgt i64 %a, %c
@@ -1641,25 +1814,45 @@ define void @ccmp_continous(i32 noundef %a, i32 noundef %b, i32 noundef %c) {
 ; NDD-NEXT:  .LBB27_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp_continous:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
-; SETZUCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    cmpl $3, %edx # encoding: [0x83,0xfa,0x03]
-; SETZUCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
-; SETZUCC-NEXT:    orb %cl, %al # encoding: [0x08,0xc8]
-; SETZUCC-NEXT:    jne .LBB27_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB27_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB27_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp_continous:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $3, %edx # encoding: [0x83,0xfa,0x03]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %cl, %al # encoding: [0x08,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB27_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB27_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB27_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp_continous:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setg %al # encoding: [0x0f,0x9f,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $3, %edx # encoding: [0x83,0xfa,0x03]
+; PREFER_LEGACY_SETCC-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    orb %cl, %al # encoding: [0x08,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB27_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB27_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB27_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp slt i32 %a, 1
   %cmp1 = icmp slt i32 %b, 2
@@ -1693,15 +1886,25 @@ define i32 @ccmp_nobranch(i32 noundef %a, i32 noundef %b) {
 ; NDD-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp_nobranch:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
-; SETZUCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
-; SETZUCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp_nobranch:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp_nobranch:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setg %al # encoding: [0x0f,0x9f,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setge %cl # encoding: [0x0f,0x9d,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i32 %a, 0
   %cmp1 = icmp sgt i32 %b, 1
@@ -1729,18 +1932,31 @@ define i32 @ccmp_continous_nobranch(i32 noundef %a, i32 noundef %b, i32 noundef
 ; NDD-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp_continous_nobranch:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl $2, %edi # encoding: [0x83,0xff,0x02]
-; SETZUCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
-; SETZUCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
-; SETZUCC-NEXT:    setzul %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4c,0xc1]
-; SETZUCC-NEXT:    cmpl $4, %edx # encoding: [0x83,0xfa,0x04]
-; SETZUCC-NEXT:    setzuge %dl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc2]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp_continous_nobranch:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $2, %edi # encoding: [0x83,0xff,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzul %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4c,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $4, %edx # encoding: [0x83,0xfa,0x04]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %dl # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp_continous_nobranch:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $2, %edi # encoding: [0x83,0xff,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $2, %esi # encoding: [0x83,0xfe,0x02]
+; PREFER_LEGACY_SETCC-NEXT:    setl %cl # encoding: [0x0f,0x9c,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $4, %edx # encoding: [0x83,0xfa,0x04]
+; PREFER_LEGACY_SETCC-NEXT:    setge %dl # encoding: [0x0f,0x9d,0xc2]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i32 %a, 1
   %cmp1 = icmp slt i32 %b, 2
@@ -1784,24 +2000,43 @@ define void @ccmp64ri64(i64 noundef %a, i64 noundef %b, i64 noundef %c) {
 ; NDD-NEXT:  .LBB30_1: # %if.end
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: ccmp64ri64:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
-; SETZUCC-NEXT:    setzube %al # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc0]
-; SETZUCC-NEXT:    movabsq $9992147483646, %rcx # encoding: [0x48,0xb9,0xfe,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x9167A66BBFE
-; SETZUCC-NEXT:    cmpq %rcx, %rsi # encoding: [0x48,0x39,0xce]
-; SETZUCC-NEXT:    setzug %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB30_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB30_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB30_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ccmp64ri64:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzube %al # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movabsq $9992147483646, %rcx # encoding: [0x48,0xb9,0xfe,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # imm = 0x9167A66BBFE
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpq %rcx, %rsi # encoding: [0x48,0x39,0xce]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB30_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB30_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB30_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ccmp64ri64:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    setbe %al # encoding: [0x0f,0x96,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    movabsq $9992147483646, %rcx # encoding: [0x48,0xb9,0xfe,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]
+; PREFER_LEGACY_SETCC-NEXT:    # imm = 0x9167A66BBFE
+; PREFER_LEGACY_SETCC-NEXT:    cmpq %rcx, %rsi # encoding: [0x48,0x39,0xce]
+; PREFER_LEGACY_SETCC-NEXT:    setg %cl # encoding: [0x0f,0x9f,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB30_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB30_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB30_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp ugt i64 %a, %c
   %cmp1 = icmp slt i64 %b, 9992147483647
@@ -1837,15 +2072,25 @@ define i32 @test_or_fp_int(double %a, double %b, i32 %c, i32 %d) {
 ; NDD-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
 ; NDD-NEXT:    retq # encoding: [0xc3]
 ;
-; SETZUCC-LABEL: test_or_fp_int:
-; SETZUCC:       # %bb.0:
-; SETZUCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
-; SETZUCC-NEXT:    setzube %cl # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: test_or_fp_int:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0:
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzube %cl # encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: test_or_fp_int:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    setbe %cl # encoding: [0x0f,0x96,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
   %cmp = icmp ne i32 %c, %d
   %cmp1 = fcmp fast ole double %a, %b
   %sel = select i1 %cmp, i1 true, i1 %cmp1
diff --git a/llvm/test/CodeGen/X86/apx/ctest.ll b/llvm/test/CodeGen/X86/apx/ctest.ll
index 8d5e36ed513f5..c82431781c88f 100644
--- a/llvm/test/CodeGen/X86/apx/ctest.ll
+++ b/llvm/test/CodeGen/X86/apx/ctest.ll
@@ -1,7 +1,8 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp,+nf -verify-machineinstrs | FileCheck %s
 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp,+ndd,+nf -verify-machineinstrs | FileCheck %s --check-prefix=NDD
-; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu -verify-machineinstrs --show-mc-encoding | FileCheck %s --check-prefix=SETZUCC
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu -verify-machineinstrs --show-mc-encoding | FileCheck %s --check-prefixes=ZU_COMMON,PREFER_NO_LEGACY_SETCC
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+zu,+prefer-legacy-setcc -verify-machineinstrs --show-mc-encoding | FileCheck %s --check-prefixes=ZU_COMMON,PREFER_LEGACY_SETCC
 
 define void @ctest8rr_zf(i8 noundef %a, i8 noundef %b) {
 ; CHECK-LABEL: ctest8rr_zf:
@@ -26,22 +27,22 @@ define void @ctest8rr_zf(i8 noundef %a, i8 noundef %b) {
 ; NDD-NEXT:  .LBB0_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB0_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
-; SETZUCC-NEXT:    je .LBB0_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB0_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest8rr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB0_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; ZU_COMMON-NEXT:    je .LBB0_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB0_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB0_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i8 %a, 0
   %cmp1 = icmp eq i8 %b, 0
@@ -81,21 +82,21 @@ define i8 @ctest8rr_zf_double(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_zf_double:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB1_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB1_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]
-; SETZUCC-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
-; SETZUCC-NEXT:    jne .LBB1_3 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB1_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB1_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ctest8rr_zf_double:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB1_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB1_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]
+; ZU_COMMON-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]
+; ZU_COMMON-NEXT:    jne .LBB1_3 # encoding: [0x75,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB1_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB1_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = fcmp ueq double %b, 0.0
@@ -141,20 +142,20 @@ define i8 @ctest8rr_zf_double_p(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_zf_double_p:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB2_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB2_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
-; SETZUCC-NEXT:    jnp .LBB2_3 # encoding: [0x7b,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB2_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB2_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ctest8rr_zf_double_p:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB2_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB2_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
+; ZU_COMMON-NEXT:    jnp .LBB2_3 # encoding: [0x7b,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB2_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB2_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = fcmp uno double %b, 0.0
@@ -200,20 +201,20 @@ define i8 @ctest8rr_zf_double_np(i8 %a, double %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_zf_double_np:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB3_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB3_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
-; SETZUCC-NEXT:    jp .LBB3_3 # encoding: [0x7a,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB3_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
-; SETZUCC-NEXT:  .LBB3_3: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-LABEL: ctest8rr_zf_double_np:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB3_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB3_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]
+; ZU_COMMON-NEXT:    jp .LBB3_3 # encoding: [0x7a,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB3_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.then
+; ZU_COMMON-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]
+; ZU_COMMON-NEXT:  .LBB3_3: # %if.end
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = fcmp ord double %b, 0.0
@@ -251,22 +252,39 @@ define void @ctest8rr_sf(i8 noundef %a, i8 noundef %b) {
 ; NDD-NEXT:  .LBB4_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
-; SETZUCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB4_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest8rr_sf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB4_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest8rr_sf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    sets %cl # encoding: [0x0f,0x98,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB4_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB4_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp ule i8 %a, 0
   %tobool = icmp sge i8 %b, 0
@@ -304,21 +322,37 @@ define i8 @ctest8rr_sf_2(i8 %a, i8 %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_sf_2:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
-; SETZUCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
-; SETZUCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
-; SETZUCC-NEXT:    jne .LBB5_2 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB5_2, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
-; SETZUCC-NEXT:  .LBB5_2: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest8rr_sf_2:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB5_2 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB5_2, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB5_2: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest8rr_sf_2:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setg %al # encoding: [0x0f,0x9f,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    sets %cl # encoding: [0x0f,0x98,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB5_2 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB5_2, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_LEGACY_SETCC-NEXT:  .LBB5_2: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp sgt i8 %a, 0
   %cmp = icmp slt i8 %b, 0
@@ -356,21 +390,37 @@ define i8 @ctest8rr_none(i8 %a, i8 %b, i8* nocapture %c)  {
 ; NDD-NEXT:    xorl %eax, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8rr_none:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
-; SETZUCC-NEXT:    setzue %cl # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc1]
-; SETZUCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
-; SETZUCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
-; SETZUCC-NEXT:    jne .LBB6_2 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB6_2, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %if.then
-; SETZUCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
-; SETZUCC-NEXT:  .LBB6_2: # %if.end
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest8rr_none:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzue %cl # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB6_2 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB6_2, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB6_2: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest8rr_none:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testb %sil, %sil # encoding: [0x40,0x84,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    sete %cl # encoding: [0x0f,0x94,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB6_2 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB6_2, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.1: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]
+; PREFER_LEGACY_SETCC-NEXT:  .LBB6_2: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %tobool = icmp ne i8 %a, 0
   %cmp = icmp eq i8 %b, 0
@@ -408,22 +458,39 @@ define void @ctest16rr_sf(i16 noundef %a, i16 noundef %b) {
 ; NDD-NEXT:  .LBB7_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest16rr_sf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
-; SETZUCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
-; SETZUCC-NEXT:    testw %si, %si # encoding: [0x66,0x85,0xf6]
-; SETZUCC-NEXT:    setzuns %cl # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB7_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB7_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB7_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest16rr_sf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzule %al # encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testw %si, %si # encoding: [0x66,0x85,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuns %cl # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB7_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB7_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB7_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest16rr_sf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setle %al # encoding: [0x0f,0x9e,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testw %si, %si # encoding: [0x66,0x85,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    setns %cl # encoding: [0x0f,0x99,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB7_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB7_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB7_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i16 %a, 0
   %cmp1 = icmp slt i16 %b, 0
@@ -461,22 +528,39 @@ define void @ctest32rr_zf(i32 noundef %a, i32 noundef %b) {
 ; NDD-NEXT:  .LBB8_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest32rr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzus %al # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc0]
-; SETZUCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
-; SETZUCC-NEXT:    setzune %cl # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc1]
-; SETZUCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
-; SETZUCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB8_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest32rr_zf:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzus %al # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %cl # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB8_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest32rr_zf:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    sets %al # encoding: [0x0f,0x98,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    setne %cl # encoding: [0x0f,0x95,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testb %cl, %al # encoding: [0x84,0xc8]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB8_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB8_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sge i32 %a, 0
   %cmp1 = icmp eq i32 %b, 0
@@ -514,22 +598,22 @@ define void @ctest8ri_zf(i8 noundef %a, i8 noundef %b) {
 ; NDD-NEXT:  .LBB9_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8ri_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB9_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    andb $123, %sil # encoding: [0x40,0x80,0xe6,0x7b]
-; SETZUCC-NEXT:    je .LBB9_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB9_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest8ri_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB9_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    andb $123, %sil # encoding: [0x40,0x80,0xe6,0x7b]
+; ZU_COMMON-NEXT:    je .LBB9_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB9_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB9_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i8 %a, 0
   %and = and i8 %b, 123
@@ -569,23 +653,23 @@ define void @ctest16ri_zf(i16 noundef %a, i16 noundef %b) {
 ; NDD-NEXT:  .LBB10_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest16ri_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB10_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    andl $1234, %esi # encoding: [0x81,0xe6,0xd2,0x04,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x4D2
-; SETZUCC-NEXT:    je .LBB10_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB10_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest16ri_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB10_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    andl $1234, %esi # encoding: [0x81,0xe6,0xd2,0x04,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x4D2
+; ZU_COMMON-NEXT:    je .LBB10_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB10_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB10_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i16 %a, 0
   %and = and i16 %b, 1234
@@ -624,23 +708,23 @@ define void @ctest32ri_zf(i32 noundef %a, i32 noundef %b) {
 ; NDD-NEXT:  .LBB11_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest32ri_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    je .LBB11_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    andl $12345, %esi # encoding: [0x81,0xe6,0x39,0x30,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x3039
-; SETZUCC-NEXT:    je .LBB11_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB11_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest32ri_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB11_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    andl $12345, %esi # encoding: [0x81,0xe6,0x39,0x30,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x3039
+; ZU_COMMON-NEXT:    je .LBB11_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB11_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB11_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i32 %a, 0
   %and = and i32 %b, 12345
@@ -679,23 +763,23 @@ define void @ctest64ri32_zf(i64 noundef %a, i64 noundef %b) {
 ; NDD-NEXT:  .LBB12_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest64ri32_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB12_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB12_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    andl $123456, %esi # encoding: [0x81,0xe6,0x40,0xe2,0x01,0x00]
-; SETZUCC-NEXT:    # imm = 0x1E240
-; SETZUCC-NEXT:    je .LBB12_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB12_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB12_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest64ri32_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB12_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB12_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    andl $123456, %esi # encoding: [0x81,0xe6,0x40,0xe2,0x01,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x1E240
+; ZU_COMMON-NEXT:    je .LBB12_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB12_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB12_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i64 %a, 0
   %and = and i64 %b, 123456
@@ -736,22 +820,22 @@ define void @ctest8mr_zf(i8 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB13_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8mr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB13_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB13_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpb $0, (%rsi) # encoding: [0x80,0x3e,0x00]
-; SETZUCC-NEXT:    je .LBB13_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB13_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB13_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest8mr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB13_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB13_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpb $0, (%rsi) # encoding: [0x80,0x3e,0x00]
+; ZU_COMMON-NEXT:    je .LBB13_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB13_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB13_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i8, ptr %ptr
   %cmp = icmp eq i8 %a, 0
@@ -792,22 +876,22 @@ define void @ctest16mr_zf(i16 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB14_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest16mr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB14_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB14_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpw $0, (%rsi) # encoding: [0x66,0x83,0x3e,0x00]
-; SETZUCC-NEXT:    je .LBB14_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB14_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB14_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest16mr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB14_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB14_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpw $0, (%rsi) # encoding: [0x66,0x83,0x3e,0x00]
+; ZU_COMMON-NEXT:    je .LBB14_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB14_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB14_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i16, ptr %ptr
   %cmp = icmp eq i16 %a, 0
@@ -848,22 +932,22 @@ define void @ctest32mr_cf(i32 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB15_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest32mr_cf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    je .LBB15_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpl $0, (%rsi) # encoding: [0x83,0x3e,0x00]
-; SETZUCC-NEXT:    je .LBB15_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB15_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest32mr_cf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB15_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpl $0, (%rsi) # encoding: [0x83,0x3e,0x00]
+; ZU_COMMON-NEXT:    je .LBB15_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB15_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB15_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i32, ptr %ptr
   %cmp = icmp eq i32 %a, 0
@@ -904,22 +988,22 @@ define void @ctest64mr_zf(i64 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB16_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest64mr_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB16_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    cmpq $0, (%rsi) # encoding: [0x48,0x83,0x3e,0x00]
-; SETZUCC-NEXT:    je .LBB16_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB16_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest64mr_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB16_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    cmpq $0, (%rsi) # encoding: [0x48,0x83,0x3e,0x00]
+; ZU_COMMON-NEXT:    je .LBB16_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB16_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB16_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i64, ptr %ptr
   %cmp = icmp eq i64 %a, 0
@@ -958,23 +1042,23 @@ define void @ctest8mi_zf(i8 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB17_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest8mi_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
-; SETZUCC-NEXT:    je .LBB17_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movzbl (%rsi), %eax # encoding: [0x0f,0xb6,0x06]
-; SETZUCC-NEXT:    andb $123, %al # encoding: [0x24,0x7b]
-; SETZUCC-NEXT:    je .LBB17_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB17_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest8mi_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]
+; ZU_COMMON-NEXT:    je .LBB17_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movzbl (%rsi), %eax # encoding: [0x0f,0xb6,0x06]
+; ZU_COMMON-NEXT:    andb $123, %al # encoding: [0x24,0x7b]
+; ZU_COMMON-NEXT:    je .LBB17_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB17_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB17_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i8, ptr %ptr
   %cmp = icmp eq i8 %a, 0
@@ -1016,24 +1100,24 @@ define void @ctest16mi_zf(i16 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB18_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest16mi_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB18_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movzwl (%rsi), %eax # encoding: [0x0f,0xb7,0x06]
-; SETZUCC-NEXT:    andl $1234, %eax # encoding: [0x25,0xd2,0x04,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x4D2
-; SETZUCC-NEXT:    je .LBB18_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB18_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest16mi_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testw %di, %di # encoding: [0x66,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB18_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movzwl (%rsi), %eax # encoding: [0x0f,0xb7,0x06]
+; ZU_COMMON-NEXT:    andl $1234, %eax # encoding: [0x25,0xd2,0x04,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x4D2
+; ZU_COMMON-NEXT:    je .LBB18_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB18_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB18_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i16, ptr %ptr
   %cmp = icmp eq i16 %a, 0
@@ -1075,24 +1159,24 @@ define void @ctest32mi_zf(i32 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB19_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest32mi_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    je .LBB19_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movl $12345, %eax # encoding: [0xb8,0x39,0x30,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x3039
-; SETZUCC-NEXT:    andl (%rsi), %eax # encoding: [0x23,0x06]
-; SETZUCC-NEXT:    je .LBB19_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB19_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest32mi_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB19_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movl $12345, %eax # encoding: [0xb8,0x39,0x30,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x3039
+; ZU_COMMON-NEXT:    andl (%rsi), %eax # encoding: [0x23,0x06]
+; ZU_COMMON-NEXT:    je .LBB19_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB19_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB19_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i32, ptr %ptr
   %cmp = icmp eq i32 %a, 0
@@ -1132,24 +1216,24 @@ define void @ctest64mi32_zf(i64 noundef %a, ptr %ptr) {
 ; NDD-NEXT:  .LBB20_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest64mi32_zf:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB20_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movq (%rsi), %rax # encoding: [0x48,0x8b,0x06]
-; SETZUCC-NEXT:    andl $123456, %eax # encoding: [0x25,0x40,0xe2,0x01,0x00]
-; SETZUCC-NEXT:    # imm = 0x1E240
-; SETZUCC-NEXT:    je .LBB20_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB20_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest64mi32_zf:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB20_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movq (%rsi), %rax # encoding: [0x48,0x8b,0x06]
+; ZU_COMMON-NEXT:    andl $123456, %eax # encoding: [0x25,0x40,0xe2,0x01,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x1E240
+; ZU_COMMON-NEXT:    je .LBB20_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB20_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB20_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %b = load i64, ptr %ptr
   %cmp = icmp eq i64 %a, 0
@@ -1191,25 +1275,45 @@ define void @ctest_continous(i32 noundef %a, i32 noundef %b, i32 noundef %c) {
 ; NDD-NEXT:  .LBB21_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest_continous:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
-; SETZUCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
-; SETZUCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
-; SETZUCC-NEXT:    setzuns %cl # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
-; SETZUCC-NEXT:    setzuns %al # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc0]
-; SETZUCC-NEXT:    testb %al, %cl # encoding: [0x84,0xc1]
-; SETZUCC-NEXT:    jne .LBB21_1 # encoding: [0x75,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB21_1, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
-; SETZUCC-NEXT:  .LBB21_1: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest_continous:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuge %al # encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuns %cl # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzuns %al # encoding: [0x62,0xf4,0x7f,0x18,0x49,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testb %al, %cl # encoding: [0x84,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jne .LBB21_1 # encoding: [0x75,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB21_1, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_NO_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_NO_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_NO_LEGACY_SETCC-NEXT:  .LBB21_1: # %if.end
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest_continous:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]
+; PREFER_LEGACY_SETCC-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    setns %cl # encoding: [0x0f,0x99,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_LEGACY_SETCC-NEXT:    setns %al # encoding: [0x0f,0x99,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testb %al, %cl # encoding: [0x84,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB21_1 # encoding: [0x75,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: .LBB21_1, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %if.then
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    jmp foo # TAILCALL
+; PREFER_LEGACY_SETCC-NEXT:    # encoding: [0xeb,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB21_1: # %if.end
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp slt i32 %a, %b
   %cmp1 = icmp slt i32 %b, 0
@@ -1243,15 +1347,25 @@ define i32 @ctest_nobranch(i32 noundef %a, i32 noundef %b) {
 ; NDD-NEXT:    movzbl %al, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest_nobranch:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
-; SETZUCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
-; SETZUCC-NEXT:    setzug %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc1]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest_nobranch:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %cl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest_nobranch:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setg %al # encoding: [0x0f,0x9f,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    setg %cl # encoding: [0x0f,0x9f,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i32 %a, 0
   %cmp1 = icmp sgt i32 %b, 0
@@ -1279,18 +1393,31 @@ define i32 @ctest_continous_nobranch(i32 noundef %a, i32 noundef %b, i32 noundef
 ; NDD-NEXT:    movzbl %al, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest_continous_nobranch:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
-; SETZUCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
-; SETZUCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
-; SETZUCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
-; SETZUCC-NEXT:    setzug %dl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc2]
-; SETZUCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
-; SETZUCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: ctest_continous_nobranch:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %al # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzus %cl # encoding: [0x62,0xf4,0x7f,0x18,0x48,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzug %dl # encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: ctest_continous_nobranch:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %entry
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setg %al # encoding: [0x0f,0x9f,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    testl %esi, %esi # encoding: [0x85,0xf6]
+; PREFER_LEGACY_SETCC-NEXT:    sets %cl # encoding: [0x0f,0x98,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_LEGACY_SETCC-NEXT:    setg %dl # encoding: [0x0f,0x9f,0xc2]
+; PREFER_LEGACY_SETCC-NEXT:    orb %al, %cl # encoding: [0x08,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    andb %dl, %cl # encoding: [0x20,0xd1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 entry:
   %cmp = icmp sgt i32 %a, 0
   %cmp1 = icmp slt i32 %b, 0
@@ -1326,24 +1453,24 @@ define void @ctest64ri64(i64 noundef %a, i64 noundef %b) {
 ; NDD-NEXT:  .LBB24_1: # %if.end
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: ctest64ri64:
-; SETZUCC:       # %bb.0: # %entry
-; SETZUCC-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
-; SETZUCC-NEXT:    je .LBB24_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.1: # %entry
-; SETZUCC-NEXT:    movabsq $9992147483647, %rax # encoding: [0x48,0xb8,0xff,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]
-; SETZUCC-NEXT:    # imm = 0x9167A66BBFF
-; SETZUCC-NEXT:    andq %rax, %rsi # encoding: [0x48,0x21,0xc6]
-; SETZUCC-NEXT:    je .LBB24_3 # encoding: [0x74,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
-; SETZUCC-NEXT:  # %bb.2: # %if.end
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
-; SETZUCC-NEXT:  .LBB24_3: # %if.then
-; SETZUCC-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
-; SETZUCC-NEXT:    jmp foo # TAILCALL
-; SETZUCC-NEXT:    # encoding: [0xeb,A]
-; SETZUCC-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
+; ZU_COMMON-LABEL: ctest64ri64:
+; ZU_COMMON:       # %bb.0: # %entry
+; ZU_COMMON-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]
+; ZU_COMMON-NEXT:    je .LBB24_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.1: # %entry
+; ZU_COMMON-NEXT:    movabsq $9992147483647, %rax # encoding: [0x48,0xb8,0xff,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]
+; ZU_COMMON-NEXT:    # imm = 0x9167A66BBFF
+; ZU_COMMON-NEXT:    andq %rax, %rsi # encoding: [0x48,0x21,0xc6]
+; ZU_COMMON-NEXT:    je .LBB24_3 # encoding: [0x74,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: .LBB24_3, kind: FK_PCRel_1
+; ZU_COMMON-NEXT:  # %bb.2: # %if.end
+; ZU_COMMON-NEXT:    retq # encoding: [0xc3]
+; ZU_COMMON-NEXT:  .LBB24_3: # %if.then
+; ZU_COMMON-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; ZU_COMMON-NEXT:    jmp foo # TAILCALL
+; ZU_COMMON-NEXT:    # encoding: [0xeb,A]
+; ZU_COMMON-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1
 entry:
   %cmp = icmp eq i64 %a, 0
   %and = and i64 %b, 9992147483647
@@ -1393,25 +1520,45 @@ define void @cmp_srem(ptr %p, i32 %a, ptr %b) {
 ; NDD-NEXT:    movb %al, (%rcx)
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: cmp_srem:
-; SETZUCC:       # %bb.0: # %bb
-; SETZUCC-NEXT:    movq %rdx, %rcx # encoding: [0x48,0x89,0xd1]
-; SETZUCC-NEXT:    movl %esi, %eax # encoding: [0x89,0xf0]
-; SETZUCC-NEXT:    movl (%rdi), %esi # encoding: [0x8b,0x37]
-; SETZUCC-NEXT:    cmpl $1, %esi # encoding: [0x83,0xfe,0x01]
-; SETZUCC-NEXT:    setzue %dl # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc2]
-; SETZUCC-NEXT:    subl $1, %eax # encoding: [0x83,0xe8,0x01]
-; SETZUCC-NEXT:    setzub %dil # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc7]
-; SETZUCC-NEXT:    setzune %r8b # encoding: [0x62,0xd4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    orb %dl, %dil # encoding: [0x40,0x08,0xd7]
-; SETZUCC-NEXT:    cltd # encoding: [0x99]
-; SETZUCC-NEXT:    idivl %esi # encoding: [0xf7,0xfe]
-; SETZUCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
-; SETZUCC-NEXT:    setzue %al # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc0]
-; SETZUCC-NEXT:    andb %r8b, %al # encoding: [0x44,0x20,0xc0]
-; SETZUCC-NEXT:    orb %dil, %al # encoding: [0x40,0x08,0xf8]
-; SETZUCC-NEXT:    movb %al, (%rcx) # encoding: [0x88,0x01]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: cmp_srem:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0: # %bb
+; PREFER_NO_LEGACY_SETCC-NEXT:    movq %rdx, %rcx # encoding: [0x48,0x89,0xd1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movl %esi, %eax # encoding: [0x89,0xf0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movl (%rdi), %esi # encoding: [0x8b,0x37]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cmpl $1, %esi # encoding: [0x83,0xfe,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzue %dl # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    subl $1, %eax # encoding: [0x83,0xe8,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %dil # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %r8b # encoding: [0x62,0xd4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %dl, %dil # encoding: [0x40,0x08,0xd7]
+; PREFER_NO_LEGACY_SETCC-NEXT:    cltd # encoding: [0x99]
+; PREFER_NO_LEGACY_SETCC-NEXT:    idivl %esi # encoding: [0xf7,0xfe]
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzue %al # encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %r8b, %al # encoding: [0x44,0x20,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    orb %dil, %al # encoding: [0x40,0x08,0xf8]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movb %al, (%rcx) # encoding: [0x88,0x01]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: cmp_srem:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %bb
+; PREFER_LEGACY_SETCC-NEXT:    movq %rdx, %rcx # encoding: [0x48,0x89,0xd1]
+; PREFER_LEGACY_SETCC-NEXT:    movl %esi, %eax # encoding: [0x89,0xf0]
+; PREFER_LEGACY_SETCC-NEXT:    movl (%rdi), %esi # encoding: [0x8b,0x37]
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $1, %esi # encoding: [0x83,0xfe,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    sete %dl # encoding: [0x0f,0x94,0xc2]
+; PREFER_LEGACY_SETCC-NEXT:    subl $1, %eax # encoding: [0x83,0xe8,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    setb %dil # encoding: [0x40,0x0f,0x92,0xc7]
+; PREFER_LEGACY_SETCC-NEXT:    setne %r8b # encoding: [0x41,0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    orb %dl, %dil # encoding: [0x40,0x08,0xd7]
+; PREFER_LEGACY_SETCC-NEXT:    cltd # encoding: [0x99]
+; PREFER_LEGACY_SETCC-NEXT:    idivl %esi # encoding: [0xf7,0xfe]
+; PREFER_LEGACY_SETCC-NEXT:    testl %edx, %edx # encoding: [0x85,0xd2]
+; PREFER_LEGACY_SETCC-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    andb %r8b, %al # encoding: [0x44,0x20,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    orb %dil, %al # encoding: [0x40,0x08,0xf8]
+; PREFER_LEGACY_SETCC-NEXT:    movb %al, (%rcx) # encoding: [0x88,0x01]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
 bb:
   %i = icmp eq i32 %a, 0
   %i2 = load i32, ptr %p, align 4
@@ -1448,16 +1595,27 @@ define i32 @test_and_fp_int(double %a, i32 %b) {
 ; NDD-NEXT:    movzbl %al, %eax
 ; NDD-NEXT:    retq
 ;
-; SETZUCC-LABEL: test_and_fp_int:
-; SETZUCC:       # %bb.0:
-; SETZUCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
-; SETZUCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
-; SETZUCC-NEXT:    ucomisd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # encoding: [0x66,0x0f,0x2e,0x05,A,A,A,A]
-; SETZUCC-NEXT:    # fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: reloc_riprel_4byte
-; SETZUCC-NEXT:    setzub %cl # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc1]
-; SETZUCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
-; SETZUCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
-; SETZUCC-NEXT:    retq # encoding: [0xc3]
+; PREFER_NO_LEGACY_SETCC-LABEL: test_and_fp_int:
+; PREFER_NO_LEGACY_SETCC:       # %bb.0:
+; PREFER_NO_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzune %al # encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
+; PREFER_NO_LEGACY_SETCC-NEXT:    ucomisd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # encoding: [0x66,0x0f,0x2e,0x05,A,A,A,A]
+; PREFER_NO_LEGACY_SETCC-NEXT:    # fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: reloc_riprel_4byte
+; PREFER_NO_LEGACY_SETCC-NEXT:    setzub %cl # encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_NO_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
+;
+; PREFER_LEGACY_SETCC-LABEL: test_and_fp_int:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]
+; PREFER_LEGACY_SETCC-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; PREFER_LEGACY_SETCC-NEXT:    ucomisd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # encoding: [0x66,0x0f,0x2e,0x05,A,A,A,A]
+; PREFER_LEGACY_SETCC-NEXT:    # fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: reloc_riprel_4byte
+; PREFER_LEGACY_SETCC-NEXT:    setb %cl # encoding: [0x0f,0x92,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %cl, %eax # encoding: [0x0f,0xb6,0xc1]
+; PREFER_LEGACY_SETCC-NEXT:    retq # encoding: [0xc3]
   %cmp = icmp ne i32 %b, 0
   %cmp1 = fcmp fast olt double %a, 1.500000e+00
   %sel = select i1 %cmp, i1 %cmp1, i1 false
diff --git a/llvm/test/CodeGen/X86/apx/setzucc.ll b/llvm/test/CodeGen/X86/apx/setzucc.ll
index a7215164ee9e3..050b72ea52b70 100644
--- a/llvm/test/CodeGen/X86/apx/setzucc.ll
+++ b/llvm/test/CodeGen/X86/apx/setzucc.ll
@@ -1,74 +1,108 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64 -mattr=+zu,+prefer-legacy-setcc | FileCheck %s --check-prefixes=CHECK,PREFER_NO_SETZUCC
-; RUN: llc < %s -mtriple=x86_64 -mattr=+zu | FileCheck %s --check-prefixes=CHECK,PREFER_SETZUCC
+; RUN: llc < %s -mtriple=x86_64 -mattr=+zu,+prefer-legacy-setcc | FileCheck %s --check-prefix=PREFER_LEGACY_SETCC
+; RUN: llc < %s -mtriple=x86_64 -mattr=+zu | FileCheck %s --check-prefix=PREFER_SETZUCC
+; RUN: llc < %s -mtriple=x86_64 -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=PREFER_LEGACY_SETCC
+; RUN: llc < %s -mtriple=x86_64 -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=PREFER_LEGACY_SETCC
 
 define i16 @i8(i8 %x) nounwind {
-; CHECK-LABEL: i8:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    cmpb $3, %dil
-; CHECK-NEXT:    setzuae %al
-; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
-; CHECK-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: i8:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    cmpb $3, %dil
+; PREFER_LEGACY_SETCC-NEXT:    setae %al
+; PREFER_LEGACY_SETCC-NEXT:    # kill: def $ax killed $ax killed $eax
+; PREFER_LEGACY_SETCC-NEXT:    retq
+;
+; PREFER_SETZUCC-LABEL: i8:
+; PREFER_SETZUCC:       # %bb.0:
+; PREFER_SETZUCC-NEXT:    cmpb $3, %dil
+; PREFER_SETZUCC-NEXT:    setzuae %al
+; PREFER_SETZUCC-NEXT:    # kill: def $ax killed $ax killed $eax
+; PREFER_SETZUCC-NEXT:    retq
   %t0 = icmp ugt i8 %x, 2
   %zext = zext i1 %t0 to i16
   ret i16 %zext
 }
 
 define i16 @i16(i16 %x) nounwind {
-; CHECK-LABEL: i16:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    cmpw $2, %di
-; CHECK-NEXT:    setzub %al
-; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
-; CHECK-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: i16:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    cmpw $2, %di
+; PREFER_LEGACY_SETCC-NEXT:    setb %al
+; PREFER_LEGACY_SETCC-NEXT:    # kill: def $ax killed $ax killed $eax
+; PREFER_LEGACY_SETCC-NEXT:    retq
+;
+; PREFER_SETZUCC-LABEL: i16:
+; PREFER_SETZUCC:       # %bb.0:
+; PREFER_SETZUCC-NEXT:    cmpw $2, %di
+; PREFER_SETZUCC-NEXT:    setzub %al
+; PREFER_SETZUCC-NEXT:    # kill: def $ax killed $ax killed $eax
+; PREFER_SETZUCC-NEXT:    retq
   %t0 = icmp ult i16 %x, 2
   %if = select i1 %t0, i16 1, i16 0
   ret i16 %if
 }
 
 define i32 @i32(i32 %x) nounwind {
-; CHECK-LABEL: i32:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    cmpl $1, %edi
-; CHECK-NEXT:    setzue %al
-; CHECK-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: i32:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    cmpl $1, %edi
+; PREFER_LEGACY_SETCC-NEXT:    sete %al
+; PREFER_LEGACY_SETCC-NEXT:    retq
+;
+; PREFER_SETZUCC-LABEL: i32:
+; PREFER_SETZUCC:       # %bb.0:
+; PREFER_SETZUCC-NEXT:    cmpl $1, %edi
+; PREFER_SETZUCC-NEXT:    setzue %al
+; PREFER_SETZUCC-NEXT:    retq
   %t0 = icmp eq i32 %x, 1
   %if = select i1 %t0, i32 1, i32 0
   ret i32 %if
 }
 
 define i64 @i64(i64 %x) nounwind {
-; CHECK-LABEL: i64:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    cmpq $1, %rdi
-; CHECK-NEXT:    setzune %al
-; CHECK-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: i64:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    cmpq $1, %rdi
+; PREFER_LEGACY_SETCC-NEXT:    setne %al
+; PREFER_LEGACY_SETCC-NEXT:    retq
+;
+; PREFER_SETZUCC-LABEL: i64:
+; PREFER_SETZUCC:       # %bb.0:
+; PREFER_SETZUCC-NEXT:    cmpq $1, %rdi
+; PREFER_SETZUCC-NEXT:    setzune %al
+; PREFER_SETZUCC-NEXT:    retq
   %t0 = icmp ne i64 %x, 1
   %if = select i1 %t0, i64 1, i64 0
   ret i64 %if
 }
 
 define i32 @flags_copy_lowering() nounwind {
-; PREFER_NO_SETZUCC-LABEL: flags_copy_lowering:
-; PREFER_NO_SETZUCC:       # %bb.0: # %bb
-; PREFER_NO_SETZUCC-NEXT:    xorl %eax, %eax
-; PREFER_NO_SETZUCC-NEXT:    xorl %ecx, %ecx
-; PREFER_NO_SETZUCC-NEXT:    xorl %edx, %edx
-; PREFER_NO_SETZUCC-NEXT:    .p2align 4
-; PREFER_NO_SETZUCC-NEXT:  .LBB4_1: # %bb1
-; PREFER_NO_SETZUCC-NEXT:    # =>This Inner Loop Header: Depth=1
-; PREFER_NO_SETZUCC-NEXT:    addl %ecx, 0
-; PREFER_NO_SETZUCC-NEXT:    setb %cl
-; PREFER_NO_SETZUCC-NEXT:    adcl $0, %edx
-; PREFER_NO_SETZUCC-NEXT:    testb %cl, %cl
-; PREFER_NO_SETZUCC-NEXT:    je .LBB4_3
-; PREFER_NO_SETZUCC-NEXT:  # %bb.2: # %bb1
-; PREFER_NO_SETZUCC-NEXT:    # in Loop: Header=BB4_1 Depth=1
-; PREFER_NO_SETZUCC-NEXT:    testb %al, %al
-; PREFER_NO_SETZUCC-NEXT:    jne .LBB4_1
-; PREFER_NO_SETZUCC-NEXT:  .LBB4_3: # %bb2
-; PREFER_NO_SETZUCC-NEXT:    xorl %eax, %eax
-; PREFER_NO_SETZUCC-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: flags_copy_lowering:
+; PREFER_LEGACY_SETCC:       # %bb.0: # %bb
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    xorl %edx, %edx
+; PREFER_LEGACY_SETCC-NEXT:    xorl %ecx, %ecx
+; PREFER_LEGACY_SETCC-NEXT:    .p2align 4
+; PREFER_LEGACY_SETCC-NEXT:  .LBB4_1: # %bb1
+; PREFER_LEGACY_SETCC-NEXT:    # =>This Inner Loop Header: Depth=1
+; PREFER_LEGACY_SETCC-NEXT:    addl %edx, 0
+; PREFER_LEGACY_SETCC-NEXT:    setb %sil
+; PREFER_LEGACY_SETCC-NEXT:    adcl $0, %ecx
+; PREFER_LEGACY_SETCC-NEXT:    xorl %edx, %edx
+; PREFER_LEGACY_SETCC-NEXT:    testb %sil, %sil
+; PREFER_LEGACY_SETCC-NEXT:    je .LBB4_3
+; PREFER_LEGACY_SETCC-NEXT:  # %bb.2: # %bb1
+; PREFER_LEGACY_SETCC-NEXT:    # in Loop: Header=BB4_1 Depth=1
+; PREFER_LEGACY_SETCC-NEXT:    movb %sil, %dl
+; PREFER_LEGACY_SETCC-NEXT:    testb %al, %al
+; PREFER_LEGACY_SETCC-NEXT:    jne .LBB4_1
+; PREFER_LEGACY_SETCC-NEXT:  .LBB4_3: # %bb2
+; PREFER_LEGACY_SETCC-NEXT:    xorl %eax, %eax
+; PREFER_LEGACY_SETCC-NEXT:    retq
 ;
 ; PREFER_SETZUCC-LABEL: flags_copy_lowering:
 ; PREFER_SETZUCC:       # %bb.0: # %bb
@@ -111,12 +145,20 @@ bb2:
 }
 
 define i32 @def_use_eflag(i32 %a, i32 %b, i8 %c) {
-; CHECK-LABEL: def_use_eflag:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    addb $-1, %dl
-; CHECK-NEXT:    adcl %esi, %edi
-; CHECK-NEXT:    setzub %al
-; CHECK-NEXT:    retq
+; PREFER_LEGACY_SETCC-LABEL: def_use_eflag:
+; PREFER_LEGACY_SETCC:       # %bb.0:
+; PREFER_LEGACY_SETCC-NEXT:    addb $-1, %dl
+; PREFER_LEGACY_SETCC-NEXT:    adcl %esi, %edi
+; PREFER_LEGACY_SETCC-NEXT:    setb %al
+; PREFER_LEGACY_SETCC-NEXT:    movzbl %al, %eax
+; PREFER_LEGACY_SETCC-NEXT:    retq
+;
+; PREFER_SETZUCC-LABEL: def_use_eflag:
+; PREFER_SETZUCC:       # %bb.0:
+; PREFER_SETZUCC-NEXT:    addb $-1, %dl
+; PREFER_SETZUCC-NEXT:    adcl %esi, %edi
+; PREFER_SETZUCC-NEXT:    setzub %al
+; PREFER_SETZUCC-NEXT:    retq
   %1 = call { i8, i32 } @llvm.x86.addcarry.32(i8 %c, i32 %a, i32 %b)
   %2 = extractvalue { i8, i32 } %1, 0
   %3 = zext i8 %2 to i32
diff --git a/llvm/test/CodeGen/X86/fast-isel-fcmp.ll b/llvm/test/CodeGen/X86/fast-isel-fcmp.ll
index 2c826658a99b0..6c08750144ff9 100644
--- a/llvm/test/CodeGen/X86/fast-isel-fcmp.ll
+++ b/llvm/test/CodeGen/X86/fast-isel-fcmp.ll
@@ -5,6 +5,8 @@
 ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=avx512f | FileCheck %s --check-prefixes=FAST,FAST_AVX
 ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=+zu | FileCheck %s --check-prefix=FAST_SETZUCC
 ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=+zu,+prefer-legacy-setcc | FileCheck %s --check-prefix=FAST_NO-SETZUCC
+; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=FAST_NO-SETZUCC
+; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=FAST_NO-SETZUCC
 
 define zeroext i1 @fcmp_oeq(float %x, float %y) {
 ; SDAG-LABEL: fcmp_oeq:
diff --git a/llvm/test/CodeGen/X86/fast-isel-select-cmov2.ll b/llvm/test/CodeGen/X86/fast-isel-select-cmov2.ll
index 63be4ab25f556..b37a8c5b09870 100644
--- a/llvm/test/CodeGen/X86/fast-isel-select-cmov2.ll
+++ b/llvm/test/CodeGen/X86/fast-isel-select-cmov2.ll
@@ -5,6 +5,8 @@
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 -mattr=avx512f | FileCheck %s --check-prefix=CHECK --check-prefix=FAST_AVX
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 -mattr=+zu | FileCheck %s --check-prefix=FAST_SETZUCC
 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 -mattr=+zu,+prefer-legacy-setcc | FileCheck %s --check-prefix=FAST_NO-SETZUCC
+; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=FAST_NO-SETZUCC
+; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx | FileCheck %s --check-prefix=FAST_NO-SETZUCC
 
 ; Test all the cmp predicates that can feed an integer conditional move.
 
diff --git a/llvm/test/CodeGen/X86/pr27591.ll b/llvm/test/CodeGen/X86/pr27591.ll
index 4f83c986d826b..7a903decfbb53 100644
--- a/llvm/test/CodeGen/X86/pr27591.ll
+++ b/llvm/test/CodeGen/X86/pr27591.ll
@@ -2,6 +2,8 @@
 ; RUN: llc -o - -O0 < %s | FileCheck %s
 ; RUN: llc -mattr=+zu -o - -O0 < %s | FileCheck %s -check-prefix=SETZUCC
 ; RUN: llc -mattr=+zu,+prefer-legacy-setcc -o - -O0 < %s | FileCheck %s -check-prefix=NO-SETZUCC
+; RUN: llc -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx -o - -O0 < %s | FileCheck %s -check-prefix=NO-SETZUCC
+; RUN: llc -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx -o - -O0 < %s | FileCheck %s -check-prefix=NO-SETZUCC
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
diff --git a/llvm/test/CodeGen/X86/pr32284.ll b/llvm/test/CodeGen/X86/pr32284.ll
index f9b1331551283..745ec17a63f43 100644
--- a/llvm/test/CodeGen/X86/pr32284.ll
+++ b/llvm/test/CodeGen/X86/pr32284.ll
@@ -7,6 +7,8 @@
 ; RUN: llc -O0 -mtriple=x86_64-unknown -mcpu=skx -mattr=+zu,+prefer-legacy-setcc -o - %s | FileCheck %s --check-prefix=X64-O0-NO-SETZUCC
 ; RUN: llc     -mtriple=x86_64-unknown -mcpu=skx -mattr=+zu -o - %s | FileCheck %s --check-prefix=X64-SETZUCC
 ; RUN: llc     -mtriple=x86_64-unknown -mcpu=skx -mattr=+zu,+prefer-legacy-setcc -o - %s | FileCheck %s --check-prefix=X64-NO-SETZUCC
+; RUN: llc     -mtriple=x86_64-unknown -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx -o - %s | FileCheck %s --check-prefix=X64-NO-SETZUCC
+; RUN: llc     -mtriple=x86_64-unknown -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx -o - %s | FileCheck %s --check-prefix=X64-NO-SETZUCC
 
 ; The test is to check if setzucc instruction is emitted when zu feature is
 ; specified in llc option or setcc instruction is emitted when
@@ -168,12 +170,14 @@ define void @foo() {
 ; X64-NO-SETZUCC-LABEL: foo:
 ; X64-NO-SETZUCC:       # %bb.0: # %entry
 ; X64-NO-SETZUCC-NEXT:    movzbl c(%rip), %eax
+; X64-NO-SETZUCC-NEXT:    xorl %ecx, %ecx
 ; X64-NO-SETZUCC-NEXT:    testl %eax, %eax
-; X64-NO-SETZUCC-NEXT:    setzune %cl
-; X64-NO-SETZUCC-NEXT:    setne -{{[0-9]+}}(%rsp)
+; X64-NO-SETZUCC-DAG:     setne -{{[0-9]+}}(%rsp)
+; X64-NO-SETZUCC-DAG:     setne %cl
+; X64-NO-SETZUCC-NEXT:    xorl %edx, %edx
 ; X64-NO-SETZUCC-NEXT:    cmpl %eax, %ecx
-; X64-NO-SETZUCC-NEXT:    setzule %al
-; X64-NO-SETZUCC-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)
+; X64-NO-SETZUCC-NEXT:    setle %dl
+; X64-NO-SETZUCC-NEXT:    movl %edx, -{{[0-9]+}}(%rsp)
 ; X64-NO-SETZUCC-NEXT:    retq
 entry:
   %a = alloca i8, align 1
@@ -437,14 +441,17 @@ define void @f1() {
 ; X64-NO-SETZUCC-NEXT:    movabsq $-8381627093, %rcx # imm = 0xFFFFFFFE0C6A852B
 ; X64-NO-SETZUCC-NEXT:    cmpq %rcx, %rax
 ; X64-NO-SETZUCC-NEXT:    setne -{{[0-9]+}}(%rsp)
+; X64-NO-SETZUCC-NEXT:    xorl %ecx, %ecx
 ; X64-NO-SETZUCC-NEXT:    cmpq $-1, %rax
-; X64-NO-SETZUCC-NEXT:    setzue %cl
+; X64-NO-SETZUCC-NEXT:    sete %cl
+; X64-NO-SETZUCC-NEXT:    xorl %edx, %edx
 ; X64-NO-SETZUCC-NEXT:    cmpl $-1, %eax
-; X64-NO-SETZUCC-NEXT:    setzue %dl
+; X64-NO-SETZUCC-NEXT:    sete %dl
 ; X64-NO-SETZUCC-NEXT:    addq $7093, %rax # imm = 0x1BB5
+; X64-NO-SETZUCC-NEXT:    xorl %esi, %esi
 ; X64-NO-SETZUCC-NEXT:    cmpq %rax, %rdx
-; X64-NO-SETZUCC-NEXT:    setzug %al
-; X64-NO-SETZUCC-NEXT:    movq %rax, var_57(%rip)
+; X64-NO-SETZUCC-NEXT:    setg %sil
+; X64-NO-SETZUCC-NEXT:    movq %rsi, var_57(%rip)
 ; X64-NO-SETZUCC-NEXT:    movq %rcx, _ZN8struct_210member_2_0E(%rip)
 ; X64-NO-SETZUCC-NEXT:    retq
 entry:
@@ -639,12 +646,14 @@ define void @f2() {
 ; X64-NO-SETZUCC-LABEL: f2:
 ; X64-NO-SETZUCC:       # %bb.0: # %entry
 ; X64-NO-SETZUCC-NEXT:    movzbl var_7(%rip), %eax
+; X64-NO-SETZUCC-NEXT:    xorl %ecx, %ecx
 ; X64-NO-SETZUCC-NEXT:    testl %eax, %eax
-; X64-NO-SETZUCC-NEXT:    setzue %cl
+; X64-NO-SETZUCC-NEXT:    sete %cl
+; X64-NO-SETZUCC-NEXT:    xorl %edx, %edx
 ; X64-NO-SETZUCC-NEXT:    xorl %eax, %ecx
 ; X64-NO-SETZUCC-NEXT:    movw %cx, -{{[0-9]+}}(%rsp)
-; X64-NO-SETZUCC-NEXT:    setzue %al
-; X64-NO-SETZUCC-NEXT:    movw %ax, (%rax)
+; X64-NO-SETZUCC-NEXT:    sete %dl
+; X64-NO-SETZUCC-NEXT:    movw %dx, (%rax)
 ; X64-NO-SETZUCC-NEXT:    retq
 entry:
   %a = alloca i16, align 2
@@ -876,9 +885,10 @@ define void @f3() #0 {
 ; X64-NO-SETZUCC-LABEL: f3:
 ; X64-NO-SETZUCC:       # %bb.0: # %entry
 ; X64-NO-SETZUCC-NEXT:    movl var_13(%rip), %eax
+; X64-NO-SETZUCC-NEXT:    xorl %ecx, %ecx
 ; X64-NO-SETZUCC-NEXT:    testl %eax, %eax
 ; X64-NO-SETZUCC-NEXT:    notl %eax
-; X64-NO-SETZUCC-NEXT:    setzue %cl
+; X64-NO-SETZUCC-NEXT:    sete %cl
 ; X64-NO-SETZUCC-NEXT:    movl var_16(%rip), %edx
 ; X64-NO-SETZUCC-NEXT:    xorl %eax, %edx
 ; X64-NO-SETZUCC-NEXT:    andl %edx, %ecx
diff --git a/llvm/test/CodeGen/X86/pr54369.ll b/llvm/test/CodeGen/X86/pr54369.ll
index a771cde2253ef..ac4cdc943d54c 100644
--- a/llvm/test/CodeGen/X86/pr54369.ll
+++ b/llvm/test/CodeGen/X86/pr54369.ll
@@ -2,6 +2,8 @@
 ; RUN: llc -mtriple=x86_64-- -O0 < %s | FileCheck %s
 ; RUN: llc -mtriple=x86_64-- -O0 -mattr=+zu < %s | FileCheck %s -check-prefix=SETZUCC
 ; RUN: llc -mtriple=x86_64-- -O0 -mattr=+zu,+prefer-legacy-setcc < %s | FileCheck %s -check-prefix=NO-SETZUCC
+; RUN: llc -mtriple=x86_64-- -O0 -mcpu=novalake -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx < %s | FileCheck %s -check-prefix=NO-SETZUCC
+; RUN: llc -mtriple=x86_64-- -O0 -mcpu=diamondrapids -mattr=-ndd,-egpr,-ccmp,-cf,-nf,-push2pop2,-ppx < %s | FileCheck %s -check-prefix=NO-SETZUCC
 
 define i64 @adder(i64 %lhs, i64 %rhs) {
 ; CHECK-LABEL: adder:

>From c0bd83d7b6806e4aec2db7537992a8592d850f5d Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou at intel.com>
Date: Tue, 9 Jun 2026 09:10:10 +0800
Subject: [PATCH 2/2] Simplify the changes.

---
 llvm/lib/Target/X86/X86FixupSetCC.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/llvm/lib/Target/X86/X86FixupSetCC.cpp b/llvm/lib/Target/X86/X86FixupSetCC.cpp
index 059141ca9bf38..c063339e9d8ea 100644
--- a/llvm/lib/Target/X86/X86FixupSetCC.cpp
+++ b/llvm/lib/Target/X86/X86FixupSetCC.cpp
@@ -92,12 +92,17 @@ static bool fixupSetCC(MachineFunction &MF) {
       if (!FlagsDefMI)
         continue;
 
+      // When ZU is available and not disabled by tuning, we rewrite to
+      // setzucc, which doesn't clobber eflags; otherwise we insert a MOV32r0
+      // (which does clobber eflags) before FlagsDefMI.
+      bool UseSetZUCC = ST->hasZU() && !ST->preferLegacySetCC();
+
       // We'd like to put something that clobbers eflags directly before
       // FlagsDefMI. This can't hurt anything after FlagsDefMI, because
       // it, itself, by definition, clobbers eflags. But it may happen that
       // FlagsDefMI also *uses* eflags, in which case the transformation is
       // invalid.
-      if ((!ST->hasZU() || ST->preferLegacySetCC()) &&
+      if (!UseSetZUCC &&
           FlagsDefMI->readsRegister(X86::EFLAGS, /*TRI=*/nullptr))
         continue;
 
@@ -117,9 +122,8 @@ static bool fixupSetCC(MachineFunction &MF) {
       // inserting the setcc/setzucc result into the low byte of the zeroed
       // register.
       Register ZeroReg = MRI->createVirtualRegister(RC);
-      if (ST->hasZU() && !ST->preferLegacySetCC()) {
-        if (MI.getOpcode() != X86::SETZUCCr)
-          MI.setDesc(TII->get(X86::SETZUCCr));
+      if (UseSetZUCC) {
+        MI.setDesc(TII->get(X86::SETZUCCr));
         BuildMI(*ZExt->getParent(), ZExt, ZExt->getDebugLoc(),
                 TII->get(TargetOpcode::IMPLICIT_DEF), ZeroReg);
       } else {



More information about the llvm-commits mailing list