mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Attempt to provide correct encodings for NEON vbit and vbif, even though we can't test them at the moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117294 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4110b4325d
commit
31e6ed890a
@ -2951,28 +2951,30 @@ def VBSLq : N3VX<1, 0, 0b01, 0b0001, 1, 1, (outs QPR:$Vd),
|
||||
|
||||
// VBIF : Vector Bitwise Insert if False
|
||||
// like VBSL but with: "vbif $dst, $src3, $src1", "$src2 = $dst",
|
||||
// FIXME: This instruction's encoding MAY NOT BE correct.
|
||||
def VBIFd : N3VX<1, 0, 0b11, 0b0001, 0, 1,
|
||||
(outs DPR:$dst), (ins DPR:$src1, DPR:$src2, DPR:$src3),
|
||||
(outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
|
||||
N3RegFrm, IIC_VBINiD,
|
||||
"vbif", "$dst, $src2, $src3", "$src1 = $dst",
|
||||
"vbif", "$Vd, $Vn, $Vm", "$src1 = $Vd",
|
||||
[/* For disassembly only; pattern left blank */]>;
|
||||
def VBIFq : N3VX<1, 0, 0b11, 0b0001, 1, 1,
|
||||
(outs QPR:$dst), (ins QPR:$src1, QPR:$src2, QPR:$src3),
|
||||
(outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
|
||||
N3RegFrm, IIC_VBINiQ,
|
||||
"vbif", "$dst, $src2, $src3", "$src1 = $dst",
|
||||
"vbif", "$Vd, $Vn, $Vm", "$src1 = $Vd",
|
||||
[/* For disassembly only; pattern left blank */]>;
|
||||
|
||||
// VBIT : Vector Bitwise Insert if True
|
||||
// like VBSL but with: "vbit $dst, $src2, $src1", "$src3 = $dst",
|
||||
// FIXME: This instruction's encoding MAY NOT BE correct.
|
||||
def VBITd : N3VX<1, 0, 0b10, 0b0001, 0, 1,
|
||||
(outs DPR:$dst), (ins DPR:$src1, DPR:$src2, DPR:$src3),
|
||||
(outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
|
||||
N3RegFrm, IIC_VBINiD,
|
||||
"vbit", "$dst, $src2, $src3", "$src1 = $dst",
|
||||
"vbit", "$Vd, $Vn, $Vm", "$src1 = $Vd",
|
||||
[/* For disassembly only; pattern left blank */]>;
|
||||
def VBITq : N3VX<1, 0, 0b10, 0b0001, 1, 1,
|
||||
(outs QPR:$dst), (ins QPR:$src1, QPR:$src2, QPR:$src3),
|
||||
(outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
|
||||
N3RegFrm, IIC_VBINiQ,
|
||||
"vbit", "$dst, $src2, $src3", "$src1 = $dst",
|
||||
"vbit", "$Vd, $Vn, $Vm", "$src1 = $Vd",
|
||||
[/* For disassembly only; pattern left blank */]>;
|
||||
|
||||
// VBIT/VBIF are not yet implemented. The TwoAddress pass will not go looking
|
||||
|
@ -3,6 +3,7 @@
|
||||
; FIXME: The following instructions still require testing:
|
||||
; - vand with immediate
|
||||
; - vmvn of an immediate
|
||||
; - both vbit and vbif
|
||||
|
||||
; CHECK: vand_8xi8
|
||||
define <8 x i8> @vand_8xi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
@ -138,4 +139,4 @@ define <16 x i8> @vbsl_16xi8(<16 x i8>* %A, <16 x i8>* %B, <16 x i8>* %C) nounwi
|
||||
%tmp6 = and <16 x i8> %tmp5, %tmp3
|
||||
%tmp7 = or <16 x i8> %tmp4, %tmp6
|
||||
ret <16 x i8> %tmp7
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user