From eac623a18b1e7ad9e5a7da76a323039450b7d7ce Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Thu, 24 Oct 2013 12:22:58 +0000 Subject: ARM: mark various aliases with their architecture requirements. If an alias inherits directly from InstAlias then it doesn't get any default "Requires" values, so llvm-mc will allow it even on architectures that don't support the underlying instruction. This tidies up the obvious VFP and NEON cases I found. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193340 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMInstrNEON.td | 8 ++++---- lib/Target/ARM/ARMInstrVFP.td | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'lib/Target/ARM') diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td index 269c13dedb..1f7344e1c0 100644 --- a/lib/Target/ARM/ARMInstrNEON.td +++ b/lib/Target/ARM/ARMInstrNEON.td @@ -5158,10 +5158,10 @@ def VSWPq : N2VX<0b11, 0b11, 0b00, 0b10, 0b00000, 1, 0, // Vector Move Operations. // VMOV : Vector Move (Register) -def : InstAlias<"vmov${p} $Vd, $Vm", - (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>; -def : InstAlias<"vmov${p} $Vd, $Vm", - (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>; +def : NEONInstAlias<"vmov${p} $Vd, $Vm", + (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>; +def : NEONInstAlias<"vmov${p} $Vd, $Vm", + (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>; // VMOV : Vector Move (Immediate) diff --git a/lib/Target/ARM/ARMInstrVFP.td b/lib/Target/ARM/ARMInstrVFP.td index f0da06d72a..e5ddf03e48 100644 --- a/lib/Target/ARM/ARMInstrVFP.td +++ b/lib/Target/ARM/ARMInstrVFP.td @@ -671,9 +671,11 @@ multiclass vrint_inst_zrx { } def : InstAlias(NAME#"S") SPR:$Sd, SPR:$Sm, pred:$p)>; + (!cast(NAME#"S") SPR:$Sd, SPR:$Sm, pred:$p)>, + Requires<[HasFPARMv8]>; def : InstAlias(NAME#"D") DPR:$Dd, DPR:$Dm, pred:$p)>; + (!cast(NAME#"D") DPR:$Dd, DPR:$Dm, pred:$p)>, + Requires<[HasFPARMv8]>; } defm VRINTZ : vrint_inst_zrx<"z", 0, 1>; @@ -697,9 +699,11 @@ multiclass vrint_inst_anpm rm> { } def : InstAlias(NAME#"S") SPR:$Sd, SPR:$Sm)>; + (!cast(NAME#"S") SPR:$Sd, SPR:$Sm)>, + Requires<[HasFPARMv8]>; def : InstAlias(NAME#"D") DPR:$Dd, DPR:$Dm)>; + (!cast(NAME#"D") DPR:$Dd, DPR:$Dm)>, + Requires<[HasFPARMv8]>; } defm VRINTA : vrint_inst_anpm<"a", 0b00>; -- cgit v1.2.3