1// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s 2 3// Check that the assembler can handle the documented syntax for AArch64 4 5//---------------------------------------------------------------------- 6// Vector Integer Multiply-accumulate 7//---------------------------------------------------------------------- 8 mla v0.8b, v1.8b, v2.8b 9 mla v0.16b, v1.16b, v2.16b 10 mla v0.4h, v1.4h, v2.4h 11 mla v0.8h, v1.8h, v2.8h 12 mla v0.2s, v1.2s, v2.2s 13 mla v0.4s, v1.4s, v2.4s 14 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-subtract 25//---------------------------------------------------------------------- 26 mls v0.8b, v1.8b, v2.8b 27 mls v0.16b, v1.16b, v2.16b 28 mls v0.4h, v1.4h, v2.4h 29 mls v0.8h, v1.8h, v2.8h 30 mls v0.2s, v1.2s, v2.2s 31 mls v0.4s, v1.4s, v2.4s 32 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-accumulate 42//---------------------------------------------------------------------- 43 fmla v0.4h, v1.4h, v2.4h 44 fmla v0.8h, v1.8h, v2.8h 45 fmla v0.2s, v1.2s, v2.2s 46 fmla v0.4s, v1.4s, v2.4s 47 fmla v0.2d, v1.2d, v2.2d 48 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-subtract 57//---------------------------------------------------------------------- 58 fmls v0.4h, v1.4h, v2.4h 59 fmls v0.8h, v1.8h, v2.8h 60 fmls v0.2s, v1.2s, v2.2s 61 fmls v0.4s, v1.4s, v2.4s 62 fmls v0.2d, v1.2d, v2.2d 63 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