From 207e3af5018ea97f69007ecc70687ce07990617d Mon Sep 17 00:00:00 2001 From: Andrea Di Biagio Date: Fri, 2 Aug 2019 10:38:25 +0000 Subject: [MCA] Add support for printing immedate values as hex. Also enable lexing of masm binary and hex literals. This patch adds a new llvm-mca flag named -print-imm-hex. By default, the instruction printer prints immediate operands as decimals. Flag -print-imm-hex enables the instruction printer to print those operands in hex. This patch also adds support for MASM binary and hex literal numbers (example 0FFh, 101b). Added tests to verify the behavior of the new flag. Tests also verify that masm numeric literal operands are now recognized. Differential Revision: https://reviews.llvm.org/D65588 llvm-svn: 367671 --- llvm/test/tools/llvm-mca/X86/print-imm-hex-1.s | 30 ++++++++++++++++++++ llvm/test/tools/llvm-mca/X86/print-imm-hex-2.s | 39 ++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 llvm/test/tools/llvm-mca/X86/print-imm-hex-1.s create mode 100644 llvm/test/tools/llvm-mca/X86/print-imm-hex-2.s (limited to 'llvm/test') diff --git a/llvm/test/tools/llvm-mca/X86/print-imm-hex-1.s b/llvm/test/tools/llvm-mca/X86/print-imm-hex-1.s new file mode 100644 index 00000000000..26ba26f7382 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/print-imm-hex-1.s @@ -0,0 +1,30 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info < %s | FileCheck %s --check-prefixes=ALL,DEFAULT +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex=false < %s | FileCheck %s --check-prefixes=ALL,DEFAULT +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex < %s | FileCheck %s --check-prefixes=ALL,HEX +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex=true < %s | FileCheck %s --check-prefixes=ALL,HEX + + shl $5, %eax + shl $0x5, %eax + shl $5h, %eax + shl $101b, %eax + +# ALL: Instruction Info: +# ALL-NEXT: [1]: #uOps +# ALL-NEXT: [2]: Latency +# ALL-NEXT: [3]: RThroughput +# ALL-NEXT: [4]: MayLoad +# ALL-NEXT: [5]: MayStore +# ALL-NEXT: [6]: HasSideEffects (U) + +# ALL: [1] [2] [3] [4] [5] [6] Instructions: + +# DEFAULT-NEXT: 1 1 0.50 shll $5, %eax +# DEFAULT-NEXT: 1 1 0.50 shll $5, %eax +# DEFAULT-NEXT: 1 1 0.50 shll $5, %eax +# DEFAULT-NEXT: 1 1 0.50 shll $5, %eax + +# HEX-NEXT: 1 1 0.50 shll $0x5, %eax +# HEX-NEXT: 1 1 0.50 shll $0x5, %eax +# HEX-NEXT: 1 1 0.50 shll $0x5, %eax +# HEX-NEXT: 1 1 0.50 shll $0x5, %eax diff --git a/llvm/test/tools/llvm-mca/X86/print-imm-hex-2.s b/llvm/test/tools/llvm-mca/X86/print-imm-hex-2.s new file mode 100644 index 00000000000..35d8f1d43e6 --- /dev/null +++ b/llvm/test/tools/llvm-mca/X86/print-imm-hex-2.s @@ -0,0 +1,39 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info < %s | FileCheck %s --check-prefix=DEFAULT +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex=false < %s | FileCheck %s --check-prefix=DEFAULT +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex < %s | FileCheck %s --check-prefix=HEX +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views=false -instruction-info -print-imm-hex=true < %s | FileCheck %s --check-prefix=HEX + + .intel_syntax noprefix + shl eax, 8 + shl eax, 0x8 + shl eax, 8h + shl eax, 1000b + +# DEFAULT: Instruction Info: +# DEFAULT-NEXT: [1]: #uOps +# DEFAULT-NEXT: [2]: Latency +# DEFAULT-NEXT: [3]: RThroughput +# DEFAULT-NEXT: [4]: MayLoad +# DEFAULT-NEXT: [5]: MayStore +# DEFAULT-NEXT: [6]: HasSideEffects (U) + +# HEX: Instruction Info: +# HEX-NEXT: [1]: #uOps +# HEX-NEXT: [2]: Latency +# HEX-NEXT: [3]: RThroughput +# HEX-NEXT: [4]: MayLoad +# HEX-NEXT: [5]: MayStore +# HEX-NEXT: [6]: HasSideEffects (U) + +# DEFAULT: [1] [2] [3] [4] [5] [6] Instructions: +# DEFAULT-NEXT: 1 1 0.50 shl eax, 8 +# DEFAULT-NEXT: 1 1 0.50 shl eax, 8 +# DEFAULT-NEXT: 1 1 0.50 shl eax, 8 +# DEFAULT-NEXT: 1 1 0.50 shl eax, 8 + +# HEX: [1] [2] [3] [4] [5] [6] Instructions: +# HEX-NEXT: 1 1 0.50 shl eax, 0x8 +# HEX-NEXT: 1 1 0.50 shl eax, 0x8 +# HEX-NEXT: 1 1 0.50 shl eax, 0x8 +# HEX-NEXT: 1 1 0.50 shl eax, 0x8 -- cgit v1.2.3