arm-legalizer.mir
1.76 KB
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
# RUN: llc -mtriple arm-- -run-pass=legalizer %s -o - | FileCheck %s
--- |
define void @test_constants_s64() { ret void }
define void @test_phi_s64() #0 { ret void }
attributes #0 = { "target-features"="+vfp2" }
...
---
name: test_constants_s64
# CHECK-LABEL: name: test_constants_s64
legalized: false
# CHECK: legalized: true
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $r0
%0(p0) = COPY $r0
%1(s64) = G_CONSTANT i64 17179869200 ; = 4 * 2 ^ 32 + 16
%2(s32), %3(s32) = G_UNMERGE_VALUES %1(s64)
G_STORE %2(s32), %0(p0) :: (store 4)
G_STORE %3(s32), %0(p0) :: (store 4)
; CHECK-DAG: {{%[0-9]+}}:_(s32) = G_CONSTANT i32 4
; CHECK-DAG: {{%[0-9]+}}:_(s32) = G_CONSTANT i32 16
; CHECK-NOT: G_CONSTANT i64
BX_RET 14, $noreg
...
---
name: test_phi_s64
# CHECK-LABEL: name: test_phi_s64
legalized: false
# CHECK: legalized: true
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
body: |
bb.0:
liveins: $r0, $d0, $d1
%0(s32) = COPY $r0
%1(s1) = G_TRUNC %0(s32)
%2(s64) = COPY $d0
%3(s64) = COPY $d1
G_BRCOND %1(s1), %bb.1
G_BR %bb.2
bb.1:
G_BR %bb.2
bb.2:
%4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1
; G_PHI with s64 is legal when we have floating point support, so we should
; find it unchanged in the output
; CHECK: G_PHI {{%[0-9]+}}(s64), %bb.0, {{%[0-9]+}}(s64), %bb.1
$d0 = COPY %4(s64)
BX_RET 14, $noreg, implicit $d0
...