File: cmpbr-early-ifcvt.mir

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,245,028 kB
  • sloc: cpp: 7,619,726; ansic: 1,434,018; asm: 1,058,748; python: 252,740; f90: 94,671; objc: 70,685; lisp: 42,813; pascal: 18,401; sh: 8,601; ml: 5,111; perl: 4,720; makefile: 3,675; awk: 3,523; javascript: 2,409; xml: 892; fortran: 770
file content (116 lines) | stat: -rw-r--r-- 3,358 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -mtriple=arm64-apple-ios -mattr +cmpbr -run-pass=early-ifcvt -simplify-mir -o - %s | FileCheck %s
# CHECK: cb_diamond
---
name:            cb_diamond
alignment:       4
tracksRegLiveness: true
noPhis:          false
isSSA:           true
noVRegs:         false
hasFakeUses:     false
registers:
  - { id: 0, class: gpr64 }
  - { id: 1, class: gpr64 }
  - { id: 2, class: gpr64 }
  - { id: 3, class: gpr64 }
  - { id: 4, class: gpr64 }
  - { id: 5, class: gpr64 }
liveins:
  - { reg: '$x0', virtual-reg: '%0' }
  - { reg: '$x1', virtual-reg: '%1' }
frameInfo:
  maxAlignment:    1
  maxCallFrameSize: 0
machineFunctionInfo: {}
body:             |
  ; CHECK-LABEL: name: cb_diamond
  ; CHECK: bb.0:
  ; CHECK-NEXT:   liveins: $x0, $x1
  ; CHECK-NEXT: {{  $}}
  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
  ; CHECK-NEXT:   [[ADDXrr:%[0-9]+]]:gpr64 = ADDXrr [[COPY]], [[COPY1]]
  ; CHECK-NEXT:   [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY]], [[COPY1]], $xzr
  ; CHECK-NEXT:   $xzr = SUBSXrr [[COPY]], [[COPY1]], implicit-def $nzcv
  ; CHECK-NEXT:   [[CSELXr:%[0-9]+]]:gpr64 = CSELXr [[ADDXrr]], [[MADDXrrr]], 11, implicit $nzcv
  ; CHECK-NEXT:   [[ADDXrr1:%[0-9]+]]:gpr64 = ADDXrr killed [[CSELXr]], [[COPY]]
  ; CHECK-NEXT:   $x0 = COPY [[ADDXrr1]]
  ; CHECK-NEXT:   RET_ReallyLR implicit $x0
  bb.0:
    successors: %bb.1, %bb.2
    liveins: $x0, $x1

    %0:gpr64 = COPY $x0
    %1:gpr64 = COPY $x1
    CBXPrr 11, %0, %1, %bb.1
    B %bb.2

  bb.1:
    successors: %bb.3
    %2:gpr64 = ADDXrr %0, %1
    B %bb.3

  bb.2:
    successors: %bb.3
    %3:gpr64 = MADDXrrr %0, %1, $xzr
    B %bb.3

  bb.3:
    %4:gpr64 = PHI %2, %bb.1, %3, %bb.2
    %5:gpr64 = ADDXrr killed %4, %0
    $x0 = COPY %5
    RET_ReallyLR implicit $x0
...
---
name:            cb_triangle
alignment:       4
tracksRegLiveness: true
noPhis:          false
isSSA:           true
noVRegs:         false
hasFakeUses:     false
registers:
  - { id: 0, class: gpr64 }
  - { id: 1, class: gpr64 }
  - { id: 2, class: gpr64 }
  - { id: 3, class: gpr64 }
  - { id: 4, class: gpr64 }
liveins:
  - { reg: '$x0', virtual-reg: '%0' }
  - { reg: '$x1', virtual-reg: '%1' }
frameInfo:
  maxAlignment:    1
  maxCallFrameSize: 0
machineFunctionInfo: {}
body:             |
  ; CHECK-LABEL: name: cb_triangle
  ; CHECK: bb.0:
  ; CHECK-NEXT:   liveins: $x0, $x1
  ; CHECK-NEXT: {{  $}}
  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
  ; CHECK-NEXT:   [[ADDXrr:%[0-9]+]]:gpr64 = ADDXrr [[COPY]], [[COPY1]]
  ; CHECK-NEXT:   $xzr = SUBSXrr [[COPY]], [[COPY1]], implicit-def $nzcv
  ; CHECK-NEXT:   [[CSELXr:%[0-9]+]]:gpr64 = CSELXr [[COPY1]], [[ADDXrr]], 10, implicit $nzcv
  ; CHECK-NEXT:   [[ADDXrr1:%[0-9]+]]:gpr64 = ADDXrr killed [[CSELXr]], [[COPY]]
  ; CHECK-NEXT:   $x0 = COPY [[ADDXrr1]]
  ; CHECK-NEXT:   RET_ReallyLR implicit $x0
  bb.0:
    successors: %bb.1, %bb.2
    liveins: $x0, $x1

    %0:gpr64 = COPY $x0
    %1:gpr64 = COPY $x1
    CBXPrr 10, %0, %1, %bb.2

  bb.1:
    successors: %bb.2
    %2:gpr64 = ADDXrr %0, %1

  bb.2:
    %3:gpr64 = PHI %1, %bb.0, %2, %bb.1
    %4:gpr64 = ADDXrr killed %3, %0
    $x0 = COPY %4
    RET_ReallyLR implicit $x0
...