xref: /llvm-project/llvm/test/CodeGen/RISCV/zcmp-prolog-epilog-crash.mir (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1fdef7952SGarvit Gupta# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2fdef7952SGarvit Gupta# REQUIRES: asserts
3fdef7952SGarvit Gupta# RUN: llc  %s -o - -mtriple=riscv32 -mattr=+zcmp -target-abi ilp32 -run-pass=prologepilog \
4fdef7952SGarvit Gupta# RUN:   -simplify-mir -verify-machineinstrs | FileCheck %s
5fdef7952SGarvit Gupta
6fdef7952SGarvit Gupta--- |
7fdef7952SGarvit Gupta  define hidden void @f(fp128 %a) local_unnamed_addr #0 {
8fdef7952SGarvit Gupta  entry:
9fdef7952SGarvit Gupta    %0 = bitcast fp128 %a to i128
10fdef7952SGarvit Gupta    %and.i = lshr i128 %0, 112
11fdef7952SGarvit Gupta    %1 = trunc i128 %and.i to i32
12fdef7952SGarvit Gupta    %2 = and i32 %1, 32767
13fdef7952SGarvit Gupta    %or.i = or i128 poison, 5192296858534827628530496329220096
14fdef7952SGarvit Gupta    br label %if.end.i
15fdef7952SGarvit Gupta
16fdef7952SGarvit Gupta  if.end.i:                                         ; preds = %entry
17fdef7952SGarvit Gupta    br i1 poison, label %exit, label %if.then12.i
18fdef7952SGarvit Gupta
19fdef7952SGarvit Gupta  if.then12.i:                                      ; preds = %if.end.i
20fdef7952SGarvit Gupta    %sub13.i = sub nuw nsw i32 16495, %2
21fdef7952SGarvit Gupta    %sh_prom.i = zext i32 %sub13.i to i128
22fdef7952SGarvit Gupta    %shr14.i = lshr i128 %or.i, %sh_prom.i
23fdef7952SGarvit Gupta    %conv15.i = trunc i128 %shr14.i to i32
24fdef7952SGarvit Gupta    br label %exit
25fdef7952SGarvit Gupta
26fdef7952SGarvit Gupta  exit:                                             ; preds = %if.then12.i, %if.end.i
27fdef7952SGarvit Gupta    %retval.0.i = phi i32 [ %conv15.i, %if.then12.i ], [ -1, %if.end.i ]
28fdef7952SGarvit Gupta    ret void
29fdef7952SGarvit Gupta  }
30fdef7952SGarvit Gupta...
31fdef7952SGarvit Gupta---
32fdef7952SGarvit Guptaname:            f
33fdef7952SGarvit Guptaalignment:       2
34fdef7952SGarvit GuptatracksRegLiveness: true
35fdef7952SGarvit GuptatracksDebugUserValues: true
36fdef7952SGarvit Guptaliveins:
37fdef7952SGarvit Gupta  - { reg: '$x10' }
38fdef7952SGarvit GuptaframeInfo:
39fdef7952SGarvit Gupta  maxAlignment:    1
40fdef7952SGarvit Gupta  localFrameSize:  32
41fdef7952SGarvit Gupta  savePoint:       '%bb.2'
42fdef7952SGarvit Gupta  restorePoint:    '%bb.2'
43fdef7952SGarvit Guptastack:
44fdef7952SGarvit Gupta  - { id: 0, size: 32, alignment: 1, local-offset: -32 }
45fdef7952SGarvit GuptamachineFunctionInfo:
46fdef7952SGarvit Gupta  varArgsFrameIndex: 0
47fdef7952SGarvit Gupta  varArgsSaveSize: 0
48fdef7952SGarvit Guptabody:             |
49fdef7952SGarvit Gupta  ; CHECK-LABEL: name: f
50fdef7952SGarvit Gupta  ; CHECK: bb.0.entry:
51fdef7952SGarvit Gupta  ; CHECK-NEXT:   liveins: $x10
52fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
53fdef7952SGarvit Gupta  ; CHECK-NEXT:   renamable $x10 = ADDI $x0, -1
54fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
55fdef7952SGarvit Gupta  ; CHECK-NEXT: bb.1.if.end.i:
56fdef7952SGarvit Gupta  ; CHECK-NEXT:   liveins: $x10
57fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
58fdef7952SGarvit Gupta  ; CHECK-NEXT:   BNE $x0, $x0, %bb.3
59fdef7952SGarvit Gupta  ; CHECK-NEXT:   PseudoBR %bb.2
60fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
61fdef7952SGarvit Gupta  ; CHECK-NEXT: bb.2.if.then12.i:
62fdef7952SGarvit Gupta  ; CHECK-NEXT:   liveins: $x10
63fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
64fdef7952SGarvit Gupta  ; CHECK-NEXT:   $x2 = frame-setup ADDI $x2, -32
65fdef7952SGarvit Gupta  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 32
66fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 31 :: (store (s8) into %stack.0 + 31)
67fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 30 :: (store (s8) into %stack.0 + 30)
68fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 29 :: (store (s8) into %stack.0 + 29)
69fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 28 :: (store (s8) into %stack.0 + 28)
70fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 27 :: (store (s8) into %stack.0 + 27)
71fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 26 :: (store (s8) into %stack.0 + 26)
72fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 25 :: (store (s8) into %stack.0 + 25)
73fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 24 :: (store (s8) into %stack.0 + 24)
74fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 23 :: (store (s8) into %stack.0 + 23)
75fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 22 :: (store (s8) into %stack.0 + 22)
76fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 21 :: (store (s8) into %stack.0 + 21)
77fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 20 :: (store (s8) into %stack.0 + 20)
78fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 19 :: (store (s8) into %stack.0 + 19)
79fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 18 :: (store (s8) into %stack.0 + 18)
80fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 17 :: (store (s8) into %stack.0 + 17)
81fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB $x0, $x2, 16 :: (store (s8) into %stack.0 + 16)
82fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x10, $x2, 0 :: (store (s8) into %stack.0)
83fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x10, $x2, 4 :: (store (s8) into %stack.0 + 4)
84fdef7952SGarvit Gupta  ; CHECK-NEXT:   renamable $x11 = SRLI renamable $x10, 24
85fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x11, $x2, 3 :: (store (s8) into %stack.0 + 3)
86fdef7952SGarvit Gupta  ; CHECK-NEXT:   renamable $x12 = SRLI renamable $x10, 16
87fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x12, $x2, 2 :: (store (s8) into %stack.0 + 2)
88fdef7952SGarvit Gupta  ; CHECK-NEXT:   renamable $x13 = SRLI renamable $x10, 8
89fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x13, $x2, 1 :: (store (s8) into %stack.0 + 1)
90fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x10, $x2, 8 :: (store (s8) into %stack.0 + 8)
91fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x11, $x2, 7 :: (store (s8) into %stack.0 + 7)
92fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x12, $x2, 6 :: (store (s8) into %stack.0 + 6)
93fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x13, $x2, 5 :: (store (s8) into %stack.0 + 5)
94fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB killed renamable $x10, $x2, 12 :: (store (s8) into %stack.0 + 12)
95fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x11, $x2, 11 :: (store (s8) into %stack.0 + 11)
96fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x12, $x2, 10 :: (store (s8) into %stack.0 + 10)
97fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB renamable $x13, $x2, 9 :: (store (s8) into %stack.0 + 9)
98fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB killed renamable $x11, $x2, 15 :: (store (s8) into %stack.0 + 15)
99fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB killed renamable $x12, $x2, 14 :: (store (s8) into %stack.0 + 14)
100fdef7952SGarvit Gupta  ; CHECK-NEXT:   SB killed renamable $x13, $x2, 13 :: (store (s8) into %stack.0 + 13)
101fdef7952SGarvit Gupta  ; CHECK-NEXT:   $x2 = frame-destroy ADDI $x2, 32
102*97982a8cSdlav-sc  ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION def_cfa_offset 0
103fdef7952SGarvit Gupta  ; CHECK-NEXT: {{  $}}
104fdef7952SGarvit Gupta  ; CHECK-NEXT: bb.3.exit:
105fdef7952SGarvit Gupta  ; CHECK-NEXT:   PseudoRET
106fdef7952SGarvit Gupta  bb.0.entry:
107fdef7952SGarvit Gupta    liveins: $x10
108fdef7952SGarvit Gupta
109fdef7952SGarvit Gupta    renamable $x10 = ADDI $x0, -1
110fdef7952SGarvit Gupta
111fdef7952SGarvit Gupta  bb.1.if.end.i:
112fdef7952SGarvit Gupta    liveins: $x10
113fdef7952SGarvit Gupta
114fdef7952SGarvit Gupta    BNE $x0, $x0, %bb.3
115fdef7952SGarvit Gupta    PseudoBR %bb.2
116fdef7952SGarvit Gupta
117fdef7952SGarvit Gupta  bb.2.if.then12.i:
118fdef7952SGarvit Gupta    liveins: $x10
119fdef7952SGarvit Gupta
120fdef7952SGarvit Gupta    SB $x0, %stack.0, 31 :: (store (s8) into %stack.0 + 31)
121fdef7952SGarvit Gupta    SB $x0, %stack.0, 30 :: (store (s8) into %stack.0 + 30)
122fdef7952SGarvit Gupta    SB $x0, %stack.0, 29 :: (store (s8) into %stack.0 + 29)
123fdef7952SGarvit Gupta    SB $x0, %stack.0, 28 :: (store (s8) into %stack.0 + 28)
124fdef7952SGarvit Gupta    SB $x0, %stack.0, 27 :: (store (s8) into %stack.0 + 27)
125fdef7952SGarvit Gupta    SB $x0, %stack.0, 26 :: (store (s8) into %stack.0 + 26)
126fdef7952SGarvit Gupta    SB $x0, %stack.0, 25 :: (store (s8) into %stack.0 + 25)
127fdef7952SGarvit Gupta    SB $x0, %stack.0, 24 :: (store (s8) into %stack.0 + 24)
128fdef7952SGarvit Gupta    SB $x0, %stack.0, 23 :: (store (s8) into %stack.0 + 23)
129fdef7952SGarvit Gupta    SB $x0, %stack.0, 22 :: (store (s8) into %stack.0 + 22)
130fdef7952SGarvit Gupta    SB $x0, %stack.0, 21 :: (store (s8) into %stack.0 + 21)
131fdef7952SGarvit Gupta    SB $x0, %stack.0, 20 :: (store (s8) into %stack.0 + 20)
132fdef7952SGarvit Gupta    SB $x0, %stack.0, 19 :: (store (s8) into %stack.0 + 19)
133fdef7952SGarvit Gupta    SB $x0, %stack.0, 18 :: (store (s8) into %stack.0 + 18)
134fdef7952SGarvit Gupta    SB $x0, %stack.0, 17 :: (store (s8) into %stack.0 + 17)
135fdef7952SGarvit Gupta    SB $x0, %stack.0, 16 :: (store (s8) into %stack.0 + 16)
136fdef7952SGarvit Gupta    SB renamable $x10, %stack.0, 0 :: (store (s8) into %stack.0)
137fdef7952SGarvit Gupta    SB renamable $x10, %stack.0, 4 :: (store (s8) into %stack.0 + 4)
138fdef7952SGarvit Gupta    renamable $x11 = SRLI renamable $x10, 24
139fdef7952SGarvit Gupta    SB renamable $x11, %stack.0, 3 :: (store (s8) into %stack.0 + 3)
140fdef7952SGarvit Gupta    renamable $x12 = SRLI renamable $x10, 16
141fdef7952SGarvit Gupta    SB renamable $x12, %stack.0, 2 :: (store (s8) into %stack.0 + 2)
142fdef7952SGarvit Gupta    renamable $x13 = SRLI renamable $x10, 8
143fdef7952SGarvit Gupta    SB renamable $x13, %stack.0, 1 :: (store (s8) into %stack.0 + 1)
144fdef7952SGarvit Gupta    SB renamable $x10, %stack.0, 8 :: (store (s8) into %stack.0 + 8)
145fdef7952SGarvit Gupta    SB renamable $x11, %stack.0, 7 :: (store (s8) into %stack.0 + 7)
146fdef7952SGarvit Gupta    SB renamable $x12, %stack.0, 6 :: (store (s8) into %stack.0 + 6)
147fdef7952SGarvit Gupta    SB renamable $x13, %stack.0, 5 :: (store (s8) into %stack.0 + 5)
148fdef7952SGarvit Gupta    SB killed renamable $x10, %stack.0, 12 :: (store (s8) into %stack.0 + 12)
149fdef7952SGarvit Gupta    SB renamable $x11, %stack.0, 11 :: (store (s8) into %stack.0 + 11)
150fdef7952SGarvit Gupta    SB renamable $x12, %stack.0, 10 :: (store (s8) into %stack.0 + 10)
151fdef7952SGarvit Gupta    SB renamable $x13, %stack.0, 9 :: (store (s8) into %stack.0 + 9)
152fdef7952SGarvit Gupta    SB killed renamable $x11, %stack.0, 15 :: (store (s8) into %stack.0 + 15)
153fdef7952SGarvit Gupta    SB killed renamable $x12, %stack.0, 14 :: (store (s8) into %stack.0 + 14)
154fdef7952SGarvit Gupta    SB killed renamable $x13, %stack.0, 13 :: (store (s8) into %stack.0 + 13)
155fdef7952SGarvit Gupta
156fdef7952SGarvit Gupta  bb.3.exit:
157fdef7952SGarvit Gupta    PseudoRET
158fdef7952SGarvit Gupta
159fdef7952SGarvit Gupta...
160