1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=regbankselect -mattr=+fullfp16 %s -o - | FileCheck %s 3 4# CHECK-NOT: gpr 5 6... 7--- 8name: test_f16.round 9alignment: 4 10legalized: true 11tracksRegLiveness: true 12frameInfo: 13 maxCallFrameSize: 0 14machineFunctionInfo: {} 15body: | 16 bb.0: 17 liveins: $h0 18 19 ; CHECK-LABEL: name: test_f16.round 20 ; CHECK: liveins: $h0 21 ; CHECK: [[COPY:%[0-9]+]]:fpr(s16) = COPY $h0 22 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s16) = G_INTRINSIC_ROUND [[COPY]] 23 ; CHECK: $h0 = COPY [[INTRINSIC_ROUND]](s16) 24 ; CHECK: RET_ReallyLR implicit $h0 25 %0:_(s16) = COPY $h0 26 %1:_(s16) = G_INTRINSIC_ROUND %0 27 $h0 = COPY %1(s16) 28 RET_ReallyLR implicit $h0 29 30... 31--- 32name: test_f32.round 33alignment: 4 34legalized: true 35tracksRegLiveness: true 36frameInfo: 37 maxCallFrameSize: 0 38machineFunctionInfo: {} 39body: | 40 bb.0: 41 liveins: $s0 42 43 ; CHECK-LABEL: name: test_f32.round 44 ; CHECK: liveins: $s0 45 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0 46 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s32) = G_INTRINSIC_ROUND [[COPY]] 47 ; CHECK: $s0 = COPY [[INTRINSIC_ROUND]](s32) 48 ; CHECK: RET_ReallyLR implicit $s0 49 %0:_(s32) = COPY $s0 50 %1:_(s32) = G_INTRINSIC_ROUND %0 51 $s0 = COPY %1(s32) 52 RET_ReallyLR implicit $s0 53 54... 55--- 56name: test_f64.round 57alignment: 4 58legalized: true 59tracksRegLiveness: true 60frameInfo: 61 maxCallFrameSize: 0 62machineFunctionInfo: {} 63body: | 64 bb.0: 65 liveins: $d0 66 67 ; CHECK-LABEL: name: test_f64.round 68 ; CHECK: liveins: $d0 69 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0 70 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(s64) = G_INTRINSIC_ROUND [[COPY]] 71 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](s64) 72 ; CHECK: RET_ReallyLR implicit $d0 73 %0:_(s64) = COPY $d0 74 %1:_(s64) = G_INTRINSIC_ROUND %0 75 $d0 = COPY %1(s64) 76 RET_ReallyLR implicit $d0 77 78... 79--- 80name: test_v8f16.round 81alignment: 4 82legalized: true 83tracksRegLiveness: true 84frameInfo: 85 maxCallFrameSize: 0 86machineFunctionInfo: {} 87body: | 88 bb.0: 89 liveins: $q0 90 91 ; CHECK-LABEL: name: test_v8f16.round 92 ; CHECK: liveins: $q0 93 ; CHECK: [[COPY:%[0-9]+]]:fpr(<8 x s16>) = COPY $q0 94 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<8 x s16>) = G_INTRINSIC_ROUND [[COPY]] 95 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<8 x s16>) 96 ; CHECK: RET_ReallyLR implicit $q0 97 %0:_(<8 x s16>) = COPY $q0 98 %1:_(<8 x s16>) = G_INTRINSIC_ROUND %0 99 $q0 = COPY %1(<8 x s16>) 100 RET_ReallyLR implicit $q0 101 102... 103--- 104name: test_v4f16.round 105alignment: 4 106legalized: true 107tracksRegLiveness: true 108frameInfo: 109 maxCallFrameSize: 0 110machineFunctionInfo: {} 111body: | 112 bb.0: 113 liveins: $d0 114 115 ; CHECK-LABEL: name: test_v4f16.round 116 ; CHECK: liveins: $d0 117 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s16>) = COPY $d0 118 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<4 x s16>) = G_INTRINSIC_ROUND [[COPY]] 119 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](<4 x s16>) 120 ; CHECK: RET_ReallyLR implicit $d0 121 %0:_(<4 x s16>) = COPY $d0 122 %1:_(<4 x s16>) = G_INTRINSIC_ROUND %0 123 $d0 = COPY %1(<4 x s16>) 124 RET_ReallyLR implicit $d0 125 126... 127--- 128name: test_v2f32.round 129alignment: 4 130legalized: true 131tracksRegLiveness: true 132frameInfo: 133 maxCallFrameSize: 0 134machineFunctionInfo: {} 135body: | 136 bb.0: 137 liveins: $d0 138 139 ; CHECK-LABEL: name: test_v2f32.round 140 ; CHECK: liveins: $d0 141 ; CHECK: [[COPY:%[0-9]+]]:fpr(<2 x s32>) = COPY $d0 142 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<2 x s32>) = G_INTRINSIC_ROUND [[COPY]] 143 ; CHECK: $d0 = COPY [[INTRINSIC_ROUND]](<2 x s32>) 144 ; CHECK: RET_ReallyLR implicit $d0 145 %0:_(<2 x s32>) = COPY $d0 146 %1:_(<2 x s32>) = G_INTRINSIC_ROUND %0 147 $d0 = COPY %1(<2 x s32>) 148 RET_ReallyLR implicit $d0 149 150... 151--- 152name: test_v4f32.round 153alignment: 4 154legalized: true 155tracksRegLiveness: true 156frameInfo: 157 maxCallFrameSize: 0 158machineFunctionInfo: {} 159body: | 160 bb.0: 161 liveins: $q0 162 163 ; CHECK-LABEL: name: test_v4f32.round 164 ; CHECK: liveins: $q0 165 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0 166 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<4 x s32>) = G_INTRINSIC_ROUND [[COPY]] 167 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<4 x s32>) 168 ; CHECK: RET_ReallyLR implicit $q0 169 %0:_(<4 x s32>) = COPY $q0 170 %1:_(<4 x s32>) = G_INTRINSIC_ROUND %0 171 $q0 = COPY %1(<4 x s32>) 172 RET_ReallyLR implicit $q0 173 174... 175--- 176name: test_v2f64.round 177alignment: 4 178legalized: true 179tracksRegLiveness: true 180frameInfo: 181 maxCallFrameSize: 0 182machineFunctionInfo: {} 183body: | 184 bb.0: 185 liveins: $q0 186 187 ; CHECK-LABEL: name: test_v2f64.round 188 ; CHECK: liveins: $q0 189 ; CHECK: [[COPY:%[0-9]+]]:fpr(<2 x s64>) = COPY $q0 190 ; CHECK: [[INTRINSIC_ROUND:%[0-9]+]]:fpr(<2 x s64>) = G_INTRINSIC_ROUND [[COPY]] 191 ; CHECK: $q0 = COPY [[INTRINSIC_ROUND]](<2 x s64>) 192 ; CHECK: RET_ReallyLR implicit $q0 193 %0:_(<2 x s64>) = COPY $q0 194 %1:_(<2 x s64>) = G_INTRINSIC_ROUND %0 195 $q0 = COPY %1(<2 x s64>) 196 RET_ReallyLR implicit $q0 197