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