726 lines · plain
1; RUN: not llvm-mc -triple arm64-apple-darwin -mattr=neon -show-encoding -output-asm-variant=1 < %s 2>%t | FileCheck %s2; RUN: FileCheck %s < %t --check-prefix=NO-FP163; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon,v8.2a,fullfp16 -show-encoding -output-asm-variant=1 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FP164 5foo:6;-----------------------------------------------------------------------------7; Floating-point arithmetic8;-----------------------------------------------------------------------------9 10 fabs h1, h211 fabs s1, s212 fabs d1, d213 14; FP16: fabs h1, h2 ; encoding: [0x41,0xc0,0xe0,0x1e]15; NO-FP16: error: instruction requires:16; NO-FP16-NEXT: fabs h1, h217; CHECK: fabs s1, s2 ; encoding: [0x41,0xc0,0x20,0x1e]18; CHECK: fabs d1, d2 ; encoding: [0x41,0xc0,0x60,0x1e]19 20 fadd h1, h2, h321 fadd s1, s2, s322 fadd d1, d2, d323 24; FP16: fadd h1, h2, h3 ; encoding: [0x41,0x28,0xe3,0x1e]25; NO-FP16: error: instruction requires:26; NO-FP16-NEXT: fadd h1, h2, h327; CHECK: fadd s1, s2, s3 ; encoding: [0x41,0x28,0x23,0x1e]28; CHECK: fadd d1, d2, d3 ; encoding: [0x41,0x28,0x63,0x1e]29 30 fdiv h1, h2, h331 fdiv s1, s2, s332 fdiv d1, d2, d333 34; FP16: fdiv h1, h2, h3 ; encoding: [0x41,0x18,0xe3,0x1e]35; NO-FP16: error: instruction requires:36; NO-FP16-NEXT: fdiv h1, h2, h337; CHECK: fdiv s1, s2, s3 ; encoding: [0x41,0x18,0x23,0x1e]38; CHECK: fdiv d1, d2, d3 ; encoding: [0x41,0x18,0x63,0x1e]39 40 fmadd h1, h2, h3, h441 fmadd s1, s2, s3, s442 fmadd d1, d2, d3, d443 44; FP16: fmadd h1, h2, h3, h4 ; encoding: [0x41,0x10,0xc3,0x1f]45; NO-FP16: error: instruction requires:46; NO-FP16-NEXT: fmadd h1, h2, h3, h447; CHECK: fmadd s1, s2, s3, s4 ; encoding: [0x41,0x10,0x03,0x1f]48; CHECK: fmadd d1, d2, d3, d4 ; encoding: [0x41,0x10,0x43,0x1f]49 50 fmax h1, h2, h351 fmax s1, s2, s352 fmax d1, d2, d353 fmaxnm h1, h2, h354 fmaxnm s1, s2, s355 fmaxnm d1, d2, d356 57; FP16: fmax h1, h2, h3 ; encoding: [0x41,0x48,0xe3,0x1e]58; NO-FP16: error: instruction requires:59; NO-FP16-NEXT: fmax h1, h2, h360; CHECK: fmax s1, s2, s3 ; encoding: [0x41,0x48,0x23,0x1e]61; CHECK: fmax d1, d2, d3 ; encoding: [0x41,0x48,0x63,0x1e]62; FP16: fmaxnm h1, h2, h3 ; encoding: [0x41,0x68,0xe3,0x1e]63; NO-FP16: error: instruction requires:64; NO-FP16-NEXT: fmaxnm h1, h2, h365; CHECK: fmaxnm s1, s2, s3 ; encoding: [0x41,0x68,0x23,0x1e]66; CHECK: fmaxnm d1, d2, d3 ; encoding: [0x41,0x68,0x63,0x1e]67 68 fmin h1, h2, h369 fmin s1, s2, s370 fmin d1, d2, d371 fminnm h1, h2, h372 fminnm s1, s2, s373 fminnm d1, d2, d374 75; FP16: fmin h1, h2, h3 ; encoding: [0x41,0x58,0xe3,0x1e]76; NO-FP16: error: instruction requires:77; NO-FP16-NEXT: fmin h1, h2, h378; CHECK: fmin s1, s2, s3 ; encoding: [0x41,0x58,0x23,0x1e]79; CHECK: fmin d1, d2, d3 ; encoding: [0x41,0x58,0x63,0x1e]80; FP16: fminnm h1, h2, h3 ; encoding: [0x41,0x78,0xe3,0x1e]81; NO-FP16: error: instruction requires:82; NO-FP16-NEXT: fminnm h1, h2, h383; CHECK: fminnm s1, s2, s3 ; encoding: [0x41,0x78,0x23,0x1e]84; CHECK: fminnm d1, d2, d3 ; encoding: [0x41,0x78,0x63,0x1e]85 86 fmsub h1, h2, h3, h487 fmsub s1, s2, s3, s488 fmsub d1, d2, d3, d489 90; FP16: fmsub h1, h2, h3, h4 ; encoding: [0x41,0x90,0xc3,0x1f]91; NO-FP16: error: instruction requires:92; NO-FP16-NEXT: fmsub h1, h2, h3, h493; CHECK: fmsub s1, s2, s3, s4 ; encoding: [0x41,0x90,0x03,0x1f]94; CHECK: fmsub d1, d2, d3, d4 ; encoding: [0x41,0x90,0x43,0x1f]95 96 fmul h1, h2, h397 fmul s1, s2, s398 fmul d1, d2, d399 100; FP16: fmul h1, h2, h3 ; encoding: [0x41,0x08,0xe3,0x1e]101; NO-FP16: error: instruction requires:102; NO-FP16-NEXT: fmul h1, h2, h3103; CHECK: fmul s1, s2, s3 ; encoding: [0x41,0x08,0x23,0x1e]104; CHECK: fmul d1, d2, d3 ; encoding: [0x41,0x08,0x63,0x1e]105 106 fneg h1, h2107 fneg s1, s2108 fneg d1, d2109 110; FP16: fneg h1, h2 ; encoding: [0x41,0x40,0xe1,0x1e]111; NO-FP16: error: instruction requires:112; NO-FP16-NEXT: fneg h1, h2113; CHECK: fneg s1, s2 ; encoding: [0x41,0x40,0x21,0x1e]114; CHECK: fneg d1, d2 ; encoding: [0x41,0x40,0x61,0x1e]115 116 fnmadd h1, h2, h3, h4117 fnmadd s1, s2, s3, s4118 fnmadd d1, d2, d3, d4119 120; FP16: fnmadd h1, h2, h3, h4 ; encoding: [0x41,0x10,0xe3,0x1f]121; NO-FP16: error: instruction requires:122; NO-FP16-NEXT: fnmadd h1, h2, h3, h4123; CHECK: fnmadd s1, s2, s3, s4 ; encoding: [0x41,0x10,0x23,0x1f]124; CHECK: fnmadd d1, d2, d3, d4 ; encoding: [0x41,0x10,0x63,0x1f]125 126 fnmsub h1, h2, h3, h4127 fnmsub s1, s2, s3, s4128 fnmsub d1, d2, d3, d4129 130; FP16: fnmsub h1, h2, h3, h4 ; encoding: [0x41,0x90,0xe3,0x1f]131; NO-FP16: error: instruction requires:132; NO-FP16-NEXT: fnmsub h1, h2, h3, h4133; CHECK: fnmsub s1, s2, s3, s4 ; encoding: [0x41,0x90,0x23,0x1f]134; CHECK: fnmsub d1, d2, d3, d4 ; encoding: [0x41,0x90,0x63,0x1f]135 136 fnmul h1, h2, h3137 fnmul s1, s2, s3138 fnmul d1, d2, d3139 140; FP16: fnmul h1, h2, h3 ; encoding: [0x41,0x88,0xe3,0x1e]141; NO-FP16: error: instruction requires:142; NO-FP16-NEXT: fnmul h1, h2, h3143; CHECK: fnmul s1, s2, s3 ; encoding: [0x41,0x88,0x23,0x1e]144; CHECK: fnmul d1, d2, d3 ; encoding: [0x41,0x88,0x63,0x1e]145 146 fsqrt h1, h2147 fsqrt s1, s2148 fsqrt d1, d2149 150; FP16: fsqrt h1, h2 ; encoding: [0x41,0xc0,0xe1,0x1e]151; NO-FP16: error: instruction requires:152; NO-FP16-NEXT: fsqrt h1, h2153; CHECK: fsqrt s1, s2 ; encoding: [0x41,0xc0,0x21,0x1e]154; CHECK: fsqrt d1, d2 ; encoding: [0x41,0xc0,0x61,0x1e]155 156 fsub h1, h2, h3157 fsub s1, s2, s3158 fsub d1, d2, d3159 160; FP16: fsub h1, h2, h3 ; encoding: [0x41,0x38,0xe3,0x1e]161; NO-FP16: error: instruction requires:162; NO-FP16-NEXT: fsub h1, h2, h3163; CHECK: fsub s1, s2, s3 ; encoding: [0x41,0x38,0x23,0x1e]164; CHECK: fsub d1, d2, d3 ; encoding: [0x41,0x38,0x63,0x1e]165 166;-----------------------------------------------------------------------------167; Floating-point comparison168;-----------------------------------------------------------------------------169 170 fccmp h1, h2, #0, eq171 fccmp s1, s2, #0, eq172 fccmp d1, d2, #0, eq173 fccmpe h1, h2, #0, eq174 fccmpe s1, s2, #0, eq175 fccmpe d1, d2, #0, eq176 177; FP16: fccmp h1, h2, #0, eq ; encoding: [0x20,0x04,0xe2,0x1e]178; NO-FP16: error: instruction requires:179; NO-FP16-NEXT: fccmp h1, h2, #0, eq180; CHECK: fccmp s1, s2, #0, eq ; encoding: [0x20,0x04,0x22,0x1e]181; CHECK: fccmp d1, d2, #0, eq ; encoding: [0x20,0x04,0x62,0x1e]182; FP16: fccmpe h1, h2, #0, eq ; encoding: [0x30,0x04,0xe2,0x1e]183; NO-FP16: error: instruction requires:184; NO-FP16-NEXT: fccmpe h1, h2, #0, eq185; CHECK: fccmpe s1, s2, #0, eq ; encoding: [0x30,0x04,0x22,0x1e]186; CHECK: fccmpe d1, d2, #0, eq ; encoding: [0x30,0x04,0x62,0x1e]187 188 fcmp h1, h2189 fcmp s1, s2190 fcmp d1, d2191 fcmp h1, #0.0192 fcmp s1, #0.0193 fcmp d1, #0.0194 fcmpe h1, h2195 fcmpe s1, s2196 fcmpe d1, d2197 fcmpe h1, #0.0198 fcmpe s1, #0.0199 fcmpe d1, #0.0200 201; FP16: fcmp h1, h2 ; encoding: [0x20,0x20,0xe2,0x1e]202; NO-FP16: error: instruction requires:203; NO-FP16-NEXT: fcmp h1, h2204; CHECK: fcmp s1, s2 ; encoding: [0x20,0x20,0x22,0x1e]205; CHECK: fcmp d1, d2 ; encoding: [0x20,0x20,0x62,0x1e]206; FP16: fcmp h1, #0.0 ; encoding: [0x28,0x20,0xe0,0x1e]207; NO-FP16: error: instruction requires:208; NO-FP16-NEXT: fcmp h1, #0.0209; CHECK: fcmp s1, #0.0 ; encoding: [0x28,0x20,0x20,0x1e]210; CHECK: fcmp d1, #0.0 ; encoding: [0x28,0x20,0x60,0x1e]211; FP16: fcmpe h1, h2 ; encoding: [0x30,0x20,0xe2,0x1e]212; NO-FP16: error: instruction requires:213; NO-FP16-NEXT: fcmpe h1, h2214; CHECK: fcmpe s1, s2 ; encoding: [0x30,0x20,0x22,0x1e]215; CHECK: fcmpe d1, d2 ; encoding: [0x30,0x20,0x62,0x1e]216; FP16: fcmpe h1, #0.0 ; encoding: [0x38,0x20,0xe0,0x1e]217; NO-FP16: error: instruction requires:218; NO-FP16-NEXT: fcmpe h1, #0.0219; CHECK: fcmpe s1, #0.0 ; encoding: [0x38,0x20,0x20,0x1e]220; CHECK: fcmpe d1, #0.0 ; encoding: [0x38,0x20,0x60,0x1e]221 222;-----------------------------------------------------------------------------223; Floating-point conditional select224;-----------------------------------------------------------------------------225 226 fcsel h1, h2, h3, eq227 fcsel s1, s2, s3, eq228 fcsel d1, d2, d3, eq229 230; FP16: fcsel h1, h2, h3, eq ; encoding: [0x41,0x0c,0xe3,0x1e]231; NO-FP16: error: instruction requires:232; NO-FP16-NEXT: fcsel h1, h2, h3, eq233; CHECK: fcsel s1, s2, s3, eq ; encoding: [0x41,0x0c,0x23,0x1e]234; CHECK: fcsel d1, d2, d3, eq ; encoding: [0x41,0x0c,0x63,0x1e]235 236;-----------------------------------------------------------------------------237; Floating-point convert238;-----------------------------------------------------------------------------239 240 fcvt h1, d2241 fcvt s1, d2242 fcvt d1, h2243 fcvt s1, h2244 fcvt d1, s2245 fcvt h1, s2246 247; CHECK: fcvt h1, d2 ; encoding: [0x41,0xc0,0x63,0x1e]248; CHECK: fcvt s1, d2 ; encoding: [0x41,0x40,0x62,0x1e]249; CHECK: fcvt d1, h2 ; encoding: [0x41,0xc0,0xe2,0x1e]250; CHECK: fcvt s1, h2 ; encoding: [0x41,0x40,0xe2,0x1e]251; CHECK: fcvt d1, s2 ; encoding: [0x41,0xc0,0x22,0x1e]252; CHECK: fcvt h1, s2 ; encoding: [0x41,0xc0,0x23,0x1e]253 254 fcvtas w1, d2255 fcvtas x1, d2256 fcvtas w1, s2257 fcvtas x1, s2258 fcvtas w1, h2259 fcvtas x1, h2260 261; CHECK: fcvtas w1, d2 ; encoding: [0x41,0x00,0x64,0x1e]262; CHECK: fcvtas x1, d2 ; encoding: [0x41,0x00,0x64,0x9e]263; CHECK: fcvtas w1, s2 ; encoding: [0x41,0x00,0x24,0x1e]264; CHECK: fcvtas x1, s2 ; encoding: [0x41,0x00,0x24,0x9e]265; FP16: fcvtas w1, h2 ; encoding: [0x41,0x00,0xe4,0x1e]266; NO-FP16: error: instruction requires:267; NO-FP16-NEXT: fcvtas w1, h2268; FP16: fcvtas x1, h2 ; encoding: [0x41,0x00,0xe4,0x9e]269; NO-FP16: error: instruction requires:270; NO-FP16-NEXT: fcvtas x1, h2271 272 fcvtau w1, h2273 fcvtau w1, s2274 fcvtau w1, d2275 fcvtau x1, h2276 fcvtau x1, s2277 fcvtau x1, d2278 279; FP16: fcvtau w1, h2 ; encoding: [0x41,0x00,0xe5,0x1e]280; NO-FP16: error: instruction requires:281; NO-FP16-NEXT: fcvtau w1, h2282; CHECK: fcvtau w1, s2 ; encoding: [0x41,0x00,0x25,0x1e]283; CHECK: fcvtau w1, d2 ; encoding: [0x41,0x00,0x65,0x1e]284; FP16: fcvtau x1, h2 ; encoding: [0x41,0x00,0xe5,0x9e]285; NO-FP16: error: instruction requires:286; NO-FP16-NEXT: fcvtau x1, h2287; CHECK: fcvtau x1, s2 ; encoding: [0x41,0x00,0x25,0x9e]288; CHECK: fcvtau x1, d2 ; encoding: [0x41,0x00,0x65,0x9e]289 290 fcvtms w1, h2291 fcvtms w1, s2292 fcvtms w1, d2293 fcvtms x1, h2294 fcvtms x1, s2295 fcvtms x1, d2296 297; FP16: fcvtms w1, h2 ; encoding: [0x41,0x00,0xf0,0x1e]298; NO-FP16: error: instruction requires:299; NO-FP16-NEXT: fcvtms w1, h2300; CHECK: fcvtms w1, s2 ; encoding: [0x41,0x00,0x30,0x1e]301; CHECK: fcvtms w1, d2 ; encoding: [0x41,0x00,0x70,0x1e]302; FP16: fcvtms x1, h2 ; encoding: [0x41,0x00,0xf0,0x9e]303; NO-FP16: error: instruction requires:304; NO-FP16-NEXT: fcvtms x1, h2305; CHECK: fcvtms x1, s2 ; encoding: [0x41,0x00,0x30,0x9e]306; CHECK: fcvtms x1, d2 ; encoding: [0x41,0x00,0x70,0x9e]307 308 fcvtmu w1, h2309 fcvtmu w1, s2310 fcvtmu w1, d2311 fcvtmu x1, h2312 fcvtmu x1, s2313 fcvtmu x1, d2314 315; FP16: fcvtmu w1, h2 ; encoding: [0x41,0x00,0xf1,0x1e]316; NO-FP16: error: instruction requires:317; NO-FP16-NEXT: fcvtmu w1, h2318; CHECK: fcvtmu w1, s2 ; encoding: [0x41,0x00,0x31,0x1e]319; CHECK: fcvtmu w1, d2 ; encoding: [0x41,0x00,0x71,0x1e]320; FP16: fcvtmu x1, h2 ; encoding: [0x41,0x00,0xf1,0x9e]321; NO-FP16: error: instruction requires:322; NO-FP16-NEXT: fcvtmu x1, h2323; CHECK: fcvtmu x1, s2 ; encoding: [0x41,0x00,0x31,0x9e]324; CHECK: fcvtmu x1, d2 ; encoding: [0x41,0x00,0x71,0x9e]325 326 fcvtns w1, h2327 fcvtns w1, s2328 fcvtns w1, d2329 fcvtns x1, h2330 fcvtns x1, s2331 fcvtns x1, d2332 333; FP16: fcvtns w1, h2 ; encoding: [0x41,0x00,0xe0,0x1e]334; NO-FP16: error: instruction requires:335; NO-FP16-NEXT: fcvtns w1, h2336; CHECK: fcvtns w1, s2 ; encoding: [0x41,0x00,0x20,0x1e]337; CHECK: fcvtns w1, d2 ; encoding: [0x41,0x00,0x60,0x1e]338; FP16: fcvtns x1, h2 ; encoding: [0x41,0x00,0xe0,0x9e]339; NO-FP16: error: instruction requires:340; NO-FP16-NEXT: fcvtns x1, h2341; CHECK: fcvtns x1, s2 ; encoding: [0x41,0x00,0x20,0x9e]342; CHECK: fcvtns x1, d2 ; encoding: [0x41,0x00,0x60,0x9e]343 344 fcvtnu w1, h2345 fcvtnu w1, s2346 fcvtnu w1, d2347 fcvtnu x1, h2348 fcvtnu x1, s2349 fcvtnu x1, d2350 351; FP16: fcvtnu w1, h2 ; encoding: [0x41,0x00,0xe1,0x1e]352; NO-FP16: error: instruction requires:353; NO-FP16-NEXT: fcvtnu w1, h2354; CHECK: fcvtnu w1, s2 ; encoding: [0x41,0x00,0x21,0x1e]355; CHECK: fcvtnu w1, d2 ; encoding: [0x41,0x00,0x61,0x1e]356; FP16: fcvtnu x1, h2 ; encoding: [0x41,0x00,0xe1,0x9e]357; NO-FP16: error: instruction requires:358; NO-FP16-NEXT: fcvtnu x1, h2359; CHECK: fcvtnu x1, s2 ; encoding: [0x41,0x00,0x21,0x9e]360; CHECK: fcvtnu x1, d2 ; encoding: [0x41,0x00,0x61,0x9e]361 362 fcvtps w1, h2363 fcvtps w1, s2364 fcvtps w1, d2365 fcvtps x1, h2366 fcvtps x1, s2367 fcvtps x1, d2368 369; FP16: fcvtps w1, h2 ; encoding: [0x41,0x00,0xe8,0x1e]370; NO-FP16: error: instruction requires:371; NO-FP16-NEXT: fcvtps w1, h2372; CHECK: fcvtps w1, s2 ; encoding: [0x41,0x00,0x28,0x1e]373; CHECK: fcvtps w1, d2 ; encoding: [0x41,0x00,0x68,0x1e]374; FP16: fcvtps x1, h2 ; encoding: [0x41,0x00,0xe8,0x9e]375; NO-FP16: error: instruction requires:376; NO-FP16-NEXT: fcvtps x1, h2377; CHECK: fcvtps x1, s2 ; encoding: [0x41,0x00,0x28,0x9e]378; CHECK: fcvtps x1, d2 ; encoding: [0x41,0x00,0x68,0x9e]379 380 fcvtpu w1, h2381 fcvtpu w1, s2382 fcvtpu w1, d2383 fcvtpu x1, h2384 fcvtpu x1, s2385 fcvtpu x1, d2386 387; FP16: fcvtpu w1, h2 ; encoding: [0x41,0x00,0xe9,0x1e]388; NO-FP16: error: instruction requires:389; NO-FP16-NEXT: fcvtpu w1, h2390; CHECK: fcvtpu w1, s2 ; encoding: [0x41,0x00,0x29,0x1e]391; CHECK: fcvtpu w1, d2 ; encoding: [0x41,0x00,0x69,0x1e]392; FP16: fcvtpu x1, h2 ; encoding: [0x41,0x00,0xe9,0x9e]393; NO-FP16: error: instruction requires:394; NO-FP16-NEXT: fcvtpu x1, h2395; CHECK: fcvtpu x1, s2 ; encoding: [0x41,0x00,0x29,0x9e]396; CHECK: fcvtpu x1, d2 ; encoding: [0x41,0x00,0x69,0x9e]397 398 fcvtzs w1, h2399 fcvtzs w1, h2, #1400 fcvtzs w1, s2401 fcvtzs w1, s2, #1402 fcvtzs w1, d2403 fcvtzs w1, d2, #1404 fcvtzs x1, h2405 fcvtzs x1, h2, #1406 fcvtzs x1, s2407 fcvtzs x1, s2, #1408 fcvtzs x1, d2409 fcvtzs x1, d2, #1410 411; FP16: fcvtzs w1, h2 ; encoding: [0x41,0x00,0xf8,0x1e]412; NO-FP16: error: instruction requires:413; NO-FP16-NEXT: fcvtzs w1, h2414; FP16: fcvtzs w1, h2, #1 ; encoding: [0x41,0xfc,0xd8,0x1e]415; NO-FP16: error: instruction requires:416; NO-FP16-NEXT: fcvtzs w1, h2, #1417; CHECK: fcvtzs w1, s2 ; encoding: [0x41,0x00,0x38,0x1e]418; CHECK: fcvtzs w1, s2, #1 ; encoding: [0x41,0xfc,0x18,0x1e]419; CHECK: fcvtzs w1, d2 ; encoding: [0x41,0x00,0x78,0x1e]420; CHECK: fcvtzs w1, d2, #1 ; encoding: [0x41,0xfc,0x58,0x1e]421; FP16: fcvtzs x1, h2 ; encoding: [0x41,0x00,0xf8,0x9e]422; NO-FP16: error: instruction requires:423; NO-FP16-NEXT: fcvtzs x1, h2424; FP16: fcvtzs x1, h2, #1 ; encoding: [0x41,0xfc,0xd8,0x9e]425; NO-FP16: error: instruction requires:426; NO-FP16-NEXT: fcvtzs x1, h2, #1427; CHECK: fcvtzs x1, s2 ; encoding: [0x41,0x00,0x38,0x9e]428; CHECK: fcvtzs x1, s2, #1 ; encoding: [0x41,0xfc,0x18,0x9e]429; CHECK: fcvtzs x1, d2 ; encoding: [0x41,0x00,0x78,0x9e]430; CHECK: fcvtzs x1, d2, #1 ; encoding: [0x41,0xfc,0x58,0x9e]431 432 fcvtzu w1, h2433 fcvtzu w1, h2, #1434 fcvtzu w1, s2435 fcvtzu w1, s2, #1436 fcvtzu w1, d2437 fcvtzu w1, d2, #1438 fcvtzu x1, h2439 fcvtzu x1, h2, #1440 fcvtzu x1, s2441 fcvtzu x1, s2, #1442 fcvtzu x1, d2443 fcvtzu x1, d2, #1444 445; FP16: fcvtzu w1, h2 ; encoding: [0x41,0x00,0xf9,0x1e]446; NO-FP16: error: instruction requires:447; NO-FP16-NEXT: fcvtzu w1, h2448; FP16: fcvtzu w1, h2, #1 ; encoding: [0x41,0xfc,0xd9,0x1e]449; NO-FP16: error: instruction requires:450; NO-FP16-NEXT: fcvtzu w1, h2, #1451; CHECK: fcvtzu w1, s2 ; encoding: [0x41,0x00,0x39,0x1e]452; CHECK: fcvtzu w1, s2, #1 ; encoding: [0x41,0xfc,0x19,0x1e]453; CHECK: fcvtzu w1, d2 ; encoding: [0x41,0x00,0x79,0x1e]454; CHECK: fcvtzu w1, d2, #1 ; encoding: [0x41,0xfc,0x59,0x1e]455; FP16: fcvtzu x1, h2 ; encoding: [0x41,0x00,0xf9,0x9e]456; NO-FP16: error: instruction requires:457; NO-FP16-NEXT: fcvtzu x1, h2458; FP16: fcvtzu x1, h2, #1 ; encoding: [0x41,0xfc,0xd9,0x9e]459; NO-FP16: error: instruction requires:460; NO-FP16-NEXT: fcvtzu x1, h2, #1461; CHECK: fcvtzu x1, s2 ; encoding: [0x41,0x00,0x39,0x9e]462; CHECK: fcvtzu x1, s2, #1 ; encoding: [0x41,0xfc,0x19,0x9e]463; CHECK: fcvtzu x1, d2 ; encoding: [0x41,0x00,0x79,0x9e]464; CHECK: fcvtzu x1, d2, #1 ; encoding: [0x41,0xfc,0x59,0x9e]465 466 scvtf h1, w2467 scvtf h1, w2, #1468 scvtf s1, w2469 scvtf s1, w2, #1470 scvtf d1, w2471 scvtf d1, w2, #1472 scvtf h1, x2473 scvtf h1, x2, #1474 scvtf s1, x2475 scvtf s1, x2, #1476 scvtf d1, x2477 scvtf d1, x2, #1478 479; FP16: scvtf h1, w2 ; encoding: [0x41,0x00,0xe2,0x1e]480; NO-FP16: error: instruction requires:481; NO-FP16-NEXT: scvtf h1, w2482; FP16: scvtf h1, w2, #1 ; encoding: [0x41,0xfc,0xc2,0x1e]483; NO-FP16: error: instruction requires:484; NO-FP16-NEXT: scvtf h1, w2, #1485; CHECK: scvtf s1, w2 ; encoding: [0x41,0x00,0x22,0x1e]486; CHECK: scvtf s1, w2, #1 ; encoding: [0x41,0xfc,0x02,0x1e]487; CHECK: scvtf d1, w2 ; encoding: [0x41,0x00,0x62,0x1e]488; CHECK: scvtf d1, w2, #1 ; encoding: [0x41,0xfc,0x42,0x1e]489; FP16: scvtf h1, x2 ; encoding: [0x41,0x00,0xe2,0x9e]490; NO-FP16: error: instruction requires:491; NO-FP16-NEXT: scvtf h1, x2492; FP16: scvtf h1, x2, #1 ; encoding: [0x41,0xfc,0xc2,0x9e]493; NO-FP16: error: instruction requires:494; NO-FP16-NEXT: scvtf h1, x2, #1495; CHECK: scvtf s1, x2 ; encoding: [0x41,0x00,0x22,0x9e]496; CHECK: scvtf s1, x2, #1 ; encoding: [0x41,0xfc,0x02,0x9e]497; CHECK: scvtf d1, x2 ; encoding: [0x41,0x00,0x62,0x9e]498; CHECK: scvtf d1, x2, #1 ; encoding: [0x41,0xfc,0x42,0x9e]499 500 ucvtf h1, w2501 ucvtf h1, w2, #1502 ucvtf s1, w2503 ucvtf s1, w2, #1504 ucvtf d1, w2505 ucvtf d1, w2, #1506 ucvtf h1, x2507 ucvtf h1, x2, #1508 ucvtf s1, x2509 ucvtf s1, x2, #1510 ucvtf d1, x2511 ucvtf d1, x2, #1512 513; FP16: ucvtf h1, w2 ; encoding: [0x41,0x00,0xe3,0x1e]514; NO-FP16: error: instruction requires:515; NO-FP16-NEXT: ucvtf h1, w2516; FP16: ucvtf h1, w2, #1 ; encoding: [0x41,0xfc,0xc3,0x1e]517; NO-FP16: error: instruction requires:518; NO-FP16-NEXT: ucvtf h1, w2, #1519; CHECK: ucvtf s1, w2 ; encoding: [0x41,0x00,0x23,0x1e]520; CHECK: ucvtf s1, w2, #1 ; encoding: [0x41,0xfc,0x03,0x1e]521; CHECK: ucvtf d1, w2 ; encoding: [0x41,0x00,0x63,0x1e]522; CHECK: ucvtf d1, w2, #1 ; encoding: [0x41,0xfc,0x43,0x1e]523; FP16: ucvtf h1, x2 ; encoding: [0x41,0x00,0xe3,0x9e]524; NO-FP16: error: instruction requires:525; NO-FP16-NEXT: ucvtf h1, x2526; FP16: ucvtf h1, x2, #1 ; encoding: [0x41,0xfc,0xc3,0x9e]527; NO-FP16: error: instruction requires:528; NO-FP16-NEXT: ucvtf h1, x2, #1529; CHECK: ucvtf s1, x2 ; encoding: [0x41,0x00,0x23,0x9e]530; CHECK: ucvtf s1, x2, #1 ; encoding: [0x41,0xfc,0x03,0x9e]531; CHECK: ucvtf d1, x2 ; encoding: [0x41,0x00,0x63,0x9e]532; CHECK: ucvtf d1, x2, #1 ; encoding: [0x41,0xfc,0x43,0x9e]533 534;-----------------------------------------------------------------------------535; Floating-point move536;-----------------------------------------------------------------------------537 538 fmov h1, w2539 fmov w1, h2540 fmov h1, x2541 fmov x1, h2542 fmov s1, w2543 fmov w1, s2544 fmov d1, x2545 fmov x1, d2546 547; FP16: fmov h1, w2 ; encoding: [0x41,0x00,0xe7,0x1e]548; NO-FP16: error: instruction requires:549; NO-FP16-NEXT: fmov h1, w2550; FP16: fmov w1, h2 ; encoding: [0x41,0x00,0xe6,0x1e]551; NO-FP16: error: instruction requires:552; NO-FP16-NEXT: fmov w1, h2553; FP16: fmov h1, x2 ; encoding: [0x41,0x00,0xe7,0x9e]554; NO-FP16: error: instruction requires:555; NO-FP16-NEXT: fmov h1, x2556; FP16: fmov x1, h2 ; encoding: [0x41,0x00,0xe6,0x9e]557; NO-FP16: error: instruction requires:558; NO-FP16-NEXT: fmov x1, h2559; CHECK: fmov s1, w2 ; encoding: [0x41,0x00,0x27,0x1e]560; CHECK: fmov w1, s2 ; encoding: [0x41,0x00,0x26,0x1e]561; CHECK: fmov d1, x2 ; encoding: [0x41,0x00,0x67,0x9e]562; CHECK: fmov x1, d2 ; encoding: [0x41,0x00,0x66,0x9e]563 564 fmov h1, #0.125565 fmov h1, #0x40566 fmov s1, #0.125567 fmov s1, #0x40568 fmov d1, #0.125569 fmov d1, #0x40570 fmov d1, #-4.843750e-01571 fmov d1, #4.843750e-01572 fmov d3, #3573 fmov h2, #0.0574 fmov s2, #0.0575 fmov d2, #0.0576 577; FP16: fmov h1, #0.12500000 ; encoding: [0x01,0x10,0xe8,0x1e]578; NO-FP16: error: instruction requires:579; NO-FP16-NEXT: fmov h1, #0.125580; FP16: fmov h1, #0.12500000 ; encoding: [0x01,0x10,0xe8,0x1e]581; NO-FP16: error: instruction requires:582; NO-FP16-NEXT: fmov h1, #0x40583; CHECK: fmov s1, #0.12500000 ; encoding: [0x01,0x10,0x28,0x1e]584; CHECK: fmov s1, #0.12500000 ; encoding: [0x01,0x10,0x28,0x1e]585; CHECK: fmov d1, #0.12500000 ; encoding: [0x01,0x10,0x68,0x1e]586; CHECK: fmov d1, #0.12500000 ; encoding: [0x01,0x10,0x68,0x1e]587; CHECK: fmov d1, #-0.48437500 ; encoding: [0x01,0xf0,0x7b,0x1e]588; CHECK: fmov d1, #0.48437500 ; encoding: [0x01,0xf0,0x6b,0x1e]589; CHECK: fmov d3, #3.00000000 ; encoding: [0x03,0x10,0x61,0x1e]590; FP16: fmov h2, wzr ; encoding: [0xe2,0x03,0xe7,0x1e]591; NO-FP16: error: instruction requires:592; NO-FP16-NEXT: fmov h2, #0.0593; CHECK: fmov s2, wzr ; encoding: [0xe2,0x03,0x27,0x1e]594; CHECK: fmov d2, xzr ; encoding: [0xe2,0x03,0x67,0x9e]595 596 fmov h1, h2597 fmov s1, s2598 fmov d1, d2599 600; FP16: fmov h1, h2 ; encoding: [0x41,0x40,0xe0,0x1e]601; NO-FP16: error: instruction requires:602; NO-FP16-NEXT: fmov h1, h2603; CHECK: fmov s1, s2 ; encoding: [0x41,0x40,0x20,0x1e]604; CHECK: fmov d1, d2 ; encoding: [0x41,0x40,0x60,0x1e]605 606 607 fmov x2, v5.d[1]608 fmov.d x9, v7[1]609 fmov v1.d[1], x1610 fmov.d v8[1], x6611 612; CHECK: fmov.d x2, v5[1] ; encoding: [0xa2,0x00,0xae,0x9e]613; CHECK: fmov.d x9, v7[1] ; encoding: [0xe9,0x00,0xae,0x9e]614; CHECK: fmov.d v1[1], x1 ; encoding: [0x21,0x00,0xaf,0x9e]615; CHECK: fmov.d v8[1], x6 ; encoding: [0xc8,0x00,0xaf,0x9e]616 617 618;-----------------------------------------------------------------------------619; Floating-point round to integral620;-----------------------------------------------------------------------------621 622 frinta h1, h2623 frinta s1, s2624 frinta d1, d2625 626; FP16: frinta h1, h2 ; encoding: [0x41,0x40,0xe6,0x1e]627; NO-FP16: error: instruction requires:628; NO-FP16-NEXT: frinta h1, h2629; CHECK: frinta s1, s2 ; encoding: [0x41,0x40,0x26,0x1e]630; CHECK: frinta d1, d2 ; encoding: [0x41,0x40,0x66,0x1e]631 632 frinti h1, h2633 frinti s1, s2634 frinti d1, d2635 636; FP16: frinti h1, h2 ; encoding: [0x41,0xc0,0xe7,0x1e]637; NO-FP16: error: instruction requires:638; NO-FP16-NEXT: frinti h1, h2639; CHECK: frinti s1, s2 ; encoding: [0x41,0xc0,0x27,0x1e]640; CHECK: frinti d1, d2 ; encoding: [0x41,0xc0,0x67,0x1e]641 642 frintm h1, h2643 frintm s1, s2644 frintm d1, d2645 646; FP16: frintm h1, h2 ; encoding: [0x41,0x40,0xe5,0x1e]647; NO-FP16: error: instruction requires:648; NO-FP16-NEXT: frintm h1, h2649; CHECK: frintm s1, s2 ; encoding: [0x41,0x40,0x25,0x1e]650; CHECK: frintm d1, d2 ; encoding: [0x41,0x40,0x65,0x1e]651 652 frintn h1, h2653 frintn s1, s2654 frintn d1, d2655 656; FP16: frintn h1, h2 ; encoding: [0x41,0x40,0xe4,0x1e]657; NO-FP16: error: instruction requires:658; NO-FP16-NEXT: frintn h1, h2659; CHECK: frintn s1, s2 ; encoding: [0x41,0x40,0x24,0x1e]660; CHECK: frintn d1, d2 ; encoding: [0x41,0x40,0x64,0x1e]661 662 frintp h1, h2663 frintp s1, s2664 frintp d1, d2665 666; FP16: frintp h1, h2 ; encoding: [0x41,0xc0,0xe4,0x1e]667; NO-FP16: error: instruction requires:668; NO-FP16-NEXT: frintp h1, h2669; CHECK: frintp s1, s2 ; encoding: [0x41,0xc0,0x24,0x1e]670; CHECK: frintp d1, d2 ; encoding: [0x41,0xc0,0x64,0x1e]671 672 frintx h1, h2673 frintx s1, s2674 frintx d1, d2675 676; FP16: frintx h1, h2 ; encoding: [0x41,0x40,0xe7,0x1e]677; NO-FP16: error: instruction requires:678; NO-FP16-NEXT: frintx h1, h2679; CHECK: frintx s1, s2 ; encoding: [0x41,0x40,0x27,0x1e]680; CHECK: frintx d1, d2 ; encoding: [0x41,0x40,0x67,0x1e]681 682 frintz h1, h2683 frintz s1, s2684 frintz d1, d2685 686; FP16: frintz h1, h2 ; encoding: [0x41,0xc0,0xe5,0x1e]687; NO-FP16: error: instruction requires:688; NO-FP16-NEXT: frintz h1, h2689; CHECK: frintz s1, s2 ; encoding: [0x41,0xc0,0x25,0x1e]690; CHECK: frintz d1, d2 ; encoding: [0x41,0xc0,0x65,0x1e]691 692 cmhs d0, d0, d0693 cmtst d0, d0, d0694 695; CHECK: cmhs d0, d0, d0 ; encoding: [0x00,0x3c,0xe0,0x7e]696; CHECK: cmtst d0, d0, d0 ; encoding: [0x00,0x8c,0xe0,0x5e]697 698 699 700;-----------------------------------------------------------------------------701; Floating-point extract and narrow702;-----------------------------------------------------------------------------703 sqxtn b4, h2704 sqxtn h2, s3705 sqxtn s9, d2706 707; CHECK: sqxtn b4, h2 ; encoding: [0x44,0x48,0x21,0x5e]708; CHECK: sqxtn h2, s3 ; encoding: [0x62,0x48,0x61,0x5e]709; CHECK: sqxtn s9, d2 ; encoding: [0x49,0x48,0xa1,0x5e]710 711 sqxtun b4, h2712 sqxtun h2, s3713 sqxtun s9, d2714 715; CHECK: sqxtun b4, h2 ; encoding: [0x44,0x28,0x21,0x7e]716; CHECK: sqxtun h2, s3 ; encoding: [0x62,0x28,0x61,0x7e]717; CHECK: sqxtun s9, d2 ; encoding: [0x49,0x28,0xa1,0x7e]718 719 uqxtn b4, h2720 uqxtn h2, s3721 uqxtn s9, d2722 723; CHECK: uqxtn b4, h2 ; encoding: [0x44,0x48,0x21,0x7e]724; CHECK: uqxtn h2, s3 ; encoding: [0x62,0x48,0x61,0x7e]725; CHECK: uqxtn s9, d2 ; encoding: [0x49,0x48,0xa1,0x7e]726