325 lines · plain
1# RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon --disassemble -output-asm-variant=1 < %s | FileCheck %s2# RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon,v8.2a,fullfp16 --disassemble -output-asm-variant=1 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FP163 4#-----------------------------------------------------------------------------5# Floating-point arithmetic6#-----------------------------------------------------------------------------7 80x41 0xc0 0xe0 0x1e90x41 0xc0 0x20 0x1e100x41 0xc0 0x60 0x1e11 12# FP16: fabs h1, h213# CHECK: fabs s1, s214# CHECK: fabs d1, d215 160x41 0x28 0xe3 0x1e170x41 0x28 0x23 0x1e180x41 0x28 0x63 0x1e19 20# FP16: fadd h1, h2, h321# CHECK: fadd s1, s2, s322# CHECK: fadd d1, d2, d323 240x41 0x18 0xe3 0x1e250x41 0x18 0x23 0x1e260x41 0x18 0x63 0x1e27 28# FP16: fdiv h1, h2, h329# CHECK: fdiv s1, s2, s330# CHECK: fdiv d1, d2, d331 320x41 0x10 0xc3 0x1f330x41 0x10 0x03 0x1f340x41 0x10 0x43 0x1f35 36# FP16: fmadd h1, h2, h3, h437# CHECK: fmadd s1, s2, s3, s438# CHECK: fmadd d1, d2, d3, d439 400x41 0x48 0xe3 0x1e410x41 0x48 0x23 0x1e420x41 0x48 0x63 0x1e430x41 0x68 0xe3 0x1e440x41 0x68 0x23 0x1e450x41 0x68 0x63 0x1e46 47# FP16: fmax h1, h2, h348# CHECK: fmax s1, s2, s349# CHECK: fmax d1, d2, d350# FP16: fmaxnm h1, h2, h351# CHECK: fmaxnm s1, s2, s352# CHECK: fmaxnm d1, d2, d353 540x41 0x58 0xe3 0x1e550x41 0x58 0x23 0x1e560x41 0x58 0x63 0x1e570x41 0x78 0xe3 0x1e580x41 0x78 0x23 0x1e590x41 0x78 0x63 0x1e60 61# FP16: fmin h1, h2, h362# CHECK: fmin s1, s2, s363# CHECK: fmin d1, d2, d364# FP16: fminnm h1, h2, h365# CHECK: fminnm s1, s2, s366# CHECK: fminnm d1, d2, d367 680x41 0x90 0xc3 0x1f690x41 0x90 0x03 0x1f700x41 0x90 0x43 0x1f71 72# FP16: fmsub h1, h2, h3, h473# CHECK: fmsub s1, s2, s3, s474# CHECK: fmsub d1, d2, d3, d475 760x41 0x08 0xe3 0x1e770x41 0x08 0x23 0x1e780x41 0x08 0x63 0x1e79 80# FP16: fmul h1, h2, h381# CHECK: fmul s1, s2, s382# CHECK: fmul d1, d2, d383 840x41 0x40 0xe1 0x1e850x41 0x40 0x21 0x1e860x41 0x40 0x61 0x1e87 88# FP16: fneg h1, h289# CHECK: fneg s1, s290# CHECK: fneg d1, d291 920x41 0x10 0xe3 0x1f930x41 0x10 0x23 0x1f940x41 0x10 0x63 0x1f95 96# FP16: fnmadd h1, h2, h3, h497# CHECK: fnmadd s1, s2, s3, s498# CHECK: fnmadd d1, d2, d3, d499 1000x41 0x90 0xe3 0x1f1010x41 0x90 0x23 0x1f1020x41 0x90 0x63 0x1f103 104# FP16: fnmsub h1, h2, h3, h4105# CHECK: fnmsub s1, s2, s3, s4106# CHECK: fnmsub d1, d2, d3, d4107 1080x41 0x88 0xe3 0x1e1090x41 0x88 0x23 0x1e1100x41 0x88 0x63 0x1e111 112# FP16: fnmul h1, h2, h3113# CHECK: fnmul s1, s2, s3114# CHECK: fnmul d1, d2, d3115 1160x41 0xc0 0xe1 0x1e1170x41 0xc0 0x21 0x1e1180x41 0xc0 0x61 0x1e119 120# FP16: fsqrt h1, h2121# CHECK: fsqrt s1, s2122# CHECK: fsqrt d1, d2123 1240x41 0x38 0xe3 0x1e1250x41 0x38 0x23 0x1e1260x41 0x38 0x63 0x1e127 128# FP16: fsub h1, h2, h3129# CHECK: fsub s1, s2, s3130# CHECK: fsub d1, d2, d3131 132#-----------------------------------------------------------------------------133# Floating-point comparison134#-----------------------------------------------------------------------------135 1360x20 0x04 0xe2 0x1e1370x20 0x04 0x22 0x1e1380x20 0x04 0x62 0x1e1390x30 0x04 0xe2 0x1e1400x30 0x04 0x22 0x1e1410x30 0x04 0x62 0x1e142 143# FP16: fccmp h1, h2, #0, eq144# CHECK: fccmp s1, s2, #0, eq145# CHECK: fccmp d1, d2, #0, eq146# FP16: fccmpe h1, h2, #0, eq147# CHECK: fccmpe s1, s2, #0, eq148# CHECK: fccmpe d1, d2, #0, eq149 1500x20 0x20 0xe2 0x1e1510x20 0x20 0x22 0x1e1520x20 0x20 0x62 0x1e1530x28 0x20 0xe0 0x1e1540x28 0x20 0x20 0x1e1550x28 0x20 0x60 0x1e1560x30 0x20 0xe2 0x1e1570x30 0x20 0x22 0x1e1580x30 0x20 0x62 0x1e1590x38 0x20 0xe0 0x1e1600x38 0x20 0x20 0x1e1610x38 0x20 0x60 0x1e162 163# FP16: fcmp h1, h2164# CHECK: fcmp s1, s2165# CHECK: fcmp d1, d2166# FP16: fcmp h1, #0.0167# CHECK: fcmp s1, #0.0168# CHECK: fcmp d1, #0.0169# FP16: fcmpe h1, h2170# CHECK: fcmpe s1, s2171# CHECK: fcmpe d1, d2172# FP16: fcmpe h1, #0.0173# CHECK: fcmpe s1, #0.0174# CHECK: fcmpe d1, #0.0175 176#-----------------------------------------------------------------------------177# Floating-point conditional select178#-----------------------------------------------------------------------------179 1800x41 0x0c 0xe3 0x1e1810x41 0x0c 0x23 0x1e1820x41 0x0c 0x63 0x1e183 184# FP16: fcsel h1, h2, h3, eq185# CHECK: fcsel s1, s2, s3, eq186# CHECK: fcsel d1, d2, d3, eq187 188#-----------------------------------------------------------------------------189# Floating-point convert190#-----------------------------------------------------------------------------191 1920x41 0xc0 0x63 0x1e1930x41 0x40 0x62 0x1e1940x41 0xc0 0xe2 0x1e1950x41 0x40 0xe2 0x1e1960x41 0xc0 0x22 0x1e1970x41 0xc0 0x23 0x1e198 199# CHECK: fcvt h1, d2200# CHECK: fcvt s1, d2201# CHECK: fcvt d1, h2202# CHECK: fcvt s1, h2203# CHECK: fcvt d1, s2204# CHECK: fcvt h1, s2205 2060x41 0x00 0x44 0x1e2070x41 0x04 0x44 0x1e2080x41 0x00 0x44 0x9e2090x41 0x04 0x44 0x9e2100x41 0x00 0x04 0x1e2110x41 0x04 0x04 0x1e2120x41 0x00 0x04 0x9e2130x41 0x04 0x04 0x9e214 215#-----------------------------------------------------------------------------216# Floating-point move217#-----------------------------------------------------------------------------218 2190x41 0x00 0xe7 0x1e2200x41 0x00 0xe6 0x1e2210x41 0x00 0x27 0x1e2220x41 0x00 0x26 0x1e2230x41 0x00 0x67 0x9e2240x41 0x00 0x66 0x9e225 226# FP16: fmov h1, w2227# FP16: fmov w1, h2228# CHECK: fmov s1, w2229# CHECK: fmov w1, s2230# CHECK: fmov d1, x2231# CHECK: fmov x1, d2232 2330x01 0x10 0xe8 0x1e2340x01 0x10 0x28 0x1e2350x01 0x10 0x68 0x1e2360x01 0xf0 0x7b 0x1e2370x01 0xf0 0x6b 0x1e238 239# FP16: fmov h1, #0.12500000240# CHECK: fmov s1, #0.12500000241# CHECK: fmov d1, #0.12500000242# CHECK: fmov d1, #-0.48437500243# CHECK: fmov d1, #0.48437500244 2450x41 0x40 0xe0 0x1e2460x41 0x40 0x20 0x1e2470x41 0x40 0x60 0x1e248 249# FP16: fmov h1, h2250# CHECK: fmov s1, s2251# CHECK: fmov d1, d2252 253#-----------------------------------------------------------------------------254# Floating-point round to integral255#-----------------------------------------------------------------------------256 2570x41 0x40 0xe6 0x1e2580x41 0x40 0x26 0x1e2590x41 0x40 0x66 0x1e260 261# FP16: frinta h1, h2262# CHECK: frinta s1, s2263# CHECK: frinta d1, d2264 2650x41 0xc0 0xe7 0x1e2660x41 0xc0 0x27 0x1e2670x41 0xc0 0x67 0x1e268 269# FP16: frinti h1, h2270# CHECK: frinti s1, s2271# CHECK: frinti d1, d2272 2730x41 0x40 0xe5 0x1e2740x41 0x40 0x25 0x1e2750x41 0x40 0x65 0x1e276 277# FP16: frintm h1, h2278# CHECK: frintm s1, s2279# CHECK: frintm d1, d2280 2810x41 0x40 0xe4 0x1e2820x41 0x40 0x24 0x1e2830x41 0x40 0x64 0x1e284 285# FP16: frintn h1, h2286# CHECK: frintn s1, s2287# CHECK: frintn d1, d2288 2890x41 0xc0 0xe4 0x1e2900x41 0xc0 0x24 0x1e2910x41 0xc0 0x64 0x1e292 293# FP16: frintp h1, h2294# CHECK: frintp s1, s2295# CHECK: frintp d1, d2296 2970x41 0x40 0xe7 0x1e2980x41 0x40 0x27 0x1e2990x41 0x40 0x67 0x1e300 301# FP16: frintx h1, h2302# CHECK: frintx s1, s2303# CHECK: frintx d1, d2304 3050x41 0xc0 0xe5 0x1e3060x41 0xc0 0x25 0x1e3070x41 0xc0 0x65 0x1e308 309# FP16: frintz h1, h2310# CHECK: frintz s1, s2311# CHECK: frintz d1, d2312 313 0x00 0x3c 0xe0 0x7e314 0x00 0x8c 0xe0 0x5e315 316# CHECK: cmhs d0, d0, d0317# CHECK: cmtst d0, d0, d0318 3190x00 0x00 0xaf 0x9e3200x00 0x00 0xae 0x9e321 322# CHECK: fmov.d v0[1], x0323# CHECK: fmov.d x0, v0[1]324 325