From 2280f2a3b1ee1797aa0b0dd78119291b3f5c5e7b Mon Sep 17 00:00:00 2001 From: David Green Date: Wed, 21 Aug 2019 16:20:35 +0000 Subject: [PATCH] [ARM] Formatting for ARMInstrMVE.td. NFC This is just some formatting cleanup, prior to the masked load and store patch in D66534. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369545 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMInstrMVE.td | 187 ++++++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 89 deletions(-) diff --git a/lib/Target/ARM/ARMInstrMVE.td b/lib/Target/ARM/ARMInstrMVE.td index 6e079ebe930..bb6b5679f5c 100644 --- a/lib/Target/ARM/ARMInstrMVE.td +++ b/lib/Target/ARM/ARMInstrMVE.td @@ -4802,59 +4802,60 @@ def MVE_LCTP : MVE_loltp_end<(outs), (ins pred:$p), "lctp${p}", ""> { // Patterns //===----------------------------------------------------------------------===// -class MVE_unpred_vector_store_typed + : Pat<(StoreKind (Ty MQPR:$val), t2addrmode_imm7:$addr), + (RegImmInst (Ty MQPR:$val), t2addrmode_imm7:$addr)>; + +multiclass MVE_vector_store { + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; +} + +class MVE_vector_load_typed + : Pat<(Ty (LoadKind t2addrmode_imm7:$addr)), + (Ty (RegImmInst t2addrmode_imm7:$addr))>; + +multiclass MVE_vector_load { + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; +} + +class MVE_vector_offset_store_typed - : Pat<(StoreKind (Ty MQPR:$val), t2addrmode_imm7:$addr), - (RegImmInst (Ty MQPR:$val), t2addrmode_imm7:$addr)>; + : Pat<(StoreKind (Ty MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset:$addr), + (Opcode MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset:$addr)>; -multiclass MVE_unpred_vector_store { - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; -} - -class MVE_unpred_vector_load_typed - : Pat<(Ty (LoadKind t2addrmode_imm7:$addr)), - (Ty (RegImmInst t2addrmode_imm7:$addr))>; - -multiclass MVE_unpred_vector_load { - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; -} - -class MVE_unpred_vector_offset_store_typed - : Pat<(StoreKind (Ty MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset:$addr), - (Opcode MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset:$addr)>; - -multiclass MVE_unpred_vector_offset_store { - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; } + def aligned32_pre_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), (pre_store node:$val, node:$ptr, node:$offset), [{ return cast(N)->getAlignment() >= 4; }]>; def aligned32_post_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), - (post_store node:$val, node:$ptr, node:$offset), [{ + (post_store node:$val, node:$ptr, node:$offset), [{ return cast(N)->getAlignment() >= 4; }]>; def aligned16_pre_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), @@ -4862,39 +4863,44 @@ def aligned16_pre_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), return cast(N)->getAlignment() >= 2; }]>; def aligned16_post_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), - (post_store node:$val, node:$ptr, node:$offset), [{ + (post_store node:$val, node:$ptr, node:$offset), [{ return cast(N)->getAlignment() >= 2; }]>; let Predicates = [HasMVEInt, IsLE] in { - defm : MVE_unpred_vector_store; - defm : MVE_unpred_vector_store; - defm : MVE_unpred_vector_store; + // Stores + defm : MVE_vector_store; + defm : MVE_vector_store; + defm : MVE_vector_store; - defm : MVE_unpred_vector_load; - defm : MVE_unpred_vector_load; - defm : MVE_unpred_vector_load; + // Loads + defm : MVE_vector_load; + defm : MVE_vector_load; + defm : MVE_vector_load; - defm : MVE_unpred_vector_offset_store; - defm : MVE_unpred_vector_offset_store; - defm : MVE_unpred_vector_offset_store; - defm : MVE_unpred_vector_offset_store; - defm : MVE_unpred_vector_offset_store; - defm : MVE_unpred_vector_offset_store; + // Pre/post inc stores + defm : MVE_vector_offset_store; + defm : MVE_vector_offset_store; + defm : MVE_vector_offset_store; + defm : MVE_vector_offset_store; + defm : MVE_vector_offset_store; + defm : MVE_vector_offset_store; } let Predicates = [HasMVEInt, IsBE] in { - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - def : MVE_unpred_vector_store_typed; - - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; - def : MVE_unpred_vector_load_typed; + // Aligned Stores + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + def : MVE_vector_store_typed; + + // Aligned Loads + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; + def : MVE_vector_load_typed; // Other unaligned loads/stores need to go though a VREV def : Pat<(v2f64 (load t2addrmode_imm7<0>:$addr)), @@ -4922,19 +4928,21 @@ let Predicates = [HasMVEInt, IsBE] in { def : Pat<(store (v8f16 MQPR:$val), t2addrmode_imm7<0>:$addr), (MVE_VSTRBU8 (MVE_VREV16_8 MQPR:$val), t2addrmode_imm7<0>:$addr)>; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; - def : MVE_unpred_vector_offset_store_typed; + // Pre/Post inc stores + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; + def : MVE_vector_offset_store_typed; } let Predicates = [HasMVEInt] in { + // Predicate loads def : Pat<(v16i1 (load t2addrmode_imm7<2>:$addr)), (v16i1 (VLDR_P0_off t2addrmode_imm7<2>:$addr))>; def : Pat<(v8i1 (load t2addrmode_imm7<2>:$addr)), @@ -4942,6 +4950,7 @@ let Predicates = [HasMVEInt] in { def : Pat<(v4i1 (load t2addrmode_imm7<2>:$addr)), (v4i1 (VLDR_P0_off t2addrmode_imm7<2>:$addr))>; + // Predicate stores def : Pat<(store (v4i1 VCCR:$val), t2addrmode_imm7<2>:$addr), (VSTR_P0_off VCCR:$val, t2addrmode_imm7<2>:$addr)>; def : Pat<(store (v8i1 VCCR:$val), t2addrmode_imm7<2>:$addr), @@ -4963,26 +4972,26 @@ let MinAlignment = 2 in { } let Predicates = [HasMVEInt] in { - def : Pat<(truncstorevi8 (v8i16 MQPR:$val), t2addrmode_imm7<0>:$addr), - (MVE_VSTRB16 MQPR:$val, t2addrmode_imm7<0>:$addr)>; - def : Pat<(truncstorevi8 (v4i32 MQPR:$val), t2addrmode_imm7<0>:$addr), - (MVE_VSTRB32 MQPR:$val, t2addrmode_imm7<0>:$addr)>; + def : Pat<(truncstorevi8 (v8i16 MQPR:$val), t2addrmode_imm7<0>:$addr), + (MVE_VSTRB16 MQPR:$val, t2addrmode_imm7<0>:$addr)>; + def : Pat<(truncstorevi8 (v4i32 MQPR:$val), t2addrmode_imm7<0>:$addr), + (MVE_VSTRB32 MQPR:$val, t2addrmode_imm7<0>:$addr)>; def : Pat<(truncstorevi16_align2 (v4i32 MQPR:$val), t2addrmode_imm7<1>:$addr), - (MVE_VSTRH32 MQPR:$val, t2addrmode_imm7<1>:$addr)>; + (MVE_VSTRH32 MQPR:$val, t2addrmode_imm7<1>:$addr)>; def : Pat<(post_truncstvi8 (v8i16 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<0>:$addr), - (MVE_VSTRB16_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; + (MVE_VSTRB16_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; def : Pat<(post_truncstvi8 (v4i32 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<0>:$addr), - (MVE_VSTRB32_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; + (MVE_VSTRB32_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; def : Pat<(post_truncstvi16_align2 (v4i32 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<1>:$addr), - (MVE_VSTRH32_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<1>:$addr)>; + (MVE_VSTRH32_post MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<1>:$addr)>; def : Pat<(pre_truncstvi8 (v8i16 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<0>:$addr), - (MVE_VSTRB16_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; + (MVE_VSTRB16_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; def : Pat<(pre_truncstvi8 (v4i32 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<0>:$addr), - (MVE_VSTRB32_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; + (MVE_VSTRB32_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<0>:$addr)>; def : Pat<(pre_truncstvi16_align2 (v4i32 MQPR:$Rt), tGPR:$Rn, t2am_imm7_offset<1>:$addr), - (MVE_VSTRH32_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<1>:$addr)>; + (MVE_VSTRH32_pre MQPR:$Rt, tGPR:$Rn, t2am_imm7_offset<1>:$addr)>; } -- 2.11.4.GIT