1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s
3
4--- |
5  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
6
7  define void @inttoptr_p0_s64() { ret void }
8  define void @ptrtoint_s64_p0() { ret void }
9  define void @ptrtoint_s32_p0() { ret void }
10  define void @ptrtoint_s16_p0() { ret void }
11  define void @ptrtoint_s8_p0() { ret void }
12  define void @inttoptr_v2p0_v2s64() { ret void }
13  define void @ptrtoint_v2s64_v2p0() { ret void }
14...
15
16---
17name:            inttoptr_p0_s64
18legalized:       true
19regBankSelected: true
20
21registers:
22  - { id: 0, class: gpr }
23  - { id: 1, class: gpr }
24body:             |
25  bb.0:
26    liveins: $x0
27    ; CHECK-LABEL: name: inttoptr_p0_s64
28    ; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
29    ; CHECK-NEXT: $x0 = COPY [[COPY]]
30    %0(s64) = COPY $x0
31    %1(p0) = G_INTTOPTR %0
32    $x0 = COPY %1(p0)
33...
34
35---
36name:            ptrtoint_s64_p0
37legalized:       true
38regBankSelected: true
39
40registers:
41  - { id: 0, class: gpr }
42  - { id: 1, class: gpr }
43body:             |
44  bb.0:
45    liveins: $x0
46    ; CHECK-LABEL: name: ptrtoint_s64_p0
47    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
48    ; CHECK-NEXT: $x0 = COPY [[COPY]]
49    %0(p0) = COPY $x0
50    %1(s64) = G_PTRTOINT %0
51    $x0 = COPY %1(s64)
52...
53
54---
55name:            ptrtoint_s32_p0
56legalized:       true
57regBankSelected: true
58
59registers:
60  - { id: 0, class: gpr }
61  - { id: 1, class: gpr }
62body:             |
63  bb.0:
64    liveins: $x0
65    ; CHECK-LABEL: name: ptrtoint_s32_p0
66    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
67    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
68    ; CHECK-NEXT: $w0 = COPY [[COPY1]]
69    %0(p0) = COPY $x0
70    %1(s32) = G_PTRTOINT %0
71    $w0 = COPY %1(s32)
72...
73
74---
75name:            ptrtoint_s16_p0
76legalized:       true
77regBankSelected: true
78
79registers:
80  - { id: 0, class: gpr }
81  - { id: 1, class: gpr }
82body:             |
83  bb.0:
84    liveins: $x0
85    ; CHECK-LABEL: name: ptrtoint_s16_p0
86    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
87    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
88    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
89    ; CHECK-NEXT: $w0 = COPY [[COPY2]]
90    %0(p0) = COPY $x0
91    %1(s16) = G_PTRTOINT %0
92    %2:gpr(s32) = G_ANYEXT %1
93    $w0 = COPY %2(s32)
94...
95
96---
97name:            ptrtoint_s8_p0
98legalized:       true
99regBankSelected: true
100
101registers:
102  - { id: 0, class: gpr }
103  - { id: 1, class: gpr }
104body:             |
105  bb.0:
106    liveins: $x0
107    ; CHECK-LABEL: name: ptrtoint_s8_p0
108    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
109    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
110    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
111    ; CHECK-NEXT: $w0 = COPY [[COPY2]]
112    %0(p0) = COPY $x0
113    %1(s8) = G_PTRTOINT %0
114    %2:gpr(s32) = G_ANYEXT %1
115    $w0 = COPY %2(s32)
116...
117
118---
119name:            inttoptr_v2p0_v2s64
120legalized:       true
121regBankSelected: true
122tracksRegLiveness: true
123body:             |
124  bb.0:
125    liveins: $q0, $x0
126    ; CHECK-LABEL: name: inttoptr_v2p0_v2s64
127    ; CHECK: liveins: $q0, $x0
128    ; CHECK-NEXT: {{  $}}
129    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
130    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub
131    ; CHECK-NEXT: $x0 = COPY [[COPY1]]
132    ; CHECK-NEXT: RET_ReallyLR implicit $x0
133    %1:fpr(<2 x s64>) = COPY $q0
134    %2:fpr(<2 x p0>) = G_INTTOPTR %1(<2 x s64>)
135    %4:gpr(s64) = G_CONSTANT i64 0
136    %3:fpr(p0) = G_EXTRACT_VECTOR_ELT %2(<2 x p0>), %4(s64)
137    $x0 = COPY %3(p0)
138    RET_ReallyLR implicit $x0
139...
140...
141---
142name:            ptrtoint_v2s64_v2p0
143legalized:       true
144regBankSelected: true
145tracksRegLiveness: true
146body:             |
147  bb.0:
148    liveins: $q0
149    ; CHECK-LABEL: name: ptrtoint_v2s64_v2p0
150    ; CHECK: liveins: $q0
151    ; CHECK-NEXT: {{  $}}
152    ; CHECK-NEXT: %ptr:fpr128 = COPY $q0
153    ; CHECK-NEXT: $q0 = COPY %ptr
154    ; CHECK-NEXT: RET_ReallyLR implicit $q0
155    %ptr:fpr(<2 x p0>) = COPY $q0
156    %int:fpr(<2 x s64>) = G_PTRTOINT %ptr(<2 x p0>)
157    $q0 = COPY %int(<2 x s64>)
158    RET_ReallyLR implicit $q0
159...
160