[llvm-commits] [llvm] r144588 - /llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
Jim Grosbach
grosbach at apple.com
Mon Nov 14 15:20:14 PST 2011
Author: grosbach
Date: Mon Nov 14 17:20:14 2011
New Revision: 144588
URL: http://llvm.org/viewvc/llvm-project?rev=144588&view=rev
Log:
Split out the plain '.{8|16|32|64}' suffix handling.
Make it easier to deal with aliases for instructions that do require a suffix
but accept more specific variants of the same size.
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
Modified: llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrFormats.td?rev=144588&r1=144587&r2=144588&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrFormats.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrFormats.td Mon Nov 14 17:20:14 2011
@@ -1995,36 +1995,52 @@
// VFP/NEON Instruction aliases for type suffices.
class VFPDataTypeInstAlias<string opc, string dt, string asm, dag Result> :
InstAlias<!strconcat(opc, dt, asm), Result>;
-multiclass VFPDT8InstAlias<string opc, string asm, dag Result> {
- def _8 : VFPDataTypeInstAlias<opc, ".8", asm, Result>;
+multiclass VFPDT8ReqInstAlias<string opc, string asm, dag Result> {
def I8 : VFPDataTypeInstAlias<opc, ".i8", asm, Result>;
def S8 : VFPDataTypeInstAlias<opc, ".s8", asm, Result>;
def U8 : VFPDataTypeInstAlias<opc, ".u8", asm, Result>;
def F8 : VFPDataTypeInstAlias<opc, ".p8", asm, Result>;
}
-multiclass VFPDT16InstAlias<string opc, string asm, dag Result> {
- def _16 : VFPDataTypeInstAlias<opc, ".16", asm, Result>;
+// VFPDT8ReqInstAlias plus plain ".8"
+multiclass VFPDT8InstAlias<string opc, string asm, dag Result> {
+ def _8 : VFPDataTypeInstAlias<opc, ".8", asm, Result>;
+ defm : VFPDT8ReqInstAlias<opc, asm, Result>;
+}
+multiclass VFPDT16ReqInstAlias<string opc, string asm, dag Result> {
def I16 : VFPDataTypeInstAlias<opc, ".i16", asm, Result>;
def S16 : VFPDataTypeInstAlias<opc, ".s16", asm, Result>;
def U16 : VFPDataTypeInstAlias<opc, ".u16", asm, Result>;
def F16 : VFPDataTypeInstAlias<opc, ".p16", asm, Result>;
}
-multiclass VFPDT32InstAlias<string opc, string asm, dag Result> {
- def _32 : VFPDataTypeInstAlias<opc, ".32", asm, Result>;
+// VFPDT16ReqInstAlias plus plain ".16"
+multiclass VFPDT16InstAlias<string opc, string asm, dag Result> {
+ def _16 : VFPDataTypeInstAlias<opc, ".16", asm, Result>;
+ defm : VFPDT16ReqInstAlias<opc, asm, Result>;
+}
+multiclass VFPDT32ReqInstAlias<string opc, string asm, dag Result> {
def I32 : VFPDataTypeInstAlias<opc, ".i32", asm, Result>;
def S32 : VFPDataTypeInstAlias<opc, ".s32", asm, Result>;
def U32 : VFPDataTypeInstAlias<opc, ".u32", asm, Result>;
def F32 : VFPDataTypeInstAlias<opc, ".f32", asm, Result>;
def F : VFPDataTypeInstAlias<opc, ".f", asm, Result>;
}
-multiclass VFPDT64InstAlias<string opc, string asm, dag Result> {
- def _64 : VFPDataTypeInstAlias<opc, ".64", asm, Result>;
+// VFPDT32ReqInstAlias plus plain ".32"
+multiclass VFPDT32InstAlias<string opc, string asm, dag Result> {
+ def _32 : VFPDataTypeInstAlias<opc, ".32", asm, Result>;
+ defm : VFPDT32ReqInstAlias<opc, asm, Result>;
+}
+multiclass VFPDT64ReqInstAlias<string opc, string asm, dag Result> {
def I64 : VFPDataTypeInstAlias<opc, ".i64", asm, Result>;
def S64 : VFPDataTypeInstAlias<opc, ".s64", asm, Result>;
def U64 : VFPDataTypeInstAlias<opc, ".u64", asm, Result>;
def F64 : VFPDataTypeInstAlias<opc, ".f64", asm, Result>;
def D : VFPDataTypeInstAlias<opc, ".d", asm, Result>;
}
+// VFPDT64ReqInstAlias plus plain ".64"
+multiclass VFPDT64InstAlias<string opc, string asm, dag Result> {
+ def _64 : VFPDataTypeInstAlias<opc, ".64", asm, Result>;
+ defm : VFPDT64ReqInstAlias<opc, asm, Result>;
+}
multiclass VFPDTAnyInstAlias<string opc, string asm, dag Result> {
defm : VFPDT8InstAlias<opc, asm, Result>;
defm : VFPDT16InstAlias<opc, asm, Result>;
More information about the llvm-commits
mailing list