diff options
| author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-08-08 13:26:38 +0000 |
|---|---|---|
| committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-08-08 13:26:38 +0000 |
| commit | f8c394f0f5d7be43a4d9ab1d384da9112de57cb2 (patch) | |
| tree | f680a099b12ff4294bc3bec03a1492af6ce6143e /llvm/lib | |
| parent | ef9af05539d9cb7f11346588fbe719f30712b638 (diff) | |
| download | bcm5719-llvm-f8c394f0f5d7be43a4d9ab1d384da9112de57cb2.tar.gz bcm5719-llvm-f8c394f0f5d7be43a4d9ab1d384da9112de57cb2.zip | |
[ARM] FP16: codegen support for VEXT
Differential Revision: https://reviews.llvm.org/D50427
llvm-svn: 339241
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrNEON.td | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrNEON.td b/llvm/lib/Target/ARM/ARMInstrNEON.td index 75308db989b..7f2ebcd7b62 100644 --- a/llvm/lib/Target/ARM/ARMInstrNEON.td +++ b/llvm/lib/Target/ARM/ARMInstrNEON.td @@ -6678,13 +6678,14 @@ def VEXTd16 : VEXTd<"vext", "16", v4i16, imm0_3> { let Inst{10-9} = index{1-0}; let Inst{8} = 0b0; } +def : Pat<(v4f16 (NEONvext (v4f16 DPR:$Vn), (v4f16 DPR:$Vm), (i32 imm:$index))), + (VEXTd16 DPR:$Vn, DPR:$Vm, imm:$index)>; + def VEXTd32 : VEXTd<"vext", "32", v2i32, imm0_1> { let Inst{10} = index{0}; let Inst{9-8} = 0b00; } -def : Pat<(v2f32 (NEONvext (v2f32 DPR:$Vn), - (v2f32 DPR:$Vm), - (i32 imm:$index))), +def : Pat<(v2f32 (NEONvext (v2f32 DPR:$Vn), (v2f32 DPR:$Vm), (i32 imm:$index))), (VEXTd32 DPR:$Vn, DPR:$Vm, imm:$index)>; def VEXTq8 : VEXTq<"vext", "8", v16i8, imm0_15> { @@ -6694,6 +6695,9 @@ def VEXTq16 : VEXTq<"vext", "16", v8i16, imm0_7> { let Inst{11-9} = index{2-0}; let Inst{8} = 0b0; } +def : Pat<(v8f16 (NEONvext (v8f16 QPR:$Vn), (v8f16 QPR:$Vm), (i32 imm:$index))), + (VEXTq16 QPR:$Vn, QPR:$Vm, imm:$index)>; + def VEXTq32 : VEXTq<"vext", "32", v4i32, imm0_3> { let Inst{11-10} = index{1-0}; let Inst{9-8} = 0b00; @@ -6702,9 +6706,7 @@ def VEXTq64 : VEXTq<"vext", "64", v2i64, imm0_1> { let Inst{11} = index{0}; let Inst{10-8} = 0b000; } -def : Pat<(v4f32 (NEONvext (v4f32 QPR:$Vn), - (v4f32 QPR:$Vm), - (i32 imm:$index))), +def : Pat<(v4f32 (NEONvext (v4f32 QPR:$Vn), (v4f32 QPR:$Vm), (i32 imm:$index))), (VEXTq32 QPR:$Vn, QPR:$Vm, imm:$index)>; // VTRN : Vector Transpose |

