[llvm] [X86][test] Auto-generate test checks for some cfi tests. (PR #177248)

Mikhail Gudim via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 23 10:19:06 PST 2026


https://github.com/mgudim updated https://github.com/llvm/llvm-project/pull/177248

>From 27aa273a6317a7cc6d6a97c0d20f6814f091c2b4 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Wed, 21 Jan 2026 13:28:41 -0800
Subject: [PATCH 1/3] [X86][test] Auto-generate test checks for some cfi tests.

---
 .../CodeGen/X86/cfi-basic-block-sections-1.ll |  1 +
 .../CodeGen/X86/cfi-epilogue-with-return.mir  | 59 +++++++++++--
 .../X86/cfi-epilogue-without-return.mir       | 69 ++++++++++++---
 ...ic-block-sections-callee-save-registers.ll |  1 +
 .../cfi-inserter-callee-save-register-2.mir   | 88 ++++++++++++++++---
 .../X86/cfi-inserter-callee-save-register.mir | 28 +++++-
 .../X86/cfi-inserter-cfg-with-merge.mir       |  1 +
 .../CodeGen/X86/cfi-inserter-check-order.ll   |  1 +
 .../X86/cfi-inserter-noreturnblock.mir        |  1 +
 .../cfi-inserter-verify-inconsistent-csr.mir  |  1 +
 .../cfi-inserter-verify-inconsistent-loc.mir  |  1 +
 ...fi-inserter-verify-inconsistent-offset.mir |  1 +
 ...-inserter-verify-inconsistent-register.mir |  1 +
 llvm/test/CodeGen/X86/cfi-xmm.ll              | 16 ++++
 llvm/test/CodeGen/X86/cfi.ll                  |  1 +
 15 files changed, 234 insertions(+), 36 deletions(-)

diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
index 1b7cf85f16579..1cc862a40b9fe 100644
--- a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
 ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=none -o - | FileCheck --check-prefix=SECTIONS_NOFP_CFI %s
 ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=obj --frame-pointer=all -o - | llvm-dwarfdump --eh-frame  - | FileCheck --check-prefix=EH_FRAME %s
diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
index 4f80f4f87dd0d..43b394721b5c9 100644
--- a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
+++ b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -run-pass=prologepilog 2>&1 | FileCheck %s
 --- |
   define i64 @_Z3foob(i1 zeroext %cond) #0 {
@@ -8,11 +9,6 @@
 ---
 # If the epilogue bb.1 is a return block, no .cfi_restore is
 # needed in it.
-# CHECK:    bb.1:
-# CHECK-NOT:  CFI_INSTRUCTION restore
-# CHECK:      RET 0
-# CHECK:    bb.2:
-# CHECK:      RET 0
 name:            _Z3foob
 alignment:       16
 tracksRegLiveness: true
@@ -27,13 +23,60 @@ frameInfo:
     - point:           '%bb.1'
 machineFunctionInfo: {}
 body:             |
+  ; CHECK-LABEL: name: _Z3foob
+  ; CHECK: bb.0:
+  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
+  ; CHECK-NEXT:   liveins: $edi, $rbx, $r12, $r13, $r14, $r15
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+  ; CHECK-NEXT:   JCC_1 %bb.2, 4, implicit killed $eflags
+  ; CHECK-NEXT:   JMP_1 %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1:
+  ; CHECK-NEXT:   liveins: $r15, $r14, $r13, $r12, $rbx
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $rbp, -16
+  ; CHECK-NEXT:   $rbp = frame-setup MOV64rr $rsp
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_register $rbp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r13, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbx, -56
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r12, -48
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r13, -40
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r14, -32
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r15, -24
+  ; CHECK-NEXT:   renamable $rbx = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r14 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r15 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r12 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r13 = IMPLICIT_DEF
+  ; CHECK-NEXT:   dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+  ; CHECK-NEXT:   $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r13 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
+  ; CHECK-NEXT:   RET 0, killed $rax
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2:
+  ; CHECK-NEXT:   liveins: $rbx, $r12, $r13, $r14, $r15
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+  ; CHECK-NEXT:   RET 0, killed $rax
   bb.0:
     liveins: $edi
-  
+
     TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
     JCC_1 %bb.2, 4, implicit killed $eflags
     JMP_1 %bb.1
-  
+
   bb.1:
     renamable $rbx = IMPLICIT_DEF
     renamable $r14 = IMPLICIT_DEF
@@ -42,7 +85,7 @@ body:             |
     renamable $r13 = IMPLICIT_DEF
     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
     RET 0, killed $rax
-  
+
   bb.2:
     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
     RET 0, killed $rax
diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
index 38c081c94ab91..243d800200c29 100644
--- a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
+++ b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -run-pass=prologepilog 2>&1 | FileCheck %s
 --- |
   declare dso_local void @_Z3goov()
@@ -10,16 +11,6 @@
 # If the epilogue bb.1.if.then is not a return block, .cfi_restore is
 # needed in it, otherwise bb.2.return will see different outgoing CFI
 # information from its predecessors.
-# CHECK:    bb.1:
-# CHECK:      CFI_INSTRUCTION restore $rbx
-# CHECK-NEXT: CFI_INSTRUCTION restore $r12
-# CHECK-NEXT: CFI_INSTRUCTION restore $r13
-# CHECK-NEXT: CFI_INSTRUCTION restore $r14
-# CHECK-NEXT: CFI_INSTRUCTION restore $r15
-# CHECK-NEXT: CFI_INSTRUCTION restore $rbp
-# CHECK-NOT:  RET 0
-# CHECK:    bb.2:
-# CHECK:      RET 0
 name:            _Z3foob
 alignment:       16
 tracksRegLiveness: true
@@ -34,20 +25,72 @@ frameInfo:
     - point:           '%bb.1'
 machineFunctionInfo: {}
 body:             |
+  ; CHECK-LABEL: name: _Z3foob
+  ; CHECK: bb.0:
+  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
+  ; CHECK-NEXT:   liveins: $edi, $rbx, $r12, $r13, $r14, $r15
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+  ; CHECK-NEXT:   JCC_1 %bb.2, 4, implicit killed $eflags
+  ; CHECK-NEXT:   JMP_1 %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT:   liveins: $r15, $r14, $r13, $r12, $rbx
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $rbp, -16
+  ; CHECK-NEXT:   $rbp = frame-setup MOV64rr $rsp
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_register $rbp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r13, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbx, -56
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r12, -48
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r13, -40
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r14, -32
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r15, -24
+  ; CHECK-NEXT:   renamable $rbx = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r14 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r15 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r12 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r13 = IMPLICIT_DEF
+  ; CHECK-NEXT:   $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r13 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $rbx
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r12
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r13
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r14
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r15
+  ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION restore $rbp
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2:
+  ; CHECK-NEXT:   liveins: $rbx, $r12, $r13, $r14, $r15
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+  ; CHECK-NEXT:   RET 0, killed $rax
   bb.0:
     liveins: $edi
-  
+
     TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
     JCC_1 %bb.2, 4, implicit killed $eflags
     JMP_1 %bb.1
-  
+
   bb.1:
     renamable $rbx = IMPLICIT_DEF
     renamable $r14 = IMPLICIT_DEF
     renamable $r15 = IMPLICIT_DEF
     renamable $r12 = IMPLICIT_DEF
     renamable $r13 = IMPLICIT_DEF
-  
+
   bb.2:
     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
     RET 0, killed $rax
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll b/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
index 5fda94694ff43..d30711c234689 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ;; This test checks if CFI instructions for all callee saved registers are emitted
 ;; correctly with basic block sections.
 ; RUN: llc  %s -mtriple=x86_64 -filetype=asm --basic-block-sections=all --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
index e85126d649be4..193b0343fdbe1 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CFI inserter inserts .cfi_offset/.cfi_register/.cfi_rel_offset
@@ -8,11 +9,6 @@
   }
 ...
 ---
