[llvm] d80b9a5 - [X86] MIR-level tests for bitcnt/bls/compress/expand false dependencies (#209879)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 21 00:51:30 PDT 2026


Author: Iurii Khosoi
Date: 2026-07-21T07:51:24Z
New Revision: d80b9a5e358de107da3a58730c89e512daffd9a7

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

LOG: [X86] MIR-level tests for bitcnt/bls/compress/expand false dependencies (#209879)

Followup to #207079. This replaces IR-level tests introduced in
c311e7b3d that were using inline assembler hack with MIR-level tests, as
suggested by @ganeshgit. Older test for bit counting instruction with
more complex functions is kept alongside a new one that tests affected
instructions in isolation.

Added: 
    llvm/test/CodeGen/X86/bitcnt-false-deps.mir
    llvm/test/CodeGen/X86/bls-false-deps.mir
    llvm/test/CodeGen/X86/compress-false-deps.mir
    llvm/test/CodeGen/X86/expand-false-deps.mir

Modified: 
    

Removed: 
    llvm/test/CodeGen/X86/bls-false-dep.ll
    llvm/test/CodeGen/X86/compress-false-deps.ll
    llvm/test/CodeGen/X86/expand-false-deps.ll


################################################################################
diff  --git a/llvm/test/CodeGen/X86/bitcnt-false-deps.mir b/llvm/test/CodeGen/X86/bitcnt-false-deps.mir
new file mode 100644
index 0000000000000..34a44c9d00832
--- /dev/null
+++ b/llvm/test/CodeGen/X86/bitcnt-false-deps.mir
@@ -0,0 +1,473 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v3 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW_POPCNT,SLOW_LZCNT,SLOW_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=haswell -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW_POPCNT,SLOW_LZCNT,SLOW_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skylake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skx -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=alderlake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=arrowlake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver1 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver2 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver3 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,SLOW_TZCNT,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST_POPCNT,FAST_LZCNT,FAST_TZCNT,ALL
+---
+name:            popcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; SLOW_POPCNT-LABEL: name: popcnt32_rr
+    ; SLOW_POPCNT: liveins: $edi, $eax
+    ; SLOW_POPCNT-NEXT: {{  $}}
+    ; SLOW_POPCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_POPCNT-NEXT: $eax = POPCNT32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_POPCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_POPCNT-LABEL: name: popcnt32_rr
+    ; FAST_POPCNT: liveins: $edi, $eax
+    ; FAST_POPCNT-NEXT: {{  $}}
+    ; FAST_POPCNT-NEXT: $eax = POPCNT32rr killed $edi, implicit-def dead $eflags
+    ; FAST_POPCNT-NEXT: RET64 killed $eax
+    $eax = POPCNT32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            popcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_POPCNT-LABEL: name: popcnt64_rr
+    ; SLOW_POPCNT: liveins: $rdi, $rax
+    ; SLOW_POPCNT-NEXT: {{  $}}
+    ; SLOW_POPCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_POPCNT-NEXT: $rax = POPCNT64rr killed renamable $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_POPCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_POPCNT-LABEL: name: popcnt64_rr
+    ; FAST_POPCNT: liveins: $rdi, $rax
+    ; FAST_POPCNT-NEXT: {{  $}}
+    ; FAST_POPCNT-NEXT: $rax = POPCNT64rr killed renamable $rdi, implicit-def dead $eflags
+    ; FAST_POPCNT-NEXT: RET64 killed $rax
+    $rax = POPCNT64rr killed renamable $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            popcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_POPCNT-LABEL: name: popcnt32_rm
+    ; SLOW_POPCNT: liveins: $rdi, $rax
+    ; SLOW_POPCNT-NEXT: {{  $}}
+    ; SLOW_POPCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_POPCNT-NEXT: $eax = POPCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_POPCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_POPCNT-LABEL: name: popcnt32_rm
+    ; FAST_POPCNT: liveins: $rdi, $rax
+    ; FAST_POPCNT-NEXT: {{  $}}
+    ; FAST_POPCNT-NEXT: $eax = POPCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_POPCNT-NEXT: RET64 killed $eax
+    $eax = POPCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            popcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_POPCNT-LABEL: name: popcnt64_rm
+    ; SLOW_POPCNT: liveins: $rdi, $rax
+    ; SLOW_POPCNT-NEXT: {{  $}}
+    ; SLOW_POPCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_POPCNT-NEXT: $rax = POPCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_POPCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_POPCNT-LABEL: name: popcnt64_rm
+    ; FAST_POPCNT: liveins: $rdi, $rax
+    ; FAST_POPCNT-NEXT: {{  $}}
+    ; FAST_POPCNT-NEXT: $rax = POPCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_POPCNT-NEXT: RET64 killed $rax
+    $rax = POPCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            lzcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; SLOW_LZCNT-LABEL: name: lzcnt32_rr
+    ; SLOW_LZCNT: liveins: $edi, $eax
+    ; SLOW_LZCNT-NEXT: {{  $}}
+    ; SLOW_LZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_LZCNT-NEXT: $eax = LZCNT32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_LZCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_LZCNT-LABEL: name: lzcnt32_rr
+    ; FAST_LZCNT: liveins: $edi, $eax
+    ; FAST_LZCNT-NEXT: {{  $}}
+    ; FAST_LZCNT-NEXT: $eax = LZCNT32rr killed $edi, implicit-def dead $eflags
+    ; FAST_LZCNT-NEXT: RET64 killed $eax
+    $eax = LZCNT32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            lzcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_LZCNT-LABEL: name: lzcnt64_rr
+    ; SLOW_LZCNT: liveins: $rdi, $rax
+    ; SLOW_LZCNT-NEXT: {{  $}}
+    ; SLOW_LZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_LZCNT-NEXT: $rax = LZCNT64rr killed renamable $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_LZCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_LZCNT-LABEL: name: lzcnt64_rr
+    ; FAST_LZCNT: liveins: $rdi, $rax
+    ; FAST_LZCNT-NEXT: {{  $}}
+    ; FAST_LZCNT-NEXT: $rax = LZCNT64rr killed renamable $rdi, implicit-def dead $eflags
+    ; FAST_LZCNT-NEXT: RET64 killed $rax
+    $rax = LZCNT64rr killed renamable $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            lzcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_LZCNT-LABEL: name: lzcnt32_rm
+    ; SLOW_LZCNT: liveins: $rdi, $rax
+    ; SLOW_LZCNT-NEXT: {{  $}}
+    ; SLOW_LZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_LZCNT-NEXT: $eax = LZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_LZCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_LZCNT-LABEL: name: lzcnt32_rm
+    ; FAST_LZCNT: liveins: $rdi, $rax
+    ; FAST_LZCNT-NEXT: {{  $}}
+    ; FAST_LZCNT-NEXT: $eax = LZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_LZCNT-NEXT: RET64 killed $eax
+    $eax = LZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            lzcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_LZCNT-LABEL: name: lzcnt64_rm
+    ; SLOW_LZCNT: liveins: $rdi, $rax
+    ; SLOW_LZCNT-NEXT: {{  $}}
+    ; SLOW_LZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_LZCNT-NEXT: $rax = LZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_LZCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_LZCNT-LABEL: name: lzcnt64_rm
+    ; FAST_LZCNT: liveins: $rdi, $rax
+    ; FAST_LZCNT-NEXT: {{  $}}
+    ; FAST_LZCNT-NEXT: $rax = LZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_LZCNT-NEXT: RET64 killed $rax
+    $rax = LZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            tzcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; SLOW_TZCNT-LABEL: name: tzcnt32_rr
+    ; SLOW_TZCNT: liveins: $edi, $eax
+    ; SLOW_TZCNT-NEXT: {{  $}}
+    ; SLOW_TZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_TZCNT-NEXT: $eax = TZCNT32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_TZCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_TZCNT-LABEL: name: tzcnt32_rr
+    ; FAST_TZCNT: liveins: $edi, $eax
+    ; FAST_TZCNT-NEXT: {{  $}}
+    ; FAST_TZCNT-NEXT: $eax = TZCNT32rr killed $edi, implicit-def dead $eflags
+    ; FAST_TZCNT-NEXT: RET64 killed $eax
+    $eax = TZCNT32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            tzcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_TZCNT-LABEL: name: tzcnt64_rr
+    ; SLOW_TZCNT: liveins: $rdi, $rax
+    ; SLOW_TZCNT-NEXT: {{  $}}
+    ; SLOW_TZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_TZCNT-NEXT: $rax = TZCNT64rr killed $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_TZCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_TZCNT-LABEL: name: tzcnt64_rr
+    ; FAST_TZCNT: liveins: $rdi, $rax
+    ; FAST_TZCNT-NEXT: {{  $}}
+    ; FAST_TZCNT-NEXT: $rax = TZCNT64rr killed $rdi, implicit-def dead $eflags
+    ; FAST_TZCNT-NEXT: RET64 killed $rax
+    $rax = TZCNT64rr killed $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            tzcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_TZCNT-LABEL: name: tzcnt32_rm
+    ; SLOW_TZCNT: liveins: $rdi, $rax
+    ; SLOW_TZCNT-NEXT: {{  $}}
+    ; SLOW_TZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW_TZCNT-NEXT: $eax = TZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW_TZCNT-NEXT: RET64 killed $eax
+    ;
+    ; FAST_TZCNT-LABEL: name: tzcnt32_rm
+    ; FAST_TZCNT: liveins: $rdi, $rax
+    ; FAST_TZCNT-NEXT: {{  $}}
+    ; FAST_TZCNT-NEXT: $eax = TZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_TZCNT-NEXT: RET64 killed $eax
+    $eax = TZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            tzcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; SLOW_TZCNT-LABEL: name: tzcnt64_rm
+    ; SLOW_TZCNT: liveins: $rdi, $rax
+    ; SLOW_TZCNT-NEXT: {{  $}}
+    ; SLOW_TZCNT-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW_TZCNT-NEXT: $rax = TZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW_TZCNT-NEXT: RET64 killed $rax
+    ;
+    ; FAST_TZCNT-LABEL: name: tzcnt64_rm
+    ; FAST_TZCNT: liveins: $rdi, $rax
+    ; FAST_TZCNT-NEXT: {{  $}}
+    ; FAST_TZCNT-NEXT: $rax = TZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST_TZCNT-NEXT: RET64 killed $rax
+    $rax = TZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_popcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_popcnt32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = POPCNT32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = POPCNT32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = POPCNT32rr killed $edi, implicit-def dead $eflags
+    $eax = POPCNT32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_popcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_popcnt64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = POPCNT64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = POPCNT64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = POPCNT64rr killed $rdi, implicit-def dead $eflags
+    $rax = POPCNT64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_popcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_popcnt32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = POPCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = POPCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_popcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_popcnt64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = POPCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = POPCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_lzcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_lzcnt32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = LZCNT32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = LZCNT32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = LZCNT32rr killed $edi, implicit-def dead $eflags
+    $eax = LZCNT32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_lzcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_lzcnt64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = LZCNT64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = LZCNT64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = LZCNT64rr killed $rdi, implicit-def dead $eflags
+    $rax = LZCNT64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_lzcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_lzcnt32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = LZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = LZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_lzcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_lzcnt64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = LZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = LZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_tzcnt32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_tzcnt32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = TZCNT32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = TZCNT32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = TZCNT32rr killed $edi, implicit-def dead $eflags
+    $eax = TZCNT32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_tzcnt64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_tzcnt64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = TZCNT64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = TZCNT64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = TZCNT64rr killed $rdi, implicit-def dead $eflags
+    $rax = TZCNT64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_tzcnt32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_tzcnt32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = TZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = TZCNT32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_tzcnt64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_tzcnt64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = TZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = TZCNT64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...

diff  --git a/llvm/test/CodeGen/X86/bls-false-dep.ll b/llvm/test/CodeGen/X86/bls-false-dep.ll
deleted file mode 100644
index 7e9499c99000e..0000000000000
--- a/llvm/test/CodeGen/X86/bls-false-dep.ll
+++ /dev/null
@@ -1,448 +0,0 @@
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v3 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v3 -mattr=+false-deps-bls -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=haswell -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=skylake -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=skx -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=alderlake -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-
-
-; Test that dependencies on the output register are broken if it was written recently (write simulated using inline asm).
-
-
-define i32 @blsi32_rr(i32 %a0) {
-; SLOW-LABEL: blsi32_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsil %edi, %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsi32_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsil %edi, %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = sub i32 0, %a0
-  %3 = and i32 %2, %a0
-  ret i32 %3
-}
-
-define i64 @blsi64_rr(i64 %a0) {
-; SLOW-LABEL: blsi64_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsiq %rdi, %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsi64_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsiq %rdi, %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = sub i64 0, %a0
-  %3 = and i64 %2, %a0
-  ret i64 %3
-}
-
-define i32 @blsi32_rm(ptr %p0) {
-; SLOW-LABEL: blsi32_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsil (%rdi), %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsi32_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsil (%rdi), %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i32, ptr %p0, align 4
-  %2 = sub i32 0, %a0
-  %3 = and i32 %2, %a0
-  ret i32 %3
-}
-
-define i64 @blsi64_rm(ptr %p0) {
-; SLOW-LABEL: blsi64_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsiq (%rdi), %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsi64_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsiq (%rdi), %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i64, ptr %p0, align 4
-  %2 = sub i64 0, %a0
-  %3 = and i64 %2, %a0
-  ret i64 %3
-}
-
-
-
-define i32 @blsr32_rr(i32 %a0) {
-; SLOW-LABEL: blsr32_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsrl %edi, %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsr32_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsrl %edi, %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = add i32 %a0, -1
-  %3 = and i32 %a0, %2
-  ret i32 %3
-}
-
-define i64 @blsr64_rr(i64 %a0) {
-; SLOW-LABEL: blsr64_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsrq %rdi, %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsr64_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsrq %rdi, %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = add i64 %a0, -1
-  %3 = and i64 %a0, %2
-  ret i64 %3
-}
-
-define i32 @blsr32_rm(ptr %p0) {
-; SLOW-LABEL: blsr32_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsrl (%rdi), %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsr32_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsrl (%rdi), %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i32, ptr %p0, align 4
-  %2 = add i32 %a0, -1
-  %3 = and i32 %a0, %2
-  ret i32 %3
-}
-
-define i64 @blsr64_rm(ptr %p0) {
-; SLOW-LABEL: blsr64_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsrq (%rdi), %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsr64_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsrq (%rdi), %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i64, ptr %p0, align 4
-  %2 = add i64 %a0, -1
-  %3 = and i64 %a0, %2
-  ret i64 %3
-}
-
-
-
-define i32 @blsmsk32_rr(i32 %a0) {
-; SLOW-LABEL: blsmsk32_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsmskl %edi, %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsmsk32_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsmskl %edi, %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = add i32 %a0, -1
-  %3 = xor i32 %a0, %2
-  ret i32 %3
-}
-
-define i64 @blsmsk64_rr(i64 %a0) {
-; SLOW-LABEL: blsmsk64_rr:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsmskq %rdi, %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsmsk64_rr:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsmskq %rdi, %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %2 = add i64 %a0, -1
-  %3 = xor i64 %a0, %2
-  ret i64 %3
-}
-
-define i32 @blsmsk32_rm(ptr %p0) {
-; SLOW-LABEL: blsmsk32_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsmskl (%rdi), %eax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsmsk32_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsmskl (%rdi), %eax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i32, ptr %p0, align 4
-  %2 = add i32 %a0, -1
-  %3 = xor i32 %a0, %2
-  ret i32 %3
-}
-
-define i64 @blsmsk64_rm(ptr %p0) {
-; SLOW-LABEL: blsmsk64_rm:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    xorl %eax, %eax
-; SLOW-NEXT:    blsmskq (%rdi), %rax
-; SLOW-NEXT:    retq
-;
-; FAST-LABEL: blsmsk64_rm:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    blsmskq (%rdi), %rax
-; FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{eax}"()
-  %a0 = load i64, ptr %p0, align 4
-  %2 = add i64 %a0, -1
-  %3 = xor i64 %a0, %2
-  ret i64 %3
-}
-
-
-; Test that dependencies on the output register are not broken if it is the same as the input register or it was not written recently
-
-
-define i32 @no_break_blsi32_rr(i32 %a0) {
-; ALL-LABEL: no_break_blsi32_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsil %edi, %eax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsil %eax, %eax
-; ALL-NEXT:    retq
-  %1 = sub i32 0, %a0
-  %2 = and i32 %1, %a0
-  %3 = tail call i32 asm sideeffect "", "={eax},{eax}"(i32 %2)
-  %4 = sub i32 0, %3
-  %5 = and i32 %4, %3
-  ret i32 %5
-}
-
-define i64 @no_break_blsi64_rr(i64 %a0) {
-; ALL-LABEL: no_break_blsi64_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsiq %rdi, %rax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsiq %rax, %rax
-; ALL-NEXT:    retq
-  %1 = sub i64 0, %a0
-  %2 = and i64 %1, %a0
-  %3 = tail call i64 asm sideeffect "", "={rax},{rax}"(i64 %2)
-  %4 = sub i64 0, %3
-  %5 = and i64 %4, %3
-  ret i64 %5
-}
-
-define i32 @no_break_blsi32_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsi32_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsil (%rdi), %eax
-; ALL-NEXT:    retq
-  %a0 = load i32, ptr %p0, align 4
-  %1 = sub i32 0, %a0
-  %2 = and i32 %1, %a0
-  ret i32 %2
-}
-
-define i64 @no_break_blsi64_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsi64_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsiq (%rdi), %rax
-; ALL-NEXT:    retq
-  %a0 = load i64, ptr %p0, align 4
-  %1 = sub i64 0, %a0
-  %2 = and i64 %1, %a0
-  ret i64 %2
-}
-
-
-define i32 @no_break_blsr32_rr(i32 %a0) {
-; ALL-LABEL: no_break_blsr32_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsrl %edi, %eax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsrl %eax, %eax
-; ALL-NEXT:    retq
-  %1 = add i32 %a0, -1
-  %2 = and i32 %a0, %1
-  %3 = tail call i32 asm sideeffect "", "={eax},{eax}"(i32 %2)
-  %4 = add i32 %3, -1
-  %5 = and i32 %3, %4
-  ret i32 %5
-}
-
-define i64 @no_break_blsr64_rr(i64 %a0) {
-; ALL-LABEL: no_break_blsr64_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsrq %rdi, %rax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsrq %rax, %rax
-; ALL-NEXT:    retq
-  %1 = add i64 %a0, -1
-  %2 = and i64 %a0, %1
-  %3 = tail call i64 asm sideeffect "", "={rax},{rax}"(i64 %2)
-  %4 = add i64 %3, -1
-  %5 = and i64 %3, %4
-  ret i64 %5
-}
-
-define i32 @no_break_blsr32_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsr32_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsrl (%rdi), %eax
-; ALL-NEXT:    retq
-  %a0 = load i32, ptr %p0, align 4
-  %1 = add i32 %a0, -1
-  %2 = and i32 %a0, %1
-  ret i32 %2
-}
-
-define i64 @no_break_blsr64_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsr64_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsrq (%rdi), %rax
-; ALL-NEXT:    retq
-  %a0 = load i64, ptr %p0, align 4
-  %1 = add i64 %a0, -1
-  %2 = and i64 %a0, %1
-  ret i64 %2
-}
-
-
-
-define i32 @no_break_blsmsk32_rr(i32 %a0) {
-; ALL-LABEL: no_break_blsmsk32_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsmskl %edi, %eax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsmskl %eax, %eax
-; ALL-NEXT:    retq
-  %1 = add i32 %a0, -1
-  %2 = xor i32 %a0, %1
-  %3 = tail call i32 asm sideeffect "", "={eax},{eax}"(i32 %2)
-  %4 = add i32 %3, -1
-  %5 = xor i32 %3, %4
-  ret i32 %5
-}
-
-define i64 @no_break_blsmsk64_rr(i64 %a0) {
-; ALL-LABEL: no_break_blsmsk64_rr:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsmskq %rdi, %rax
-; ALL-NEXT:    #APP
-; ALL-NEXT:    #NO_APP
-; ALL-NEXT:    blsmskq %rax, %rax
-; ALL-NEXT:    retq
-  %1 = add i64 %a0, -1
-  %2 = xor i64 %a0, %1
-  %3 = tail call i64 asm sideeffect "", "={rax},{rax}"(i64 %2)
-  %4 = add i64 %3, -1
-  %5 = xor i64 %3, %4
-  ret i64 %5
-}
-
-define i32 @no_break_blsmsk32_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsmsk32_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsmskl (%rdi), %eax
-; ALL-NEXT:    retq
-  %a0 = load i32, ptr %p0, align 4
-  %1 = add i32 %a0, -1
-  %2 = xor i32 %a0, %1
-  ret i32 %2
-}
-
-define i64 @no_break_blsmsk64_rm(ptr %p0) {
-; ALL-LABEL: no_break_blsmsk64_rm:
-; ALL:       # %bb.0:
-; ALL-NEXT:    blsmskq (%rdi), %rax
-; ALL-NEXT:    retq
-  %a0 = load i64, ptr %p0, align 4
-  %1 = add i64 %a0, -1
-  %2 = xor i64 %a0, %1
-  ret i64 %2
-}

