Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / implicit-null-chk-reg-rewrite.mir
blobd5afd3df0e73d63de113d13eae103b9f7b53d128
1 # RUN: llc -mtriple=x86_64 -run-pass=implicit-null-checks %s -o - | FileCheck %s
2 --- |
4   define i32 @reg-rewrite(ptr %x) {
5   entry:
6     br i1 undef, label %is_null, label %not_null, !make.implicit !0
8   is_null:
9     ret i32 42
11   not_null:
12     ret i32 100
13   }
15   !0 = !{}
17 ...
18 ---
19 # Check that the TEST instruction is replaced with 
20 # FAULTING_OP only if there are no instructions
21 # between the TEST and conditional jump
22 # that clobber the register used in TEST.
23 name:            reg-rewrite
25 alignment:       16
26 tracksRegLiveness: true
27 liveins:
28   - { reg: '$rdi' }
30 body:             |
31   bb.0.entry:
32     liveins: $rdi
34     TEST64rr $rdi, $rdi, implicit-def $eflags
35     ; CHECK-LABEL: bb.0.entry
36     ; CHECK-NOT: FAULTING_OP
37     renamable $rdi = MOV64ri 5000
38     JCC_1 %bb.2, 4, implicit $eflags
40   bb.1.not_null:
41     liveins: $rdi, $rsi
42     
43     $rax = MOV64rm renamable $rdi, 1, $noreg, 4, $noreg
44     RET64 $eax
46   bb.2.is_null:
47     $eax = MOV32ri 200
48     RET64 $eax
49 ...