1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py 2# RUN: llvm-mca -mtriple=thumbv8.1-m.main-none-none-eabi -mcpu=cortex-m55 -instruction-tables < %s | FileCheck %s 3 4vabs.f16 s0, s2 5vabs.f32 s0, s2 6vabs.f64 d0, d2 7vadd.f16 s0, s2, s1 8vadd.f32 s0, s2, s1 9vadd.f64 d0, d2, d1 10vcmp.f16 s1, s2 11vcmp.f32 s1, s2 12vcmp.f64 d1, d2 13vcmp.f16 s1, #0.0 14vcmp.f32 s1, #0.0 15vcmp.f64 d1, #0.0 16vcmpe.f16 s1, s2 17vcmpe.f32 s1, s2 18vcmpe.f64 d1, d2 19vcmpe.f16 s1, #0.0 20vcmpe.f32 s1, #0.0 21vcmpe.f64 d1, #0.0 22vcvt.f32.f64 s1, d2 23vcvt.f64.f32 d1, s1 24vcvt.f16.u16 s1, s2, #8 25vcvt.f16.s16 s1, s2, #8 26vcvt.f16.u32 s1, s2, #8 27vcvt.f16.s32 s1, s2, #8 28vcvt.u16.f16 s1, s2, #8 29vcvt.s16.f16 s1, s2, #8 30vcvt.u32.f16 s1, s2, #8 31vcvt.s32.f16 s1, s2, #8 32vcvt.f32.u16 s1, s2, #8 33vcvt.f32.s16 s1, s2, #8 34vcvt.f32.u32 s1, s2, #8 35vcvt.f32.s32 s1, s2, #8 36vcvt.u16.f32 s1, s2, #8 37vcvt.s16.f32 s1, s2, #8 38vcvt.u32.f32 s1, s2, #8 39vcvt.s32.f32 s1, s2, #8 40vcvt.f64.u16 d1, d2, #8 41vcvt.f64.s16 d1, d2, #8 42vcvt.f64.u32 d1, d2, #8 43vcvt.f64.s32 d1, d2, #8 44vcvt.u16.f64 d1, d2, #8 45vcvt.s16.f64 d1, d2, #8 46vcvt.u32.f64 d1, d2, #8 47vcvt.s32.f64 d1, d2, #8 48vcvt.u32.f16 s1, s2 49vcvt.s32.f16 s1, s2 50vcvt.u32.f32 s1, s2 51vcvt.s32.f32 s1, s2 52vcvt.u32.f64 s1, d2 53vcvt.s32.f64 s1, d2 54vcvt.f16.u32 s1, s2 55vcvt.f16.s32 s1, s2 56vcvt.f32.u32 s1, s2 57vcvt.f32.s32 s1, s2 58vcvt.f64.u32 d1, s2 59vcvt.f64.s32 d1, s2 60vcvta.u32.f16 s1, s2 61vcvta.s32.f16 s1, s2 62vcvta.u32.f32 s1, s2 63vcvta.s32.f32 s1, s2 64vcvta.u32.f64 s1, d2 65vcvta.s32.f64 s1, d2 66vcvtm.u32.f16 s1, s2 67vcvtm.s32.f16 s1, s2 68vcvtm.u32.f32 s1, s2 69vcvtm.s32.f32 s1, s2 70vcvtm.u32.f64 s1, d2 71vcvtm.s32.f64 s1, d2 72vcvtn.u32.f16 s1, s2 73vcvtn.s32.f16 s1, s2 74vcvtn.u32.f32 s1, s2 75vcvtn.s32.f32 s1, s2 76vcvtn.u32.f64 s1, d2 77vcvtn.s32.f64 s1, d2 78vcvtp.u32.f16 s1, s2 79vcvtp.s32.f16 s1, s2 80vcvtp.u32.f32 s1, s2 81vcvtp.s32.f32 s1, s2 82vcvtp.u32.f64 s1, d2 83vcvtp.s32.f64 s1, d2 84vcvtb.f16.f32 s1, s2 85vcvtb.f16.f64 s1, d2 86vcvtb.f32.f16 s1, s2 87vcvtb.f64.f16 d1, s2 88vcvtr.u32.f16 s1, s2 89vcvtr.s32.f16 s1, s2 90vcvtr.u32.f32 s1, s2 91vcvtr.s32.f32 s1, s2 92vcvtr.u32.f64 s1, d2 93vcvtr.s32.f64 s1, d2 94vcvtt.f16.f32 s1, s2 95vcvtt.f16.f64 s1, d2 96vcvtt.f32.f16 s1, s2 97vcvtt.f64.f16 d1, s2 98vdiv.f16 s0, s2, s1 99vdiv.f32 s0, s2, s1 100vdiv.f64 d0, d2, d1 101vfma.f16 s0, s2, s1 102vfma.f32 s0, s2, s1 103vfma.f64 d0, d2, d1 104vfms.f16 s0, s2, s1 105vfms.f32 s0, s2, s1 106vfms.f64 d0, d2, d1 107vfnma.f16 s0, s2, s1 108vfnma.f32 s0, s2, s1 109vfnma.f64 d0, d2, d1 110vfnms.f16 s0, s2, s1 111vfnms.f32 s0, s2, s1 112vfnms.f64 d0, d2, d1 113vins.f16 s0, s1 114vmaxnm.f16 s0, s2, s1 115vmaxnm.f32 s0, s2, s1 116vmaxnm.f64 d0, d2, d1 117vminnm.f16 s0, s2, s1 118vminnm.f32 s0, s2, s1 119vminnm.f64 d0, d2, d1 120vmla.f16 s0, s2, s1 121vmla.f32 s0, s2, s1 122vmla.f64 d0, d2, d1 123vmls.f16 s0, s2, s1 124vmls.f32 s0, s2, s1 125vmls.f64 d0, d2, d1 126vmov.f16 s0, r1 127vmov.f16 r0, s1 128vmov.f32 s0, r1 129vmov.f32 r0, s1 130vmov.f64 d0, r1, r2 131vmov.f64 r0, r1, d1 132vmov s0, s1, r0, r1 133vmov r0, r1, s0, s1 134vmov.f16 s0, #1.0 135vmov.f32 s0, #1.0 136vmov.f64 d0, #1.0 137vmov.f32 s0, s1 138vmov.f64 d0, d1 139vmovx.f16 s0, s1 140vmul.f16 s0, s2, s1 141vmul.f32 s0, s2, s1 142vmul.f64 d0, d2, d1 143vneg.f16 s0, s2 144vneg.f32 s0, s2 145vneg.f64 d0, d2 146vnmla.f16 s0, s2, s1 147vnmla.f32 s0, s2, s1 148vnmla.f64 d0, d2, d1 149vnmls.f16 s0, s2, s1 150vnmls.f32 s0, s2, s1 151vnmls.f64 d0, d2, d1 152vnmul.f16 s0, s2, s1 153vnmul.f32 s0, s2, s1 154vnmul.f64 d0, d2, d1 155vrinta.f16 s0, s2 156vrinta.f32.f32 s0, s2 157vrinta.f64.f64 d0, d2 158vrintm.f16 s0, s2 159vrintm.f32.f32 s0, s2 160vrintm.f64.f64 d0, d2 161vrintn.f16 s0, s2 162vrintn.f32.f32 s0, s2 163vrintn.f64.f64 d0, d2 164vrintp.f16 s0, s2 165vrintp.f32.f32 s0, s2 166vrintp.f64.f64 d0, d2 167vrintr.f16.f16 s0, s2 168vrintr.f32.f32 s0, s2 169vrintr.f64.f64 d0, d2 170vrintz.f16.f16 s0, s2 171vrintz.f32.f32 s0, s2 172vrintz.f64.f64 d0, d2 173vrintx.f16.f16 s0, s2 174vrintx.f32.f32 s0, s2 175vrintx.f64.f64 d0, d2 176vseleq.f16 s0, s2, s1 177vseleq.f32 s0, s2, s1 178vseleq.f64 d0, d2, d1 179vsqrt.f16 s0, s2 180vsqrt.f32 s0, s2 181vsqrt.f64 d0, d2 182vsub.f16 s0, s2, s1 183vsub.f32 s0, s2, s1 184vsub.f64 d0, d2, d1 185 186#vldr pc 187#vldr [rn + value] 188#vstr pc 189#vstr [rn + value] 190 191# CHECK: Instruction Info: 192# CHECK-NEXT: [1]: #uOps 193# CHECK-NEXT: [2]: Latency 194# CHECK-NEXT: [3]: RThroughput 195# CHECK-NEXT: [4]: MayLoad 196# CHECK-NEXT: [5]: MayStore 197# CHECK-NEXT: [6]: HasSideEffects (U) 198 199# CHECK: [1] [2] [3] [4] [5] [6] Instructions: 200# CHECK-NEXT: 1 2 1.00 vabs.f16 s0, s2 201# CHECK-NEXT: 1 2 1.00 vabs.f32 s0, s2 202# CHECK-NEXT: 1 2 1.00 vabs.f64 d0, d2 203# CHECK-NEXT: 1 2 1.00 vadd.f16 s0, s2, s1 204# CHECK-NEXT: 1 2 1.00 vadd.f32 s0, s2, s1 205# CHECK-NEXT: 1 15 1.00 vadd.f64 d0, d2, d1 206# CHECK-NEXT: 1 1 1.00 vcmp.f16 s1, s2 207# CHECK-NEXT: 1 1 1.00 vcmp.f32 s1, s2 208# CHECK-NEXT: 1 1 1.00 vcmp.f64 d1, d2 209# CHECK-NEXT: 1 1 1.00 vcmp.f16 s1, #0 210# CHECK-NEXT: 1 1 1.00 vcmp.f32 s1, #0 211# CHECK-NEXT: 1 1 1.00 vcmp.f64 d1, #0 212# CHECK-NEXT: 1 1 1.00 vcmpe.f16 s1, s2 213# CHECK-NEXT: 1 1 1.00 vcmpe.f32 s1, s2 214# CHECK-NEXT: 1 1 1.00 vcmpe.f64 d1, d2 215# CHECK-NEXT: 1 1 1.00 vcmpe.f16 s1, #0 216# CHECK-NEXT: 1 1 1.00 vcmpe.f32 s1, #0 217# CHECK-NEXT: 1 1 1.00 vcmpe.f64 d1, #0 218# CHECK-NEXT: 1 2 1.00 vcvt.f32.f64 s1, d2 219# CHECK-NEXT: 1 2 1.00 vcvt.f64.f32 d1, s1 220# CHECK-NEXT: 1 2 1.00 vcvt.f16.u16 s1, s1, #8 221# CHECK-NEXT: 1 2 1.00 vcvt.f16.s16 s1, s1, #8 222# CHECK-NEXT: 1 2 1.00 vcvt.f16.u32 s1, s1, #8 223# CHECK-NEXT: 1 2 1.00 vcvt.f16.s32 s1, s1, #8 224# CHECK-NEXT: 1 2 1.00 vcvt.u16.f16 s1, s1, #8 225# CHECK-NEXT: 1 2 1.00 vcvt.s16.f16 s1, s1, #8 226# CHECK-NEXT: 1 2 1.00 vcvt.u32.f16 s1, s1, #8 227# CHECK-NEXT: 1 2 1.00 vcvt.s32.f16 s1, s1, #8 228# CHECK-NEXT: 1 2 1.00 vcvt.f32.u16 s1, s1, #8 229# CHECK-NEXT: 1 2 1.00 vcvt.f32.s16 s1, s1, #8 230# CHECK-NEXT: 1 2 1.00 vcvt.f32.u32 s1, s1, #8 231# CHECK-NEXT: 1 2 1.00 vcvt.f32.s32 s1, s1, #8 232# CHECK-NEXT: 1 2 1.00 vcvt.u16.f32 s1, s1, #8 233# CHECK-NEXT: 1 2 1.00 vcvt.s16.f32 s1, s1, #8 234# CHECK-NEXT: 1 2 1.00 vcvt.u32.f32 s1, s1, #8 235# CHECK-NEXT: 1 2 1.00 vcvt.s32.f32 s1, s1, #8 236# CHECK-NEXT: 1 2 1.00 vcvt.f64.u16 d1, d1, #8 237# CHECK-NEXT: 1 2 1.00 vcvt.f64.s16 d1, d1, #8 238# CHECK-NEXT: 1 2 1.00 vcvt.f64.u32 d1, d1, #8 239# CHECK-NEXT: 1 2 1.00 vcvt.f64.s32 d1, d1, #8 240# CHECK-NEXT: 1 2 1.00 vcvt.u16.f64 d1, d1, #8 241# CHECK-NEXT: 1 2 1.00 vcvt.s16.f64 d1, d1, #8 242# CHECK-NEXT: 1 2 1.00 vcvt.u32.f64 d1, d1, #8 243# CHECK-NEXT: 1 2 1.00 vcvt.s32.f64 d1, d1, #8 244# CHECK-NEXT: 1 2 1.00 vcvt.u32.f16 s1, s2 245# CHECK-NEXT: 1 2 1.00 vcvt.s32.f16 s1, s2 246# CHECK-NEXT: 1 2 1.00 vcvt.u32.f32 s1, s2 247# CHECK-NEXT: 1 2 1.00 vcvt.s32.f32 s1, s2 248# CHECK-NEXT: 1 2 1.00 vcvt.u32.f64 s1, d2 249# CHECK-NEXT: 1 2 1.00 vcvt.s32.f64 s1, d2 250# CHECK-NEXT: 1 2 1.00 vcvt.f16.u32 s1, s2 251# CHECK-NEXT: 1 2 1.00 vcvt.f16.s32 s1, s2 252# CHECK-NEXT: 1 2 1.00 vcvt.f32.u32 s1, s2 253# CHECK-NEXT: 1 2 1.00 vcvt.f32.s32 s1, s2 254# CHECK-NEXT: 1 2 1.00 vcvt.f64.u32 d1, s2 255# CHECK-NEXT: 1 2 1.00 vcvt.f64.s32 d1, s2 256# CHECK-NEXT: 1 2 1.00 vcvta.u32.f16 s1, s2 257# CHECK-NEXT: 1 2 1.00 vcvta.s32.f16 s1, s2 258# CHECK-NEXT: 1 2 1.00 vcvta.u32.f32 s1, s2 259# CHECK-NEXT: 1 2 1.00 vcvta.s32.f32 s1, s2 260# CHECK-NEXT: 1 2 1.00 vcvta.u32.f64 s1, d2 261# CHECK-NEXT: 1 2 1.00 vcvta.s32.f64 s1, d2 262# CHECK-NEXT: 1 2 1.00 vcvtm.u32.f16 s1, s2 263# CHECK-NEXT: 1 2 1.00 vcvtm.s32.f16 s1, s2 264# CHECK-NEXT: 1 2 1.00 vcvtm.u32.f32 s1, s2 265# CHECK-NEXT: 1 2 1.00 vcvtm.s32.f32 s1, s2 266# CHECK-NEXT: 1 2 1.00 vcvtm.u32.f64 s1, d2 267# CHECK-NEXT: 1 2 1.00 vcvtm.s32.f64 s1, d2 268# CHECK-NEXT: 1 2 1.00 vcvtn.u32.f16 s1, s2 269# CHECK-NEXT: 1 2 1.00 vcvtn.s32.f16 s1, s2 270# CHECK-NEXT: 1 2 1.00 vcvtn.u32.f32 s1, s2 271# CHECK-NEXT: 1 2 1.00 vcvtn.s32.f32 s1, s2 272# CHECK-NEXT: 1 2 1.00 vcvtn.u32.f64 s1, d2 273# CHECK-NEXT: 1 2 1.00 vcvtn.s32.f64 s1, d2 274# CHECK-NEXT: 1 2 1.00 vcvtp.u32.f16 s1, s2 275# CHECK-NEXT: 1 2 1.00 vcvtp.s32.f16 s1, s2 276# CHECK-NEXT: 1 2 1.00 vcvtp.u32.f32 s1, s2 277# CHECK-NEXT: 1 2 1.00 vcvtp.s32.f32 s1, s2 278# CHECK-NEXT: 1 2 1.00 vcvtp.u32.f64 s1, d2 279# CHECK-NEXT: 1 2 1.00 vcvtp.s32.f64 s1, d2 280# CHECK-NEXT: 1 2 1.00 vcvtb.f16.f32 s1, s2 281# CHECK-NEXT: 1 2 1.00 vcvtb.f16.f64 s1, d2 282# CHECK-NEXT: 1 2 1.00 vcvtb.f32.f16 s1, s2 283# CHECK-NEXT: 1 2 1.00 vcvtb.f64.f16 d1, s2 284# CHECK-NEXT: 1 2 1.00 vcvtr.u32.f16 s1, s2 285# CHECK-NEXT: 1 2 1.00 vcvtr.s32.f16 s1, s2 286# CHECK-NEXT: 1 2 1.00 vcvtr.u32.f32 s1, s2 287# CHECK-NEXT: 1 2 1.00 vcvtr.s32.f32 s1, s2 288# CHECK-NEXT: 1 2 1.00 vcvtr.u32.f64 s1, d2 289# CHECK-NEXT: 1 2 1.00 vcvtr.s32.f64 s1, d2 290# CHECK-NEXT: 1 2 1.00 vcvtt.f16.f32 s1, s2 291# CHECK-NEXT: 1 2 1.00 vcvtt.f16.f64 s1, d2 292# CHECK-NEXT: 1 2 1.00 vcvtt.f32.f16 s1, s2 293# CHECK-NEXT: 1 2 1.00 vcvtt.f64.f16 d1, s2 294# CHECK-NEXT: 1 9 1.00 vdiv.f16 s0, s2, s1 295# CHECK-NEXT: 1 16 1.00 vdiv.f32 s0, s2, s1 296# CHECK-NEXT: 1 30 1.00 vdiv.f64 d0, d2, d1 297# CHECK-NEXT: 1 2 1.00 vfma.f16 s0, s2, s1 298# CHECK-NEXT: 1 2 1.00 vfma.f32 s0, s2, s1 299# CHECK-NEXT: 1 24 1.00 vfma.f64 d0, d2, d1 300# CHECK-NEXT: 1 2 1.00 vfms.f16 s0, s2, s1 301# CHECK-NEXT: 1 2 1.00 vfms.f32 s0, s2, s1 302# CHECK-NEXT: 1 24 1.00 vfms.f64 d0, d2, d1 303# CHECK-NEXT: 1 2 1.00 vfnma.f16 s0, s2, s1 304# CHECK-NEXT: 1 2 1.00 vfnma.f32 s0, s2, s1 305# CHECK-NEXT: 1 24 1.00 vfnma.f64 d0, d2, d1 306# CHECK-NEXT: 1 2 1.00 vfnms.f16 s0, s2, s1 307# CHECK-NEXT: 1 2 1.00 vfnms.f32 s0, s2, s1 308# CHECK-NEXT: 1 24 1.00 vfnms.f64 d0, d2, d1 309# CHECK-NEXT: 1 2 1.00 vins.f16 s0, s1 310# CHECK-NEXT: 1 2 1.00 vmaxnm.f16 s0, s2, s1 311# CHECK-NEXT: 1 2 1.00 vmaxnm.f32 s0, s2, s1 312# CHECK-NEXT: 1 2 1.00 vmaxnm.f64 d0, d2, d1 313# CHECK-NEXT: 1 2 1.00 vminnm.f16 s0, s2, s1 314# CHECK-NEXT: 1 2 1.00 vminnm.f32 s0, s2, s1 315# CHECK-NEXT: 1 2 1.00 vminnm.f64 d0, d2, d1 316# CHECK-NEXT: 1 4 1.00 vmla.f16 s0, s2, s1 317# CHECK-NEXT: 1 4 1.00 vmla.f32 s0, s2, s1 318# CHECK-NEXT: 1 36 1.00 vmla.f64 d0, d2, d1 319# CHECK-NEXT: 1 4 1.00 vmls.f16 s0, s2, s1 320# CHECK-NEXT: 1 4 1.00 vmls.f32 s0, s2, s1 321# CHECK-NEXT: 1 36 1.00 vmls.f64 d0, d2, d1 322# CHECK-NEXT: 1 2 1.00 vmov.f16 s0, r1 323# CHECK-NEXT: 1 1 1.00 vmov.f16 r0, s1 324# CHECK-NEXT: 1 2 1.00 vmov s0, r1 325# CHECK-NEXT: 1 1 1.00 vmov r0, s1 326# CHECK-NEXT: 1 2 1.00 vmov d0, r1, r2 327# CHECK-NEXT: 1 1 1.00 vmov r0, r1, d1 328# CHECK-NEXT: 1 2 1.00 vmov s0, s1, r0, r1 329# CHECK-NEXT: 1 1 1.00 vmov r0, r1, s0, s1 330# CHECK-NEXT: 1 1 1.00 vmov.f16 s0, #1.000000e+00 331# CHECK-NEXT: 1 1 1.00 vmov.f32 s0, #1.000000e+00 332# CHECK-NEXT: 1 1 1.00 vmov.f64 d0, #1.000000e+00 333# CHECK-NEXT: 1 1 1.00 vmov.f32 s0, s1 334# CHECK-NEXT: 1 1 1.00 vmov.f64 d0, d1 335# CHECK-NEXT: 1 2 1.00 vmovx.f16 s0, s1 336# CHECK-NEXT: 1 2 1.00 vmul.f16 s0, s2, s1 337# CHECK-NEXT: 1 2 1.00 vmul.f32 s0, s2, s1 338# CHECK-NEXT: 1 21 1.00 vmul.f64 d0, d2, d1 339# CHECK-NEXT: 1 2 1.00 vneg.f16 s0, s2 340# CHECK-NEXT: 1 2 1.00 vneg.f32 s0, s2 341# CHECK-NEXT: 1 2 1.00 vneg.f64 d0, d2 342# CHECK-NEXT: 1 4 1.00 vnmla.f16 s0, s2, s1 343# CHECK-NEXT: 1 4 1.00 vnmla.f32 s0, s2, s1 344# CHECK-NEXT: 1 36 1.00 vnmla.f64 d0, d2, d1 345# CHECK-NEXT: 1 4 1.00 vnmls.f16 s0, s2, s1 346# CHECK-NEXT: 1 4 1.00 vnmls.f32 s0, s2, s1 347# CHECK-NEXT: 1 36 1.00 vnmls.f64 d0, d2, d1 348# CHECK-NEXT: 1 2 1.00 vnmul.f16 s0, s2, s1 349# CHECK-NEXT: 1 2 1.00 vnmul.f32 s0, s2, s1 350# CHECK-NEXT: 1 21 1.00 vnmul.f64 d0, d2, d1 351# CHECK-NEXT: 1 2 1.00 vrinta.f16 s0, s2 352# CHECK-NEXT: 1 2 1.00 vrinta.f32 s0, s2 353# CHECK-NEXT: 1 2 1.00 vrinta.f64 d0, d2 354# CHECK-NEXT: 1 2 1.00 vrintm.f16 s0, s2 355# CHECK-NEXT: 1 2 1.00 vrintm.f32 s0, s2 356# CHECK-NEXT: 1 2 1.00 vrintm.f64 d0, d2 357# CHECK-NEXT: 1 2 1.00 vrintn.f16 s0, s2 358# CHECK-NEXT: 1 2 1.00 vrintn.f32 s0, s2 359# CHECK-NEXT: 1 2 1.00 vrintn.f64 d0, d2 360# CHECK-NEXT: 1 2 1.00 vrintp.f16 s0, s2 361# CHECK-NEXT: 1 2 1.00 vrintp.f32 s0, s2 362# CHECK-NEXT: 1 2 1.00 vrintp.f64 d0, d2 363# CHECK-NEXT: 1 2 1.00 vrintr.f16 s0, s2 364# CHECK-NEXT: 1 2 1.00 vrintr.f32 s0, s2 365# CHECK-NEXT: 1 2 1.00 vrintr.f64 d0, d2 366# CHECK-NEXT: 1 2 1.00 vrintz.f16 s0, s2 367# CHECK-NEXT: 1 2 1.00 vrintz.f32 s0, s2 368# CHECK-NEXT: 1 2 1.00 vrintz.f64 d0, d2 369# CHECK-NEXT: 1 2 1.00 vrintx.f16 s0, s2 370# CHECK-NEXT: 1 2 1.00 vrintx.f32 s0, s2 371# CHECK-NEXT: 1 2 1.00 vrintx.f64 d0, d2 372# CHECK-NEXT: 1 2 1.00 vseleq.f16 s0, s2, s1 373# CHECK-NEXT: 1 2 1.00 vseleq.f32 s0, s2, s1 374# CHECK-NEXT: 1 2 1.00 vseleq.f64 d0, d2, d1 375# CHECK-NEXT: 1 9 1.00 vsqrt.f16 s0, s2 376# CHECK-NEXT: 1 16 1.00 vsqrt.f32 s0, s2 377# CHECK-NEXT: 1 30 1.00 vsqrt.f64 d0, d2 378# CHECK-NEXT: 1 2 1.00 vsub.f16 s0, s2, s1 379# CHECK-NEXT: 1 2 1.00 vsub.f32 s0, s2, s1 380# CHECK-NEXT: 1 15 1.00 vsub.f64 d0, d2, d1 381 382# CHECK: Resources: 383# CHECK-NEXT: [0] - M55UnitALU 384# CHECK-NEXT: [1] - M55UnitLoadStore 385# CHECK-NEXT: [2] - M55UnitVecALU 386# CHECK-NEXT: [3] - M55UnitVecFPALU 387# CHECK-NEXT: [4] - M55UnitVecSys 388 389# CHECK: Resource pressure per iteration: 390# CHECK-NEXT: [0] [1] [2] [3] [4] 391# CHECK-NEXT: - - - 181.00 - 392 393# CHECK: Resource pressure by instruction: 394# CHECK-NEXT: [0] [1] [2] [3] [4] Instructions: 395# CHECK-NEXT: - - - 1.00 - vabs.f16 s0, s2 396# CHECK-NEXT: - - - 1.00 - vabs.f32 s0, s2 397# CHECK-NEXT: - - - 1.00 - vabs.f64 d0, d2 398# CHECK-NEXT: - - - 1.00 - vadd.f16 s0, s2, s1 399# CHECK-NEXT: - - - 1.00 - vadd.f32 s0, s2, s1 400# CHECK-NEXT: - - - 1.00 - vadd.f64 d0, d2, d1 401# CHECK-NEXT: - - - 1.00 - vcmp.f16 s1, s2 402# CHECK-NEXT: - - - 1.00 - vcmp.f32 s1, s2 403# CHECK-NEXT: - - - 1.00 - vcmp.f64 d1, d2 404# CHECK-NEXT: - - - 1.00 - vcmp.f16 s1, #0 405# CHECK-NEXT: - - - 1.00 - vcmp.f32 s1, #0 406# CHECK-NEXT: - - - 1.00 - vcmp.f64 d1, #0 407# CHECK-NEXT: - - - 1.00 - vcmpe.f16 s1, s2 408# CHECK-NEXT: - - - 1.00 - vcmpe.f32 s1, s2 409# CHECK-NEXT: - - - 1.00 - vcmpe.f64 d1, d2 410# CHECK-NEXT: - - - 1.00 - vcmpe.f16 s1, #0 411# CHECK-NEXT: - - - 1.00 - vcmpe.f32 s1, #0 412# CHECK-NEXT: - - - 1.00 - vcmpe.f64 d1, #0 413# CHECK-NEXT: - - - 1.00 - vcvt.f32.f64 s1, d2 414# CHECK-NEXT: - - - 1.00 - vcvt.f64.f32 d1, s1 415# CHECK-NEXT: - - - 1.00 - vcvt.f16.u16 s1, s1, #8 416# CHECK-NEXT: - - - 1.00 - vcvt.f16.s16 s1, s1, #8 417# CHECK-NEXT: - - - 1.00 - vcvt.f16.u32 s1, s1, #8 418# CHECK-NEXT: - - - 1.00 - vcvt.f16.s32 s1, s1, #8 419# CHECK-NEXT: - - - 1.00 - vcvt.u16.f16 s1, s1, #8 420# CHECK-NEXT: - - - 1.00 - vcvt.s16.f16 s1, s1, #8 421# CHECK-NEXT: - - - 1.00 - vcvt.u32.f16 s1, s1, #8 422# CHECK-NEXT: - - - 1.00 - vcvt.s32.f16 s1, s1, #8 423# CHECK-NEXT: - - - 1.00 - vcvt.f32.u16 s1, s1, #8 424# CHECK-NEXT: - - - 1.00 - vcvt.f32.s16 s1, s1, #8 425# CHECK-NEXT: - - - 1.00 - vcvt.f32.u32 s1, s1, #8 426# CHECK-NEXT: - - - 1.00 - vcvt.f32.s32 s1, s1, #8 427# CHECK-NEXT: - - - 1.00 - vcvt.u16.f32 s1, s1, #8 428# CHECK-NEXT: - - - 1.00 - vcvt.s16.f32 s1, s1, #8 429# CHECK-NEXT: - - - 1.00 - vcvt.u32.f32 s1, s1, #8 430# CHECK-NEXT: - - - 1.00 - vcvt.s32.f32 s1, s1, #8 431# CHECK-NEXT: - - - 1.00 - vcvt.f64.u16 d1, d1, #8 432# CHECK-NEXT: - - - 1.00 - vcvt.f64.s16 d1, d1, #8 433# CHECK-NEXT: - - - 1.00 - vcvt.f64.u32 d1, d1, #8 434# CHECK-NEXT: - - - 1.00 - vcvt.f64.s32 d1, d1, #8 435# CHECK-NEXT: - - - 1.00 - vcvt.u16.f64 d1, d1, #8 436# CHECK-NEXT: - - - 1.00 - vcvt.s16.f64 d1, d1, #8 437# CHECK-NEXT: - - - 1.00 - vcvt.u32.f64 d1, d1, #8 438# CHECK-NEXT: - - - 1.00 - vcvt.s32.f64 d1, d1, #8 439# CHECK-NEXT: - - - 1.00 - vcvt.u32.f16 s1, s2 440# CHECK-NEXT: - - - 1.00 - vcvt.s32.f16 s1, s2 441# CHECK-NEXT: - - - 1.00 - vcvt.u32.f32 s1, s2 442# CHECK-NEXT: - - - 1.00 - vcvt.s32.f32 s1, s2 443# CHECK-NEXT: - - - 1.00 - vcvt.u32.f64 s1, d2 444# CHECK-NEXT: - - - 1.00 - vcvt.s32.f64 s1, d2 445# CHECK-NEXT: - - - 1.00 - vcvt.f16.u32 s1, s2 446# CHECK-NEXT: - - - 1.00 - vcvt.f16.s32 s1, s2 447# CHECK-NEXT: - - - 1.00 - vcvt.f32.u32 s1, s2 448# CHECK-NEXT: - - - 1.00 - vcvt.f32.s32 s1, s2 449# CHECK-NEXT: - - - 1.00 - vcvt.f64.u32 d1, s2 450# CHECK-NEXT: - - - 1.00 - vcvt.f64.s32 d1, s2 451# CHECK-NEXT: - - - 1.00 - vcvta.u32.f16 s1, s2 452# CHECK-NEXT: - - - 1.00 - vcvta.s32.f16 s1, s2 453# CHECK-NEXT: - - - 1.00 - vcvta.u32.f32 s1, s2 454# CHECK-NEXT: - - - 1.00 - vcvta.s32.f32 s1, s2 455# CHECK-NEXT: - - - 1.00 - vcvta.u32.f64 s1, d2 456# CHECK-NEXT: - - - 1.00 - vcvta.s32.f64 s1, d2 457# CHECK-NEXT: - - - 1.00 - vcvtm.u32.f16 s1, s2 458# CHECK-NEXT: - - - 1.00 - vcvtm.s32.f16 s1, s2 459# CHECK-NEXT: - - - 1.00 - vcvtm.u32.f32 s1, s2 460# CHECK-NEXT: - - - 1.00 - vcvtm.s32.f32 s1, s2 461# CHECK-NEXT: - - - 1.00 - vcvtm.u32.f64 s1, d2 462# CHECK-NEXT: - - - 1.00 - vcvtm.s32.f64 s1, d2 463# CHECK-NEXT: - - - 1.00 - vcvtn.u32.f16 s1, s2 464# CHECK-NEXT: - - - 1.00 - vcvtn.s32.f16 s1, s2 465# CHECK-NEXT: - - - 1.00 - vcvtn.u32.f32 s1, s2 466# CHECK-NEXT: - - - 1.00 - vcvtn.s32.f32 s1, s2 467# CHECK-NEXT: - - - 1.00 - vcvtn.u32.f64 s1, d2 468# CHECK-NEXT: - - - 1.00 - vcvtn.s32.f64 s1, d2 469# CHECK-NEXT: - - - 1.00 - vcvtp.u32.f16 s1, s2 470# CHECK-NEXT: - - - 1.00 - vcvtp.s32.f16 s1, s2 471# CHECK-NEXT: - - - 1.00 - vcvtp.u32.f32 s1, s2 472# CHECK-NEXT: - - - 1.00 - vcvtp.s32.f32 s1, s2 473# CHECK-NEXT: - - - 1.00 - vcvtp.u32.f64 s1, d2 474# CHECK-NEXT: - - - 1.00 - vcvtp.s32.f64 s1, d2 475# CHECK-NEXT: - - - 1.00 - vcvtb.f16.f32 s1, s2 476# CHECK-NEXT: - - - 1.00 - vcvtb.f16.f64 s1, d2 477# CHECK-NEXT: - - - 1.00 - vcvtb.f32.f16 s1, s2 478# CHECK-NEXT: - - - 1.00 - vcvtb.f64.f16 d1, s2 479# CHECK-NEXT: - - - 1.00 - vcvtr.u32.f16 s1, s2 480# CHECK-NEXT: - - - 1.00 - vcvtr.s32.f16 s1, s2 481# CHECK-NEXT: - - - 1.00 - vcvtr.u32.f32 s1, s2 482# CHECK-NEXT: - - - 1.00 - vcvtr.s32.f32 s1, s2 483# CHECK-NEXT: - - - 1.00 - vcvtr.u32.f64 s1, d2 484# CHECK-NEXT: - - - 1.00 - vcvtr.s32.f64 s1, d2 485# CHECK-NEXT: - - - 1.00 - vcvtt.f16.f32 s1, s2 486# CHECK-NEXT: - - - 1.00 - vcvtt.f16.f64 s1, d2 487# CHECK-NEXT: - - - 1.00 - vcvtt.f32.f16 s1, s2 488# CHECK-NEXT: - - - 1.00 - vcvtt.f64.f16 d1, s2 489# CHECK-NEXT: - - - 1.00 - vdiv.f16 s0, s2, s1 490# CHECK-NEXT: - - - 1.00 - vdiv.f32 s0, s2, s1 491# CHECK-NEXT: - - - 1.00 - vdiv.f64 d0, d2, d1 492# CHECK-NEXT: - - - 1.00 - vfma.f16 s0, s2, s1 493# CHECK-NEXT: - - - 1.00 - vfma.f32 s0, s2, s1 494# CHECK-NEXT: - - - 1.00 - vfma.f64 d0, d2, d1 495# CHECK-NEXT: - - - 1.00 - vfms.f16 s0, s2, s1 496# CHECK-NEXT: - - - 1.00 - vfms.f32 s0, s2, s1 497# CHECK-NEXT: - - - 1.00 - vfms.f64 d0, d2, d1 498# CHECK-NEXT: - - - 1.00 - vfnma.f16 s0, s2, s1 499# CHECK-NEXT: - - - 1.00 - vfnma.f32 s0, s2, s1 500# CHECK-NEXT: - - - 1.00 - vfnma.f64 d0, d2, d1 501# CHECK-NEXT: - - - 1.00 - vfnms.f16 s0, s2, s1 502# CHECK-NEXT: - - - 1.00 - vfnms.f32 s0, s2, s1 503# CHECK-NEXT: - - - 1.00 - vfnms.f64 d0, d2, d1 504# CHECK-NEXT: - - - 1.00 - vins.f16 s0, s1 505# CHECK-NEXT: - - - 1.00 - vmaxnm.f16 s0, s2, s1 506# CHECK-NEXT: - - - 1.00 - vmaxnm.f32 s0, s2, s1 507# CHECK-NEXT: - - - 1.00 - vmaxnm.f64 d0, d2, d1 508# CHECK-NEXT: - - - 1.00 - vminnm.f16 s0, s2, s1 509# CHECK-NEXT: - - - 1.00 - vminnm.f32 s0, s2, s1 510# CHECK-NEXT: - - - 1.00 - vminnm.f64 d0, d2, d1 511# CHECK-NEXT: - - - 1.00 - vmla.f16 s0, s2, s1 512# CHECK-NEXT: - - - 1.00 - vmla.f32 s0, s2, s1 513# CHECK-NEXT: - - - 1.00 - vmla.f64 d0, d2, d1 514# CHECK-NEXT: - - - 1.00 - vmls.f16 s0, s2, s1 515# CHECK-NEXT: - - - 1.00 - vmls.f32 s0, s2, s1 516# CHECK-NEXT: - - - 1.00 - vmls.f64 d0, d2, d1 517# CHECK-NEXT: - - - 1.00 - vmov.f16 s0, r1 518# CHECK-NEXT: - - - 1.00 - vmov.f16 r0, s1 519# CHECK-NEXT: - - - 1.00 - vmov s0, r1 520# CHECK-NEXT: - - - 1.00 - vmov r0, s1 521# CHECK-NEXT: - - - 1.00 - vmov d0, r1, r2 522# CHECK-NEXT: - - - 1.00 - vmov r0, r1, d1 523# CHECK-NEXT: - - - 1.00 - vmov s0, s1, r0, r1 524# CHECK-NEXT: - - - 1.00 - vmov r0, r1, s0, s1 525# CHECK-NEXT: - - - 1.00 - vmov.f16 s0, #1.000000e+00 526# CHECK-NEXT: - - - 1.00 - vmov.f32 s0, #1.000000e+00 527# CHECK-NEXT: - - - 1.00 - vmov.f64 d0, #1.000000e+00 528# CHECK-NEXT: - - - 1.00 - vmov.f32 s0, s1 529# CHECK-NEXT: - - - 1.00 - vmov.f64 d0, d1 530# CHECK-NEXT: - - - 1.00 - vmovx.f16 s0, s1 531# CHECK-NEXT: - - - 1.00 - vmul.f16 s0, s2, s1 532# CHECK-NEXT: - - - 1.00 - vmul.f32 s0, s2, s1 533# CHECK-NEXT: - - - 1.00 - vmul.f64 d0, d2, d1 534# CHECK-NEXT: - - - 1.00 - vneg.f16 s0, s2 535# CHECK-NEXT: - - - 1.00 - vneg.f32 s0, s2 536# CHECK-NEXT: - - - 1.00 - vneg.f64 d0, d2 537# CHECK-NEXT: - - - 1.00 - vnmla.f16 s0, s2, s1 538# CHECK-NEXT: - - - 1.00 - vnmla.f32 s0, s2, s1 539# CHECK-NEXT: - - - 1.00 - vnmla.f64 d0, d2, d1 540# CHECK-NEXT: - - - 1.00 - vnmls.f16 s0, s2, s1 541# CHECK-NEXT: - - - 1.00 - vnmls.f32 s0, s2, s1 542# CHECK-NEXT: - - - 1.00 - vnmls.f64 d0, d2, d1 543# CHECK-NEXT: - - - 1.00 - vnmul.f16 s0, s2, s1 544# CHECK-NEXT: - - - 1.00 - vnmul.f32 s0, s2, s1 545# CHECK-NEXT: - - - 1.00 - vnmul.f64 d0, d2, d1 546# CHECK-NEXT: - - - 1.00 - vrinta.f16 s0, s2 547# CHECK-NEXT: - - - 1.00 - vrinta.f32 s0, s2 548# CHECK-NEXT: - - - 1.00 - vrinta.f64 d0, d2 549# CHECK-NEXT: - - - 1.00 - vrintm.f16 s0, s2 550# CHECK-NEXT: - - - 1.00 - vrintm.f32 s0, s2 551# CHECK-NEXT: - - - 1.00 - vrintm.f64 d0, d2 552# CHECK-NEXT: - - - 1.00 - vrintn.f16 s0, s2 553# CHECK-NEXT: - - - 1.00 - vrintn.f32 s0, s2 554# CHECK-NEXT: - - - 1.00 - vrintn.f64 d0, d2 555# CHECK-NEXT: - - - 1.00 - vrintp.f16 s0, s2 556# CHECK-NEXT: - - - 1.00 - vrintp.f32 s0, s2 557# CHECK-NEXT: - - - 1.00 - vrintp.f64 d0, d2 558# CHECK-NEXT: - - - 1.00 - vrintr.f16 s0, s2 559# CHECK-NEXT: - - - 1.00 - vrintr.f32 s0, s2 560# CHECK-NEXT: - - - 1.00 - vrintr.f64 d0, d2 561# CHECK-NEXT: - - - 1.00 - vrintz.f16 s0, s2 562# CHECK-NEXT: - - - 1.00 - vrintz.f32 s0, s2 563# CHECK-NEXT: - - - 1.00 - vrintz.f64 d0, d2 564# CHECK-NEXT: - - - 1.00 - vrintx.f16 s0, s2 565# CHECK-NEXT: - - - 1.00 - vrintx.f32 s0, s2 566# CHECK-NEXT: - - - 1.00 - vrintx.f64 d0, d2 567# CHECK-NEXT: - - - 1.00 - vseleq.f16 s0, s2, s1 568# CHECK-NEXT: - - - 1.00 - vseleq.f32 s0, s2, s1 569# CHECK-NEXT: - - - 1.00 - vseleq.f64 d0, d2, d1 570# CHECK-NEXT: - - - 1.00 - vsqrt.f16 s0, s2 571# CHECK-NEXT: - - - 1.00 - vsqrt.f32 s0, s2 572# CHECK-NEXT: - - - 1.00 - vsqrt.f64 d0, d2 573# CHECK-NEXT: - - - 1.00 - vsub.f16 s0, s2, s1 574# CHECK-NEXT: - - - 1.00 - vsub.f32 s0, s2, s1 575# CHECK-NEXT: - - - 1.00 - vsub.f64 d0, d2, d1 576