From: Artyom Skrobov Date: Mon, 11 Nov 2013 19:56:13 +0000 (+0000) Subject: [ARM] Add support for MVFR2 which is new in ARMv8 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=ef572e31e210a03c0669e3ed2ed7cf2d789f8599 [ARM] Add support for MVFR2 which is new in ARMv8 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194416 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/ARMInstrVFP.td b/lib/Target/ARM/ARMInstrVFP.td index ff1087fe65c..a8cdc5ca063 100644 --- a/lib/Target/ARM/ARMInstrVFP.td +++ b/lib/Target/ARM/ARMInstrVFP.td @@ -1546,6 +1546,8 @@ let Uses = [FPSCR] in { "vmrs", "\t$Rt, mvfr0", []>; def VMRS_MVFR1 : MovFromVFP<0b0110 /* mvfr1 */, (outs GPR:$Rt), (ins), "vmrs", "\t$Rt, mvfr1", []>; + def VMRS_MVFR2 : MovFromVFP<0b0101 /* mvfr2 */, (outs GPR:$Rt), (ins), + "vmrs", "\t$Rt, mvfr2", []>, Requires<[HasFPARMv8]>; def VMRS_FPINST : MovFromVFP<0b1001 /* fpinst */, (outs GPR:$Rt), (ins), "vmrs", "\t$Rt, fpinst", []>; def VMRS_FPINST2 : MovFromVFP<0b1010 /* fpinst2 */, (outs GPR:$Rt), (ins), diff --git a/lib/Target/ARM/ARMRegisterInfo.td b/lib/Target/ARM/ARMRegisterInfo.td index 90c6a965acf..d0457618ef6 100644 --- a/lib/Target/ARM/ARMRegisterInfo.td +++ b/lib/Target/ARM/ARMRegisterInfo.td @@ -172,6 +172,7 @@ def ITSTATE : ARMReg<4, "itstate">; // Special Registers - only available in privileged mode. def FPSID : ARMReg<0, "fpsid">; +def MVFR2 : ARMReg<5, "mvfr2">; def MVFR1 : ARMReg<6, "mvfr1">; def MVFR0 : ARMReg<7, "mvfr0">; def FPEXC : ARMReg<8, "fpexc">; diff --git a/test/MC/ARM/fp-armv8.s b/test/MC/ARM/fp-armv8.s index cba4a5157c1..1ffd5902e5c 100644 --- a/test/MC/ARM/fp-armv8.s +++ b/test/MC/ARM/fp-armv8.s @@ -122,3 +122,8 @@ @ CHECK: vrintm.f64 d3, d4 @ encoding: [0x44,0x3b,0xbb,0xfe] vrintm.f32 s12, s1 @ CHECK: vrintm.f32 s12, s1 @ encoding: [0x60,0x6a,0xbb,0xfe] + +@ MVFR2 + + vmrs sp, mvfr2 +@ CHECK: vmrs sp, mvfr2 @ encoding: [0x10,0xda,0xf5,0xee] diff --git a/test/MC/Disassembler/ARM/fp-armv8.txt b/test/MC/Disassembler/ARM/fp-armv8.txt index 4d2f8f6881c..46a26f5d6dc 100644 --- a/test/MC/Disassembler/ARM/fp-armv8.txt +++ b/test/MC/Disassembler/ARM/fp-armv8.txt @@ -153,3 +153,8 @@ 0x60 0x6a 0xbb 0xfe # CHECK: vrintm.f32 s12, s1 + + +0x10 0xa 0xf5 0xee +# CHECK: vmrs r0, mvfr2 + diff --git a/test/MC/Disassembler/ARM/invalid-because-armv7.txt b/test/MC/Disassembler/ARM/invalid-because-armv7.txt index 4bf4833a9af..beed8e4eb01 100644 --- a/test/MC/Disassembler/ARM/invalid-because-armv7.txt +++ b/test/MC/Disassembler/ARM/invalid-because-armv7.txt @@ -18,3 +18,9 @@ [0x41 0x2b 0xb3 0xbe] # CHECK: invalid instruction encoding # CHECK-NEXT: [0x41 0x2b 0xb3 0xbe] + +# Would be vmrs r0, mvfr2 +[0x10 0xa 0xf5 0xee] +# CHECK: invalid instruction encoding +# CHECK-NEXT: [0x10 0xa 0xf5 0xee] +