-# CHECK:      bb.3:
-# CHECK:      CFI_INSTRUCTION offset $rbp, -16
-# CHECK-NEXT: CFI_INSTRUCTION offset $r12, -24
-# CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx
-# CHECK-NEXT: CFI_INSTRUCTION offset $r14, -40
 name:            foo
 alignment:       16
 tracksRegLiveness: true
@@ -33,10 +29,78 @@ fixedStack:
   - { id: 4, type: spill-slot, offset: -24, size: 8, alignment: 8 }
 machineFunctionInfo: {}
 body:             |
+  ; CHECK-LABEL: name: foo
+  ; CHECK: bb.0:
+  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
+  ; CHECK-NEXT:   liveins: $edi, $r12, $r13, $r14
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa_offset 16
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbp, -16
+  ; CHECK-NEXT:   $rbp = frame-setup MOV64rr $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa_register $rbp
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $rcx = frame-setup COPY $r13
+  ; CHECK-NEXT:   frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r12, -24
+  ; CHECK-NEXT:   CFI_INSTRUCTION register $r13, $rcx
+  ; CHECK-NEXT:   CFI_INSTRUCTION rel_offset $r14, -24
+  ; CHECK-NEXT:   TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+  ; CHECK-NEXT:   JCC_1 %bb.2, 4, implicit killed $eflags
+  ; CHECK-NEXT:   JMP_1 %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1:
+  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   renamable $r12 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r13 = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $r14 = IMPLICIT_DEF
+  ; CHECK-NEXT:   JMP_1 %bb.3
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2:
+  ; CHECK-NEXT:   liveins: $rcx
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+  ; CHECK-NEXT:   $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r13 = frame-destroy COPY $rcx
+  ; CHECK-NEXT:   $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $rbp
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r12
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r13
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r14
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $rsp, 8
+  ; CHECK-NEXT:   RET 0, killed $rax
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.3:
+  ; CHECK-NEXT:   successors: %bb.4(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $rbp, 16
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r12, -24
+  ; CHECK-NEXT:   CFI_INSTRUCTION register $r13, $rcx
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $r14, -40
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbp, -16
+  ; CHECK-NEXT:   renamable $rdi = IMPLICIT_DEF
+  ; CHECK-NEXT:   renamable $rsi = IMPLICIT_DEF
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.4:
+  ; CHECK-NEXT:   liveins: $rcx
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+  ; CHECK-NEXT:   $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $r13 = frame-destroy COPY $rcx
+  ; CHECK-NEXT:   $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $rbp
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r12
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r13
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $r14
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $rsp, 8
+  ; CHECK-NEXT:   RET 0, killed $rax
   bb.0:
     successors: %bb.2(0x40000000), %bb.1(0x40000000)
     liveins: $edi, $r12, $r13, $r14
-  
+
     frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
     CFI_INSTRUCTION def_cfa_offset 16
     CFI_INSTRUCTION offset $rbp, -16
@@ -51,15 +115,15 @@ body:             |
     TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
     JCC_1 %bb.2, 4, implicit killed $eflags
     JMP_1 %bb.1
-  
+
   bb.1:
     successors: %bb.3(0x80000000)
-  
+
     renamable $r12 = IMPLICIT_DEF
     renamable $r13 = IMPLICIT_DEF
     renamable $r14 = IMPLICIT_DEF
     JMP_1 %bb.3
-  
+
   bb.2:
     liveins: $rcx
     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
@@ -73,13 +137,13 @@ body:             |
     CFI_INSTRUCTION restore $r14
     CFI_INSTRUCTION def_cfa $rsp, 8
     RET 0, killed $rax
-  
+
   bb.3:
     successors: %bb.4(0x80000000)
-  
+
     renamable $rdi = IMPLICIT_DEF
     renamable $rsi = IMPLICIT_DEF
-  
+
   bb.4:
     liveins: $rcx
     dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
index b17c9a67abb18..abcb0743aa21b 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CFI inserter inserts .cfi_restore properly for
@@ -8,11 +9,32 @@
   }
 ...
 ---
