209 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s3 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 @ptrtoint_s1_p0() { ret void }13 define void @inttoptr_v2p0_v2s64() { ret void }14 define void @ptrtoint_v2s64_v2p0() { ret void }15...16 17---18name: inttoptr_p0_s6419legalized: true20regBankSelected: true21 22registers:23 - { id: 0, class: gpr }24 - { id: 1, class: gpr }25body: |26 bb.0:27 liveins: $x028 ; CHECK-LABEL: name: inttoptr_p0_s6429 ; CHECK: liveins: $x030 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64all = COPY $x032 ; CHECK-NEXT: $x0 = COPY [[COPY]]33 %0(s64) = COPY $x034 %1(p0) = G_INTTOPTR %035 $x0 = COPY %1(p0)36...37 38---39name: ptrtoint_s64_p040legalized: true41regBankSelected: true42 43registers:44 - { id: 0, class: gpr }45 - { id: 1, class: gpr }46body: |47 bb.0:48 liveins: $x049 ; CHECK-LABEL: name: ptrtoint_s64_p050 ; CHECK: liveins: $x051 ; CHECK-NEXT: {{ $}}52 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x053 ; CHECK-NEXT: $x0 = COPY [[COPY]]54 %0(p0) = COPY $x055 %1(s64) = G_PTRTOINT %056 $x0 = COPY %1(s64)57...58 59---60name: ptrtoint_s32_p061legalized: true62regBankSelected: true63 64registers:65 - { id: 0, class: gpr }66 - { id: 1, class: gpr }67body: |68 bb.0:69 liveins: $x070 ; CHECK-LABEL: name: ptrtoint_s32_p071 ; CHECK: liveins: $x072 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: %ptr:gpr64 = COPY $x074 ; CHECK-NEXT: %ptr2int:gpr64common = COPY %ptr75 ; CHECK-NEXT: %int:gpr32sp = COPY %ptr2int.sub_3276 ; CHECK-NEXT: $w0 = COPY %int77 ; CHECK-NEXT: RET_ReallyLR implicit $w078 %ptr:gpr(p0) = COPY $x079 %ptr2int:gpr(s64) = G_PTRTOINT %ptr(p0)80 %int:gpr(s32) = G_TRUNC %ptr2int(s64)81 $w0 = COPY %int(s32)82 RET_ReallyLR implicit $w083...84 85---86name: ptrtoint_s16_p087legalized: true88regBankSelected: true89 90registers:91 - { id: 0, class: gpr }92 - { id: 1, class: gpr }93body: |94 bb.0:95 liveins: $x096 ; CHECK-LABEL: name: ptrtoint_s16_p097 ; CHECK: liveins: $x098 ; CHECK-NEXT: {{ $}}99 ; CHECK-NEXT: %ptr:gpr64 = COPY $x0100 ; CHECK-NEXT: %int:gpr32 = COPY %ptr.sub_32101 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY %int102 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY [[COPY]].hsub103 ; CHECK-NEXT: $h0 = COPY [[COPY1]]104 ; CHECK-NEXT: RET_ReallyLR implicit $h0105 %ptr:gpr(p0) = COPY $x0106 %ptr2int:gpr(s64) = G_PTRTOINT %ptr(p0)107 %int:gpr(s16) = G_TRUNC %ptr2int(s64)108 $h0 = COPY %int(s16)109 RET_ReallyLR implicit $h0110...111 112---113name: ptrtoint_s8_p0114legalized: true115regBankSelected: true116 117registers:118 - { id: 0, class: gpr }119 - { id: 1, class: gpr }120body: |121 bb.0:122 liveins: $x0123 ; CHECK-LABEL: name: ptrtoint_s8_p0124 ; CHECK: liveins: $x0125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: %ptr:gpr64 = COPY $x0127 ; CHECK-NEXT: %int:gpr32 = COPY %ptr.sub_32128 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY %int129 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr8 = COPY [[COPY]].bsub130 ; CHECK-NEXT: $b0 = COPY [[COPY1]]131 ; CHECK-NEXT: RET_ReallyLR implicit $b0132 %ptr:gpr(p0) = COPY $x0133 %ptr2int:gpr(s64) = G_PTRTOINT %ptr(p0)134 %int:gpr(s8) = G_TRUNC %ptr2int(s64)135 $b0 = COPY %int(s8)136 RET_ReallyLR implicit $b0137 138...139---140name: ptrtoint_s1_p0141legalized: true142regBankSelected: true143 144registers:145 - { id: 0, class: gpr }146 - { id: 1, class: gpr }147body: |148 bb.0:149 liveins: $x0150 ; CHECK-LABEL: name: ptrtoint_s1_p0151 ; CHECK: liveins: $x0152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: %ptr:gpr64 = COPY $x0154 ; CHECK-NEXT: %ptr2int:gpr64common = COPY %ptr155 ; CHECK-NEXT: %trunc:gpr32common = COPY %ptr2int.sub_32156 ; CHECK-NEXT: %ext:gpr32sp = ANDWri %trunc, 0157 ; CHECK-NEXT: $w0 = COPY %ext158 ; CHECK-NEXT: RET_ReallyLR implicit $w0159 %ptr:gpr(p0) = COPY $x0160 %ptr2int:gpr(s64) = G_PTRTOINT %ptr(p0)161 %one:gpr(s32) = G_CONSTANT i32 1162 %trunc:gpr(s32) = G_TRUNC %ptr2int(s64)163 %ext:gpr(s32) = G_AND %trunc, %one164 $w0 = COPY %ext(s32)165 RET_ReallyLR implicit $w0166...167---168name: inttoptr_v2p0_v2s64169legalized: true170regBankSelected: true171tracksRegLiveness: true172body: |173 bb.0:174 liveins: $q0, $x0175 ; CHECK-LABEL: name: inttoptr_v2p0_v2s64176 ; CHECK: liveins: $q0, $x0177 ; CHECK-NEXT: {{ $}}178 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0179 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub180 ; CHECK-NEXT: $x0 = COPY [[COPY1]]181 ; CHECK-NEXT: RET_ReallyLR implicit $x0182 %1:fpr(<2 x s64>) = COPY $q0183 %2:fpr(<2 x p0>) = G_INTTOPTR %1(<2 x s64>)184 %4:gpr(s64) = G_CONSTANT i64 0185 %3:fpr(p0) = G_EXTRACT_VECTOR_ELT %2(<2 x p0>), %4(s64)186 $x0 = COPY %3(p0)187 RET_ReallyLR implicit $x0188...189...190---191name: ptrtoint_v2s64_v2p0192legalized: true193regBankSelected: true194tracksRegLiveness: true195body: |196 bb.0:197 liveins: $q0198 ; CHECK-LABEL: name: ptrtoint_v2s64_v2p0199 ; CHECK: liveins: $q0200 ; CHECK-NEXT: {{ $}}201 ; CHECK-NEXT: %ptr:fpr128 = COPY $q0202 ; CHECK-NEXT: $q0 = COPY %ptr203 ; CHECK-NEXT: RET_ReallyLR implicit $q0204 %ptr:fpr(<2 x p0>) = COPY $q0205 %int:fpr(<2 x s64>) = G_PTRTOINT %ptr(<2 x p0>)206 $q0 = COPY %int(<2 x s64>)207 RET_ReallyLR implicit $q0208...209