1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s 2 3 // Check that the assembler can handle the documented syntax for AArch64 4 5 6 //------------------------------------------------------------------------------ 7 // Vector Integer Add 8 //------------------------------------------------------------------------------ 9 add v0.8b, v1.8b, v2.8b 10 add v0.16b, v1.16b, v2.16b 11 add v0.4h, v1.4h, v2.4h 12 add v0.8h, v1.8h, v2.8h 13 add v0.2s, v1.2s, v2.2s 14 add v0.4s, v1.4s, v2.4s 15 add v0.2d, v1.2d, v2.2d 16 17 // CHECK: add v0.8b, v1.8b, v2.8b // encoding: [0x20,0x84,0x22,0x0e] 18 // CHECK: add v0.16b, v1.16b, v2.16b // encoding: [0x20,0x84,0x22,0x4e] 19 // CHECK: add v0.4h, v1.4h, v2.4h // encoding: [0x20,0x84,0x62,0x0e] 20 // CHECK: add v0.8h, v1.8h, v2.8h // encoding: [0x20,0x84,0x62,0x4e] 21 // CHECK: add v0.2s, v1.2s, v2.2s // encoding: [0x20,0x84,0xa2,0x0e] 22 // CHECK: add v0.4s, v1.4s, v2.4s // encoding: [0x20,0x84,0xa2,0x4e] 23 // CHECK: add v0.2d, v1.2d, v2.2d // encoding: [0x20,0x84,0xe2,0x4e] 24 25 //------------------------------------------------------------------------------ 26 // Vector Integer Sub 27 //------------------------------------------------------------------------------ 28 sub v0.8b, v1.8b, v2.8b 29 sub v0.16b, v1.16b, v2.16b 30 sub v0.4h, v1.4h, v2.4h 31 sub v0.8h, v1.8h, v2.8h 32 sub v0.2s, v1.2s, v2.2s 33 sub v0.4s, v1.4s, v2.4s 34 sub v0.2d, v1.2d, v2.2d 35 36 // CHECK: sub v0.8b, v1.8b, v2.8b // encoding: [0x20,0x84,0x22,0x2e] 37 // CHECK: sub v0.16b, v1.16b, v2.16b // encoding: [0x20,0x84,0x22,0x6e] 38 // CHECK: sub v0.4h, v1.4h, v2.4h // encoding: [0x20,0x84,0x62,0x2e] 39 // CHECK: sub v0.8h, v1.8h, v2.8h // encoding: [0x20,0x84,0x62,0x6e] 40 // CHECK: sub v0.2s, v1.2s, v2.2s // encoding: [0x20,0x84,0xa2,0x2e] 41 // CHECK: sub v0.4s, v1.4s, v2.4s // encoding: [0x20,0x84,0xa2,0x6e] 42 // CHECK: sub v0.2d, v1.2d, v2.2d // encoding: [0x20,0x84,0xe2,0x6e] 43 44 //------------------------------------------------------------------------------ 45 // Vector Floating-Point Add 46 //------------------------------------------------------------------------------ 47 fadd v0.2s, v1.2s, v2.2s 48 fadd v0.4s, v1.4s, v2.4s 49 fadd v0.2d, v1.2d, v2.2d 50 51 // CHECK: fadd v0.2s, v1.2s, v2.2s // encoding: [0x20,0xd4,0x22,0x0e] 52 // CHECK: fadd v0.4s, v1.4s, v2.4s // encoding: [0x20,0xd4,0x22,0x4e] 53 // CHECK: fadd v0.2d, v1.2d, v2.2d // encoding: [0x20,0xd4,0x62,0x4e] 54 55 56 //------------------------------------------------------------------------------ 57 // Vector Floating-Point Sub 58 //------------------------------------------------------------------------------ 59 fsub v0.2s, v1.2s, v2.2s 60 fsub v0.4s, v1.4s, v2.4s 61 fsub v0.2d, v1.2d, v2.2d 62 63 // CHECK: fsub v0.2s, v1.2s, v2.2s // encoding: [0x20,0xd4,0xa2,0x0e] 64 // CHECK: fsub v0.4s, v1.4s, v2.4s // encoding: [0x20,0xd4,0xa2,0x4e] 65 // CHECK: fsub v0.2d, v1.2d, v2.2d // encoding: [0x20,0xd4,0xe2,0x4e] 66 67 //------------------------------------------------------------------------------ 68 // Scalar Integer Add 69 //------------------------------------------------------------------------------ 70 add d31, d0, d16 71 72 // CHECK: add d31, d0, d16 // encoding: [0x1f,0x84,0xf0,0x5e] 73 74 //------------------------------------------------------------------------------ 75 // Scalar Integer Sub 76 //------------------------------------------------------------------------------ 77 sub d1, d7, d8 78 79 // CHECK: sub d1, d7, d8 // encoding: [0xe1,0x84,0xe8,0x7e] 80 81 82 83