70 lines · plain
1// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s2 3// Check that the assembler can handle the documented syntax for AArch644 5//----------------------------------------------------------------------6// Vector Integer Multiply-accumulate7//----------------------------------------------------------------------8 mla v0.8b, v1.8b, v2.8b9 mla v0.16b, v1.16b, v2.16b10 mla v0.4h, v1.4h, v2.4h11 mla v0.8h, v1.8h, v2.8h12 mla v0.2s, v1.2s, v2.2s13 mla v0.4s, v1.4s, v2.4s14 15// CHECK: mla v0.8b, v1.8b, v2.8b // encoding: [0x20,0x94,0x22,0x0e]16// CHECK: mla v0.16b, v1.16b, v2.16b // encoding: [0x20,0x94,0x22,0x4e]17// CHECK: mla v0.4h, v1.4h, v2.4h // encoding: [0x20,0x94,0x62,0x0e]18// CHECK: mla v0.8h, v1.8h, v2.8h // encoding: [0x20,0x94,0x62,0x4e]19// CHECK: mla v0.2s, v1.2s, v2.2s // encoding: [0x20,0x94,0xa2,0x0e]20// CHECK: mla v0.4s, v1.4s, v2.4s // encoding: [0x20,0x94,0xa2,0x4e]21 22 23//----------------------------------------------------------------------24// Vector Integer Multiply-subtract25//----------------------------------------------------------------------26 mls v0.8b, v1.8b, v2.8b27 mls v0.16b, v1.16b, v2.16b28 mls v0.4h, v1.4h, v2.4h29 mls v0.8h, v1.8h, v2.8h30 mls v0.2s, v1.2s, v2.2s31 mls v0.4s, v1.4s, v2.4s32 33// CHECK: mls v0.8b, v1.8b, v2.8b // encoding: [0x20,0x94,0x22,0x2e]34// CHECK: mls v0.16b, v1.16b, v2.16b // encoding: [0x20,0x94,0x22,0x6e]35// CHECK: mls v0.4h, v1.4h, v2.4h // encoding: [0x20,0x94,0x62,0x2e]36// CHECK: mls v0.8h, v1.8h, v2.8h // encoding: [0x20,0x94,0x62,0x6e]37// CHECK: mls v0.2s, v1.2s, v2.2s // encoding: [0x20,0x94,0xa2,0x2e]38// CHECK: mls v0.4s, v1.4s, v2.4s // encoding: [0x20,0x94,0xa2,0x6e]39 40//----------------------------------------------------------------------41// Vector Floating-Point Multiply-accumulate42//----------------------------------------------------------------------43 fmla v0.4h, v1.4h, v2.4h44 fmla v0.8h, v1.8h, v2.8h45 fmla v0.2s, v1.2s, v2.2s46 fmla v0.4s, v1.4s, v2.4s47 fmla v0.2d, v1.2d, v2.2d48 49// CHECK: fmla v0.4h, v1.4h, v2.4h // encoding: [0x20,0x0c,0x42,0x0e]50// CHECK: fmla v0.8h, v1.8h, v2.8h // encoding: [0x20,0x0c,0x42,0x4e]51// CHECK: fmla v0.2s, v1.2s, v2.2s // encoding: [0x20,0xcc,0x22,0x0e]52// CHECK: fmla v0.4s, v1.4s, v2.4s // encoding: [0x20,0xcc,0x22,0x4e]53// CHECK: fmla v0.2d, v1.2d, v2.2d // encoding: [0x20,0xcc,0x62,0x4e]54 55//----------------------------------------------------------------------56// Vector Floating-Point Multiply-subtract57//----------------------------------------------------------------------58 fmls v0.4h, v1.4h, v2.4h59 fmls v0.8h, v1.8h, v2.8h60 fmls v0.2s, v1.2s, v2.2s61 fmls v0.4s, v1.4s, v2.4s62 fmls v0.2d, v1.2d, v2.2d63 64// CHECK: fmls v0.4h, v1.4h, v2.4h // encoding: [0x20,0x0c,0xc2,0x0e]65// CHECK: fmls v0.8h, v1.8h, v2.8h // encoding: [0x20,0x0c,0xc2,0x4e]66// CHECK: fmls v0.2s, v1.2s, v2.2s // encoding: [0x20,0xcc,0xa2,0x0e]67// CHECK: fmls v0.4s, v1.4s, v2.4s // encoding: [0x20,0xcc,0xa2,0x4e]68// CHECK: fmls v0.2d, v1.2d, v2.2d // encoding: [0x20,0xcc,0xe2,0x4e]69 70