|
| 1 | +# REQUIRES: aarch64-registered-target |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +// Test for omitting OperandType::OPERAND_SHIFT_MSL |
| 6 | + |
| 7 | +// MOVIv2s_msl: MOVI vd, #imm{, shift} |
| 8 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --benchmark-phase=prepare-and-assemble-snippet --opcode-name=MOVIv4s_msl 2>&1 | FileCheck %s --check-prefix=MOVIv4s_msl_latency |
| 9 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=inverse_throughput --benchmark-phase=prepare-and-assemble-snippet --opcode-name=MOVIv4s_msl 2>&1 | FileCheck %s --check-prefix=MOVIv4s_msl_throughput |
| 10 | +# MOVIv4s_msl_latency-NOT: Not all operands were initialized by the snippet generator for MOVIv4s_msl opcode |
| 11 | + |
| 12 | +// TODO: Add test to check if the immediate value is correct when serial execution strategy is added for MOVIv4s_msl |
| 13 | + |
| 14 | + |
| 15 | +# MOVIv4s_msl_throughput-NOT: Not all operands were initialized by the snippet generator for MOVIv4s_msl opcode |
| 16 | +# MOVIv4s_msl_throughput: --- |
| 17 | +# MOVIv4s_msl_throughput-NEXT: mode: inverse_throughput |
| 18 | +# MOVIv4s_msl_throughput-NEXT: key: |
| 19 | +# MOVIv4s_msl_throughput-NEXT: instructions: |
| 20 | +# MOVIv4s_msl_throughput-NEXT: MOVIv4s_msl [[REG1:Q[0-9]+|LR]] i_0x1 i_0x108 |
| 21 | +# MOVIv4s_msl_throughput: ... |
| 22 | + |
| 23 | +// MOVIv2s_msl: MOVI vd, #imm{, shift} |
| 24 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --benchmark-phase=prepare-and-assemble-snippet --opcode-name=MOVIv2s_msl 2>&1 | FileCheck %s --check-prefix=MOVIv2s_msl_latency |
| 25 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=inverse_throughput --benchmark-phase=prepare-and-assemble-snippet --opcode-name=MOVIv2s_msl 2>&1 | FileCheck %s --check-prefix=MOVIv2s_msl_throughput |
| 26 | +# MOVIv2s_msl_latency-NOT: Not all operands were initialized by the snippet generator for MOVIv2s_msl opcode |
| 27 | + |
| 28 | +// TODO: Add test to check if the immediate value is correct when serial execution strategy is added for MOVIv2s_msl |
| 29 | + |
| 30 | + |
| 31 | +# MOVIv2s_msl_throughput-NOT: Not all operands were initialized by the snippet generator for MOVIv2s_msl opcode |
| 32 | +# MOVIv2s_msl_throughput: --- |
| 33 | +# MOVIv2s_msl_throughput-NEXT: mode: inverse_throughput |
| 34 | +# MOVIv2s_msl_throughput-NEXT: key: |
| 35 | +# MOVIv2s_msl_throughput-NEXT: instructions: |
| 36 | +# MOVIv2s_msl_throughput-NEXT: MOVIv2s_msl [[REG1:D[0-9]+|LR]] i_0x1 i_0x108 |
| 37 | +# MOVIv2s_msl_throughput: ... |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +// Test for omitting OperandType::OPERAND_PCREL |
| 42 | +// LDRDl: LDRD ldr1, ldr2, [pc, #imm] |
| 43 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --benchmark-phase=prepare-and-assemble-snippet --opcode-name=LDRDl 2>&1 | FileCheck %s --check-prefix=LDRDl_latency |
| 44 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=inverse_throughput --benchmark-phase=prepare-and-assemble-snippet --opcode-name=LDRDl 2>&1 | FileCheck %s --check-prefix=LDRDl_throughput |
| 45 | + |
| 46 | +# LDRDl_latency-NOT: Not all operands were initialized by the snippet generator for LDRDl opcodes |
| 47 | +# LDRDl_throughput-NOT: Not all operands were initialized by the snippet generator for LDRDl opcodes |
| 48 | + |
| 49 | +# LDRDl_throughput: --- |
| 50 | +# LDRDl_throughput-NEXT: mode: inverse_throughput |
| 51 | +# LDRDl_throughput-NEXT: key: |
| 52 | +# LDRDl_throughput-NEXT: instructions: |
| 53 | +# LDRDl_throughput-NEXT: LDRDl [[REG1:D[0-9]+|LR]] i_0x8 |
| 54 | +# LDRDl_throughput: ... |
| 55 | + |
| 56 | + |
| 57 | + |
| 58 | +// Test for omitting OperandType::OPERAND_IMPLICIT_IMM_0 |
| 59 | + |
| 60 | +// UMOVvi16_idx0: UMOV wd, vn.h[index] |
| 61 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --benchmark-phase=prepare-and-assemble-snippet --opcode-name=UMOVvi16_idx0 2>&1 | FileCheck %s --check-prefix=UMOVvi16_idx0_latency |
| 62 | +# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=inverse_throughput --benchmark-phase=prepare-and-assemble-snippet --opcode-name=UMOVvi16_idx0 2>&1 | FileCheck %s --check-prefix=UMOVvi16_idx0_throughput |
| 63 | + |
| 64 | +# UMOVvi16_idx0_latency-NOT: Not all operands were initialized by the snippet generator for UMOVvi16_idx0 opcode |
| 65 | +# UMOVvi16_idx0_latency: --- |
| 66 | +# UMOVvi16_idx0_latency-NEXT: mode: latency |
| 67 | +# UMOVvi16_idx0_latency-NEXT: key: |
| 68 | +# UMOVvi16_idx0_latency-NEXT: instructions: |
| 69 | +# UMOVvi16_idx0_latency-NEXT: UMOVvi16_idx0 [[REG1:W[0-9]+|LR]] [[REG2:Q[0-9]+|LR]] i_0x0 |
| 70 | +# UMOVvi16_idx0_latency: ... |
| 71 | + |
| 72 | +# UMOVvi16_idx0_throughput-NOT: Not all operands were initialized by the snippet generator for UMOVvi16_idx0 opcode |
| 73 | +# UMOVvi16_idx0_throughput: --- |
| 74 | +# UMOVvi16_idx0_throughput-NEXT: mode: inverse_throughput |
| 75 | +# UMOVvi16_idx0_throughput-NEXT: key: |
| 76 | +# UMOVvi16_idx0_throughput-NEXT: instructions: |
| 77 | +# UMOVvi16_idx0_throughput-NEXT: UMOVvi16_idx0 [[REG1:W[0-9]+|LR]] [[REG2:Q[0-9]+|LR]] i_0x0 |
| 78 | +# UMOVvi16_idx0_throughput: ... |
0 commit comments