File: regallocfast-callbr-asm-spills-after-reload.mir

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: 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 (66 lines) | stat: -rw-r--r-- 2,771 bytes parent folder | download | duplicates (3)
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
# NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
# RUN: llc -mtriple=x86_64-- -run-pass=regallocfast -o - %s | FileCheck %s
# RUN: llc -mtriple=x86_64-- -passes=regallocfast -o - %s | FileCheck %s

...
---
name:            callbr-asm-spills-after-reload
alignment:       16
tracksRegLiveness: true
registers:
  - { id: 0, class: gr64, preferred-register: '', flags: [  ] }
  - { id: 1, class: gr32, preferred-register: '', flags: [  ] }
  - { id: 2, class: gr64, preferred-register: '', flags: [  ] }
liveins:
  - { reg: '$rdi', virtual-reg: '%2' }
frameInfo:
  isFrameAddressTaken: false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    8
  adjustsStack:    false
  hasCalls:        false
fixedStack:      []
stack:
  - { id: 0, type: default, offset: 0, size: 8, alignment: 8,
      stack-id: default, callee-saved-register: '', callee-saved-restored: true }
body:             |
  bb.0.entry:
    successors: %bb.1(0x40000000), %bb.3(0x40000000)
    liveins: $rdi

    %2:gr64 = COPY $rdi
    %3:gr64 = COPY killed %2
    MOV64mr %stack.0, 1, $noreg, 0, $noreg, %3 :: (store (s64))
    %0:gr64 = MOV64rm %stack.0, 1, $noreg, 0, $noreg :: (dereferenceable load (s64))
    %6:gr32 = MOV32rm %0, 1, $noreg, 0, $noreg :: (load (s32))
    %5:gr32_norex2 = COPY %6
    %4:gr32_norex2 = COPY %5
    INLINEASM_BR &"  subl $$11, $0;  cmpl $$11, $0; je ${2:l};", 0 /* attdialect */, 2686986 /* regdef:GR32_NOREX2 */, def %4, 2147483657 /* reguse tiedto:$0 */, %4(tied-def 3), 13 /* imm */, %bb.3, 12 /* clobber */, implicit-def early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def early-clobber $eflags
    %1:gr32 = COPY %4
    JMP_1 %bb.1

  bb.1:
    successors: %bb.2(0x80000000)

    ; CHECK:      $rax = MOV64rm %stack.3, 1, $noreg, 0, $noreg :: (load (s64) from %stack.3)
    ; CHECK-NEXT: $ecx = MOV32rm %stack.1, 1, $noreg, 0, $noreg :: (load (s32) from %stack.1)
    ; CHECK-NEXT: MOV32mr renamable $rax, 1, $noreg, 0, $noreg, renamable $ecx :: (store (s32))
    MOV32mr %0, 1, $noreg, 0, $noreg, %1 :: (store (s32))

  bb.2:
    RET64

  bb.3 (machine-block-address-taken, inlineasm-br-indirect-target):
    successors: %bb.2(0x80000000)

    ; CHECK:      MOV32mr %stack.2, 1, $noreg, 0, $noreg, $eax :: (store (s32) into %stack.2)
    ; CHECK-NEXT: $ecx = MOV32rm %stack.2, 1, $noreg, 0, $noreg :: (load (s32) from %stack.2)
    ; CHECK-NEXT: $rax = MOV64rm %stack.3, 1, $noreg, 0, $noreg :: (load (s64) from %stack.3)
    ; CHECK-NEXT: MOV32mr renamable $rax, 1, $noreg, 0, $noreg, killed renamable $ecx :: (store (s32))
    ; CHECK-NEXT: JMP_1 %bb.2
    %7:gr32 = COPY %4
    MOV32mr %0, 1, $noreg, 0, $noreg, %7 :: (store (s32))
    JMP_1 %bb.2

...