250 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=arm -mattr=+vfp4d16sp,-fullfp16 -stop-after=finalize-isel | FileCheck %s --check-prefixes=CHECK-CVT3; RUN: llc < %s -mtriple=arm -mattr=+vfp4d16sp,+fullfp16 -stop-after=finalize-isel | FileCheck %s --check-prefixes=CHECK-FP164 5; Check that the output instructions have the same fast math flags as the input6; fadd, even when f16 is legalized to f32.7; FIXME: We don't get fast math flags on VCVTBSH because the outermost node in8; the isel pattern is COPY_TO_REGCLASS and the fast math flags end up there.9 10define half @normal_fadd(half %x, half %y) {11 ; CHECK-CVT-LABEL: name: normal_fadd12 ; CHECK-CVT: bb.0.entry:13 ; CHECK-CVT-NEXT: liveins: $r0, $r114 ; CHECK-CVT-NEXT: {{ $}}15 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r116 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r017 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]18 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]19 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr20 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr21 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr22 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF23 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr24 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]25 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]26 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r027 ;28 ; CHECK-FP16-LABEL: name: normal_fadd29 ; CHECK-FP16: bb.0.entry:30 ; CHECK-FP16-NEXT: liveins: $r0, $r131 ; CHECK-FP16-NEXT: {{ $}}32 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r133 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r034 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg35 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg36 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr37 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]38 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r039entry:40 %add = fadd half %x, %y41 ret half %add42}43 44define half @fast_fadd(half %x, half %y) {45 ; CHECK-CVT-LABEL: name: fast_fadd46 ; CHECK-CVT: bb.0.entry:47 ; CHECK-CVT-NEXT: liveins: $r0, $r148 ; CHECK-CVT-NEXT: {{ $}}49 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r150 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r051 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]52 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]53 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr54 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr55 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr56 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF57 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr58 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]59 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]60 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r061 ;62 ; CHECK-FP16-LABEL: name: fast_fadd63 ; CHECK-FP16: bb.0.entry:64 ; CHECK-FP16-NEXT: liveins: $r0, $r165 ; CHECK-FP16-NEXT: {{ $}}66 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r167 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r068 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg69 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg70 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf nsz arcp contract afn reassoc nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr71 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]72 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r073entry:74 %add = fadd fast half %x, %y75 ret half %add76}77 78define half @ninf_fadd(half %x, half %y) {79 ; CHECK-CVT-LABEL: name: ninf_fadd80 ; CHECK-CVT: bb.0.entry:81 ; CHECK-CVT-NEXT: liveins: $r0, $r182 ; CHECK-CVT-NEXT: {{ $}}83 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r184 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r085 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]86 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]87 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr88 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr89 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr90 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF91 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr92 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]93 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]94 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r095 ;96 ; CHECK-FP16-LABEL: name: ninf_fadd97 ; CHECK-FP16: bb.0.entry:98 ; CHECK-FP16-NEXT: liveins: $r0, $r199 ; CHECK-FP16-NEXT: {{ $}}100 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r1101 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r0102 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg103 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg104 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr105 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]106 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0107entry:108 %add = fadd ninf half %x, %y109 ret half %add110}111 112; Check that when we have the right fast math flags the converts in between the113; two fadds are removed.114 115define half @normal_fadd_sequence(half %x, half %y, half %z) {116 ; CHECK-CVT-LABEL: name: normal_fadd_sequence117 ; CHECK-CVT: bb.0.entry:118 ; CHECK-CVT-NEXT: liveins: $r0, $r1, $r2119 ; CHECK-CVT-NEXT: {{ $}}120 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r2121 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r1122 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0123 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]124 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]125 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr126 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr127 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr128 ; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]129 ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr130 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF131 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr132 ; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]133 ; CHECK-CVT-NEXT: [[COPY7:%[0-9]+]]:spr = COPY killed [[COPY6]]134 ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg, implicit $fpscr135 ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr136 ; CHECK-CVT-NEXT: [[DEF1:%[0-9]+]]:spr = IMPLICIT_DEF137 ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr138 ; CHECK-CVT-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY killed [[VCVTBSH1]]139 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY8]]140 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0141 ;142 ; CHECK-FP16-LABEL: name: normal_fadd_sequence143 ; CHECK-FP16: bb.0.entry:144 ; CHECK-FP16-NEXT: liveins: $r0, $r1, $r2145 ; CHECK-FP16-NEXT: {{ $}}146 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r2147 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1148 ; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0149 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg150 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg151 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr152 ; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg153 ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr154 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]155 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0156entry:157 %add1 = fadd half %x, %y158 %add2 = fadd half %add1, %z159 ret half %add2160}161 162define half @nnan_ninf_contract_fadd_sequence(half %x, half %y, half %z) {163 ; CHECK-CVT-LABEL: name: nnan_ninf_contract_fadd_sequence164 ; CHECK-CVT: bb.0.entry:165 ; CHECK-CVT-NEXT: liveins: $r0, $r1, $r2166 ; CHECK-CVT-NEXT: {{ $}}167 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r2168 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r1169 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0170 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]171 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]172 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr173 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr174 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr175 ; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]176 ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr177 ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VADDS]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr178 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF179 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr180 ; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]181 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY6]]182 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0183 ;184 ; CHECK-FP16-LABEL: name: nnan_ninf_contract_fadd_sequence185 ; CHECK-FP16: bb.0.entry:186 ; CHECK-FP16-NEXT: liveins: $r0, $r1, $r2187 ; CHECK-FP16-NEXT: {{ $}}188 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r2189 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1190 ; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0191 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg192 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg193 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf contract nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr194 ; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg195 ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = nnan ninf contract nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr196 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]197 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0198entry:199 %add1 = fadd nnan ninf contract half %x, %y200 %add2 = fadd nnan ninf contract half %add1, %z201 ret half %add2202}203 204define half @ninf_fadd_sequence(half %x, half %y, half %z) {205 ; CHECK-CVT-LABEL: name: ninf_fadd_sequence206 ; CHECK-CVT: bb.0.entry:207 ; CHECK-CVT-NEXT: liveins: $r0, $r1, $r2208 ; CHECK-CVT-NEXT: {{ $}}209 ; CHECK-CVT-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r2210 ; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r1211 ; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0212 ; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]213 ; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]214 ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr215 ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr216 ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr217 ; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]218 ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr219 ; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF220 ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr221 ; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]222 ; CHECK-CVT-NEXT: [[COPY7:%[0-9]+]]:spr = COPY killed [[COPY6]]223 ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg, implicit $fpscr224 ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr225 ; CHECK-CVT-NEXT: [[DEF1:%[0-9]+]]:spr = IMPLICIT_DEF226 ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr227 ; CHECK-CVT-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY killed [[VCVTBSH1]]228 ; CHECK-CVT-NEXT: $r0 = COPY [[COPY8]]229 ; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0230 ;231 ; CHECK-FP16-LABEL: name: ninf_fadd_sequence232 ; CHECK-FP16: bb.0.entry:233 ; CHECK-FP16-NEXT: liveins: $r0, $r1, $r2234 ; CHECK-FP16-NEXT: {{ $}}235 ; CHECK-FP16-NEXT: [[COPY:%[0-9]+]]:rgpr = COPY $r2236 ; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1237 ; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0238 ; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg239 ; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg240 ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr241 ; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg242 ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr243 ; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]244 ; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0245entry:246 %add1 = fadd ninf half %x, %y247 %add2 = fadd ninf half %add1, %z248 ret half %add2249}250