1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s 3# 4# Verify register banks for G_DUP. 5# 6 7... 8--- 9name: v4s32_gpr 10alignment: 4 11legalized: true 12tracksRegLiveness: true 13body: | 14 bb.0.entry: 15 liveins: $w0 16 17 ; CHECK-LABEL: name: v4s32_gpr 18 ; CHECK: liveins: $w0 19 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0 20 ; CHECK: [[DUP:%[0-9]+]]:fpr(<4 x s32>) = G_DUP [[COPY]](s32) 21 ; CHECK: $q0 = COPY [[DUP]](<4 x s32>) 22 ; CHECK: RET_ReallyLR implicit $q0 23 %0:_(s32) = COPY $w0 24 %4:_(<4 x s32>) = G_DUP %0(s32) 25 $q0 = COPY %4(<4 x s32>) 26 RET_ReallyLR implicit $q0 27 28... 29--- 30name: v4s64_gpr 31alignment: 4 32legalized: true 33tracksRegLiveness: true 34body: | 35 bb.0.entry: 36 liveins: $x0 37 38 ; CHECK-LABEL: name: v4s64_gpr 39 ; CHECK: liveins: $x0 40 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0 41 ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64) 42 ; CHECK: $q0 = COPY [[DUP]](<2 x s64>) 43 ; CHECK: RET_ReallyLR implicit $q0 44 %0:_(s64) = COPY $x0 45 %4:_(<2 x s64>) = G_DUP %0(s64) 46 $q0 = COPY %4(<2 x s64>) 47 RET_ReallyLR implicit $q0 48 49... 50--- 51name: v2s32_gpr 52alignment: 4 53legalized: true 54tracksRegLiveness: true 55body: | 56 bb.0.entry: 57 liveins: $w0 58 59 ; CHECK-LABEL: name: v2s32_gpr 60 ; CHECK: liveins: $w0 61 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0 62 ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s32>) = G_DUP [[COPY]](s32) 63 ; CHECK: $d0 = COPY [[DUP]](<2 x s32>) 64 ; CHECK: RET_ReallyLR implicit $d0 65 %0:_(s32) = COPY $w0 66 %4:_(<2 x s32>) = G_DUP %0(s32) 67 $d0 = COPY %4(<2 x s32>) 68 RET_ReallyLR implicit $d0 69 70... 71--- 72name: v4s32_fpr 73alignment: 4 74legalized: true 75tracksRegLiveness: true 76body: | 77 bb.0.entry: 78 liveins: $s0 79 80 ; CHECK-LABEL: name: v4s32_fpr 81 ; CHECK: liveins: $s0 82 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0 83 ; CHECK: [[DUP:%[0-9]+]]:fpr(<4 x s32>) = G_DUP [[COPY]](s32) 84 ; CHECK: $q0 = COPY [[DUP]](<4 x s32>) 85 ; CHECK: RET_ReallyLR implicit $q0 86 %0:_(s32) = COPY $s0 87 %4:_(<4 x s32>) = G_DUP %0(s32) 88 $q0 = COPY %4(<4 x s32>) 89 RET_ReallyLR implicit $q0 90 91... 92--- 93name: v2s64_fpr 94alignment: 4 95legalized: true 96tracksRegLiveness: true 97body: | 98 bb.0.entry: 99 liveins: $d0 100 101 ; CHECK-LABEL: name: v2s64_fpr 102 ; CHECK: liveins: $d0 103 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0 104 ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64) 105 ; CHECK: $q0 = COPY [[DUP]](<2 x s64>) 106 ; CHECK: RET_ReallyLR implicit $q0 107 %0:_(s64) = COPY $d0 108 %4:_(<2 x s64>) = G_DUP %0(s64) 109 $q0 = COPY %4(<2 x s64>) 110 RET_ReallyLR implicit $q0 111 112... 113--- 114name: v2s32_fpr 115alignment: 4 116legalized: true 117tracksRegLiveness: true 118body: | 119 bb.0.entry: 120 liveins: $s0 121 122 ; CHECK-LABEL: name: v2s32_fpr 123 ; CHECK: liveins: $s0 124 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0 125 ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s32>) = G_DUP [[COPY]](s32) 126 ; CHECK: $d0 = COPY [[DUP]](<2 x s32>) 127 ; CHECK: RET_ReallyLR implicit $d0 128 %0:_(s32) = COPY $s0 129 %4:_(<2 x s32>) = G_DUP %0(s32) 130 $d0 = COPY %4(<2 x s32>) 131 RET_ReallyLR implicit $d0 132 133... 134--- 135name: v2s64_fpr_copy 136alignment: 4 137legalized: true 138tracksRegLiveness: true 139body: | 140 bb.0.entry: 141 liveins: $d0 142 143 ; CHECK-LABEL: name: v2s64_fpr_copy 144 ; CHECK: liveins: $d0 145 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0 146 ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64) 147 ; CHECK: $q0 = COPY [[DUP]](<2 x s64>) 148 ; CHECK: RET_ReallyLR implicit $q0 149 %0:_(s64) = COPY $d0 150 %6:_(<2 x s64>) = G_DUP %0(s64) 151 $q0 = COPY %6(<2 x s64>) 152 RET_ReallyLR implicit $q0 153 154... 155