mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 07:34:33 +00:00
ARM some VFP tblgen'erated two-operand aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155178 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bfb3c5a50c
commit
181b147975
@ -221,11 +221,13 @@ defm : VFPDTAnyInstAlias<"vpop${p}", "$r",
|
||||
// FP Binary Operations.
|
||||
//
|
||||
|
||||
let TwoOperandAliasConstraint = "$Dn = $Dd" in
|
||||
def VADDD : ADbI<0b11100, 0b11, 0, 0,
|
||||
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
|
||||
IIC_fpALU64, "vadd", ".f64\t$Dd, $Dn, $Dm",
|
||||
[(set DPR:$Dd, (fadd DPR:$Dn, (f64 DPR:$Dm)))]>;
|
||||
|
||||
let TwoOperandAliasConstraint = "$Sn = $Sd" in
|
||||
def VADDS : ASbIn<0b11100, 0b11, 0, 0,
|
||||
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
|
||||
IIC_fpALU32, "vadd", ".f32\t$Sd, $Sn, $Sm",
|
||||
@ -235,11 +237,13 @@ def VADDS : ASbIn<0b11100, 0b11, 0, 0,
|
||||
let D = VFPNeonA8Domain;
|
||||
}
|
||||
|
||||
let TwoOperandAliasConstraint = "$Dn = $Dd" in
|
||||
def VSUBD : ADbI<0b11100, 0b11, 1, 0,
|
||||
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
|
||||
IIC_fpALU64, "vsub", ".f64\t$Dd, $Dn, $Dm",
|
||||
[(set DPR:$Dd, (fsub DPR:$Dn, (f64 DPR:$Dm)))]>;
|
||||
|
||||
let TwoOperandAliasConstraint = "$Sn = $Sd" in
|
||||
def VSUBS : ASbIn<0b11100, 0b11, 1, 0,
|
||||
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
|
||||
IIC_fpALU32, "vsub", ".f32\t$Sd, $Sn, $Sm",
|
||||
@ -249,21 +253,25 @@ def VSUBS : ASbIn<0b11100, 0b11, 1, 0,
|
||||
let D = VFPNeonA8Domain;
|
||||
}
|
||||
|
||||
let TwoOperandAliasConstraint = "$Dn = $Dd" in
|
||||
def VDIVD : ADbI<0b11101, 0b00, 0, 0,
|
||||
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
|
||||
IIC_fpDIV64, "vdiv", ".f64\t$Dd, $Dn, $Dm",
|
||||
[(set DPR:$Dd, (fdiv DPR:$Dn, (f64 DPR:$Dm)))]>;
|
||||
|
||||
let TwoOperandAliasConstraint = "$Sn = $Sd" in
|
||||
def VDIVS : ASbI<0b11101, 0b00, 0, 0,
|
||||
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
|
||||
IIC_fpDIV32, "vdiv", ".f32\t$Sd, $Sn, $Sm",
|
||||
[(set SPR:$Sd, (fdiv SPR:$Sn, SPR:$Sm))]>;
|
||||
|
||||
let TwoOperandAliasConstraint = "$Dn = $Dd" in
|
||||
def VMULD : ADbI<0b11100, 0b10, 0, 0,
|
||||
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
|
||||
IIC_fpMUL64, "vmul", ".f64\t$Dd, $Dn, $Dm",
|
||||
[(set DPR:$Dd, (fmul DPR:$Dn, (f64 DPR:$Dm)))]>;
|
||||
|
||||
let TwoOperandAliasConstraint = "$Sn = $Sd" in
|
||||
def VMULS : ASbIn<0b11100, 0b10, 0, 0,
|
||||
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
|
||||
IIC_fpMUL32, "vmul", ".f32\t$Sd, $Sn, $Sm",
|
||||
@ -1426,22 +1434,6 @@ def : VFP2InstAlias<"vldr${p}.64 $Dd, $addr",
|
||||
def : VFP2InstAlias<"vstr${p}.64 $Dd, $addr",
|
||||
(VSTRD DPR:$Dd, addrmode5:$addr, pred:$p)>;
|
||||
|
||||
// VMUL has a two-operand form (implied destination operand)
|
||||
def : VFP2InstAlias<"vmul${p}.f64 $Dn, $Dm",
|
||||
(VMULD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>;
|
||||
def : VFP2InstAlias<"vmul${p}.f32 $Sn, $Sm",
|
||||
(VMULS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>;
|
||||
// VADD has a two-operand form (implied destination operand)
|
||||
def : VFP2InstAlias<"vadd${p}.f64 $Dn, $Dm",
|
||||
(VADDD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>;
|
||||
def : VFP2InstAlias<"vadd${p}.f32 $Sn, $Sm",
|
||||
(VADDS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>;
|
||||
// VSUB has a two-operand form (implied destination operand)
|
||||
def : VFP2InstAlias<"vsub${p}.f64 $Dn, $Dm",
|
||||
(VSUBD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>;
|
||||
def : VFP2InstAlias<"vsub${p}.f32 $Sn, $Sm",
|
||||
(VSUBS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>;
|
||||
|
||||
// VMOV can accept optional 32-bit or less data type suffix suffix.
|
||||
def : VFP2InstAlias<"vmov${p}.8 $Rt, $Sn",
|
||||
(VMOVRS GPR:$Rt, SPR:$Sn, pred:$p)>;
|
||||
|
@ -12,9 +12,14 @@
|
||||
|
||||
vdiv.f64 d16, d17, d16
|
||||
vdiv.f32 s0, s1, s0
|
||||
vdiv.f32 s5, s7
|
||||
vdiv.f64 d5, d7
|
||||
|
||||
@ CHECK: vdiv.f64 d16, d17, d16 @ encoding: [0xa0,0x0b,0xc1,0xee]
|
||||
@ CHECK: vdiv.f32 s0, s1, s0 @ encoding: [0x80,0x0a,0x80,0xee]
|
||||
@ CHECK: vdiv.f32 s5, s5, s7 @ encoding: [0xa3,0x2a,0xc2,0xee]
|
||||
@ CHECK: vdiv.f64 d5, d5, d7 @ encoding: [0x07,0x5b,0x85,0xee]
|
||||
|
||||
@ CHECK: vdiv.f64 d16, d17, d16 @ encoding: [0xa0,0x0b,0xc1,0xee]
|
||||
@ CHECK: vdiv.f32 s0, s1, s0 @ encoding: [0x80,0x0a,0x80,0xee]
|
||||
|
||||
vmul.f64 d16, d17, d16
|
||||
vmul.f64 d20, d17
|
||||
|
Loading…
x
Reference in New Issue
Block a user