-# CHECK:      bb.3:
-# CHECK:      CFI_INSTRUCTION restore $rbx
-# CHECK-NEXT: CFI_INSTRUCTION restore $rbp
 name:            foo
 body:             |
+  ; CHECK-LABEL: name: foo
+  ; CHECK: bb.0:
+  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+  ; CHECK-NEXT:   JCC_1 %bb.2, 5, implicit killed $eflags
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1:
+  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   JMP_1 %bb.3
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2:
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa_offset 16
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbp, -16
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa_register $rbp
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbx, -24
+  ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $rsp, 8
+  ; CHECK-NEXT:   RET 0, $rax
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.3:
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $rbx
+  ; CHECK-NEXT:   CFI_INSTRUCTION restore $rbp
+  ; CHECK-NEXT:   RET 0, $rax
   bb.0:
     TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
     JCC_1 %bb.2, 5, implicit killed $eflags
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
index ffd1b21370aa3..250063b6c0dc2 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs -run-pass=cfi-instr-inserter
 
 --- |
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
index d2f47c2d66b5f..e350d994a3677 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc -mtriple=x86_64-- -O2 -enable-machine-outliner -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s
 
 ; REQUIRES: asserts
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir b/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
index a1b3a68c85fc3..e8642b564e39b 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter
 
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
index 63957ae5229fa..e4a47e009f754 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CFI verifier finds inconsistent csr saved set between bb.end and
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
index 8211f8940d27a..444c14ef6a369 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: not --crash llc -o - %s -mtriple=x86_64-- \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CSR being saved in multiple locations can be caught by
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
index fd726b882b561..4d1ea3f5d1028 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CFI verifier finds inconsistent offset between bb.end and one of
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
index 30344edc259ce..3e7f0b790058f 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
 # RUN:     -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
 # Test that CFI verifier finds inconsistent register between bb.end and one of
