mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Some single-precision VFP instructions can execute in either the VPF or Neon
pipelines, at least on Cortex-A9. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129771 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
11334dbd66
commit
b34d837397
@ -447,6 +447,10 @@ def VMOVRS : AVConv2I<0b11100001, 0b1010,
|
|||||||
|
|
||||||
let Inst{6-5} = 0b00;
|
let Inst{6-5} = 0b00;
|
||||||
let Inst{3-0} = 0b0000;
|
let Inst{3-0} = 0b0000;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
def VMOVSR : AVConv4I<0b11100000, 0b1010,
|
def VMOVSR : AVConv4I<0b11100000, 0b1010,
|
||||||
@ -464,6 +468,10 @@ def VMOVSR : AVConv4I<0b11100000, 0b1010,
|
|||||||
|
|
||||||
let Inst{6-5} = 0b00;
|
let Inst{6-5} = 0b00;
|
||||||
let Inst{3-0} = 0b0000;
|
let Inst{3-0} = 0b0000;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
let neverHasSideEffects = 1 in {
|
let neverHasSideEffects = 1 in {
|
||||||
@ -483,6 +491,10 @@ def VMOVRRD : AVConv3I<0b11000101, 0b1011,
|
|||||||
let Inst{19-16} = Rt2;
|
let Inst{19-16} = Rt2;
|
||||||
|
|
||||||
let Inst{7-6} = 0b00;
|
let Inst{7-6} = 0b00;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
def VMOVRRS : AVConv3I<0b11000101, 0b1010,
|
def VMOVRRS : AVConv3I<0b11000101, 0b1010,
|
||||||
@ -490,6 +502,10 @@ def VMOVRRS : AVConv3I<0b11000101, 0b1010,
|
|||||||
IIC_fpMOVDI, "vmov", "\t$wb, $dst2, $src1, $src2",
|
IIC_fpMOVDI, "vmov", "\t$wb, $dst2, $src1, $src2",
|
||||||
[/* For disassembly only; pattern left blank */]> {
|
[/* For disassembly only; pattern left blank */]> {
|
||||||
let Inst{7-6} = 0b00;
|
let Inst{7-6} = 0b00;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
} // neverHasSideEffects
|
} // neverHasSideEffects
|
||||||
|
|
||||||
@ -512,6 +528,10 @@ def VMOVDRR : AVConv5I<0b11000100, 0b1011,
|
|||||||
let Inst{19-16} = Rt2;
|
let Inst{19-16} = Rt2;
|
||||||
|
|
||||||
let Inst{7-6} = 0b00;
|
let Inst{7-6} = 0b00;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
let neverHasSideEffects = 1 in
|
let neverHasSideEffects = 1 in
|
||||||
@ -520,6 +540,10 @@ def VMOVSRR : AVConv5I<0b11000100, 0b1010,
|
|||||||
IIC_fpMOVID, "vmov", "\t$dst1, $dst2, $src1, $src2",
|
IIC_fpMOVID, "vmov", "\t$dst1, $dst2, $src1, $src2",
|
||||||
[/* For disassembly only; pattern left blank */]> {
|
[/* For disassembly only; pattern left blank */]> {
|
||||||
let Inst{7-6} = 0b00;
|
let Inst{7-6} = 0b00;
|
||||||
|
|
||||||
|
// Some single precision VFP instructions may be executed on both NEON and VFP
|
||||||
|
// pipelines.
|
||||||
|
let D = VFPNeonDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FMRDH: SPR -> GPR
|
// FMRDH: SPR -> GPR
|
||||||
|
Loading…
Reference in New Issue
Block a user