brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 3a451a9 Raw
122 lines · plain
1// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fp16fml < %s | FileCheck %s --check-prefix=CHECK2// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-fullfp16,+fp16fml < %s | FileCheck %s --check-prefix=CHECK3// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.2a < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NOFP16FML4// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.2a,+fullfp16 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NOFP16FML5// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.2a,+fp16fml,-fullfp16 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NOFP16FML6// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.2a,+fp16fml,-neon < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-FP16FML-NOR-NEON7// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.2a,-neon < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-FP16FML-NOR-NEON8 9//------------------------------------------------------------------------------10// ARMV8.2-A Floating Point Multiplication11//------------------------------------------------------------------------------12 13FMLAL  V0.2S, V1.2H, V2.2H14FMLSL  V0.2S, V1.2H, V2.2H15FMLAL  V0.4S, V1.4H, V2.4H16FMLSL  V0.4S, V1.4H, V2.4H17FMLAL2  V0.2S, V1.2H, V2.2H18FMLSL2  V0.2S, V1.2H, V2.2H19FMLAL2  V0.4S, V1.4H, V2.4H20FMLSL2  V0.4S, V1.4H, V2.4H21 22//CHECK:  fmlal v0.2s, v1.2h, v2.2h     // encoding: [0x20,0xec,0x22,0x0e]23//CHECK:  fmlsl v0.2s, v1.2h, v2.2h     // encoding: [0x20,0xec,0xa2,0x0e]24//CHECK:  fmlal v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xec,0x22,0x4e]25//CHECK:  fmlsl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xec,0xa2,0x4e]26//CHECK:  fmlal2  v0.2s, v1.2h, v2.2h     // encoding: [0x20,0xcc,0x22,0x2e]27//CHECK:  fmlsl2  v0.2s, v1.2h, v2.2h     // encoding: [0x20,0xcc,0xa2,0x2e]28//CHECK:  fmlal2  v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xcc,0x22,0x6e]29//CHECK:  fmlsl2  v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xcc,0xa2,0x6e]30 31//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}32//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}33//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}34//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}35//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}36//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}37//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}38//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}39 40//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}41//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}42//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}43//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}44//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}45//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}46//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}47//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}48 49# Checks with the maximum index value 7:50fmlal  V0.2s, v1.2h, v2.h[7]51fmlsl  V0.2s, v1.2h, v2.h[7]52fmlal  V0.4s, v1.4h, v2.h[7]53fmlsl  V0.4s, v1.4h, v2.h[7]54fmlal2  V0.2s, v1.2h, v2.h[7]55fmlsl2  V0.2s, v1.2h, v2.h[7]56fmlal2  V0.4s, v1.4h, v2.h[7]57fmlsl2  V0.4s, v1.4h, v2.h[7]58 59# Some more checks with a different index bit pattern to catch60# incorrect permutations of the index (decimal 7 is 0b111):61fmlal  V0.2s, v1.2h, v2.h[5]62fmlsl  V0.2s, v1.2h, v2.h[5]63fmlal  V0.4s, v1.4h, v2.h[5]64fmlsl  V0.4s, v1.4h, v2.h[5]65fmlal2  V0.2s, v1.2h, v2.h[5]66fmlsl2  V0.2s, v1.2h, v2.h[5]67fmlal2  V0.4s, v1.4h, v2.h[5]68fmlsl2  V0.4s, v1.4h, v2.h[5]69 70//CHECK: fmlal v0.2s, v1.2h, v2.h[7]   // encoding: [0x20,0x08,0xb2,0x0f]71//CHECK: fmlsl v0.2s, v1.2h, v2.h[7]   // encoding: [0x20,0x48,0xb2,0x0f]72//CHECK: fmlal v0.4s, v1.4h, v2.h[7]   // encoding: [0x20,0x08,0xb2,0x4f]73//CHECK: fmlsl v0.4s, v1.4h, v2.h[7]   // encoding: [0x20,0x48,0xb2,0x4f]74//CHECK: fmlal2  v0.2s, v1.2h, v2.h[7]   // encoding: [0x20,0x88,0xb2,0x2f]75//CHECK: fmlsl2  v0.2s, v1.2h, v2.h[7]   // encoding: [0x20,0xc8,0xb2,0x2f]76//CHECK: fmlal2  v0.4s, v1.4h, v2.h[7]   // encoding: [0x20,0x88,0xb2,0x6f]77//CHECK: fmlsl2  v0.4s, v1.4h, v2.h[7]   // encoding: [0x20,0xc8,0xb2,0x6f]78 79//CHECK:  fmlal v0.2s, v1.2h, v2.h[5]   // encoding: [0x20,0x08,0x92,0x0f]80//CHECK:  fmlsl v0.2s, v1.2h, v2.h[5]   // encoding: [0x20,0x48,0x92,0x0f]81//CHECK:  fmlal v0.4s, v1.4h, v2.h[5]   // encoding: [0x20,0x08,0x92,0x4f]82//CHECK:  fmlsl v0.4s, v1.4h, v2.h[5]   // encoding: [0x20,0x48,0x92,0x4f]83//CHECK:  fmlal2  v0.2s, v1.2h, v2.h[5]   // encoding: [0x20,0x88,0x92,0x2f]84//CHECK:  fmlsl2  v0.2s, v1.2h, v2.h[5]   // encoding: [0x20,0xc8,0x92,0x2f]85//CHECK:  fmlal2  v0.4s, v1.4h, v2.h[5]   // encoding: [0x20,0x88,0x92,0x6f]86//CHECK:  fmlsl2  v0.4s, v1.4h, v2.h[5]   // encoding: [0x20,0xc8,0x92,0x6f]87 88//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}89//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}90//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}91//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}92//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}93//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}94//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}95//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}96//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}97//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}98//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}99//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}100//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}101//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}102//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}103//CHECK-NOFP16FML: error: instruction requires: fp16fml{{$}}104 105//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}106//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}107//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}108//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}109//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}110//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}111//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}112//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}113//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}114//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}115//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}116//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}117//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}118//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}119//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}120//CHECK-NO-FP16FML-NOR-NEON: error: instruction requires: fp16fml neon{{$}}121 122