322 lines · plain
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 < %s \2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p3 < %s \4// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST5// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \6// RUN: | FileCheck %s --check-prefix=CHECK-ERROR7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2p3 < %s \8// RUN: | llvm-objdump -d --mattr=+sve2p3 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST9// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2p3 < %s \10// RUN: | llvm-objdump -d --mattr=-sve2p3 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN11// Disassemble encoding and check the re-encoding (-show-encoding) matches.12// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 < %s \13// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \14// RUN: | llvm-mc -triple=aarch64 -mattr=+sve2p3 -disassemble -show-encoding \15// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST16 17// -------------------------------------------------------------18// Floating-point convert, narrow and interleave to signed integer, rounding toward zero19 20fcvtzsn z0.b, { z0.h, z1.h }21// CHECK-INST: fcvtzsn z0.b, { z0.h, z1.h }22// CHECK-ENCODING: encoding: [0x00,0x30,0x4d,0x65]23// CHECK-ERROR: instruction requires: sme2p3 or sve2p324// CHECK-UNKNOWN: 654d3000 <unknown>25 26fcvtzsn z31.b, { z0.h, z1.h }27// CHECK-INST: fcvtzsn z31.b, { z0.h, z1.h }28// CHECK-ENCODING: encoding: [0x1f,0x30,0x4d,0x65]29// CHECK-ERROR: instruction requires: sme2p3 or sve2p330// CHECK-UNKNOWN: 654d301f <unknown>31 32fcvtzsn z0.b, { z30.h, z31.h }33// CHECK-INST: fcvtzsn z0.b, { z30.h, z31.h }34// CHECK-ENCODING: encoding: [0xc0,0x33,0x4d,0x65]35// CHECK-ERROR: instruction requires: sme2p3 or sve2p336// CHECK-UNKNOWN: 654d33c0 <unknown>37 38fcvtzsn z31.b, { z30.h, z31.h }39// CHECK-INST: fcvtzsn z31.b, { z30.h, z31.h }40// CHECK-ENCODING: encoding: [0xdf,0x33,0x4d,0x65]41// CHECK-ERROR: instruction requires: sme2p3 or sve2p342// CHECK-UNKNOWN: 654d33df <unknown>43 44fcvtzsn z0.h, { z0.s, z1.s }45// CHECK-INST: fcvtzsn z0.h, { z0.s, z1.s }46// CHECK-ENCODING: encoding: [0x00,0x30,0x8d,0x65]47// CHECK-ERROR: instruction requires: sme2p3 or sve2p348// CHECK-UNKNOWN: 658d3000 <unknown>49 50fcvtzsn z31.h, { z0.s, z1.s }51// CHECK-INST: fcvtzsn z31.h, { z0.s, z1.s }52// CHECK-ENCODING: encoding: [0x1f,0x30,0x8d,0x65]53// CHECK-ERROR: instruction requires: sme2p3 or sve2p354// CHECK-UNKNOWN: 658d301f <unknown>55 56fcvtzsn z0.h, { z30.s, z31.s }57// CHECK-INST: fcvtzsn z0.h, { z30.s, z31.s }58// CHECK-ENCODING: encoding: [0xc0,0x33,0x8d,0x65]59// CHECK-ERROR: instruction requires: sme2p3 or sve2p360// CHECK-UNKNOWN: 658d33c0 <unknown>61 62fcvtzsn z31.h, { z30.s, z31.s }63// CHECK-INST: fcvtzsn z31.h, { z30.s, z31.s }64// CHECK-ENCODING: encoding: [0xdf,0x33,0x8d,0x65]65// CHECK-ERROR: instruction requires: sme2p3 or sve2p366// CHECK-UNKNOWN: 658d33df <unknown>67 68fcvtzsn z0.s, { z0.d, z1.d }69// CHECK-INST: fcvtzsn z0.s, { z0.d, z1.d }70// CHECK-ENCODING: encoding: [0x00,0x30,0xcd,0x65]71// CHECK-ERROR: instruction requires: sme2p3 or sve2p372// CHECK-UNKNOWN: 65cd3000 <unknown>73 74fcvtzsn z31.s, { z0.d, z1.d }75// CHECK-INST: fcvtzsn z31.s, { z0.d, z1.d }76// CHECK-ENCODING: encoding: [0x1f,0x30,0xcd,0x65]77// CHECK-ERROR: instruction requires: sme2p3 or sve2p378// CHECK-UNKNOWN: 65cd301f <unknown>79 80fcvtzsn z0.s, { z30.d, z31.d }81// CHECK-INST: fcvtzsn z0.s, { z30.d, z31.d }82// CHECK-ENCODING: encoding: [0xc0,0x33,0xcd,0x65]83// CHECK-ERROR: instruction requires: sme2p3 or sve2p384// CHECK-UNKNOWN: 65cd33c0 <unknown>85 86fcvtzsn z31.s, { z30.d, z31.d }87// CHECK-INST: fcvtzsn z31.s, { z30.d, z31.d }88// CHECK-ENCODING: encoding: [0xdf,0x33,0xcd,0x65]89// CHECK-ERROR: instruction requires: sme2p3 or sve2p390// CHECK-UNKNOWN: 65cd33df <unknown>91 92// -------------------------------------------------------------93// Floating-point convert, narrow and interleave to unsigned integer, rounding toward zero94 95fcvtzun z0.b, { z0.h, z1.h }96// CHECK-INST: fcvtzun z0.b, { z0.h, z1.h }97// CHECK-ENCODING: encoding: [0x00,0x34,0x4d,0x65]98// CHECK-ERROR: instruction requires: sme2p3 or sve2p399// CHECK-UNKNOWN: 654d3400 <unknown>100 101fcvtzun z31.b, { z0.h, z1.h }102// CHECK-INST: fcvtzun z31.b, { z0.h, z1.h }103// CHECK-ENCODING: encoding: [0x1f,0x34,0x4d,0x65]104// CHECK-ERROR: instruction requires: sme2p3 or sve2p3105// CHECK-UNKNOWN: 654d341f <unknown>106 107fcvtzun z0.b, { z30.h, z31.h }108// CHECK-INST: fcvtzun z0.b, { z30.h, z31.h }109// CHECK-ENCODING: encoding: [0xc0,0x37,0x4d,0x65]110// CHECK-ERROR: instruction requires: sme2p3 or sve2p3111// CHECK-UNKNOWN: 654d37c0 <unknown>112 113fcvtzun z31.b, { z30.h, z31.h }114// CHECK-INST: fcvtzun z31.b, { z30.h, z31.h }115// CHECK-ENCODING: encoding: [0xdf,0x37,0x4d,0x65]116// CHECK-ERROR: instruction requires: sme2p3 or sve2p3117// CHECK-UNKNOWN: 654d37df <unknown>118 119fcvtzun z0.h, { z0.s, z1.s }120// CHECK-INST: fcvtzun z0.h, { z0.s, z1.s }121// CHECK-ENCODING: encoding: [0x00,0x34,0x8d,0x65]122// CHECK-ERROR: instruction requires: sme2p3 or sve2p3123// CHECK-UNKNOWN: 658d3400 <unknown>124 125fcvtzun z31.h, { z0.s, z1.s }126// CHECK-INST: fcvtzun z31.h, { z0.s, z1.s }127// CHECK-ENCODING: encoding: [0x1f,0x34,0x8d,0x65]128// CHECK-ERROR: instruction requires: sme2p3 or sve2p3129// CHECK-UNKNOWN: 658d341f <unknown>130 131fcvtzun z0.h, { z30.s, z31.s }132// CHECK-INST: fcvtzun z0.h, { z30.s, z31.s }133// CHECK-ENCODING: encoding: [0xc0,0x37,0x8d,0x65]134// CHECK-ERROR: instruction requires: sme2p3 or sve2p3135// CHECK-UNKNOWN: 658d37c0 <unknown>136 137fcvtzun z31.h, { z30.s, z31.s }138// CHECK-INST: fcvtzun z31.h, { z30.s, z31.s }139// CHECK-ENCODING: encoding: [0xdf,0x37,0x8d,0x65]140// CHECK-ERROR: instruction requires: sme2p3 or sve2p3141// CHECK-UNKNOWN: 658d37df <unknown>142 143fcvtzun z0.s, { z0.d, z1.d }144// CHECK-INST: fcvtzun z0.s, { z0.d, z1.d }145// CHECK-ENCODING: encoding: [0x00,0x34,0xcd,0x65]146// CHECK-ERROR: instruction requires: sme2p3 or sve2p3147// CHECK-UNKNOWN: 65cd3400 <unknown>148 149fcvtzun z31.s, { z0.d, z1.d }150// CHECK-INST: fcvtzun z31.s, { z0.d, z1.d }151// CHECK-ENCODING: encoding: [0x1f,0x34,0xcd,0x65]152// CHECK-ERROR: instruction requires: sme2p3 or sve2p3153// CHECK-UNKNOWN: 65cd341f <unknown>154 155fcvtzun z0.s, { z30.d, z31.d }156// CHECK-INST: fcvtzun z0.s, { z30.d, z31.d }157// CHECK-ENCODING: encoding: [0xc0,0x37,0xcd,0x65]158// CHECK-ERROR: instruction requires: sme2p3 or sve2p3159// CHECK-UNKNOWN: 65cd37c0 <unknown>160 161fcvtzun z31.s, { z30.d, z31.d }162// CHECK-INST: fcvtzun z31.s, { z30.d, z31.d }163// CHECK-ENCODING: encoding: [0xdf,0x37,0xcd,0x65]164// CHECK-ERROR: instruction requires: sme2p3 or sve2p3165// CHECK-UNKNOWN: 65cd37df <unknown>166 167// -----------------------------------------------------------------------168// Signed integer convert to floating-point (bottom, unpredicated)169 170scvtf z0.h, z0.b171// CHECK-INST: scvtf z0.h, z0.b172// CHECK-ENCODING: encoding: [0x00,0x30,0x4c,0x65]173// CHECK-ERROR: instruction requires: sme2p3 or sve2p3174// CHECK-UNKNOWN: 654c3000 <unknown>175 176scvtf z31.h, z31.b177// CHECK-INST: scvtf z31.h, z31.b178// CHECK-ENCODING: encoding: [0xff,0x33,0x4c,0x65]179// CHECK-ERROR: instruction requires: sme2p3 or sve2p3180// CHECK-UNKNOWN: 654c33ff <unknown>181 182scvtf z0.s, z0.h183// CHECK-INST: scvtf z0.s, z0.h184// CHECK-ENCODING: encoding: [0x00,0x30,0x8c,0x65]185// CHECK-ERROR: instruction requires: sme2p3 or sve2p3186// CHECK-UNKNOWN: 658c3000 <unknown>187 188scvtf z31.s, z31.h189// CHECK-INST: scvtf z31.s, z31.h190// CHECK-ENCODING: encoding: [0xff,0x33,0x8c,0x65]191// CHECK-ERROR: instruction requires: sme2p3 or sve2p3192// CHECK-UNKNOWN: 658c33ff <unknown>193 194scvtf z0.d, z0.s195// CHECK-INST: scvtf z0.d, z0.s196// CHECK-ENCODING: encoding: [0x00,0x30,0xcc,0x65]197// CHECK-ERROR: instruction requires: sme2p3 or sve2p3198// CHECK-UNKNOWN: 65cc3000 <unknown>199 200scvtf z31.d, z31.s201// CHECK-INST: scvtf z31.d, z31.s202// CHECK-ENCODING: encoding: [0xff,0x33,0xcc,0x65]203// CHECK-ERROR: instruction requires: sme2p3 or sve2p3204// CHECK-UNKNOWN: 65cc33ff <unknown>205 206// -----------------------------------------------------------------------207// Signed integer convert to floating-point (top, unpredicated)208 209scvtflt z0.h, z0.b210// CHECK-INST: scvtflt z0.h, z0.b211// CHECK-ENCODING: encoding: [0x00,0x38,0x4c,0x65]212// CHECK-ERROR: instruction requires: sme2p3 or sve2p3213// CHECK-UNKNOWN: 654c3800 <unknown>214 215scvtflt z31.h, z31.b216// CHECK-INST: scvtflt z31.h, z31.b217// CHECK-ENCODING: encoding: [0xff,0x3b,0x4c,0x65]218// CHECK-ERROR: instruction requires: sme2p3 or sve2p3219// CHECK-UNKNOWN: 654c3bff <unknown>220 221scvtflt z0.s, z0.h222// CHECK-INST: scvtflt z0.s, z0.h223// CHECK-ENCODING: encoding: [0x00,0x38,0x8c,0x65]224// CHECK-ERROR: instruction requires: sme2p3 or sve2p3225// CHECK-UNKNOWN: 658c3800 <unknown>226 227scvtflt z31.s, z31.h228// CHECK-INST: scvtflt z31.s, z31.h229// CHECK-ENCODING: encoding: [0xff,0x3b,0x8c,0x65]230// CHECK-ERROR: instruction requires: sme2p3 or sve2p3231// CHECK-UNKNOWN: 658c3bff <unknown>232 233scvtflt z0.d, z0.s234// CHECK-INST: scvtflt z0.d, z0.s235// CHECK-ENCODING: encoding: [0x00,0x38,0xcc,0x65]236// CHECK-ERROR: instruction requires: sme2p3 or sve2p3237// CHECK-UNKNOWN: 65cc3800 <unknown>238 239scvtflt z31.d, z31.s240// CHECK-INST: scvtflt z31.d, z31.s241// CHECK-ENCODING: encoding: [0xff,0x3b,0xcc,0x65]242// CHECK-ERROR: instruction requires: sme2p3 or sve2p3243// CHECK-UNKNOWN: 65cc3bff <unknown>244 245// -----------------------------------------------------------------------246// Unsigned integer convert to floating-point (bottom, unpredicated)247 248ucvtf z0.h, z0.b249// CHECK-INST: ucvtf z0.h, z0.b250// CHECK-ENCODING: encoding: [0x00,0x34,0x4c,0x65]251// CHECK-ERROR: instruction requires: sme2p3 or sve2p3252// CHECK-UNKNOWN: 654c3400 <unknown>253 254ucvtf z31.h, z31.b255// CHECK-INST: ucvtf z31.h, z31.b256// CHECK-ENCODING: encoding: [0xff,0x37,0x4c,0x65]257// CHECK-ERROR: instruction requires: sme2p3 or sve2p3258// CHECK-UNKNOWN: 654c37ff <unknown>259 260ucvtf z0.s, z0.h261// CHECK-INST: ucvtf z0.s, z0.h262// CHECK-ENCODING: encoding: [0x00,0x34,0x8c,0x65]263// CHECK-ERROR: instruction requires: sme2p3 or sve2p3264// CHECK-UNKNOWN: 658c3400 <unknown>265 266ucvtf z31.s, z31.h267// CHECK-INST: ucvtf z31.s, z31.h268// CHECK-ENCODING: encoding: [0xff,0x37,0x8c,0x65]269// CHECK-ERROR: instruction requires: sme2p3 or sve2p3270// CHECK-UNKNOWN: 658c37ff <unknown>271 272ucvtf z0.d, z0.s273// CHECK-INST: ucvtf z0.d, z0.s274// CHECK-ENCODING: encoding: [0x00,0x34,0xcc,0x65]275// CHECK-ERROR: instruction requires: sme2p3 or sve2p3276// CHECK-UNKNOWN: 65cc3400 <unknown>277 278ucvtf z31.d, z31.s279// CHECK-INST: ucvtf z31.d, z31.s280// CHECK-ENCODING: encoding: [0xff,0x37,0xcc,0x65]281// CHECK-ERROR: instruction requires: sme2p3 or sve2p3282// CHECK-UNKNOWN: 65cc37ff <unknown>283 284// -----------------------------------------------------------------------285// Unsigned integer convert to floating-point (top, unpredicated)286 287ucvtflt z0.h, z0.b288// CHECK-INST: ucvtflt z0.h, z0.b289// CHECK-ENCODING: encoding: [0x00,0x3c,0x4c,0x65]290// CHECK-ERROR: instruction requires: sme2p3 or sve2p3291// CHECK-UNKNOWN: 654c3c00 <unknown>292 293ucvtflt z31.h, z31.b294// CHECK-INST: ucvtflt z31.h, z31.b295// CHECK-ENCODING: encoding: [0xff,0x3f,0x4c,0x65]296// CHECK-ERROR: instruction requires: sme2p3 or sve2p3297// CHECK-UNKNOWN: 654c3fff <unknown>298 299ucvtflt z0.s, z0.h300// CHECK-INST: ucvtflt z0.s, z0.h301// CHECK-ENCODING: encoding: [0x00,0x3c,0x8c,0x65]302// CHECK-ERROR: instruction requires: sme2p3 or sve2p3303// CHECK-UNKNOWN: 658c3c00 <unknown>304 305ucvtflt z31.s, z31.h306// CHECK-INST: ucvtflt z31.s, z31.h307// CHECK-ENCODING: encoding: [0xff,0x3f,0x8c,0x65]308// CHECK-ERROR: instruction requires: sme2p3 or sve2p3309// CHECK-UNKNOWN: 658c3fff <unknown>310 311ucvtflt z0.d, z0.s312// CHECK-INST: ucvtflt z0.d, z0.s313// CHECK-ENCODING: encoding: [0x00,0x3c,0xcc,0x65]314// CHECK-ERROR: instruction requires: sme2p3 or sve2p3315// CHECK-UNKNOWN: 65cc3c00 <unknown>316 317ucvtflt z31.d, z31.s318// CHECK-INST: ucvtflt z31.d, z31.s319// CHECK-ENCODING: encoding: [0xff,0x3f,0xcc,0x65]320// CHECK-ERROR: instruction requires: sme2p3 or sve2p3321// CHECK-UNKNOWN: 65cc3fff <unknown>322