llvm.org GIT mirror llvm / 705e257
ARM two-operand aliases for VRHADD instructions. rdar://11252521 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154832 91177308-0d34-0410-b5e6-96231b3b80d8 Jim Grosbach 8 years ago
2 changed file(s) with 59 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
69506950 def : NEONInstAlias<"vsli${p}.64 $Vdm, $imm",
69516951 (VSLIv2i64 QPR:$Vdm, QPR:$Vdm, shr_imm64:$imm, pred:$p)>;
69526952
6953
6954 // Two-operand variants for VRHADD.
6955 // Signed.
6956 def : NEONInstAlias<"vrhadd${p}.s8 $Vdn, $Rm",
6957 (VRHADDsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6958 def : NEONInstAlias<"vrhadd${p}.s16 $Vdn, $Rm",
6959 (VRHADDsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6960 def : NEONInstAlias<"vrhadd${p}.s32 $Vdn, $Rm",
6961 (VRHADDsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6962
6963 def : NEONInstAlias<"vrhadd${p}.s8 $Vdn, $Rm",
6964 (VRHADDsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6965 def : NEONInstAlias<"vrhadd${p}.s16 $Vdn, $Rm",
6966 (VRHADDsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6967 def : NEONInstAlias<"vrhadd${p}.s32 $Vdn, $Rm",
6968 (VRHADDsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6969
6970 // Unsigned.
6971 def : NEONInstAlias<"vrhadd${p}.u8 $Vdn, $Rm",
6972 (VRHADDuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6973 def : NEONInstAlias<"vrhadd${p}.u16 $Vdn, $Rm",
6974 (VRHADDuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6975 def : NEONInstAlias<"vrhadd${p}.u32 $Vdn, $Rm",
6976 (VRHADDuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
6977
6978 def : NEONInstAlias<"vrhadd${p}.u8 $Vdn, $Rm",
6979 (VRHADDuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6980 def : NEONInstAlias<"vrhadd${p}.u16 $Vdn, $Rm",
6981 (VRHADDuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6982 def : NEONInstAlias<"vrhadd${p}.u32 $Vdn, $Rm",
6983 (VRHADDuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
6984
69536985 // VSWP allows, but does not require, a type suffix.
69546986 defm : NEONDTAnyInstAlias<"vswp${p}", "$Vd, $Vm",
69556987 (VSWPd DPR:$Vd, DPR:$Vm, pred:$p)>;
7676 vrhadd.u8 q8, q8, q9
7777 vrhadd.u16 q8, q8, q9
7878 vrhadd.u32 q8, q8, q9
79 @ Two-operand forms.
80 vrhadd.s8 d16, d17
81 vrhadd.s16 d16, d17
82 vrhadd.s32 d16, d17
83 vrhadd.u8 d16, d17
84 vrhadd.u16 d16, d17
85 vrhadd.u32 d16, d17
86 vrhadd.s8 q8, q9
87 vrhadd.s16 q8, q9
88 vrhadd.s32 q8, q9
89 vrhadd.u8 q8, q9
90 vrhadd.u16 q8, q9
91 vrhadd.u32 q8, q9
7992
8093 @ CHECK: vrhadd.s8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf2]
8194 @ CHECK: vrhadd.s16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf2]
90103 @ CHECK: vrhadd.u16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf3]
91104 @ CHECK: vrhadd.u32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf3]
92105
106 @ CHECK: vrhadd.s8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf2]
107 @ CHECK: vrhadd.s16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf2]
108 @ CHECK: vrhadd.s32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf2]
109 @ CHECK: vrhadd.u8 d16, d16, d17 @ encoding: [0xa1,0x01,0x40,0xf3]
110 @ CHECK: vrhadd.u16 d16, d16, d17 @ encoding: [0xa1,0x01,0x50,0xf3]
111 @ CHECK: vrhadd.u32 d16, d16, d17 @ encoding: [0xa1,0x01,0x60,0xf3]
112 @ CHECK: vrhadd.s8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf2]
113 @ CHECK: vrhadd.s16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf2]
114 @ CHECK: vrhadd.s32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf2]
115 @ CHECK: vrhadd.u8 q8, q8, q9 @ encoding: [0xe2,0x01,0x40,0xf3]
116 @ CHECK: vrhadd.u16 q8, q8, q9 @ encoding: [0xe2,0x01,0x50,0xf3]
117 @ CHECK: vrhadd.u32 q8, q8, q9 @ encoding: [0xe2,0x01,0x60,0xf3]
118
119
93120 vqadd.s8 d16, d16, d17
94121 vqadd.s16 d16, d16, d17
95122 vqadd.s32 d16, d16, d17