1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s 4 5--- 6name: insert_lo32_i64_ss 7legalized: true 8 9body: | 10 bb.0: 11 liveins: $sgpr0_sgpr1, $sgpr2 12 ; CHECK-LABEL: name: insert_lo32_i64_ss 13 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2 14 ; CHECK-NEXT: {{ $}} 15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 16 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 17 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:sgpr(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0 18 %0:_(s64) = COPY $sgpr0_sgpr1 19 %1:_(s32) = COPY $sgpr2 20 %2:_(s64) = G_INSERT %0, %1, 0 21... 22 23--- 24name: insert_lo32_i64_sv 25legalized: true 26 27body: | 28 bb.0: 29 liveins: $sgpr0_sgpr1, $vgpr2 30 ; CHECK-LABEL: name: insert_lo32_i64_sv 31 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr2 32 ; CHECK-NEXT: {{ $}} 33 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 34 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 35 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 36 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY2]], [[COPY1]](s32), 0 37 %0:_(s64) = COPY $sgpr0_sgpr1 38 %1:_(s32) = COPY $vgpr2 39 %2:_(s64) = G_INSERT %0, %1, 0 40... 41--- 42name: insert_lo32_i64_vs 43legalized: true 44 45body: | 46 bb.0: 47 liveins: $vgpr0_vgpr1, $sgpr2 48 ; CHECK-LABEL: name: insert_lo32_i64_vs 49 ; CHECK: liveins: $vgpr0_vgpr1, $sgpr2 50 ; CHECK-NEXT: {{ $}} 51 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 52 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 53 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 54 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY]], [[COPY2]](s32), 0 55 %0:_(s64) = COPY $vgpr0_vgpr1 56 %1:_(s32) = COPY $sgpr2 57 %2:_(s64) = G_INSERT %0, %1, 0 58... 59--- 60name: insert_lo32_i64_vv 61legalized: true 62 63body: | 64 bb.0: 65 liveins: $vgpr0_vgpr1, $vgpr2 66 ; CHECK-LABEL: name: insert_lo32_i64_vv 67 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2 68 ; CHECK-NEXT: {{ $}} 69 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 70 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 71 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:sgpr(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0 72 %0:_(s64) = COPY $sgpr0_sgpr1 73 %1:_(s32) = COPY $sgpr2 74 %2:_(s64) = G_INSERT %0, %1, 0 75... 76 77--- 78name: insert_lo32_i96_v 79legalized: true 80 81body: | 82 bb.0: 83 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 84 ; CHECK-LABEL: name: insert_lo32_i96_v 85 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 86 ; CHECK-NEXT: {{ $}} 87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s96) = COPY $vgpr0_vgpr1_vgpr2 88 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr3 89 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 0 90 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2 91 %1:_(s32) = COPY $vgpr3 92 %2:_(s96) = G_INSERT %0, %1, 0 93... 94 95--- 96name: insert_lo32_i64_aa 97legalized: true 98 99body: | 100 bb.0: 101 liveins: $agpr0_agpr1, $agpr2 102 ; CHECK-LABEL: name: insert_lo32_i64_aa 103 ; CHECK: liveins: $agpr0_agpr1, $agpr2 104 ; CHECK-NEXT: {{ $}} 105 ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s64) = COPY $agpr0_agpr1 106 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr2 107 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:agpr(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0 108 %0:_(s64) = COPY $agpr0_agpr1 109 %1:_(s32) = COPY $agpr2 110 %2:_(s64) = G_INSERT %0, %1, 0 111... 112 113--- 114name: insert_lo32_i64_av 115legalized: true 116 117body: | 118 bb.0: 119 liveins: $agpr0_agpr1, $vgpr2 120 ; CHECK-LABEL: name: insert_lo32_i64_av 121 ; CHECK: liveins: $agpr0_agpr1, $vgpr2 122 ; CHECK-NEXT: {{ $}} 123 ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s64) = COPY $agpr0_agpr1 124 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 125 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 126 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY2]], [[COPY1]](s32), 0 127 %0:_(s64) = COPY $agpr0_agpr1 128 %1:_(s32) = COPY $vgpr2 129 %2:_(s64) = G_INSERT %0, %1, 0 130... 131--- 132name: insert_lo32_i64_va 133legalized: true 134 135body: | 136 bb.0: 137 liveins: $vgpr0_vgpr1, $agpr2 138 ; CHECK-LABEL: name: insert_lo32_i64_va 139 ; CHECK: liveins: $vgpr0_vgpr1, $agpr2 140 ; CHECK-NEXT: {{ $}} 141 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 142 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr2 143 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 144 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY]], [[COPY2]](s32), 0 145 %0:_(s64) = COPY $vgpr0_vgpr1 146 %1:_(s32) = COPY $agpr2 147 %2:_(s64) = G_INSERT %0, %1, 0 148... 149 150--- 151name: insert_lo32_i64_as 152legalized: true 153 154body: | 155 bb.0: 156 liveins: $agpr0_agpr1, $sgpr2 157 ; CHECK-LABEL: name: insert_lo32_i64_as 158 ; CHECK: liveins: $agpr0_agpr1, $sgpr2 159 ; CHECK-NEXT: {{ $}} 160 ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s64) = COPY $agpr0_agpr1 161 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 162 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 163 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 164 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY2]], [[COPY3]](s32), 0 165 %0:_(s64) = COPY $agpr0_agpr1 166 %1:_(s32) = COPY $sgpr2 167 %2:_(s64) = G_INSERT %0, %1, 0 168... 169--- 170name: insert_lo32_i64_sa 171legalized: true 172 173body: | 174 bb.0: 175 liveins: $sgpr0_sgpr1, $agpr2 176 ; CHECK-LABEL: name: insert_lo32_i64_sa 177 ; CHECK: liveins: $sgpr0_sgpr1, $agpr2 178 ; CHECK-NEXT: {{ $}} 179 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 180 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr2 181 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 182 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 183 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:vgpr(s64) = G_INSERT [[COPY2]], [[COPY3]](s32), 0 184 %0:_(s64) = COPY $sgpr0_sgpr1 185 %1:_(s32) = COPY $agpr2 186 %2:_(s64) = G_INSERT %0, %1, 0 187... 188