316 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=thumbv8.1-m.main-none-none-eabi -mcpu=cortex-m55 -instruction-tables < %s | FileCheck %s3 4vabd.f16 q0, q2, q15vabd.f32 q0, q2, q16vabs.f16 q0, q27vabs.f32 q0, q28vadd.f16 q0, q2, q19vadd.f32 q0, q2, q110vadd.f16 q0, q2, r011vadd.f32 q0, q2, r012vcadd.f16 q0, q2, q1, #9013vcadd.f32 q0, q2, q1, #9014vcmla.f16 q0, q2, q1, #9015vcmla.f32 q0, q2, q1, #9016vcmul.f16 q0, q2, q1, #9017vcmul.f32 q0, q2, q1, #9018vcvt.f16.s16 q0, q1, #419vcvt.f16.u16 q0, q1, #420vcvt.s16.f16 q0, q1, #421vcvt.u16.f16 q0, q1, #422vcvt.f32.s32 q0, q1, #423vcvt.f32.u32 q0, q1, #424vcvt.s32.f32 q0, q1, #425vcvt.u32.f32 q0, q1, #426vcvt.f16.s16 q0, q127vcvt.f32.s32 q0, q128vcvt.f16.u16 q0, q129vcvt.f32.u32 q0, q130vcvt.s16.f16 q0, q131vcvt.s32.f32 q0, q132vcvt.u16.f16 q0, q133vcvt.u32.f32 q0, q134vcvtb.f16.f32 q0, q135vcvtb.f32.f16 q0, q136vcvtt.f16.f32 q0, q137vcvtt.f32.f16 q0, q138vcvta.s16.f16 q0, q139vcvta.s32.f32 q0, q140vcvta.u16.f16 q0, q141vcvta.u32.f32 q0, q142vcvtm.s16.f16 q0, q143vcvtm.s32.f32 q0, q144vcvtm.u16.f16 q0, q145vcvtm.u32.f32 q0, q146vcvtn.s16.f16 q0, q147vcvtn.s32.f32 q0, q148vcvtn.u16.f16 q0, q149vcvtn.u32.f32 q0, q150vcvtp.s16.f16 q0, q151vcvtp.s32.f32 q0, q152vcvtp.u16.f16 q0, q153vcvtp.u32.f32 q0, q154vfma.f16 q0, q2, r055vfma.f32 q0, q2, r056vfma.f16 q0, q2, q157vfma.f32 q0, q2, q158vfms.f16 q0, q2, q159vfms.f32 q0, q2, q160vfmas.f16 q0, q2, r061vfmas.f32 q0, q2, r062vmaxnm.f16 q0, q2, q163vmaxnm.f32 q0, q2, q164vmaxnma.f16 q0, q265vmaxnma.f32 q0, q266vmaxnmv.f16 r0, q267vmaxnmv.f32 r0, q268vmaxnmav.f16 r0, q269vmaxnmav.f32 r0, q270vminnm.f16 q0, q2, q171vminnm.f32 q0, q2, q172vminnma.f16 q0, q273vminnma.f32 q0, q274vminnmv.f16 r0, q275vminnmv.f32 r0, q276vminnmav.f16 r0, q277vminnmav.f32 r0, q278vmul.f16 q0, q2, q179vmul.f32 q0, q2, q180vmul.f16 q0, q2, r081vmul.f32 q0, q2, r082vneg.f16 q0, q283vneg.f32 q0, q284vrinta.f16 q0, q285vrinta.f32 q0, q286vrintm.f16 q0, q287vrintm.f32 q0, q288vrintn.f16 q0, q289vrintn.f32 q0, q290vrintp.f16 q0, q291vrintp.f32 q0, q292vrintx.f16 q0, q293vrintx.f32 q0, q294vrintz.f16 q0, q295vrintz.f32 q0, q296vsub.f16 q0, q2, q197vsub.f32 q0, q2, q198vsub.f16 q0, q2, r099vsub.f32 q0, q2, r0100 101# CHECK: Instruction Info:102# CHECK-NEXT: [1]: #uOps103# CHECK-NEXT: [2]: Latency104# CHECK-NEXT: [3]: RThroughput105# CHECK-NEXT: [4]: MayLoad106# CHECK-NEXT: [5]: MayStore107# CHECK-NEXT: [6]: HasSideEffects (U)108 109# CHECK: [1] [2] [3] [4] [5] [6] Instructions:110# CHECK-NEXT: 1 1 2.00 vabd.f16 q0, q2, q1111# CHECK-NEXT: 1 1 2.00 vabd.f32 q0, q2, q1112# CHECK-NEXT: 1 1 2.00 vabs.f16 q0, q2113# CHECK-NEXT: 1 1 2.00 vabs.f32 q0, q2114# CHECK-NEXT: 1 1 2.00 vadd.f16 q0, q2, q1115# CHECK-NEXT: 1 1 2.00 vadd.f32 q0, q2, q1116# CHECK-NEXT: 1 2 2.00 vadd.f16 q0, q2, r0117# CHECK-NEXT: 1 2 2.00 vadd.f32 q0, q2, r0118# CHECK-NEXT: 1 1 2.00 vcadd.f16 q0, q2, q1, #90119# CHECK-NEXT: 1 1 2.00 vcadd.f32 q0, q2, q1, #90120# CHECK-NEXT: 1 2 2.00 vcmla.f16 q0, q2, q1, #90121# CHECK-NEXT: 1 2 2.00 vcmla.f32 q0, q2, q1, #90122# CHECK-NEXT: 1 2 2.00 vcmul.f16 q0, q2, q1, #90123# CHECK-NEXT: 1 2 2.00 vcmul.f32 q0, q2, q1, #90124# CHECK-NEXT: 1 2 2.00 vcvt.f16.s16 q0, q1, #4125# CHECK-NEXT: 1 2 2.00 vcvt.f16.u16 q0, q1, #4126# CHECK-NEXT: 1 2 2.00 vcvt.s16.f16 q0, q1, #4127# CHECK-NEXT: 1 2 2.00 vcvt.u16.f16 q0, q1, #4128# CHECK-NEXT: 1 2 2.00 vcvt.f32.s32 q0, q1, #4129# CHECK-NEXT: 1 2 2.00 vcvt.f32.u32 q0, q1, #4130# CHECK-NEXT: 1 2 2.00 vcvt.s32.f32 q0, q1, #4131# CHECK-NEXT: 1 2 2.00 vcvt.u32.f32 q0, q1, #4132# CHECK-NEXT: 1 2 2.00 vcvt.f16.s16 q0, q1133# CHECK-NEXT: 1 2 2.00 vcvt.f32.s32 q0, q1134# CHECK-NEXT: 1 2 2.00 vcvt.f16.u16 q0, q1135# CHECK-NEXT: 1 2 2.00 vcvt.f32.u32 q0, q1136# CHECK-NEXT: 1 2 2.00 vcvt.s16.f16 q0, q1137# CHECK-NEXT: 1 2 2.00 vcvt.s32.f32 q0, q1138# CHECK-NEXT: 1 2 2.00 vcvt.u16.f16 q0, q1139# CHECK-NEXT: 1 2 2.00 vcvt.u32.f32 q0, q1140# CHECK-NEXT: 1 3 2.00 vcvtb.f16.f32 q0, q1141# CHECK-NEXT: 1 2 2.00 vcvtb.f32.f16 q0, q1142# CHECK-NEXT: 1 3 2.00 vcvtt.f16.f32 q0, q1143# CHECK-NEXT: 1 2 2.00 vcvtt.f32.f16 q0, q1144# CHECK-NEXT: 1 2 2.00 vcvta.s16.f16 q0, q1145# CHECK-NEXT: 1 2 2.00 vcvta.s32.f32 q0, q1146# CHECK-NEXT: 1 2 2.00 vcvta.u16.f16 q0, q1147# CHECK-NEXT: 1 2 2.00 vcvta.u32.f32 q0, q1148# CHECK-NEXT: 1 2 2.00 vcvtm.s16.f16 q0, q1149# CHECK-NEXT: 1 2 2.00 vcvtm.s32.f32 q0, q1150# CHECK-NEXT: 1 2 2.00 vcvtm.u16.f16 q0, q1151# CHECK-NEXT: 1 2 2.00 vcvtm.u32.f32 q0, q1152# CHECK-NEXT: 1 2 2.00 vcvtn.s16.f16 q0, q1153# CHECK-NEXT: 1 2 2.00 vcvtn.s32.f32 q0, q1154# CHECK-NEXT: 1 2 2.00 vcvtn.u16.f16 q0, q1155# CHECK-NEXT: 1 2 2.00 vcvtn.u32.f32 q0, q1156# CHECK-NEXT: 1 2 2.00 vcvtp.s16.f16 q0, q1157# CHECK-NEXT: 1 2 2.00 vcvtp.s32.f32 q0, q1158# CHECK-NEXT: 1 2 2.00 vcvtp.u16.f16 q0, q1159# CHECK-NEXT: 1 2 2.00 vcvtp.u32.f32 q0, q1160# CHECK-NEXT: 1 2 2.00 vfma.f16 q0, q2, r0161# CHECK-NEXT: 1 2 2.00 vfma.f32 q0, q2, r0162# CHECK-NEXT: 1 2 2.00 vfma.f16 q0, q2, q1163# CHECK-NEXT: 1 2 2.00 vfma.f32 q0, q2, q1164# CHECK-NEXT: 1 2 2.00 vfms.f16 q0, q2, q1165# CHECK-NEXT: 1 2 2.00 vfms.f32 q0, q2, q1166# CHECK-NEXT: 1 2 2.00 vfmas.f16 q0, q2, r0167# CHECK-NEXT: 1 2 2.00 vfmas.f32 q0, q2, r0168# CHECK-NEXT: 1 1 2.00 vmaxnm.f16 q0, q2, q1169# CHECK-NEXT: 1 1 2.00 vmaxnm.f32 q0, q2, q1170# CHECK-NEXT: 1 1 2.00 vmaxnma.f16 q0, q2171# CHECK-NEXT: 1 1 2.00 vmaxnma.f32 q0, q2172# CHECK-NEXT: 1 1 2.00 vmaxnmv.f16 r0, q2173# CHECK-NEXT: 1 1 2.00 vmaxnmv.f32 r0, q2174# CHECK-NEXT: 1 1 2.00 vmaxnmav.f16 r0, q2175# CHECK-NEXT: 1 1 2.00 vmaxnmav.f32 r0, q2176# CHECK-NEXT: 1 1 2.00 vminnm.f16 q0, q2, q1177# CHECK-NEXT: 1 1 2.00 vminnm.f32 q0, q2, q1178# CHECK-NEXT: 1 1 2.00 vminnma.f16 q0, q2179# CHECK-NEXT: 1 1 2.00 vminnma.f32 q0, q2180# CHECK-NEXT: 1 1 2.00 vminnmv.f16 r0, q2181# CHECK-NEXT: 1 1 2.00 vminnmv.f32 r0, q2182# CHECK-NEXT: 1 1 2.00 vminnmav.f16 r0, q2183# CHECK-NEXT: 1 1 2.00 vminnmav.f32 r0, q2184# CHECK-NEXT: 1 2 2.00 vmul.f16 q0, q2, q1185# CHECK-NEXT: 1 2 2.00 vmul.f32 q0, q2, q1186# CHECK-NEXT: 1 2 2.00 vmul.f16 q0, q2, r0187# CHECK-NEXT: 1 2 2.00 vmul.f32 q0, q2, r0188# CHECK-NEXT: 1 1 2.00 vneg.f16 q0, q2189# CHECK-NEXT: 1 1 2.00 vneg.f32 q0, q2190# CHECK-NEXT: 1 2 2.00 vrinta.f16 q0, q2191# CHECK-NEXT: 1 2 2.00 vrinta.f32 q0, q2192# CHECK-NEXT: 1 2 2.00 vrintm.f16 q0, q2193# CHECK-NEXT: 1 2 2.00 vrintm.f32 q0, q2194# CHECK-NEXT: 1 2 2.00 vrintn.f16 q0, q2195# CHECK-NEXT: 1 2 2.00 vrintn.f32 q0, q2196# CHECK-NEXT: 1 2 2.00 vrintp.f16 q0, q2197# CHECK-NEXT: 1 2 2.00 vrintp.f32 q0, q2198# CHECK-NEXT: 1 2 2.00 vrintx.f16 q0, q2199# CHECK-NEXT: 1 2 2.00 vrintx.f32 q0, q2200# CHECK-NEXT: 1 2 2.00 vrintz.f16 q0, q2201# CHECK-NEXT: 1 2 2.00 vrintz.f32 q0, q2202# CHECK-NEXT: 1 1 2.00 vsub.f16 q0, q2, q1203# CHECK-NEXT: 1 1 2.00 vsub.f32 q0, q2, q1204# CHECK-NEXT: 1 2 2.00 vsub.f16 q0, q2, r0205# CHECK-NEXT: 1 2 2.00 vsub.f32 q0, q2, r0206 207# CHECK: Resources:208# CHECK-NEXT: [0] - M55UnitALU209# CHECK-NEXT: [1] - M55UnitLoadStore210# CHECK-NEXT: [2] - M55UnitVecALU211# CHECK-NEXT: [3] - M55UnitVecFPALU212# CHECK-NEXT: [4] - M55UnitVecSys213 214# CHECK: Resource pressure per iteration:215# CHECK-NEXT: [0] [1] [2] [3] [4]216# CHECK-NEXT: - - - 192.00 -217 218# CHECK: Resource pressure by instruction:219# CHECK-NEXT: [0] [1] [2] [3] [4] Instructions:220# CHECK-NEXT: - - - 2.00 - vabd.f16 q0, q2, q1221# CHECK-NEXT: - - - 2.00 - vabd.f32 q0, q2, q1222# CHECK-NEXT: - - - 2.00 - vabs.f16 q0, q2223# CHECK-NEXT: - - - 2.00 - vabs.f32 q0, q2224# CHECK-NEXT: - - - 2.00 - vadd.f16 q0, q2, q1225# CHECK-NEXT: - - - 2.00 - vadd.f32 q0, q2, q1226# CHECK-NEXT: - - - 2.00 - vadd.f16 q0, q2, r0227# CHECK-NEXT: - - - 2.00 - vadd.f32 q0, q2, r0228# CHECK-NEXT: - - - 2.00 - vcadd.f16 q0, q2, q1, #90229# CHECK-NEXT: - - - 2.00 - vcadd.f32 q0, q2, q1, #90230# CHECK-NEXT: - - - 2.00 - vcmla.f16 q0, q2, q1, #90231# CHECK-NEXT: - - - 2.00 - vcmla.f32 q0, q2, q1, #90232# CHECK-NEXT: - - - 2.00 - vcmul.f16 q0, q2, q1, #90233# CHECK-NEXT: - - - 2.00 - vcmul.f32 q0, q2, q1, #90234# CHECK-NEXT: - - - 2.00 - vcvt.f16.s16 q0, q1, #4235# CHECK-NEXT: - - - 2.00 - vcvt.f16.u16 q0, q1, #4236# CHECK-NEXT: - - - 2.00 - vcvt.s16.f16 q0, q1, #4237# CHECK-NEXT: - - - 2.00 - vcvt.u16.f16 q0, q1, #4238# CHECK-NEXT: - - - 2.00 - vcvt.f32.s32 q0, q1, #4239# CHECK-NEXT: - - - 2.00 - vcvt.f32.u32 q0, q1, #4240# CHECK-NEXT: - - - 2.00 - vcvt.s32.f32 q0, q1, #4241# CHECK-NEXT: - - - 2.00 - vcvt.u32.f32 q0, q1, #4242# CHECK-NEXT: - - - 2.00 - vcvt.f16.s16 q0, q1243# CHECK-NEXT: - - - 2.00 - vcvt.f32.s32 q0, q1244# CHECK-NEXT: - - - 2.00 - vcvt.f16.u16 q0, q1245# CHECK-NEXT: - - - 2.00 - vcvt.f32.u32 q0, q1246# CHECK-NEXT: - - - 2.00 - vcvt.s16.f16 q0, q1247# CHECK-NEXT: - - - 2.00 - vcvt.s32.f32 q0, q1248# CHECK-NEXT: - - - 2.00 - vcvt.u16.f16 q0, q1249# CHECK-NEXT: - - - 2.00 - vcvt.u32.f32 q0, q1250# CHECK-NEXT: - - - 2.00 - vcvtb.f16.f32 q0, q1251# CHECK-NEXT: - - - 2.00 - vcvtb.f32.f16 q0, q1252# CHECK-NEXT: - - - 2.00 - vcvtt.f16.f32 q0, q1253# CHECK-NEXT: - - - 2.00 - vcvtt.f32.f16 q0, q1254# CHECK-NEXT: - - - 2.00 - vcvta.s16.f16 q0, q1255# CHECK-NEXT: - - - 2.00 - vcvta.s32.f32 q0, q1256# CHECK-NEXT: - - - 2.00 - vcvta.u16.f16 q0, q1257# CHECK-NEXT: - - - 2.00 - vcvta.u32.f32 q0, q1258# CHECK-NEXT: - - - 2.00 - vcvtm.s16.f16 q0, q1259# CHECK-NEXT: - - - 2.00 - vcvtm.s32.f32 q0, q1260# CHECK-NEXT: - - - 2.00 - vcvtm.u16.f16 q0, q1261# CHECK-NEXT: - - - 2.00 - vcvtm.u32.f32 q0, q1262# CHECK-NEXT: - - - 2.00 - vcvtn.s16.f16 q0, q1263# CHECK-NEXT: - - - 2.00 - vcvtn.s32.f32 q0, q1264# CHECK-NEXT: - - - 2.00 - vcvtn.u16.f16 q0, q1265# CHECK-NEXT: - - - 2.00 - vcvtn.u32.f32 q0, q1266# CHECK-NEXT: - - - 2.00 - vcvtp.s16.f16 q0, q1267# CHECK-NEXT: - - - 2.00 - vcvtp.s32.f32 q0, q1268# CHECK-NEXT: - - - 2.00 - vcvtp.u16.f16 q0, q1269# CHECK-NEXT: - - - 2.00 - vcvtp.u32.f32 q0, q1270# CHECK-NEXT: - - - 2.00 - vfma.f16 q0, q2, r0271# CHECK-NEXT: - - - 2.00 - vfma.f32 q0, q2, r0272# CHECK-NEXT: - - - 2.00 - vfma.f16 q0, q2, q1273# CHECK-NEXT: - - - 2.00 - vfma.f32 q0, q2, q1274# CHECK-NEXT: - - - 2.00 - vfms.f16 q0, q2, q1275# CHECK-NEXT: - - - 2.00 - vfms.f32 q0, q2, q1276# CHECK-NEXT: - - - 2.00 - vfmas.f16 q0, q2, r0277# CHECK-NEXT: - - - 2.00 - vfmas.f32 q0, q2, r0278# CHECK-NEXT: - - - 2.00 - vmaxnm.f16 q0, q2, q1279# CHECK-NEXT: - - - 2.00 - vmaxnm.f32 q0, q2, q1280# CHECK-NEXT: - - - 2.00 - vmaxnma.f16 q0, q2281# CHECK-NEXT: - - - 2.00 - vmaxnma.f32 q0, q2282# CHECK-NEXT: - - - 2.00 - vmaxnmv.f16 r0, q2283# CHECK-NEXT: - - - 2.00 - vmaxnmv.f32 r0, q2284# CHECK-NEXT: - - - 2.00 - vmaxnmav.f16 r0, q2285# CHECK-NEXT: - - - 2.00 - vmaxnmav.f32 r0, q2286# CHECK-NEXT: - - - 2.00 - vminnm.f16 q0, q2, q1287# CHECK-NEXT: - - - 2.00 - vminnm.f32 q0, q2, q1288# CHECK-NEXT: - - - 2.00 - vminnma.f16 q0, q2289# CHECK-NEXT: - - - 2.00 - vminnma.f32 q0, q2290# CHECK-NEXT: - - - 2.00 - vminnmv.f16 r0, q2291# CHECK-NEXT: - - - 2.00 - vminnmv.f32 r0, q2292# CHECK-NEXT: - - - 2.00 - vminnmav.f16 r0, q2293# CHECK-NEXT: - - - 2.00 - vminnmav.f32 r0, q2294# CHECK-NEXT: - - - 2.00 - vmul.f16 q0, q2, q1295# CHECK-NEXT: - - - 2.00 - vmul.f32 q0, q2, q1296# CHECK-NEXT: - - - 2.00 - vmul.f16 q0, q2, r0297# CHECK-NEXT: - - - 2.00 - vmul.f32 q0, q2, r0298# CHECK-NEXT: - - - 2.00 - vneg.f16 q0, q2299# CHECK-NEXT: - - - 2.00 - vneg.f32 q0, q2300# CHECK-NEXT: - - - 2.00 - vrinta.f16 q0, q2301# CHECK-NEXT: - - - 2.00 - vrinta.f32 q0, q2302# CHECK-NEXT: - - - 2.00 - vrintm.f16 q0, q2303# CHECK-NEXT: - - - 2.00 - vrintm.f32 q0, q2304# CHECK-NEXT: - - - 2.00 - vrintn.f16 q0, q2305# CHECK-NEXT: - - - 2.00 - vrintn.f32 q0, q2306# CHECK-NEXT: - - - 2.00 - vrintp.f16 q0, q2307# CHECK-NEXT: - - - 2.00 - vrintp.f32 q0, q2308# CHECK-NEXT: - - - 2.00 - vrintx.f16 q0, q2309# CHECK-NEXT: - - - 2.00 - vrintx.f32 q0, q2310# CHECK-NEXT: - - - 2.00 - vrintz.f16 q0, q2311# CHECK-NEXT: - - - 2.00 - vrintz.f32 q0, q2312# CHECK-NEXT: - - - 2.00 - vsub.f16 q0, q2, q1313# CHECK-NEXT: - - - 2.00 - vsub.f32 q0, q2, q1314# CHECK-NEXT: - - - 2.00 - vsub.f16 q0, q2, r0315# CHECK-NEXT: - - - 2.00 - vsub.f32 q0, q2, r0316