260 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3 4--- |5 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6 7 define void @bitcast_s32_gpr() { ret void }8 define void @bitcast_s32_fpr() { ret void }9 define void @bitcast_s32_gpr_fpr() { ret void }10 define void @bitcast_s32_fpr_gpr() { ret void }11 define void @bitcast_s64_gpr() { ret void }12 define void @bitcast_s64_fpr() { ret void }13 define void @bitcast_s64_gpr_fpr() { ret void }14 define void @bitcast_s64_fpr_gpr() { ret void }15 define void @bitcast_s64_v2f32_fpr() { ret void }16 define void @bitcast_s64_v8i8_fpr() { ret void }17...18 19---20name: bitcast_s32_gpr21legalized: true22regBankSelected: true23registers:24 - { id: 0, class: gpr }25 - { id: 1, class: fpr }26 - { id: 2, class: gpr }27body: |28 bb.0:29 liveins: $w030 31 ; CHECK-LABEL: name: bitcast_s32_gpr32 ; CHECK: liveins: $w033 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32all = COPY $w035 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]]36 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]37 ; CHECK-NEXT: $w0 = COPY [[COPY2]]38 %0(s32) = COPY $w039 %1(<2 x s16>) = G_BITCAST %040 %2(s32) = G_BITCAST %141 $w0 = COPY %242...43 44---45name: bitcast_s32_fpr46legalized: true47regBankSelected: true48 49registers:50 - { id: 0, class: fpr }51 - { id: 1, class: gpr }52 - { id: 2, class: fpr }53body: |54 bb.0:55 liveins: $s056 57 ; CHECK-LABEL: name: bitcast_s32_fpr58 ; CHECK: liveins: $s059 ; CHECK-NEXT: {{ $}}60 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY $s061 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[COPY]]62 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr32 = COPY [[COPY1]]63 ; CHECK-NEXT: $s0 = COPY [[COPY2]]64 %0(s32) = COPY $s065 %1(<2 x s16>) = G_BITCAST %066 %2(s32) = G_BITCAST %167 $s0 = COPY %268...69 70---71name: bitcast_s32_gpr_fpr72legalized: true73regBankSelected: true74 75registers:76 - { id: 0, class: gpr }77 - { id: 1, class: fpr }78 79body: |80 bb.0:81 liveins: $w082 83 ; CHECK-LABEL: name: bitcast_s32_gpr_fpr84 ; CHECK: liveins: $w085 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32all = COPY $w087 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]]88 ; CHECK-NEXT: $s0 = COPY [[COPY1]]89 %0(s32) = COPY $w090 %1(<2 x s16>) = G_BITCAST %091 $s0 = COPY %192...93 94---95name: bitcast_s32_fpr_gpr96legalized: true97regBankSelected: true98 99registers:100 - { id: 0, class: fpr }101 - { id: 1, class: gpr }102 103body: |104 bb.0:105 liveins: $s0106 107 ; CHECK-LABEL: name: bitcast_s32_fpr_gpr108 ; CHECK: liveins: $s0109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY $s0111 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[COPY]]112 ; CHECK-NEXT: $w0 = COPY [[COPY1]]113 %0(<2 x s16>) = COPY $s0114 %1(s32) = G_BITCAST %0115 $w0 = COPY %1(s32)116...117 118---119name: bitcast_s64_gpr120legalized: true121regBankSelected: true122 123registers:124 - { id: 0, class: gpr }125 - { id: 1, class: fpr }126 - { id: 2, class: gpr }127 128body: |129 bb.0:130 liveins: $x0131 132 ; CHECK-LABEL: name: bitcast_s64_gpr133 ; CHECK: liveins: $x0134 ; CHECK-NEXT: {{ $}}135 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64all = COPY $x0136 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]137 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY [[COPY1]]138 ; CHECK-NEXT: $x0 = COPY [[COPY2]]139 %0(s64) = COPY $x0140 %1(<2 x s32>) = G_BITCAST %0141 %2(s64) = G_BITCAST %1142 $x0 = COPY %2(s64)143...144 145---146name: bitcast_s64_fpr147legalized: true148regBankSelected: true149 150registers:151 - { id: 0, class: fpr }152 - { id: 1, class: fpr }153 154body: |155 bb.0:156 liveins: $d0157 158 ; CHECK-LABEL: name: bitcast_s64_fpr159 ; CHECK: liveins: $d0160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0162 ; CHECK-NEXT: $d0 = COPY [[COPY]]163 %0(s64) = COPY $d0164 %1(<2 x s32>) = G_BITCAST %0165 $d0 = COPY %1166...167 168---169name: bitcast_s64_gpr_fpr170legalized: true171regBankSelected: true172 173registers:174 - { id: 0, class: gpr }175 - { id: 1, class: fpr }176body: |177 bb.0:178 liveins: $x0179 180 ; CHECK-LABEL: name: bitcast_s64_gpr_fpr181 ; CHECK: liveins: $x0182 ; CHECK-NEXT: {{ $}}183 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64all = COPY $x0184 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]185 ; CHECK-NEXT: $d0 = COPY [[COPY1]]186 %0(s64) = COPY $x0187 %1(<2 x s32>) = G_BITCAST %0188 $d0 = COPY %1189...190 191---192name: bitcast_s64_fpr_gpr193legalized: true194regBankSelected: true195 196registers:197 - { id: 0, class: fpr }198 - { id: 1, class: gpr }199 200body: |201 bb.0:202 liveins: $d0203 204 ; CHECK-LABEL: name: bitcast_s64_fpr_gpr205 ; CHECK: liveins: $d0206 ; CHECK-NEXT: {{ $}}207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64all = COPY [[COPY]]209 ; CHECK-NEXT: $x0 = COPY [[COPY1]]210 %0(s64) = COPY $d0211 %1(<2 x s32>) = G_BITCAST %0212 $x0 = COPY %1213...214 215---216name: bitcast_s64_v2f32_fpr217legalized: true218regBankSelected: true219 220registers:221 - { id: 0, class: fpr }222 - { id: 1, class: fpr }223 224body: |225 bb.0:226 liveins: $d0227 228 ; CHECK-LABEL: name: bitcast_s64_v2f32_fpr229 ; CHECK: liveins: $d0230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0232 ; CHECK-NEXT: $x0 = COPY [[COPY]]233 %0(s64) = COPY $d0234 %1(<2 x s32>) = G_BITCAST %0235 $x0 = COPY %1(<2 x s32>)236...237 238---239name: bitcast_s64_v8i8_fpr240legalized: true241regBankSelected: true242 243registers:244 - { id: 0, class: fpr }245 - { id: 1, class: fpr }246 247body: |248 bb.0:249 liveins: $d0250 251 ; CHECK-LABEL: name: bitcast_s64_v8i8_fpr252 ; CHECK: liveins: $d0253 ; CHECK-NEXT: {{ $}}254 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0255 ; CHECK-NEXT: $x0 = COPY [[COPY]]256 %0(s64) = COPY $d0257 %1(<8 x s8>) = G_BITCAST %0258 $x0 = COPY %1(<8 x s8>)259...260