diff  --git a/llvm/test/CodeGen/X86/bls-false-deps.mir b/llvm/test/CodeGen/X86/bls-false-deps.mir
new file mode 100644
index 0000000000000..5adabc7f9b71c
--- /dev/null
+++ b/llvm/test/CodeGen/X86/bls-false-deps.mir
@@ -0,0 +1,474 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v3 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v3 -mattr=+false-deps-bls -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=haswell -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skylake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skx -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=alderlake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=arrowlake -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver1 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver2 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver3 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+---
+name:            blsi32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; FAST-LABEL: name: blsi32_rr
+    ; FAST: liveins: $edi, $eax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSI32rr killed $edi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsi32_rr
+    ; SLOW: liveins: $edi, $eax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSI32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSI32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsi64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsi64_rr
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSI64rr killed renamable $rdi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsi64_rr
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSI64rr killed renamable $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSI64rr killed renamable $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            blsi32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsi32_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSI32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsi32_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSI32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSI32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsi64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsi64_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSI64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsi64_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSI64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSI64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            blsr32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; FAST-LABEL: name: blsr32_rr
+    ; FAST: liveins: $edi, $eax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSR32rr killed $edi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsr32_rr
+    ; SLOW: liveins: $edi, $eax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSR32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSR32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsr64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsr64_rr
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSR64rr killed renamable $rdi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsr64_rr
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSR64rr killed renamable $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSR64rr killed renamable $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            blsr32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsr32_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSR32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsr32_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSR32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSR32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsr64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsr64_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSR64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsr64_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSR64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSR64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            blsmsk32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi, $eax
+    ; FAST-LABEL: name: blsmsk32_rr
+    ; FAST: liveins: $edi, $eax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSMSK32rr killed $edi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsmsk32_rr
+    ; SLOW: liveins: $edi, $eax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSMSK32rr killed $edi, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSMSK32rr killed $edi, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsmsk64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsmsk64_rr
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSMSK64rr killed $rdi, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsmsk64_rr
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSMSK64rr killed $rdi, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSMSK64rr killed $rdi, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            blsmsk32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsmsk32_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $eax = BLSMSK32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $eax
+    ;
+    ; SLOW-LABEL: name: blsmsk32_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags
+    ; SLOW-NEXT: $eax = BLSMSK32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $eax
+    ; SLOW-NEXT: RET64 killed $eax
+    $eax = BLSMSK32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            blsmsk64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi, $rax
+    ; FAST-LABEL: name: blsmsk64_rm
+    ; FAST: liveins: $rdi, $rax
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $rax = BLSMSK64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; FAST-NEXT: RET64 killed $rax
+    ;
+    ; SLOW-LABEL: name: blsmsk64_rm
+    ; SLOW: liveins: $rdi, $rax
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $eax = XOR32rr undef $eax, undef $eax, implicit-def $eflags, implicit-def $rax
+    ; SLOW-NEXT: $rax = BLSMSK64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags, implicit killed $rax
+    ; SLOW-NEXT: RET64 killed $rax
+    $rax = BLSMSK64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsi32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_blsi32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSI32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = BLSI32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSI32rr killed $edi, implicit-def dead $eflags
+    $eax = BLSI32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsi64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsi64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSI64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = BLSI64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSI64rr killed $rdi, implicit-def dead $eflags
+    $rax = BLSI64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsi32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsi32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSI32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSI32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsi64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsi64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSI64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSI64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsr32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_blsr32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSR32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = BLSR32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSR32rr killed $edi, implicit-def dead $eflags
+    $eax = BLSR32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsr64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsr64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSR64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = BLSR64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSR64rr killed $rdi, implicit-def dead $eflags
+    $rax = BLSR64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsr32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsr32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSR32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSR32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsr64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsr64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSR64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSR64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsmsk32_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $edi
+    ; ALL-LABEL: name: no_break_blsmsk32_rr
+    ; ALL: liveins: $edi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSMSK32rr killed $edi, implicit-def dead $eflags
+    ; ALL-NEXT: $eax = BLSMSK32rr killed $eax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSMSK32rr killed $edi, implicit-def dead $eflags
+    $eax = BLSMSK32rr killed $eax, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsmsk64_rr
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsmsk64_rr
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSMSK64rr killed $rdi, implicit-def dead $eflags
+    ; ALL-NEXT: $rax = BLSMSK64rr killed $rax, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSMSK64rr killed $rdi, implicit-def dead $eflags
+    $rax = BLSMSK64rr killed $rax, implicit-def dead $eflags
+    RET64 killed $rax
+...
+---
+name:            no_break_blsmsk32_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsmsk32_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $eax = BLSMSK32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $eax
+    $eax = BLSMSK32rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $eax
+...
+---
+name:            no_break_blsmsk64_rm
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; ALL-LABEL: name: no_break_blsmsk64_rm
+    ; ALL: liveins: $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $rax = BLSMSK64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    ; ALL-NEXT: RET64 killed $rax
+    $rax = BLSMSK64rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def dead $eflags
+    RET64 killed $rax
+...

