[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / machinelicm-undef-use.mir
blobbdd08af1c7e160483b686497ceab91fb7d8f16de
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=early-machinelicm %s -o - | FileCheck %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -passes=early-machinelicm %s -o - | FileCheck %s
5 # Issue #100115: test that MachineLICM does not assert on the undef use operand
6 # of the REG_SEQUENCE instruction.
7 ---
8 name: test_undef_use
9 tracksRegLiveness: true
10 body: |
11   ; CHECK-LABEL: name: test_undef_use
12   ; CHECK: bb.0:
13   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
14   ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1
15   ; CHECK-NEXT: {{  $}}
16   ; CHECK-NEXT:   [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
17   ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
18   ; CHECK-NEXT: {{  $}}
19   ; CHECK-NEXT: bb.1:
20   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
21   ; CHECK-NEXT: {{  $}}
22   ; CHECK-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE undef %3:vgpr_32, %subreg.sub0, undef [[DEF]], %subreg.sub1
23   ; CHECK-NEXT:   S_BRANCH %bb.3
24   ; CHECK-NEXT: {{  $}}
25   ; CHECK-NEXT: bb.2:
26   ; CHECK-NEXT:   successors: %bb.5(0x04000000), %bb.1(0x7c000000)
27   ; CHECK-NEXT: {{  $}}
28   ; CHECK-NEXT:   $vcc_lo = COPY undef [[DEF1]]
29   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.5, implicit $vcc_lo
30   ; CHECK-NEXT:   S_BRANCH %bb.1
31   ; CHECK-NEXT: {{  $}}
32   ; CHECK-NEXT: bb.3:
33   ; CHECK-NEXT:   successors: %bb.4(0x04000000), %bb.3(0x7c000000)
34   ; CHECK-NEXT: {{  $}}
35   ; CHECK-NEXT:   S_CBRANCH_SCC1 %bb.3, implicit undef $scc
36   ; CHECK-NEXT:   S_BRANCH %bb.4
37   ; CHECK-NEXT: {{  $}}
38   ; CHECK-NEXT: bb.4:
39   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
40   ; CHECK-NEXT: {{  $}}
41   ; CHECK-NEXT:   SI_LOOP undef [[DEF1]], %bb.1, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
42   ; CHECK-NEXT:   S_BRANCH %bb.2
43   ; CHECK-NEXT: {{  $}}
44   ; CHECK-NEXT: bb.5:
45   ; CHECK-NEXT:   S_ENDPGM 0
46   bb.0:
47     successors: %bb.1(0x80000000)
48     liveins: $vgpr0, $vgpr1
50     %0:vgpr_32 = IMPLICIT_DEF
51     %1:sreg_32 = IMPLICIT_DEF
53   bb.1:
54     successors: %bb.3(0x80000000)
56     %2:vreg_64 = REG_SEQUENCE undef %3:vgpr_32, %subreg.sub0, undef %0, %subreg.sub1
57     S_BRANCH %bb.3
59   bb.2:
60     successors: %bb.5(0x04000000), %bb.1(0x7c000000)
62     $vcc_lo = COPY undef %1
63     S_CBRANCH_VCCNZ %bb.5, implicit $vcc
64     S_BRANCH %bb.1
66   bb.3:
67     successors: %bb.4(0x04000000), %bb.3(0x7c000000)
69     S_CBRANCH_SCC1 %bb.3, implicit undef $scc
70     S_BRANCH %bb.4
72   bb.4:
73     successors: %bb.2(0x40000000), %bb.1(0x40000000)
75     SI_LOOP undef %1, %bb.1, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
76     S_BRANCH %bb.2
78   bb.5:
79     S_ENDPGM 0
80 ...