157 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3 4---5name: contract_s64_gpr6legalized: true7regBankSelected: true8body: |9 bb.0:10 liveins: $x0, $x111 ; CHECK-LABEL: name: contract_s64_gpr12 ; CHECK: liveins: $x0, $x113 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x015 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x116 ; CHECK-NEXT: STRXui [[COPY1]], [[COPY]], 0 :: (store (s64))17 %0:gpr(p0) = COPY $x018 %1:gpr(s64) = COPY $x119 %2:fpr(s64) = COPY %120 G_STORE %2:fpr(s64), %0 :: (store (s64))21...22---23name: contract_s32_gpr24legalized: true25regBankSelected: true26body: |27 bb.0:28 liveins: $x0, $w129 ; CHECK-LABEL: name: contract_s32_gpr30 ; CHECK: liveins: $x0, $w131 ; CHECK-NEXT: {{ $}}32 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x033 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w134 ; CHECK-NEXT: STRWui [[COPY1]], [[COPY]], 0 :: (store (s32))35 %0:gpr(p0) = COPY $x036 %1:gpr(s32) = COPY $w137 %2:fpr(s32) = COPY %138 G_STORE %2:fpr(s32), %0 :: (store (s32))39...40---41name: contract_s64_fpr42legalized: true43regBankSelected: true44body: |45 bb.0:46 liveins: $x0, $d147 ; CHECK-LABEL: name: contract_s64_fpr48 ; CHECK: liveins: $x0, $d149 ; CHECK-NEXT: {{ $}}50 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x051 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d152 ; CHECK-NEXT: STRDui [[COPY1]], [[COPY]], 0 :: (store (s64))53 %0:gpr(p0) = COPY $x054 %1:fpr(s64) = COPY $d155 %2:gpr(s64) = COPY %156 G_STORE %2:gpr(s64), %0 :: (store (s64))57...58---59name: contract_s32_fpr60legalized: true61regBankSelected: true62body: |63 bb.0:64 liveins: $x0, $s165 ; CHECK-LABEL: name: contract_s32_fpr66 ; CHECK: liveins: $x0, $s167 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x069 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY $s170 ; CHECK-NEXT: STRSui [[COPY1]], [[COPY]], 0 :: (store (s32))71 %0:gpr(p0) = COPY $x072 %1:fpr(s32) = COPY $s173 %2:gpr(s32) = COPY %174 G_STORE %2:gpr(s32), %0 :: (store (s32))75...76---77name: contract_s16_fpr78legalized: true79regBankSelected: true80body: |81 bb.0:82 liveins: $x0, $h183 ; CHECK-LABEL: name: contract_s16_fpr84 ; CHECK: liveins: $x0, $h185 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x087 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $h188 ; CHECK-NEXT: STRHui [[COPY1]], [[COPY]], 0 :: (store (s16))89 %0:gpr(p0) = COPY $x090 %1:fpr(s16) = COPY $h191 %2:gpr(s16) = COPY %192 G_STORE %2:gpr(s16), %0 :: (store (s16))93...94---95name: contract_g_unmerge_values_first96legalized: true97regBankSelected: true98body: |99 bb.0:100 liveins: $x0, $x1101 ; CHECK-LABEL: name: contract_g_unmerge_values_first102 ; CHECK: liveins: $x0, $x1103 ; CHECK-NEXT: {{ $}}104 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0105 ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (dereferenceable load (<2 x s64>))106 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[LDRQui]].dsub107 ; CHECK-NEXT: [[DUPi64_:%[0-9]+]]:fpr64 = DUPi64 [[LDRQui]], 1108 ; CHECK-NEXT: STRDui [[COPY1]], [[COPY]], 0 :: (store (s64))109 %0:gpr(p0) = COPY $x0110 %1:fpr(<2 x s64>) = G_LOAD %0:gpr(p0) :: (dereferenceable load (<2 x s64>))111 %2:fpr(s64), %3:fpr(s64) = G_UNMERGE_VALUES %1:fpr(<2 x s64>)112 %4:gpr(s64) = COPY %2113 %5:gpr(s64) = COPY %3114 G_STORE %4:gpr(s64), %0 :: (store (s64))115...116---117name: contract_g_unmerge_values_second118legalized: true119regBankSelected: true120body: |121 bb.0:122 liveins: $x0, $x1123 ; CHECK-LABEL: name: contract_g_unmerge_values_second124 ; CHECK: liveins: $x0, $x1125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0127 ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0 :: (dereferenceable load (<2 x s64>))128 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[LDRQui]].dsub129 ; CHECK-NEXT: [[DUPi64_:%[0-9]+]]:fpr64 = DUPi64 [[LDRQui]], 1130 ; CHECK-NEXT: STRDui [[DUPi64_]], [[COPY]], 0 :: (store (s64))131 %0:gpr(p0) = COPY $x0132 %1:fpr(<2 x s64>) = G_LOAD %0:gpr(p0) :: (dereferenceable load (<2 x s64>))133 %2:fpr(s64), %3:fpr(s64) = G_UNMERGE_VALUES %1:fpr(<2 x s64>)134 %4:gpr(s64) = COPY %2135 %5:gpr(s64) = COPY %3136 G_STORE %5:gpr(s64), %0 :: (store (s64))137...138---139name: contract_s16_truncstore140legalized: true141regBankSelected: true142body: |143 bb.0:144 liveins: $x0, $s1145 ; CHECK-LABEL: name: contract_s16_truncstore146 ; CHECK: liveins: $x0, $s1147 ; CHECK-NEXT: {{ $}}148 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0149 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1150 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr16 = COPY [[COPY1]].hsub151 ; CHECK-NEXT: STRHui [[COPY2]], [[COPY]], 0 :: (store (s16))152 %0:gpr(p0) = COPY $x0153 %1:fpr(s32) = COPY $s1154 %2:gpr(s32) = COPY %1155 G_STORE %2:gpr(s32), %0 :: (store (s16))156...157