diff  --git a/llvm/test/CodeGen/X86/compress-false-deps.ll b/llvm/test/CodeGen/X86/compress-false-deps.ll
deleted file mode 100644
index c5a1cb27ab5b6..0000000000000
--- a/llvm/test/CodeGen/X86/compress-false-deps.ll
+++ /dev/null
@@ -1,1060 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
-
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mattr=+false-deps-compress -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=skylake-avx512 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-
-; AMD tunings lead to slightly 
diff erent schedule, hence dedicated prefixes
-; RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver4 -mattr=-false-deps-compress -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver5 -mattr=-false-deps-compress -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-
-
-; Test that dependencies on the output register are broken if it was written recently (write simulated using inline asm).
-
-
-define <16 x i8> @compressb_rrz_128(<16 x i8> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressb_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressb %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressb_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressb %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressb_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressb %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressb_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressb %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i8> @llvm.x86.avx512.mask.compress.v16i8(<16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i1> %2)
-  ret <16 x i8> %3
-}
-
-define <32 x i8> @compressb_rrz_256(<32 x i8> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressb_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressb %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressb_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressb %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressb_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressb %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressb_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressb %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i8> @llvm.x86.avx512.mask.compress.v32i8(<32 x i8> %a0, <32 x i8> zeroinitializer, <32 x i1> %2)
-  ret <32 x i8> %3
-}
-
-define <64 x i8> @compressb_rrz_512(<64 x i8> %a0, i64 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressb_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovq %rdi, %k1
-; FAST-NEXT:    vpcompressb %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressb_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovq %rdi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressb %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressb_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovq %rdi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressb %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressb_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovq %rdi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressb %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i64 %a1 to <64 x i1>
-  %3 = call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %a0, <64 x i8> zeroinitializer, <64 x i1> %2)
-  ret <64 x i8> %3
-}
-
-
-define <8 x i16> @compressw_rrz_128(<8 x i16> %a0, i8 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressw_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressw %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressw_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressw %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressw_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressw %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressw_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressw %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i16> @llvm.x86.avx512.mask.compress.v8i16(<8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i1> %2)
-  ret <8 x i16> %3
-}
-
-define <16 x i16> @compressw_rrz_256(<16 x i16> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressw_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressw %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressw_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressw %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressw_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressw %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressw_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressw %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i16> @llvm.x86.avx512.mask.compress.v16i16(<16 x i16> %a0, <16 x i16> zeroinitializer, <16 x i1> %2)
-  ret <16 x i16> %3
-}
-
-define <32 x i16> @compressw_rrz_512(<32 x i16> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: compressw_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressw %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressw_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressw %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressw_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressw %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressw_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressw %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i16> @llvm.x86.avx512.mask.compress.v32i16(<32 x i16> %a0, <32 x i16> zeroinitializer, <32 x i1> %2)
-  ret <32 x i16> %3
-}
-
-
-define <4 x i32> @compressd_rrz_128(<4 x i32> %a0, i4 %a1) {
-; FAST-LABEL: compressd_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressd %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressd_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressd %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressd_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressd %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressd_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressd %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i32> @llvm.x86.avx512.mask.compress.v4i32(<4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i1> %2)
-  ret <4 x i32> %3
-}
-
-define <8 x i32> @compressd_rrz_256(<8 x i32> %a0, i8 %a1) {
-; FAST-LABEL: compressd_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressd %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressd_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressd %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressd_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressd %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressd_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressd %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i32> @llvm.x86.avx512.mask.compress.v8i32(<8 x i32> %a0, <8 x i32> zeroinitializer, <8 x i1> %2)
-  ret <8 x i32> %3
-}
-
-define <16 x i32> @compressd_rrz_512(<16 x i32> %a0, i16 %a1) {
-; FAST-LABEL: compressd_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressd %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressd_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressd %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressd_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressd %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressd_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressd %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i32> @llvm.x86.avx512.mask.compress.v16i32(<16 x i32> %a0, <16 x i32> zeroinitializer, <16 x i1> %2)
-  ret <16 x i32> %3
-}
-
-
-define <2 x i64> @compressq_rrz_128(<2 x i64> %a0, i2 %a1) {
-; FAST-LABEL: compressq_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressq %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressq_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressq %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressq_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressq %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressq_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressq %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x i64> @llvm.x86.avx512.mask.compress.v2i64(<2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i1> %2)
-  ret <2 x i64> %3
-}
-
-define <4 x i64> @compressq_rrz_256(<4 x i64> %a0, i4 %a1) {
-; FAST-LABEL: compressq_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressq %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressq_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressq %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressq_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressq %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressq_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressq %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i64> @llvm.x86.avx512.mask.compress.v4i64(<4 x i64> %a0, <4 x i64> zeroinitializer, <4 x i1> %2)
-  ret <4 x i64> %3
-}
-
-define <8 x i64> @compressq_rrz_512(<8 x i64> %a0, i8 %a1) {
-; FAST-LABEL: compressq_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpcompressq %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressq_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpcompressq %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressq_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpcompressq %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressq_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpcompressq %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i64> @llvm.x86.avx512.mask.compress.v8i64(<8 x i64> %a0, <8 x i64> zeroinitializer, <8 x i1> %2)
-  ret <8 x i64> %3
-}
-
-
-define <4 x float> @compressps_rrz_128(<4 x float> %a0, i4 %a1) {
-; FAST-LABEL: compressps_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompressps %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressps_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompressps %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressps_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompressps %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressps_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompressps %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x float> @llvm.x86.avx512.mask.compress.v432(<4 x float> %a0, <4 x float> zeroinitializer, <4 x i1> %2)
-  ret <4 x float> %3
-}
-
-define <8 x float> @compressps_rrz_256(<8 x float> %a0, i8 %a1) {
-; FAST-LABEL: compressps_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompressps %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressps_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompressps %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressps_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompressps %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressps_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompressps %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x float> @llvm.x86.avx512.mask.compress.v8f32(<8 x float> %a0, <8 x float> zeroinitializer, <8 x i1> %2)
-  ret <8 x float> %3
-}
-
-define <16 x float> @compressps_rrz_512(<16 x float> %a0, i16 %a1) {
-; FAST-LABEL: compressps_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompressps %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compressps_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompressps %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compressps_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompressps %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compressps_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompressps %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x float> @llvm.x86.avx512.mask.compress.v16f32(<16 x float> %a0, <16 x float> zeroinitializer, <16 x i1> %2)
-  ret <16 x float> %3
-}
-
-
-define <2 x double> @compresspd_rrz_128(<2 x double> %a0, i2 %a1) {
-; FAST-LABEL: compresspd_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompresspd %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compresspd_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompresspd %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compresspd_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompresspd %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compresspd_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompresspd %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x double> @llvm.x86.avx512.mask.compress.v2f64(<2 x double> %a0, <2 x double> zeroinitializer, <2 x i1> %2)
-  ret <2 x double> %3
-}
-
-define <4 x double> @compresspd_rrz_256(<4 x double> %a0, i4 %a1) {
-; FAST-LABEL: compresspd_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompresspd %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compresspd_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompresspd %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compresspd_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompresspd %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compresspd_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompresspd %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x double> @llvm.x86.avx512.mask.compress.v4f64(<4 x double> %a0, <4 x double> zeroinitializer, <4 x i1> %2)
-  ret <4 x double> %3
-}
-
-define <8 x double> @compresspd_rrz_512(<8 x double> %a0, i8 %a1) {
-; FAST-LABEL: compresspd_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vcompresspd %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: compresspd_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vcompresspd %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: compresspd_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vcompresspd %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: compresspd_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vcompresspd %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x double> @llvm.x86.avx512.mask.compress.v8f64(<8 x double> %a0, <8 x double> zeroinitializer, <8 x i1> %2)
-  ret <8 x double> %3
-}
-
-
-; Test that dependencies on the output register are not broken if it is the same as the input register or it was not written recently
-
-
-define <16 x i8> @no_break_compressb_rrz_128(<16 x i8> %dummy, <16 x i8> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressb_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressb %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressb %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i8> @llvm.x86.avx512.mask.compress.v16i8(<16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i8> @llvm.x86.avx512.mask.compress.v16i8(<16 x i8> %2, <16 x i8> zeroinitializer, <16 x i1> %1)
-  ret <16 x i8> %3
-}
-
-define <32 x i8> @no_break_compressb_rrz_256(<32 x i8> %dummy, <32 x i8> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressb_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressb %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpcompressb %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i8> @llvm.x86.avx512.mask.compress.v32i8(<32 x i8> %a0, <32 x i8> zeroinitializer, <32 x i1> %1)
-  %3 = call <32 x i8> @llvm.x86.avx512.mask.compress.v32i8(<32 x i8> %2, <32 x i8> zeroinitializer, <32 x i1> %1)
-  ret <32 x i8> %3
-}
-
-define <64 x i8> @no_break_compressb_rrz_512(<64 x i8> %dummy, <64 x i8> %a0, i64 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressb_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovq %rdi, %k1
-; ALL-NEXT:    vpcompressb %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressb %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i64 %a1 to <64 x i1>
-  %2 = call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %a0, <64 x i8> zeroinitializer, <64 x i1> %1)
-  %3 = call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %2, <64 x i8> zeroinitializer, <64 x i1> %1)
-  ret <64 x i8> %3
-}
-
-
-define <8 x i16> @no_break_compressw_rrz_128(<8 x i16> %dummy, <8 x i16> %a0, i8 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressw_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressw %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressw %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i16> @llvm.x86.avx512.mask.compress.v8i16(<8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i16> @llvm.x86.avx512.mask.compress.v8i16(<8 x i16> %2, <8 x i16> zeroinitializer, <8 x i1> %1)
-  ret <8 x i16> %3
-}
-
-define <16 x i16> @no_break_compressw_rrz_256(<16 x i16> %dummy, <16 x i16> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressw_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressw %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpcompressw %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i16> @llvm.x86.avx512.mask.compress.v16i16(<16 x i16> %a0, <16 x i16> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i16> @llvm.x86.avx512.mask.compress.v16i16(<16 x i16> %2, <16 x i16> zeroinitializer, <16 x i1> %1)
-  ret <16 x i16> %3
-}
-
-define <32 x i16> @no_break_compressw_rrz_512(<32 x i16> %dummy, <32 x i16> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_compressw_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressw %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressw %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i16> @llvm.x86.avx512.mask.compress.v32i16(<32 x i16> %a0, <32 x i16> zeroinitializer, <32 x i1> %1)
-  %3 = call <32 x i16> @llvm.x86.avx512.mask.compress.v32i16(<32 x i16> %2, <32 x i16> zeroinitializer, <32 x i1> %1)
-  ret <32 x i16> %3
-}
-
-
-define <4 x i32> @no_break_compressd_rrz_128(<4 x i32> %dummy, <4 x i32> %a0, i4 %a1) {
-; ALL-LABEL: no_break_compressd_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressd %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressd %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i32> @llvm.x86.avx512.mask.compress.v4i32(<4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x i32> @llvm.x86.avx512.mask.compress.v4i32(<4 x i32> %2, <4 x i32> zeroinitializer, <4 x i1> %1)
-  ret <4 x i32> %3
-}
-
-define <8 x i32> @no_break_compressd_rrz_256(<8 x i32> %dummy, <8 x i32> %a0, i8 %a1) {
-; ALL-LABEL: no_break_compressd_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressd %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpcompressd %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i32> @llvm.x86.avx512.mask.compress.v8i32(<8 x i32> %a0, <8 x i32> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i32> @llvm.x86.avx512.mask.compress.v8i32(<8 x i32> %2, <8 x i32> zeroinitializer, <8 x i1> %1)
-  ret <8 x i32> %3
-}
-
-define <16 x i32> @no_break_compressd_rrz_512(<16 x i32> %dummy, <16 x i32> %a0, i16 %a1) {
-; ALL-LABEL: no_break_compressd_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressd %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressd %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i32> @llvm.x86.avx512.mask.compress.v16i32(<16 x i32> %a0, <16 x i32> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i32> @llvm.x86.avx512.mask.compress.v16i32(<16 x i32> %2, <16 x i32> zeroinitializer, <16 x i1> %1)
-  ret <16 x i32> %3
-}
-
-
-define <2 x i64> @no_break_compressq_rrz_128(<2 x i64> %dummy, <2 x i64> %a0, i2 %a1) {
-; ALL-LABEL: no_break_compressq_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressq %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressq %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x i64> @llvm.x86.avx512.mask.compress.v2i64(<2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i1> %1)
-  %3 = call <2 x i64> @llvm.x86.avx512.mask.compress.v2i64(<2 x i64> %2, <2 x i64> zeroinitializer, <2 x i1> %1)
-  ret <2 x i64> %3
-}
-
-define <4 x i64> @no_break_compressq_rrz_256(<4 x i64> %dummy, <4 x i64> %a0, i4 %a1) {
-; ALL-LABEL: no_break_compressq_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressq %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpcompressq %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i64> @llvm.x86.avx512.mask.compress.v4i64(<4 x i64> %a0, <4 x i64> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x i64> @llvm.x86.avx512.mask.compress.v4i64(<4 x i64> %2, <4 x i64> zeroinitializer, <4 x i1> %1)
-  ret <4 x i64> %3
-}
-
-define <8 x i64> @no_break_compressq_rrz_512(<8 x i64> %dummy, <8 x i64> %a0, i8 %a1) {
-; ALL-LABEL: no_break_compressq_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpcompressq %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpcompressq %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i64> @llvm.x86.avx512.mask.compress.v8i64(<8 x i64> %a0, <8 x i64> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i64> @llvm.x86.avx512.mask.compress.v8i64(<8 x i64> %2, <8 x i64> zeroinitializer, <8 x i1> %1)
-  ret <8 x i64> %3
-}
-
-
-define <4 x float> @no_break_compressps_rrz_128(<4 x float> %dummy, <4 x float> %a0, i4 %a1) {
-; ALL-LABEL: no_break_compressps_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompressps %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vcompressps %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x float> @llvm.x86.avx512.mask.compress.v432(<4 x float> %a0, <4 x float> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x float> @llvm.x86.avx512.mask.compress.v432(<4 x float> %2, <4 x float> zeroinitializer, <4 x i1> %1)
-  ret <4 x float> %3
-}
-
-define <8 x float> @no_break_compressps_rrz_256(<8 x float> %dummy, <8 x float> %a0, i8 %a1) {
-; ALL-LABEL: no_break_compressps_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompressps %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vcompressps %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x float> @llvm.x86.avx512.mask.compress.v8f32(<8 x float> %a0, <8 x float> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x float> @llvm.x86.avx512.mask.compress.v8f32(<8 x float> %2, <8 x float> zeroinitializer, <8 x i1> %1)
-  ret <8 x float> %3
-}
-
-define <16 x float> @no_break_compressps_rrz_512(<16 x float> %dummy, <16 x float> %a0, i16 %a1) {
-; ALL-LABEL: no_break_compressps_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompressps %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vcompressps %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x float> @llvm.x86.avx512.mask.compress.v16f32(<16 x float> %a0, <16 x float> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x float> @llvm.x86.avx512.mask.compress.v16f32(<16 x float> %2, <16 x float> zeroinitializer, <16 x i1> %1)
-  ret <16 x float> %3
-}
-
-
-define <2 x double> @no_break_compresspd_rrz_128(<2 x double> %dummy, <2 x double> %a0, i2 %a1) {
-; ALL-LABEL: no_break_compresspd_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompresspd %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vcompresspd %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x double> @llvm.x86.avx512.mask.compress.v2f64(<2 x double> %a0, <2 x double> zeroinitializer, <2 x i1> %1)
-  %3 = call <2 x double> @llvm.x86.avx512.mask.compress.v2f64(<2 x double> %2, <2 x double> zeroinitializer, <2 x i1> %1)
-  ret <2 x double> %3
-}
-
-define <4 x double> @no_break_compresspd_rrz_256(<4 x double> %dummy, <4 x double> %a0, i4 %a1) {
-; ALL-LABEL: no_break_compresspd_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompresspd %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vcompresspd %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x double> @llvm.x86.avx512.mask.compress.v4f64(<4 x double> %a0, <4 x double> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x double> @llvm.x86.avx512.mask.compress.v4f64(<4 x double> %2, <4 x double> zeroinitializer, <4 x i1> %1)
-  ret <4 x double> %3
-}
-
-define <8 x double> @no_break_compresspd_rrz_512(<8 x double> %dummy, <8 x double> %a0, i8 %a1) {
-; ALL-LABEL: no_break_compresspd_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vcompresspd %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vcompresspd %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x double> @llvm.x86.avx512.mask.compress.v8f64(<8 x double> %a0, <8 x double> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x double> @llvm.x86.avx512.mask.compress.v8f64(<8 x double> %2, <8 x double> zeroinitializer, <8 x i1> %1)
-  ret <8 x double> %3
-}

diff  --git a/llvm/test/CodeGen/X86/compress-false-deps.mir b/llvm/test/CodeGen/X86/compress-false-deps.mir
new file mode 100644
index 0000000000000..581d24fcb1bcd
--- /dev/null
+++ b/llvm/test/CodeGen/X86/compress-false-deps.mir
@@ -0,0 +1,716 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mattr=+false-deps-compress -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skylake-avx512 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mattr=-false-deps-compress -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mattr=-false-deps-compress -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+
+---
+name:            compressb_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compressb_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPCOMPRESSBZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compressb_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPCOMPRESSBZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSBZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compressb_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compressb_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPCOMPRESSBZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compressb_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPCOMPRESSBZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSBZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compressb_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compressb_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPCOMPRESSBZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compressb_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPCOMPRESSBZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSBZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            compressw_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compressw_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPCOMPRESSWZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compressw_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPCOMPRESSWZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSWZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compressw_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compressw_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPCOMPRESSWZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compressw_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPCOMPRESSWZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSWZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compressw_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compressw_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPCOMPRESSWZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compressw_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPCOMPRESSWZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSWZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            compressd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compressd_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPCOMPRESSDZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compressd_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPCOMPRESSDZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSDZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compressd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compressd_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPCOMPRESSDZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compressd_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPCOMPRESSDZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSDZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compressd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compressd_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPCOMPRESSDZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compressd_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPCOMPRESSDZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSDZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            compressq_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compressq_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPCOMPRESSQZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compressq_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPCOMPRESSQZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSQZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compressq_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compressq_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPCOMPRESSQZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compressq_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPCOMPRESSQZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSQZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compressq_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compressq_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPCOMPRESSQZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compressq_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPCOMPRESSQZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSQZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            compressps_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compressps_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VCOMPRESSPSZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compressps_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VCOMPRESSPSZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VCOMPRESSPSZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compressps_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compressps_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VCOMPRESSPSZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compressps_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VCOMPRESSPSZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VCOMPRESSPSZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compressps_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compressps_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VCOMPRESSPSZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compressps_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VCOMPRESSPSZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VCOMPRESSPSZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            compresspd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: compresspd_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VCOMPRESSPDZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: compresspd_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VCOMPRESSPDZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VCOMPRESSPDZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            compresspd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: compresspd_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VCOMPRESSPDZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: compresspd_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VCOMPRESSPDZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VCOMPRESSPDZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            compresspd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: compresspd_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VCOMPRESSPDZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: compresspd_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VCOMPRESSPDZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VCOMPRESSPDZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compressb_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compressb_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSBZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSBZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSBZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPCOMPRESSBZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compressb_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compressb_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSBZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSBZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSBZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPCOMPRESSBZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compressb_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compressb_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSBZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSBZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSBZrrkz $k1, killed $zmm1
+    $zmm0 = VPCOMPRESSBZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compressw_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compressw_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSWZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSWZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSWZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPCOMPRESSWZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compressw_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compressw_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSWZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSWZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSWZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPCOMPRESSWZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compressw_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compressw_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSWZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSWZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSWZrrkz $k1, killed $zmm1
+    $zmm0 = VPCOMPRESSWZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compressd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compressd_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSDZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSDZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSDZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPCOMPRESSDZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compressd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compressd_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSDZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSDZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSDZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPCOMPRESSDZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compressd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compressd_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSDZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSDZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSDZrrkz $k1, killed $zmm1
+    $zmm0 = VPCOMPRESSDZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compressq_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compressq_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSQZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPCOMPRESSQZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPCOMPRESSQZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPCOMPRESSQZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compressq_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compressq_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSQZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPCOMPRESSQZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPCOMPRESSQZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPCOMPRESSQZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compressq_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compressq_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSQZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPCOMPRESSQZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPCOMPRESSQZrrkz $k1, killed $zmm1
+    $zmm0 = VPCOMPRESSQZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compressps_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compressps_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VCOMPRESSPSZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VCOMPRESSPSZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VCOMPRESSPSZ128rrkz $k1, killed $xmm1
+    $xmm0 = VCOMPRESSPSZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compressps_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compressps_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VCOMPRESSPSZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VCOMPRESSPSZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VCOMPRESSPSZ256rrkz $k1, killed $ymm1
+    $ymm0 = VCOMPRESSPSZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compressps_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compressps_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VCOMPRESSPSZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VCOMPRESSPSZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VCOMPRESSPSZrrkz $k1, killed $zmm1
+    $zmm0 = VCOMPRESSPSZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_compresspd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_compresspd_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VCOMPRESSPDZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VCOMPRESSPDZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VCOMPRESSPDZ128rrkz $k1, killed $xmm1
+    $xmm0 = VCOMPRESSPDZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_compresspd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_compresspd_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VCOMPRESSPDZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VCOMPRESSPDZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VCOMPRESSPDZ256rrkz $k1, killed $ymm1
+    $ymm0 = VCOMPRESSPDZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_compresspd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_compresspd_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VCOMPRESSPDZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VCOMPRESSPDZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VCOMPRESSPDZrrkz $k1, killed $zmm1
+    $zmm0 = VCOMPRESSPDZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...

diff  --git a/llvm/test/CodeGen/X86/expand-false-deps.ll b/llvm/test/CodeGen/X86/expand-false-deps.ll
deleted file mode 100644
index b23d6b705b17d..0000000000000
--- a/llvm/test/CodeGen/X86/expand-false-deps.ll
+++ /dev/null
@@ -1,1992 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
-
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mattr=+false-deps-expand -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=skylake-avx512 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=FAST,ALL
-
-; AMD tunings lead to slightly 
diff erent schedule, hence dedicated prefixes
-; RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver4 -mattr=-false-deps-expand -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_SLOW,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver5 -mattr=-false-deps-expand -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-; RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=AMD_FAST,ALL
-
-
-; Test that dependencies on the output register are broken if it was written recently (write simulated using inline asm).
-
-
-define <16 x i8> @expandb_rrz_128(<16 x i8> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandb %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandb %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i8> @llvm.x86.avx512.mask.expand.v16i8(<16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i1> %2)
-  ret <16 x i8> %3
-}
-
-define <32 x i8> @expandb_rrz_256(<32 x i8> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandb %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandb %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i8> @llvm.x86.avx512.mask.expand.v32i8(<32 x i8> %a0, <32 x i8> zeroinitializer, <32 x i1> %2)
-  ret <32 x i8> %3
-}
-
-define <64 x i8> @expandb_rrz_512(<64 x i8> %a0, i64 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovq %rdi, %k1
-; FAST-NEXT:    vpexpandb %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovq %rdi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovq %rdi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovq %rdi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandb %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i64 %a1 to <64 x i1>
-  %3 = call <64 x i8> @llvm.x86.avx512.mask.expand.v64i8(<64 x i8> %a0, <64 x i8> zeroinitializer, <64 x i1> %2)
-  ret <64 x i8> %3
-}
-
-
-define <8 x i16> @expandw_rrz_128(<8 x i16> %a0, i8 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandw %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandw %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i16> @llvm.x86.avx512.mask.expand.v8i16(<8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i1> %2)
-  ret <8 x i16> %3
-}
-
-define <16 x i16> @expandw_rrz_256(<16 x i16> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandw %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandw %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i16> @llvm.x86.avx512.mask.expand.v16i16(<16 x i16> %a0, <16 x i16> zeroinitializer, <16 x i1> %2)
-  ret <16 x i16> %3
-}
-
-define <32 x i16> @expandw_rrz_512(<32 x i16> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandw %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandw %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i16> @llvm.x86.avx512.mask.expand.v32i16(<32 x i16> %a0, <32 x i16> zeroinitializer, <32 x i1> %2)
-  ret <32 x i16> %3
-}
-
-
-define <4 x i32> @expandd_rrz_128(<4 x i32> %a0, i4 %a1) {
-; FAST-LABEL: expandd_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandd %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandd %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i32> @llvm.x86.avx512.mask.expand.v4i32(<4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i1> %2)
-  ret <4 x i32> %3
-}
-
-define <8 x i32> @expandd_rrz_256(<8 x i32> %a0, i8 %a1) {
-; FAST-LABEL: expandd_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandd %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandd %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i32> @llvm.x86.avx512.mask.expand.v8i32(<8 x i32> %a0, <8 x i32> zeroinitializer, <8 x i1> %2)
-  ret <8 x i32> %3
-}
-
-define <16 x i32> @expandd_rrz_512(<16 x i32> %a0, i16 %a1) {
-; FAST-LABEL: expandd_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandd %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandd %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i32> @llvm.x86.avx512.mask.expand.v16i32(<16 x i32> %a0, <16 x i32> zeroinitializer, <16 x i1> %2)
-  ret <16 x i32> %3
-}
-
-
-define <2 x i64> @expandq_rrz_128(<2 x i64> %a0, i2 %a1) {
-; FAST-LABEL: expandq_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandq %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandq %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x i64> @llvm.x86.avx512.mask.expand.v2i64(<2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i1> %2)
-  ret <2 x i64> %3
-}
-
-define <4 x i64> @expandq_rrz_256(<4 x i64> %a0, i4 %a1) {
-; FAST-LABEL: expandq_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandq %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandq %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i64> @llvm.x86.avx512.mask.expand.v4i64(<4 x i64> %a0, <4 x i64> zeroinitializer, <4 x i1> %2)
-  ret <4 x i64> %3
-}
-
-define <8 x i64> @expandq_rrz_512(<8 x i64> %a0, i8 %a1) {
-; FAST-LABEL: expandq_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vpexpandq %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vpexpandq %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i64> @llvm.x86.avx512.mask.expand.v8i64(<8 x i64> %a0, <8 x i64> zeroinitializer, <8 x i1> %2)
-  ret <8 x i64> %3
-}
-
-
-define <4 x float> @expandps_rrz_128(<4 x float> %a0, i4 %a1) {
-; FAST-LABEL: expandps_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandps %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandps %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x float> @llvm.x86.avx512.mask.expand.v432(<4 x float> %a0, <4 x float> zeroinitializer, <4 x i1> %2)
-  ret <4 x float> %3
-}
-
-define <8 x float> @expandps_rrz_256(<8 x float> %a0, i8 %a1) {
-; FAST-LABEL: expandps_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandps %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandps %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x float> @llvm.x86.avx512.mask.expand.v8f32(<8 x float> %a0, <8 x float> zeroinitializer, <8 x i1> %2)
-  ret <8 x float> %3
-}
-
-define <16 x float> @expandps_rrz_512(<16 x float> %a0, i16 %a1) {
-; FAST-LABEL: expandps_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandps %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandps %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x float> @llvm.x86.avx512.mask.expand.v16f32(<16 x float> %a0, <16 x float> zeroinitializer, <16 x i1> %2)
-  ret <16 x float> %3
-}
-
-
-define <2 x double> @expandpd_rrz_128(<2 x double> %a0, i2 %a1) {
-; FAST-LABEL: expandpd_rrz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandpd %xmm1, %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rrz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd %xmm1, %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rrz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd %xmm1, %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rrz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %xmm0, %xmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandpd %xmm1, %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x double> @llvm.x86.avx512.mask.expand.v2f64(<2 x double> %a0, <2 x double> zeroinitializer, <2 x i1> %2)
-  ret <2 x double> %3
-}
-
-define <4 x double> @expandpd_rrz_256(<4 x double> %a0, i4 %a1) {
-; FAST-LABEL: expandpd_rrz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandpd %ymm1, %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rrz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd %ymm1, %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rrz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd %ymm1, %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rrz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa %ymm0, %ymm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandpd %ymm1, %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x double> @llvm.x86.avx512.mask.expand.v4f64(<4 x double> %a0, <4 x double> zeroinitializer, <4 x i1> %2)
-  ret <4 x double> %3
-}
-
-define <8 x double> @expandpd_rrz_512(<8 x double> %a0, i8 %a1) {
-; FAST-LABEL: expandpd_rrz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %edi, %k1
-; FAST-NEXT:    vexpandpd %zmm1, %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rrz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %edi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd %zmm1, %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rrz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    kmovd %edi, %k1
-; AMD_SLOW-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd %zmm1, %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rrz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    kmovd %edi, %k1
-; AMD_FAST-NEXT:    vmovdqa64 %zmm0, %zmm1
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    vexpandpd %zmm1, %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x double> @llvm.x86.avx512.mask.expand.v8f64(<8 x double> %a0, <8 x double> zeroinitializer, <8 x i1> %2)
-  ret <8 x double> %3
-}
-
-
-
-define <16 x i8> @expandb_rmz_128(ptr %p0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandb (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandb (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i8> @llvm.masked.expandload.v16i8.p0(ptr %p0, <16 x i1> %2, <16 x i8> zeroinitializer)
-  ret <16 x i8> %3
-}
-
-define <32 x i8> @expandb_rmz_256(ptr %p0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandb (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandb (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i8> @llvm.masked.expandload.v32i8.p0(ptr %p0, <32 x i1> %2, <32 x i8> zeroinitializer)
-  ret <32 x i8> %3
-}
-
-define <64 x i8> @expandb_rmz_512(ptr %p0, i64 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandb_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovq %rsi, %k1
-; FAST-NEXT:    vpexpandb (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandb_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovq %rsi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandb (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandb_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovq %rsi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandb (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandb_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovq %rsi, %k1
-; AMD_FAST-NEXT:    vpexpandb (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i64 %a1 to <64 x i1>
-  %3 = call <64 x i8> @llvm.masked.expandload.v64i8.p0(ptr %p0, <64 x i1> %2, <64 x i8> zeroinitializer)
-  ret <64 x i8> %3
-}
-
-
-define <8 x i16> @expandw_rmz_128(ptr %p0, i8 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandw (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandw (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i16> @llvm.masked.expandload.v8i16.p0(ptr %p0, <8 x i1> %2, <8 x i16> zeroinitializer)
-  ret <8 x i16> %3
-}
-
-define <16 x i16> @expandw_rmz_256(ptr %p0, i16 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandw (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandw (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i16> @llvm.masked.expandload.v16i16.p0(ptr %p0, <16 x i1> %2, <16 x i16> zeroinitializer)
-  ret <16 x i16> %3
-}
-
-define <32 x i16> @expandw_rmz_512(ptr %p0, i32 %a1) "target-features"="+avx512vbmi2" {
-; FAST-LABEL: expandw_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandw (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandw_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandw (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandw_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandw (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandw_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandw (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i32 %a1 to <32 x i1>
-  %3 = call <32 x i16> @llvm.masked.expandload.v32i16.p0(ptr %p0, <32 x i1> %2, <32 x i16> zeroinitializer)
-  ret <32 x i16> %3
-}
-
-
-define <4 x i32> @expandd_rmz_128(ptr %p0, i4 %a1) {
-; FAST-LABEL: expandd_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandd (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandd (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i32> @llvm.masked.expandload.v4i32.p0(ptr %p0, <4 x i1> %2, <4 x i32> zeroinitializer)
-  ret <4 x i32> %3
-}
-
-define <8 x i32> @expandd_rmz_256(ptr %p0, i8 %a1) {
-; FAST-LABEL: expandd_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandd (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandd (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i32> @llvm.masked.expandload.v8i32.p0(ptr %p0, <8 x i1> %2, <8 x i32> zeroinitializer)
-  ret <8 x i32> %3
-}
-
-define <16 x i32> @expandd_rmz_512(ptr %p0, i16 %a1) {
-; FAST-LABEL: expandd_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandd (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandd_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandd (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandd_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandd (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandd_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandd (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x i32> @llvm.masked.expandload.v16i32.p0(ptr %p0, <16 x i1> %2, <16 x i32> zeroinitializer)
-  ret <16 x i32> %3
-}
-
-
-define <2 x i64> @expandq_rmz_128(ptr %p0, i2 %a1) {
-; FAST-LABEL: expandq_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandq (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandq (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x i64> @llvm.masked.expandload.v2i64.p0(ptr %p0, <2 x i1> %2, <2 x i64> zeroinitializer)
-  ret <2 x i64> %3
-}
-
-define <4 x i64> @expandq_rmz_256(ptr %p0, i4 %a1) {
-; FAST-LABEL: expandq_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandq (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandq (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x i64> @llvm.masked.expandload.v4i64.p0(ptr %p0, <4 x i1> %2, <4 x i64> zeroinitializer)
-  ret <4 x i64> %3
-}
-
-define <8 x i64> @expandq_rmz_512(ptr %p0, i8 %a1) {
-; FAST-LABEL: expandq_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vpexpandq (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandq_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vpexpandq (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandq_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vpexpandq (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandq_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vpexpandq (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x i64> @llvm.masked.expandload.v8i64.p0(ptr %p0, <8 x i1> %2, <8 x i64> zeroinitializer)
-  ret <8 x i64> %3
-}
-
-
-define <4 x float> @expandps_rmz_128(ptr %p0, i4 %a1) {
-; FAST-LABEL: expandps_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandps (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandps (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x float> @llvm.masked.expandload.v432.p0(ptr %p0, <4 x i1> %2, <4 x float> zeroinitializer)
-  ret <4 x float> %3
-}
-
-define <8 x float> @expandps_rmz_256(ptr %p0, i8 %a1) {
-; FAST-LABEL: expandps_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandps (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandps (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x float> @llvm.masked.expandload.v8f32.p0(ptr %p0, <8 x i1> %2, <8 x float> zeroinitializer)
-  ret <8 x float> %3
-}
-
-define <16 x float> @expandps_rmz_512(ptr %p0, i16 %a1) {
-; FAST-LABEL: expandps_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandps_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandps_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandps_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i16 %a1 to <16 x i1>
-  %3 = call <16 x float> @llvm.masked.expandload.v16f32.p0(ptr %p0, <16 x i1> %2, <16 x float> zeroinitializer)
-  ret <16 x float> %3
-}
-
-
-define <2 x double> @expandpd_rmz_128(ptr %p0, i2 %a1) {
-; FAST-LABEL: expandpd_rmz_128:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandpd (%rdi), %xmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rmz_128:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd (%rdi), %xmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rmz_128:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd (%rdi), %xmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rmz_128:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandpd (%rdi), %xmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i2 %a1 to <2 x i1>
-  %3 = call <2 x double> @llvm.masked.expandload.v2f64.p0(ptr %p0, <2 x i1> %2, <2 x double> zeroinitializer)
-  ret <2 x double> %3
-}
-
-define <4 x double> @expandpd_rmz_256(ptr %p0, i4 %a1) {
-; FAST-LABEL: expandpd_rmz_256:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandpd (%rdi), %ymm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rmz_256:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd (%rdi), %ymm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rmz_256:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vxorps %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd (%rdi), %ymm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rmz_256:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandpd (%rdi), %ymm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i4 %a1 to <4 x i1>
-  %3 = call <4 x double> @llvm.masked.expandload.v4f64.p0(ptr %p0, <4 x i1> %2, <4 x double> zeroinitializer)
-  ret <4 x double> %3
-}
-
-define <8 x double> @expandpd_rmz_512(ptr %p0, i8 %a1) {
-; FAST-LABEL: expandpd_rmz_512:
-; FAST:       # %bb.0:
-; FAST-NEXT:    #APP
-; FAST-NEXT:    #NO_APP
-; FAST-NEXT:    kmovd %esi, %k1
-; FAST-NEXT:    vexpandpd (%rdi), %zmm0 {%k1} {z}
-; FAST-NEXT:    retq
-;
-; SLOW-LABEL: expandpd_rmz_512:
-; SLOW:       # %bb.0:
-; SLOW-NEXT:    #APP
-; SLOW-NEXT:    #NO_APP
-; SLOW-NEXT:    kmovd %esi, %k1
-; SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; SLOW-NEXT:    vexpandpd (%rdi), %zmm0 {%k1} {z}
-; SLOW-NEXT:    retq
-;
-; AMD_SLOW-LABEL: expandpd_rmz_512:
-; AMD_SLOW:       # %bb.0:
-; AMD_SLOW-NEXT:    #APP
-; AMD_SLOW-NEXT:    #NO_APP
-; AMD_SLOW-NEXT:    kmovd %esi, %k1
-; AMD_SLOW-NEXT:    vpxor %xmm0, %xmm0, %xmm0
-; AMD_SLOW-NEXT:    vexpandpd (%rdi), %zmm0 {%k1} {z}
-; AMD_SLOW-NEXT:    retq
-;
-; AMD_FAST-LABEL: expandpd_rmz_512:
-; AMD_FAST:       # %bb.0:
-; AMD_FAST-NEXT:    #APP
-; AMD_FAST-NEXT:    #NO_APP
-; AMD_FAST-NEXT:    kmovd %esi, %k1
-; AMD_FAST-NEXT:    vexpandpd (%rdi), %zmm0 {%k1} {z}
-; AMD_FAST-NEXT:    retq
-  %1 = tail call <2 x i64> asm sideeffect "", "=x,~{xmm0}"()
-  %2 = bitcast i8 %a1 to <8 x i1>
-  %3 = call <8 x double> @llvm.masked.expandload.v8f64.p0(ptr %p0, <8 x i1> %2, <8 x double> zeroinitializer)
-  ret <8 x double> %3
-}
-
-
-; Test that dependencies on the output register are not broken if it is the same as the input register or it was not written recently
-
-
-define <16 x i8> @no_break_expandb_rrz_128(<16 x i8> %dummy, <16 x i8> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandb %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandb %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i8> @llvm.x86.avx512.mask.expand.v16i8(<16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i8> @llvm.x86.avx512.mask.expand.v16i8(<16 x i8> %2, <16 x i8> zeroinitializer, <16 x i1> %1)
-  ret <16 x i8> %3
-}
-
-define <32 x i8> @no_break_expandb_rrz_256(<32 x i8> %dummy, <32 x i8> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandb %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpexpandb %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i8> @llvm.x86.avx512.mask.expand.v32i8(<32 x i8> %a0, <32 x i8> zeroinitializer, <32 x i1> %1)
-  %3 = call <32 x i8> @llvm.x86.avx512.mask.expand.v32i8(<32 x i8> %2, <32 x i8> zeroinitializer, <32 x i1> %1)
-  ret <32 x i8> %3
-}
-
-define <64 x i8> @no_break_expandb_rrz_512(<64 x i8> %dummy, <64 x i8> %a0, i64 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovq %rdi, %k1
-; ALL-NEXT:    vpexpandb %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandb %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i64 %a1 to <64 x i1>
-  %2 = call <64 x i8> @llvm.x86.avx512.mask.expand.v64i8(<64 x i8> %a0, <64 x i8> zeroinitializer, <64 x i1> %1)
-  %3 = call <64 x i8> @llvm.x86.avx512.mask.expand.v64i8(<64 x i8> %2, <64 x i8> zeroinitializer, <64 x i1> %1)
-  ret <64 x i8> %3
-}
-
-
-define <8 x i16> @no_break_expandw_rrz_128(<8 x i16> %dummy, <8 x i16> %a0, i8 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandw %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandw %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i16> @llvm.x86.avx512.mask.expand.v8i16(<8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i16> @llvm.x86.avx512.mask.expand.v8i16(<8 x i16> %2, <8 x i16> zeroinitializer, <8 x i1> %1)
-  ret <8 x i16> %3
-}
-
-define <16 x i16> @no_break_expandw_rrz_256(<16 x i16> %dummy, <16 x i16> %a0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandw %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpexpandw %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i16> @llvm.x86.avx512.mask.expand.v16i16(<16 x i16> %a0, <16 x i16> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i16> @llvm.x86.avx512.mask.expand.v16i16(<16 x i16> %2, <16 x i16> zeroinitializer, <16 x i1> %1)
-  ret <16 x i16> %3
-}
-
-define <32 x i16> @no_break_expandw_rrz_512(<32 x i16> %dummy, <32 x i16> %a0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandw %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandw %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i16> @llvm.x86.avx512.mask.expand.v32i16(<32 x i16> %a0, <32 x i16> zeroinitializer, <32 x i1> %1)
-  %3 = call <32 x i16> @llvm.x86.avx512.mask.expand.v32i16(<32 x i16> %2, <32 x i16> zeroinitializer, <32 x i1> %1)
-  ret <32 x i16> %3
-}
-
-
-define <4 x i32> @no_break_expandd_rrz_128(<4 x i32> %dummy, <4 x i32> %a0, i4 %a1) {
-; ALL-LABEL: no_break_expandd_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandd %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandd %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i32> @llvm.x86.avx512.mask.expand.v4i32(<4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x i32> @llvm.x86.avx512.mask.expand.v4i32(<4 x i32> %2, <4 x i32> zeroinitializer, <4 x i1> %1)
-  ret <4 x i32> %3
-}
-
-define <8 x i32> @no_break_expandd_rrz_256(<8 x i32> %dummy, <8 x i32> %a0, i8 %a1) {
-; ALL-LABEL: no_break_expandd_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandd %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpexpandd %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i32> @llvm.x86.avx512.mask.expand.v8i32(<8 x i32> %a0, <8 x i32> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i32> @llvm.x86.avx512.mask.expand.v8i32(<8 x i32> %2, <8 x i32> zeroinitializer, <8 x i1> %1)
-  ret <8 x i32> %3
-}
-
-define <16 x i32> @no_break_expandd_rrz_512(<16 x i32> %dummy, <16 x i32> %a0, i16 %a1) {
-; ALL-LABEL: no_break_expandd_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandd %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandd %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i32> @llvm.x86.avx512.mask.expand.v16i32(<16 x i32> %a0, <16 x i32> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x i32> @llvm.x86.avx512.mask.expand.v16i32(<16 x i32> %2, <16 x i32> zeroinitializer, <16 x i1> %1)
-  ret <16 x i32> %3
-}
-
-
-define <2 x i64> @no_break_expandq_rrz_128(<2 x i64> %dummy, <2 x i64> %a0, i2 %a1) {
-; ALL-LABEL: no_break_expandq_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandq %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandq %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x i64> @llvm.x86.avx512.mask.expand.v2i64(<2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i1> %1)
-  %3 = call <2 x i64> @llvm.x86.avx512.mask.expand.v2i64(<2 x i64> %2, <2 x i64> zeroinitializer, <2 x i1> %1)
-  ret <2 x i64> %3
-}
-
-define <4 x i64> @no_break_expandq_rrz_256(<4 x i64> %dummy, <4 x i64> %a0, i4 %a1) {
-; ALL-LABEL: no_break_expandq_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandq %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vpexpandq %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i64> @llvm.x86.avx512.mask.expand.v4i64(<4 x i64> %a0, <4 x i64> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x i64> @llvm.x86.avx512.mask.expand.v4i64(<4 x i64> %2, <4 x i64> zeroinitializer, <4 x i1> %1)
-  ret <4 x i64> %3
-}
-
-define <8 x i64> @no_break_expandq_rrz_512(<8 x i64> %dummy, <8 x i64> %a0, i8 %a1) {
-; ALL-LABEL: no_break_expandq_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vpexpandq %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vpexpandq %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i64> @llvm.x86.avx512.mask.expand.v8i64(<8 x i64> %a0, <8 x i64> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x i64> @llvm.x86.avx512.mask.expand.v8i64(<8 x i64> %2, <8 x i64> zeroinitializer, <8 x i1> %1)
-  ret <8 x i64> %3
-}
-
-
-define <4 x float> @no_break_expandps_rrz_128(<4 x float> %dummy, <4 x float> %a0, i4 %a1) {
-; ALL-LABEL: no_break_expandps_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandps %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vexpandps %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x float> @llvm.x86.avx512.mask.expand.v432(<4 x float> %a0, <4 x float> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x float> @llvm.x86.avx512.mask.expand.v432(<4 x float> %2, <4 x float> zeroinitializer, <4 x i1> %1)
-  ret <4 x float> %3
-}
-
-define <8 x float> @no_break_expandps_rrz_256(<8 x float> %dummy, <8 x float> %a0, i8 %a1) {
-; ALL-LABEL: no_break_expandps_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandps %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vexpandps %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x float> @llvm.x86.avx512.mask.expand.v8f32(<8 x float> %a0, <8 x float> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x float> @llvm.x86.avx512.mask.expand.v8f32(<8 x float> %2, <8 x float> zeroinitializer, <8 x i1> %1)
-  ret <8 x float> %3
-}
-
-define <16 x float> @no_break_expandps_rrz_512(<16 x float> %dummy, <16 x float> %a0, i16 %a1) {
-; ALL-LABEL: no_break_expandps_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandps %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vexpandps %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x float> @llvm.x86.avx512.mask.expand.v16f32(<16 x float> %a0, <16 x float> zeroinitializer, <16 x i1> %1)
-  %3 = call <16 x float> @llvm.x86.avx512.mask.expand.v16f32(<16 x float> %2, <16 x float> zeroinitializer, <16 x i1> %1)
-  ret <16 x float> %3
-}
-
-
-define <2 x double> @no_break_expandpd_rrz_128(<2 x double> %dummy, <2 x double> %a0, i2 %a1) {
-; ALL-LABEL: no_break_expandpd_rrz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandpd %xmm1, %xmm0 {%k1} {z}
-; ALL-NEXT:    vexpandpd %xmm0, %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x double> @llvm.x86.avx512.mask.expand.v2f64(<2 x double> %a0, <2 x double> zeroinitializer, <2 x i1> %1)
-  %3 = call <2 x double> @llvm.x86.avx512.mask.expand.v2f64(<2 x double> %2, <2 x double> zeroinitializer, <2 x i1> %1)
-  ret <2 x double> %3
-}
-
-define <4 x double> @no_break_expandpd_rrz_256(<4 x double> %dummy, <4 x double> %a0, i4 %a1) {
-; ALL-LABEL: no_break_expandpd_rrz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandpd %ymm1, %ymm0 {%k1} {z}
-; ALL-NEXT:    vexpandpd %ymm0, %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x double> @llvm.x86.avx512.mask.expand.v4f64(<4 x double> %a0, <4 x double> zeroinitializer, <4 x i1> %1)
-  %3 = call <4 x double> @llvm.x86.avx512.mask.expand.v4f64(<4 x double> %2, <4 x double> zeroinitializer, <4 x i1> %1)
-  ret <4 x double> %3
-}
-
-define <8 x double> @no_break_expandpd_rrz_512(<8 x double> %dummy, <8 x double> %a0, i8 %a1) {
-; ALL-LABEL: no_break_expandpd_rrz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %edi, %k1
-; ALL-NEXT:    vexpandpd %zmm1, %zmm0 {%k1} {z}
-; ALL-NEXT:    vexpandpd %zmm0, %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x double> @llvm.x86.avx512.mask.expand.v8f64(<8 x double> %a0, <8 x double> zeroinitializer, <8 x i1> %1)
-  %3 = call <8 x double> @llvm.x86.avx512.mask.expand.v8f64(<8 x double> %2, <8 x double> zeroinitializer, <8 x i1> %1)
-  ret <8 x double> %3
-}
-
-
-
-define <16 x i8> @no_break_expandb_rmz_128(ptr %p0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandb (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i8> @llvm.masked.expandload.v16i8.p0(ptr %p0, <16 x i1> %1, <16 x i8> zeroinitializer)
-  ret <16 x i8> %2
-}
-
-define <32 x i8> @no_break_expandb_rmz_256(ptr %p0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandb (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i8> @llvm.masked.expandload.v32i8.p0(ptr %p0, <32 x i1> %1, <32 x i8> zeroinitializer)
-  ret <32 x i8> %2
-}
-
-define <64 x i8> @no_break_expandb_rmz_512(ptr %p0, i64 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandb_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovq %rsi, %k1
-; ALL-NEXT:    vpexpandb (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i64 %a1 to <64 x i1>
-  %2 = call <64 x i8> @llvm.masked.expandload.v64i8.p0(ptr %p0, <64 x i1> %1, <64 x i8> zeroinitializer)
-  ret <64 x i8> %2
-}
-
-
-define <8 x i16> @no_break_expandw_rmz_128(ptr %p0, i8 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandw (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i16> @llvm.masked.expandload.v8i16.p0(ptr %p0, <8 x i1> %1, <8 x i16> zeroinitializer)
-  ret <8 x i16> %2
-}
-
-define <16 x i16> @no_break_expandw_rmz_256(ptr %p0, i16 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandw (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i16> @llvm.masked.expandload.v16i16.p0(ptr %p0, <16 x i1> %1, <16 x i16> zeroinitializer)
-  ret <16 x i16> %2
-}
-
-define <32 x i16> @no_break_expandw_rmz_512(ptr %p0, i32 %a1) "target-features"="+avx512vbmi2" {
-; ALL-LABEL: no_break_expandw_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandw (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i32 %a1 to <32 x i1>
-  %2 = call <32 x i16> @llvm.masked.expandload.v32i16.p0(ptr %p0, <32 x i1> %1, <32 x i16> zeroinitializer)
-  ret <32 x i16> %2
-}
-
-
-define <4 x i32> @no_break_expandd_rmz_128(ptr %p0, i4 %a1) {
-; ALL-LABEL: no_break_expandd_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandd (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i32> @llvm.masked.expandload.v4i32.p0(ptr %p0, <4 x i1> %1, <4 x i32> zeroinitializer)
-  ret <4 x i32> %2
-}
-
-define <8 x i32> @no_break_expandd_rmz_256(ptr %p0, i8 %a1) {
-; ALL-LABEL: no_break_expandd_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandd (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i32> @llvm.masked.expandload.v8i32.p0(ptr %p0, <8 x i1> %1, <8 x i32> zeroinitializer)
-  ret <8 x i32> %2
-}
-
-define <16 x i32> @no_break_expandd_rmz_512(ptr %p0, i16 %a1) {
-; ALL-LABEL: no_break_expandd_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandd (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x i32> @llvm.masked.expandload.v16i32.p0(ptr %p0, <16 x i1> %1, <16 x i32> zeroinitializer)
-  ret <16 x i32> %2
-}
-
-
-define <2 x i64> @no_break_expandq_rmz_128(ptr %p0, i2 %a1) {
-; ALL-LABEL: no_break_expandq_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandq (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x i64> @llvm.masked.expandload.v2i64.p0(ptr %p0, <2 x i1> %1, <2 x i64> zeroinitializer)
-  ret <2 x i64> %2
-}
-
-define <4 x i64> @no_break_expandq_rmz_256(ptr %p0, i4 %a1) {
-; ALL-LABEL: no_break_expandq_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandq (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x i64> @llvm.masked.expandload.v4i64.p0(ptr %p0, <4 x i1> %1, <4 x i64> zeroinitializer)
-  ret <4 x i64> %2
-}
-
-define <8 x i64> @no_break_expandq_rmz_512(ptr %p0, i8 %a1) {
-; ALL-LABEL: no_break_expandq_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vpexpandq (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x i64> @llvm.masked.expandload.v8i64.p0(ptr %p0, <8 x i1> %1, <8 x i64> zeroinitializer)
-  ret <8 x i64> %2
-}
-
-
-define <4 x float> @no_break_expandps_rmz_128(ptr %p0, i4 %a1) {
-; ALL-LABEL: no_break_expandps_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandps (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x float> @llvm.masked.expandload.v432.p0(ptr %p0, <4 x i1> %1, <4 x float> zeroinitializer)
-  ret <4 x float> %2
-}
-
-define <8 x float> @no_break_expandps_rmz_256(ptr %p0, i8 %a1) {
-; ALL-LABEL: no_break_expandps_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandps (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x float> @llvm.masked.expandload.v8f32.p0(ptr %p0, <8 x i1> %1, <8 x float> zeroinitializer)
-  ret <8 x float> %2
-}
-
-define <16 x float> @no_break_expandps_rmz_512(ptr %p0, i16 %a1) {
-; ALL-LABEL: no_break_expandps_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i16 %a1 to <16 x i1>
-  %2 = call <16 x float> @llvm.masked.expandload.v16f32.p0(ptr %p0, <16 x i1> %1, <16 x float> zeroinitializer)
-  ret <16 x float> %2
-}
-
-
-define <2 x double> @no_break_expandpd_rmz_128(ptr %p0, i2 %a1) {
-; ALL-LABEL: no_break_expandpd_rmz_128:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandpd (%rdi), %xmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i2 %a1 to <2 x i1>
-  %2 = call <2 x double> @llvm.masked.expandload.v2f64.p0(ptr %p0, <2 x i1> %1, <2 x double> zeroinitializer)
-  ret <2 x double> %2
-}
-
-define <4 x double> @no_break_expandpd_rmz_256(ptr %p0, i4 %a1) {
-; ALL-LABEL: no_break_expandpd_rmz_256:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandpd (%rdi), %ymm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i4 %a1 to <4 x i1>
-  %2 = call <4 x double> @llvm.masked.expandload.v4f64.p0(ptr %p0, <4 x i1> %1, <4 x double> zeroinitializer)
-  ret <4 x double> %2
-}
-
-define <8 x double> @no_break_expandpd_rmz_512(ptr %p0, i8 %a1) {
-; ALL-LABEL: no_break_expandpd_rmz_512:
-; ALL:       # %bb.0:
-; ALL-NEXT:    kmovd %esi, %k1
-; ALL-NEXT:    vexpandpd (%rdi), %zmm0 {%k1} {z}
-; ALL-NEXT:    retq
-  %1 = bitcast i8 %a1 to <8 x i1>
-  %2 = call <8 x double> @llvm.masked.expandload.v8f64.p0(ptr %p0, <8 x i1> %1, <8 x double> zeroinitializer)
-  ret <8 x double> %2
-}

diff  --git a/llvm/test/CodeGen/X86/expand-false-deps.mir b/llvm/test/CodeGen/X86/expand-false-deps.mir
new file mode 100644
index 0000000000000..08c09aa6d81b0
--- /dev/null
+++ b/llvm/test/CodeGen/X86/expand-false-deps.mir
@@ -0,0 +1,1385 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=x86-64-v4 -mattr=+false-deps-expand -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=skylake-avx512 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=icelake-client -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=emeraldrapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=graniterapids -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver4 -mattr=-false-deps-expand -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=SLOW,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver5 -mattr=-false-deps-expand -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+# RUN: llc -verify-machineinstrs -mcpu=znver6 -mtriple=x86_64-unknown-unknown -run-pass=break-false-deps %s -o - | FileCheck %s --check-prefixes=FAST,ALL
+
+---
+name:            expandb_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandb_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDBZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandb_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDBZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDBZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandb_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandb_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDBZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandb_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDBZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDBZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandb_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandb_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDBZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandb_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDBZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDBZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            expandw_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandw_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDWZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandw_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDWZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDWZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandw_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandw_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDWZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandw_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDWZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDWZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandw_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandw_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDWZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandw_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDWZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDWZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            expandd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandd_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDDZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandd_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDDZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDDZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandd_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDDZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandd_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDDZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDDZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandd_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDDZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandd_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDDZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDDZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            expandq_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandq_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDQZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandq_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDQZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDQZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandq_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandq_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDQZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandq_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDQZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDQZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandq_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandq_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDQZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandq_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDQZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDQZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            expandps_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandps_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VEXPANDPSZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandps_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VEXPANDPSZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPSZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandps_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandps_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VEXPANDPSZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandps_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VEXPANDPSZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPSZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandps_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandps_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VEXPANDPSZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandps_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VEXPANDPSZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPSZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+---
+name:            expandpd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $xmm1
+    ; FAST-LABEL: name: expandpd_rrz_128
+    ; FAST: liveins: $k1, $xmm0, $xmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VEXPANDPDZ128rrkz killed $k1, killed $xmm1
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rrz_128
+    ; SLOW: liveins: $k1, $xmm0, $xmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VEXPANDPDZ128rrkz killed $k1, killed $xmm1, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPDZ128rrkz killed $k1, killed $xmm1
+    RET64 killed $xmm0
+...
+---
+name:            expandpd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $ymm1
+    ; FAST-LABEL: name: expandpd_rrz_256
+    ; FAST: liveins: $k1, $ymm0, $ymm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VEXPANDPDZ256rrkz killed $k1, killed $ymm1
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rrz_256
+    ; SLOW: liveins: $k1, $ymm0, $ymm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VEXPANDPDZ256rrkz killed $k1, killed $ymm1, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPDZ256rrkz killed $k1, killed $ymm1
+    RET64 killed $ymm0
+...
+---
+name:            expandpd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $zmm1
+    ; FAST-LABEL: name: expandpd_rrz_512
+    ; FAST: liveins: $k1, $zmm0, $zmm1
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VEXPANDPDZrrkz killed $k1, killed $zmm1
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rrz_512
+    ; SLOW: liveins: $k1, $zmm0, $zmm1
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VEXPANDPDZrrkz killed $k1, killed $zmm1, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPDZrrkz killed $k1, killed $zmm1
+    RET64 killed $zmm0
+...
+
+---
+name:            expandb_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandb_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDBZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandb_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDBZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDBZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandb_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandb_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDBZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandb_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDBZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDBZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandb_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandb_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDBZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandb_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDBZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDBZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            expandw_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandw_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDWZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandw_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDWZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDWZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandw_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandw_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDWZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandw_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDWZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDWZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandw_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandw_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDWZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandw_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDWZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDWZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            expandd_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandd_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandd_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandd_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandd_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandd_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandd_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandd_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandd_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            expandq_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandq_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VPEXPANDQZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandq_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VPEXPANDQZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDQZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandq_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandq_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VPEXPANDQZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandq_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VPEXPANDQZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDQZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandq_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandq_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VPEXPANDQZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandq_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VPEXPANDQZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDQZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            expandps_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandps_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VEXPANDPSZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandps_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VEXPANDPSZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPSZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandps_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandps_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VEXPANDPSZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandps_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VEXPANDPSZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPSZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandps_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandps_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VEXPANDPSZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandps_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VEXPANDPSZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPSZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            expandpd_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm0, $rdi
+    ; FAST-LABEL: name: expandpd_rmz_128
+    ; FAST: liveins: $k1, $xmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $xmm0 = VEXPANDPDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $xmm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rmz_128
+    ; SLOW: liveins: $k1, $xmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0
+    ; SLOW-NEXT: $xmm0 = VEXPANDPDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $xmm0
+    ; SLOW-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            expandpd_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm0, $rdi
+    ; FAST-LABEL: name: expandpd_rmz_256
+    ; FAST: liveins: $k1, $ymm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $ymm0 = VEXPANDPDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $ymm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rmz_256
+    ; SLOW: liveins: $k1, $ymm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VXORPSrr undef $xmm0, undef $xmm0, implicit-def $ymm0
+    ; SLOW-NEXT: $ymm0 = VEXPANDPDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $ymm0
+    ; SLOW-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            expandpd_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm0, $rdi
+    ; FAST-LABEL: name: expandpd_rmz_512
+    ; FAST: liveins: $k1, $zmm0, $rdi
+    ; FAST-NEXT: {{  $}}
+    ; FAST-NEXT: $zmm0 = VEXPANDPDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; FAST-NEXT: RET64 killed $zmm0
+    ;
+    ; SLOW-LABEL: name: expandpd_rmz_512
+    ; SLOW: liveins: $k1, $zmm0, $rdi
+    ; SLOW-NEXT: {{  $}}
+    ; SLOW-NEXT: $xmm0 = VPXORDZ128rr undef $xmm0, undef $xmm0, implicit-def $zmm0
+    ; SLOW-NEXT: $zmm0 = VEXPANDPDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg, implicit killed $zmm0
+    ; SLOW-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+
+---
+name:            no_break_expandb_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandb_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDBZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPEXPANDBZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDBZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPEXPANDBZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandb_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandb_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDBZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPEXPANDBZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDBZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPEXPANDBZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandb_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandb_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDBZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPEXPANDBZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDBZrrkz $k1, killed $zmm1
+    $zmm0 = VPEXPANDBZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandw_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandw_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDWZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPEXPANDWZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDWZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPEXPANDWZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandw_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandw_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDWZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPEXPANDWZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDWZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPEXPANDWZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandw_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandw_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDWZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPEXPANDWZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDWZrrkz $k1, killed $zmm1
+    $zmm0 = VPEXPANDWZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandd_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDDZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPEXPANDDZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDDZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPEXPANDDZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandd_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDDZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPEXPANDDZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDDZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPEXPANDDZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandd_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDDZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPEXPANDDZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDDZrrkz $k1, killed $zmm1
+    $zmm0 = VPEXPANDDZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandq_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandq_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDQZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VPEXPANDQZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDQZ128rrkz $k1, killed $xmm1
+    $xmm0 = VPEXPANDQZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandq_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandq_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDQZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VPEXPANDQZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDQZ256rrkz $k1, killed $ymm1
+    $ymm0 = VPEXPANDQZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandq_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandq_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDQZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VPEXPANDQZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDQZrrkz $k1, killed $zmm1
+    $zmm0 = VPEXPANDQZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandps_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandps_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VEXPANDPSZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VEXPANDPSZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPSZ128rrkz $k1, killed $xmm1
+    $xmm0 = VEXPANDPSZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandps_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandps_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VEXPANDPSZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VEXPANDPSZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPSZ256rrkz $k1, killed $ymm1
+    $ymm0 = VEXPANDPSZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandps_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandps_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VEXPANDPSZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VEXPANDPSZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPSZrrkz $k1, killed $zmm1
+    $zmm0 = VEXPANDPSZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandpd_rrz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $xmm1
+    ; ALL-LABEL: name: no_break_expandpd_rrz_128
+    ; ALL: liveins: $k1, $xmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VEXPANDPDZ128rrkz $k1, killed $xmm1
+    ; ALL-NEXT: $xmm0 = VEXPANDPDZ128rrkz killed $k1, killed $xmm0
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPDZ128rrkz $k1, killed $xmm1
+    $xmm0 = VEXPANDPDZ128rrkz killed $k1, killed $xmm0
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandpd_rrz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $ymm1
+    ; ALL-LABEL: name: no_break_expandpd_rrz_256
+    ; ALL: liveins: $k1, $ymm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VEXPANDPDZ256rrkz $k1, killed $ymm1
+    ; ALL-NEXT: $ymm0 = VEXPANDPDZ256rrkz killed $k1, killed $ymm0
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPDZ256rrkz $k1, killed $ymm1
+    $ymm0 = VEXPANDPDZ256rrkz killed $k1, killed $ymm0
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandpd_rrz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $zmm1
+    ; ALL-LABEL: name: no_break_expandpd_rrz_512
+    ; ALL: liveins: $k1, $zmm1
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VEXPANDPDZrrkz $k1, killed $zmm1
+    ; ALL-NEXT: $zmm0 = VEXPANDPDZrrkz killed $k1, killed $zmm0
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPDZrrkz $k1, killed $zmm1
+    $zmm0 = VEXPANDPDZrrkz killed $k1, killed $zmm0
+    RET64 killed $zmm0
+...
+
+---
+name:            no_break_expandb_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandb_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDBZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDBZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandb_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandb_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDBZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDBZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandb_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandb_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDBZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDBZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandw_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandw_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDWZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDWZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandw_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandw_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDWZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDWZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandw_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandw_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDWZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDWZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandd_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandd_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandd_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandd_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandd_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandd_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandq_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandq_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VPEXPANDQZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VPEXPANDQZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandq_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandq_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VPEXPANDQZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VPEXPANDQZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandq_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandq_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VPEXPANDQZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VPEXPANDQZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandps_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandps_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VEXPANDPSZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPSZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandps_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandps_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VEXPANDPSZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPSZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandps_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandps_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VEXPANDPSZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPSZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...
+---
+name:            no_break_expandpd_rmz_128
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandpd_rmz_128
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $xmm0 = VEXPANDPDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $xmm0
+    $xmm0 = VEXPANDPDZ128rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $xmm0
+...
+---
+name:            no_break_expandpd_rmz_256
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandpd_rmz_256
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $ymm0 = VEXPANDPDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $ymm0
+    $ymm0 = VEXPANDPDZ256rmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $ymm0
+...
+---
+name:            no_break_expandpd_rmz_512
+tracksRegLiveness: true
+registers:       []
+body:             |
+  bb.0:
+    liveins: $k1, $rdi
+    ; ALL-LABEL: name: no_break_expandpd_rmz_512
+    ; ALL: liveins: $k1, $rdi
+    ; ALL-NEXT: {{  $}}
+    ; ALL-NEXT: $zmm0 = VEXPANDPDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    ; ALL-NEXT: RET64 killed $zmm0
+    $zmm0 = VEXPANDPDZrmkz killed $k1, killed $rdi, 1, $noreg, 0, $noreg
+    RET64 killed $zmm0
+...


        


More information about the llvm-commits mailing list