[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-int-ptr-casts.mir
blob07a2a9b78d8043a5e5b3ffb4593513519f353186
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
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 @ptrtoint_s1_p0() { ret void }
13   define void @inttoptr_v2p0_v2s64() { ret void }
14 ...
16 ---
17 name:            inttoptr_p0_s64
18 legalized:       true
19 regBankSelected: true
21 registers:
22   - { id: 0, class: gpr }
23   - { id: 1, class: gpr }
24 body:             |
25   bb.0:
26     liveins: $x0
27     ; CHECK-LABEL: name: inttoptr_p0_s64
28     ; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
29     ; CHECK: $x0 = COPY [[COPY]]
30     %0(s64) = COPY $x0
31     %1(p0) = G_INTTOPTR %0
32     $x0 = COPY %1(p0)
33 ...
35 ---
36 name:            ptrtoint_s64_p0
37 legalized:       true
38 regBankSelected: true
40 registers:
41   - { id: 0, class: gpr }
42   - { id: 1, class: gpr }
43 body:             |
44   bb.0:
45     liveins: $x0
46     ; CHECK-LABEL: name: ptrtoint_s64_p0
47     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
48     ; CHECK: $x0 = COPY [[COPY]]
49     %0(p0) = COPY $x0
50     %1(s64) = G_PTRTOINT %0
51     $x0 = COPY %1(s64)
52 ...
54 ---
55 name:            ptrtoint_s32_p0
56 legalized:       true
57 regBankSelected: true
59 registers:
60   - { id: 0, class: gpr }
61   - { id: 1, class: gpr }
62 body:             |
63   bb.0:
64     liveins: $x0
65     ; CHECK-LABEL: name: ptrtoint_s32_p0
66     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
67     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
68     ; CHECK: $w0 = COPY [[COPY1]]
69     %0(p0) = COPY $x0
70     %1(s32) = G_PTRTOINT %0
71     $w0 = COPY %1(s32)
72 ...
74 ---
75 name:            ptrtoint_s16_p0
76 legalized:       true
77 regBankSelected: true
79 registers:
80   - { id: 0, class: gpr }
81   - { id: 1, class: gpr }
82 body:             |
83   bb.0:
84     liveins: $x0
85     ; CHECK-LABEL: name: ptrtoint_s16_p0
86     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
87     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
88     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
89     ; CHECK: $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 ...
96 ---
97 name:            ptrtoint_s8_p0
98 legalized:       true
99 regBankSelected: true
101 registers:
102   - { id: 0, class: gpr }
103   - { id: 1, class: gpr }
104 body:             |
105   bb.0:
106     liveins: $x0
107     ; CHECK-LABEL: name: ptrtoint_s8_p0
108     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
109     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
110     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
111     ; CHECK: $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)
119 name:            ptrtoint_s1_p0
120 legalized:       true
121 regBankSelected: true
123 registers:
124   - { id: 0, class: gpr }
125   - { id: 1, class: gpr }
126 body:             |
127   bb.0:
128     liveins: $x0
129     ; CHECK-LABEL: name: ptrtoint_s1_p0
130     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
131     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
132     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
133     ; CHECK: $w0 = COPY [[COPY2]]
134     %0(p0) = COPY $x0
135     %1(s1) = G_PTRTOINT %0
136     %2:gpr(s32) = G_ANYEXT %1
137     $w0 = COPY %2(s32)
141 name:            inttoptr_v2p0_v2s64
142 legalized:       true
143 regBankSelected: true
144 tracksRegLiveness: true
145 body:             |
146   bb.0:
147     liveins: $q0, $x0
148     ; CHECK-LABEL: name: inttoptr_v2p0_v2s64
149     ; CHECK: liveins: $q0, $x0
150     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
151     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub
152     ; CHECK: $x0 = COPY [[COPY1]]
153     ; CHECK: RET_ReallyLR implicit $x0
154     %1:fpr(<2 x s64>) = COPY $q0
155     %2:fpr(<2 x p0>) = G_INTTOPTR %1(<2 x s64>)
156     %4:gpr(s64) = G_CONSTANT i64 0
157     %3:fpr(p0) = G_EXTRACT_VECTOR_ELT %2(<2 x p0>), %4(s64)
158     $x0 = COPY %3(p0)
159     RET_ReallyLR implicit $x0