From 14965760a741320918d7ad36d03cafc1ca9e4d98 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Wed, 8 Jul 2009 01:46:35 +0000 Subject: [PATCH] Add a Thumb2 instruction flag to that indicates whether the instruction can be transformed to 16-bit variant. llvm-svn: 74988 --- llvm/lib/Target/ARM/ARM.td | 6 +++--- llvm/lib/Target/ARM/ARMInstrFormats.td | 12 ++++++++++-- llvm/lib/Target/ARM/ARMInstrInfo.h | 22 +++++++++++++--------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td index 9001e5033c7d..2ed6b9c6c2f6 100644 --- a/llvm/lib/Target/ARM/ARM.td +++ b/llvm/lib/Target/ARM/ARM.td @@ -131,13 +131,13 @@ def ARMInstrInfo : InstrInfo { let TSFlagsFields = ["AddrModeBits", "SizeFlag", "IndexModeBits", - "isUnaryDataProc", - "Form"]; + "Form", + "isUnaryDataProc"]; let TSFlagsShifts = [0, 4, 7, 9, - 10]; + 15]; } //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/ARM/ARMInstrFormats.td b/llvm/lib/Target/ARM/ARMInstrFormats.td index 301a6c1a5cca..b9868ccf6aed 100644 --- a/llvm/lib/Target/ARM/ARMInstrFormats.td +++ b/llvm/lib/Target/ARM/ARMInstrFormats.td @@ -54,9 +54,16 @@ def NEONGetLnFrm : Format<25>; def NEONSetLnFrm : Format<26>; def NEONDupFrm : Format<27>; -// Misc flag for data processing instructions that indicates whether +// Misc flags. + // the instruction has a Rn register operand. -class UnaryDP { bit isUnaryDataProc = 1; } +// UnaryDP - Indicates this is a unary data processing instruction, i.e. +// it doesn't have a Rn operand. +class UnaryDP { bit isUnaryDataProc = 1; } + +// Xform16Bit - Indicates this Thumb2 instruction may be transformed into +// a 16-bit Thumb instruction if certain conditions are met. +class Xform16Bit { bit canXformTo16Bit = 1; } //===----------------------------------------------------------------------===// // ARM Instruction flags. These need to match ARMInstrInfo.h. @@ -130,6 +137,7 @@ class InstARM