diff --git a/llvm/test/CodeGen/X86/cfi-xmm.ll b/llvm/test/CodeGen/X86/cfi-xmm.ll
index 76c59ffdf9422..5cf4fb07acffe 100644
--- a/llvm/test/CodeGen/X86/cfi-xmm.ll
+++ b/llvm/test/CodeGen/X86/cfi-xmm.ll
@@ -1,7 +1,23 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
 ; RUN: llc < %s -mtriple x86_64-w64-windows-gnu -exception-model=dwarf -stop-after=prologepilog | FileCheck %s --check-prefix=PEI
 
 define void @_Z1fv() {
+  ; PEI-LABEL: name: _Z1fv
+  ; PEI: bb.0.entry:
+  ; PEI-NEXT:   liveins: $xmm15, $xmm10
+  ; PEI-NEXT: {{  $}}
+  ; PEI-NEXT:   $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags
+  ; PEI-NEXT:   frame-setup MOVAPSmr $rsp, 1, $noreg, 16, $noreg, killed $xmm15 :: (store (s128) into %fixed-stack.1)
+  ; PEI-NEXT:   frame-setup MOVAPSmr $rsp, 1, $noreg, 0, $noreg, killed $xmm10 :: (store (s128) into %fixed-stack.0)
+  ; PEI-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 48
+  ; PEI-NEXT:   CFI_INSTRUCTION offset $xmm10, -48
+  ; PEI-NEXT:   CFI_INSTRUCTION offset $xmm15, -32
+  ; PEI-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $xmm10, 12 /* clobber */, implicit-def dead early-clobber $xmm15, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
+  ; PEI-NEXT:   $xmm10 = MOVAPSrm $rsp, 1, $noreg, 0, $noreg :: (load (s128) from %fixed-stack.0)
+  ; PEI-NEXT:   $xmm15 = MOVAPSrm $rsp, 1, $noreg, 16, $noreg :: (load (s128) from %fixed-stack.1)
+  ; PEI-NEXT:   $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags
+  ; PEI-NEXT:   RET 0
 entry:
   tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
   ret void
diff --git a/llvm/test/CodeGen/X86/cfi.ll b/llvm/test/CodeGen/X86/cfi.ll
index 5a09577636260..9e9ea4a23c84b 100644
--- a/llvm/test/CodeGen/X86/cfi.ll
+++ b/llvm/test/CodeGen/X86/cfi.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck --check-prefix=STATIC %s
 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic | FileCheck --check-prefix=PIC %s
 

>From 24988485e3c062409cad6e6ac0c3802ed70c0be5 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Thu, 22 Jan 2026 10:36:36 -0800
Subject: [PATCH 2/3] Fixed CI failures.

---
 .../cfi-inserter-callee-save-register-2.mir   |  2 +-
 llvm/test/CodeGen/X86/cfi-xmm-asm.ll          | 22 +++++++++++++++
 llvm/test/CodeGen/X86/cfi-xmm.ll              | 28 -------------------
 3 files changed, 23 insertions(+), 29 deletions(-)
 create mode 100644 llvm/test/CodeGen/X86/cfi-xmm-asm.ll

diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
index 193b0343fdbe1..a08a3166a1285 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
@@ -76,10 +76,10 @@ body:             |
   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $rbp, 16
+  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbp, -16
   ; CHECK-NEXT:   CFI_INSTRUCTION offset $r12, -24
   ; CHECK-NEXT:   CFI_INSTRUCTION register $r13, $rcx
   ; CHECK-NEXT:   CFI_INSTRUCTION offset $r14, -40
-  ; CHECK-NEXT:   CFI_INSTRUCTION offset $rbp, -16
   ; CHECK-NEXT:   renamable $rdi = IMPLICIT_DEF
   ; CHECK-NEXT:   renamable $rsi = IMPLICIT_DEF
   ; CHECK-NEXT: {{  $}}
diff --git a/llvm/test/CodeGen/X86/cfi-xmm-asm.ll b/llvm/test/CodeGen/X86/cfi-xmm-asm.ll
new file mode 100644
index 0000000000000..530c522a318bc
--- /dev/null
+++ b/llvm/test/CodeGen/X86/cfi-xmm-asm.ll
@@ -0,0 +1,22 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
+
+define void @_Z1fv() {
+; CHECK-LABEL: _Z1fv:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    subq $40, %rsp
+; CHECK-NEXT:    movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
+; CHECK-NEXT:    movaps %xmm10, (%rsp) # 16-byte Spill
+; CHECK-NEXT:    .cfi_def_cfa_offset 48
+; CHECK-NEXT:    .cfi_offset %xmm10, -48
+; CHECK-NEXT:    .cfi_offset %xmm15, -32
+; CHECK-NEXT:    #APP
+; CHECK-NEXT:    #NO_APP
+; CHECK-NEXT:    movaps (%rsp), %xmm10 # 16-byte Reload
+; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
+; CHECK-NEXT:    addq $40, %rsp
+; CHECK-NEXT:    retq
+entry:
+  tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
+  ret void
+}
diff --git a/llvm/test/CodeGen/X86/cfi-xmm.ll b/llvm/test/CodeGen/X86/cfi-xmm.ll
index 5cf4fb07acffe..fa972d04f5cef 100644
--- a/llvm/test/CodeGen/X86/cfi-xmm.ll
+++ b/llvm/test/CodeGen/X86/cfi-xmm.ll
@@ -1,5 +1,4 @@
 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
-; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
 ; RUN: llc < %s -mtriple x86_64-w64-windows-gnu -exception-model=dwarf -stop-after=prologepilog | FileCheck %s --check-prefix=PEI
 
 define void @_Z1fv() {
@@ -22,30 +21,3 @@ entry:
   tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
   ret void
 }
-
-; CHECK-LABEL: _Z1fv:
-; CHECK:   .cfi_startproc
-; CHECK:   subq    $40, %rsp
-; CHECK:   movaps  %xmm15, 16(%rsp)
-; CHECK:   movaps  %xmm10, (%rsp)
-; CHECK:   .cfi_def_cfa_offset 48
-; CHECK:   .cfi_offset %xmm10, -48
-; CHECK:   .cfi_offset %xmm15, -32
-; CHECK:   movaps  (%rsp), %xmm10
-; CHECK:   movaps  16(%rsp), %xmm15
-; CHECK:   addq    $40, %rsp
-; CHECK:   retq
-; CHECK:   .cfi_endproc
-
-; PEI-LABEL: name: _Z1fv
-; PEI:         $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags
-; PEI-NEXT:    frame-setup MOVAPSmr $rsp, 1, $noreg, 16, $noreg, killed $xmm15 :: (store (s128) into %fixed-stack.1)
-; PEI-NEXT:    frame-setup MOVAPSmr $rsp, 1, $noreg, 0, $noreg, killed $xmm10 :: (store (s128) into %fixed-stack.0)
-; PEI-NEXT:    frame-setup CFI_INSTRUCTION def_cfa_offset 48
-; PEI-NEXT:    {{^ +}}CFI_INSTRUCTION offset $xmm10, -48
-; PEI-NEXT:    {{^ +}}CFI_INSTRUCTION offset $xmm15, -32
-; PEI-NEXT:    INLINEASM {{.*}}
-; PEI-NEXT:    $xmm10 = MOVAPSrm $rsp, 1, $noreg, 0, $noreg :: (load (s128) from %fixed-stack.0)
-; PEI-NEXT:    $xmm15 = MOVAPSrm $rsp, 1, $noreg, 16, $noreg :: (load (s128) from %fixed-stack.1)
-; PEI-NEXT:    $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags
-; PEI-NEXT:    RET 0

>From 6531d211492c1513271e37eafcf37e17382a3b40 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Fri, 23 Jan 2026 10:16:43 -0800
Subject: [PATCH 3/3] removed banners from tests where checks can not be
 auto-generated. split cfi-basic-block-sections test so that one part can be
 auto-generated.

---
 .../CodeGen/X86/cfi-basic-block-sections-1.ll | 86 ++++++-------------
 .../X86/cfi-basic-block-sections-eh-frame.ll  | 40 +++++++++
 .../X86/cfi-inserter-cfg-with-merge.mir       |  1 -
 .../CodeGen/X86/cfi-inserter-check-order.ll   |  1 -
 4 files changed, 68 insertions(+), 60 deletions(-)
 create mode 100644 llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll

diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
index 1cc862a40b9fe..a63de08341a6d 100644
--- a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
@@ -1,7 +1,6 @@
-; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
 ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=none -o - | FileCheck --check-prefix=SECTIONS_NOFP_CFI %s
-; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=obj --frame-pointer=all -o - | llvm-dwarfdump --eh-frame  - | FileCheck --check-prefix=EH_FRAME %s
 
 ;; void f1();
 ;; void f3(bool b) {
@@ -10,64 +9,35 @@
 ;; }
 
 
-; SECTIONS_CFI: _Z2f3b:
-; SECTIONS_CFI: .cfi_startproc
-; SECTIONS_CFI: .cfi_def_cfa_offset 16
-; SECTIONS_CFI: .cfi_offset %rbp, -16
-; SECTIONS_CFI: .cfi_def_cfa_register %rbp
-; SECTIONS_CFI: .cfi_endproc
-
-; SECTIONS_CFI: _Z2f3b.__part.1:
-; SECTIONS_CFI-NEXT: .cfi_startproc
-; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
-; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
-; SECTIONS_CFI: .cfi_endproc
-
-; SECTIONS_CFI: _Z2f3b.__part.2:
-; SECTIONS_CFI-NEXT: .cfi_startproc
-; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
-; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
-; SECTIONS_CFI: .cfi_def_cfa
-; SECTIONS_CFI: .cfi_endproc
-
-
-; SECTIONS_NOFP_CFI: _Z2f3b:
-; SECTIONS_NOFP_CFI: .cfi_startproc
-; SECTIONS_NOFP_CFI: .cfi_def_cfa_offset 16
-; SECTIONS_NOFP_CFI: .cfi_endproc
-
-; SECTIONS_NOFP_CFI: _Z2f3b.__part.1:
-; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
-; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
-; SECTIONS_NOFP_CFI: .cfi_endproc
-
-; SECTIONS_NOFP_CFI: _Z2f3b.__part.2:
-; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
-; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
-; SECTIONS_NOFP_CFI: .cfi_endproc
-
-
-;; There must be 1 CIE and 3 FDEs.
-
-; EH_FRAME: CIE
-; EH_FRAME: DW_CFA_def_cfa
-; EH_FRAME: DW_CFA_offset
-
-; EH_FRAME: FDE cie=
-; EH_FRAME: DW_CFA_def_cfa_offset
-; EH_FRAME: DW_CFA_offset
-; EH_FRAME: DW_CFA_def_cfa_register
-
-; EH_FRAME: FDE cie=
-; EH_FRAME: DW_CFA_def_cfa
-; EH_FRAME: DW_CFA_offset
-
-; EH_FRAME: FDE cie=
-; EH_FRAME: DW_CFA_def_cfa
-; EH_FRAME: DW_CFA_offset
-
 ; Function Attrs: noinline optnone uwtable
 define dso_local void @_Z2f3b(i1 zeroext %b) {
+; SECTIONS_CFI-LABEL: _Z2f3b:
+; SECTIONS_CFI:       # %bb.0: # %entry
+; SECTIONS_CFI-NEXT:    pushq %rbp
+; SECTIONS_CFI-NEXT:    .cfi_def_cfa_offset 16
+; SECTIONS_CFI-NEXT:    .cfi_offset %rbp, -16
+; SECTIONS_CFI-NEXT:    movq %rsp, %rbp
+; SECTIONS_CFI-NEXT:    .cfi_def_cfa_register %rbp
+; SECTIONS_CFI-NEXT:    subq $16, %rsp
+; SECTIONS_CFI-NEXT:    movb %dil, %al
+; SECTIONS_CFI-NEXT:    andb $1, %al
+; SECTIONS_CFI-NEXT:    movb %al, -1(%rbp)
+; SECTIONS_CFI-NEXT:    testb $1, -1(%rbp)
+; SECTIONS_CFI-NEXT:    je _Z2f3b.__part.2
+; SECTIONS_CFI-NEXT:    jmp _Z2f3b.__part.1
+; SECTIONS_CFI-NEXT:  .LBB_END0_0:
+;
+; SECTIONS_NOFP_CFI-LABEL: _Z2f3b:
+; SECTIONS_NOFP_CFI:       # %bb.0: # %entry
+; SECTIONS_NOFP_CFI-NEXT:    pushq %rax
+; SECTIONS_NOFP_CFI-NEXT:    .cfi_def_cfa_offset 16
+; SECTIONS_NOFP_CFI-NEXT:    movb %dil, %al
+; SECTIONS_NOFP_CFI-NEXT:    andb $1, %al
+; SECTIONS_NOFP_CFI-NEXT:    movb %al, {{[0-9]+}}(%rsp)
+; SECTIONS_NOFP_CFI-NEXT:    testb $1, {{[0-9]+}}(%rsp)
+; SECTIONS_NOFP_CFI-NEXT:    je _Z2f3b.__part.2
+; SECTIONS_NOFP_CFI-NEXT:    jmp _Z2f3b.__part.1
+; SECTIONS_NOFP_CFI-NEXT:  .LBB_END0_0:
 entry:
   %b.addr = alloca i8, align 1
   %frombool = zext i1 %b to i8
diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll
new file mode 100644
index 0000000000000..d79cb25af02fb
--- /dev/null
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll
@@ -0,0 +1,40 @@
+; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=obj --frame-pointer=all -o - | llvm-dwarfdump --eh-frame  - | FileCheck --check-prefix=EH_FRAME %s
+
+; Function Attrs: noinline optnone uwtable
+define dso_local void @_Z2f3b(i1 zeroext %b) {
+;; There must be 1 CIE and 3 FDEs.
+
+; EH_FRAME: CIE
+; EH_FRAME: DW_CFA_def_cfa
+; EH_FRAME: DW_CFA_offset
+
+; EH_FRAME: FDE cie=
+; EH_FRAME: DW_CFA_def_cfa_offset
+; EH_FRAME: DW_CFA_offset
+; EH_FRAME: DW_CFA_def_cfa_register
+
+; EH_FRAME: FDE cie=
+; EH_FRAME: DW_CFA_def_cfa
+; EH_FRAME: DW_CFA_offset
+
+; EH_FRAME: FDE cie=
+; EH_FRAME: DW_CFA_def_cfa
+; EH_FRAME: DW_CFA_offset
+
+entry:
+  %b.addr = alloca i8, align 1
+  %frombool = zext i1 %b to i8
+  store i8 %frombool, ptr %b.addr, align 1
+  %0 = load i8, ptr %b.addr, align 1
+  %tobool = trunc i8 %0 to i1
+  br i1 %tobool, label %if.then, label %if.end
+
+if.then:                                          ; preds = %entry
+  call void @_Z2f1v()
+  br label %if.end
+
+if.end:                                           ; preds = %if.then, %entry
+  ret void
+}
+
+declare dso_local void @_Z2f1v()
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
index 250063b6c0dc2..ffd1b21370aa3 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
@@ -1,4 +1,3 @@
-# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 # RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs -run-pass=cfi-instr-inserter
 
 --- |
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
index e350d994a3677..d2f47c2d66b5f 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
@@ -1,4 +1,3 @@
-; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
 ; RUN: llc -mtriple=x86_64-- -O2 -enable-machine-outliner -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s
 
 ; REQUIRES: asserts



More information about the llvm-commits mailing list