summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-01-05 21:50:15 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-01-05 21:50:15 +0000
commit9920dab75e648ce0e99f2e5eff132566a3ae6b6e (patch)
tree5c7b46bd0ffea78d427370118c2673bb071fa374
parent146ed408f44d517dfd671d4991148971baf64461 (diff)
downloadbcm5719-llvm-9920dab75e648ce0e99f2e5eff132566a3ae6b6e.tar.gz
bcm5719-llvm-9920dab75e648ce0e99f2e5eff132566a3ae6b6e.zip
Revert r321897: affected testcases were not updated
Commit message: [Hexagon] Even simpler patterns for sign- and zero-extending HVX vectors llvm-svn: 321902
-rw-r--r--llvm/lib/Target/Hexagon/HexagonPatterns.td20
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonPatterns.td b/llvm/lib/Target/Hexagon/HexagonPatterns.td
index 33b347cb6c7..eb8ffd6c312 100644
--- a/llvm/lib/Target/Hexagon/HexagonPatterns.td
+++ b/llvm/lib/Target/Hexagon/HexagonPatterns.td
@@ -2924,10 +2924,22 @@ let Predicates = [UseHVX] in {
def HexagonVZERO: SDNode<"HexagonISD::VZERO", SDTVecLeaf>;
def vzero: PatFrag<(ops), (HexagonVZERO)>;
-def VSxtb: OutPatFrag<(ops node:$Vs), (V6_vunpackb $Vs)>;
-def VSxth: OutPatFrag<(ops node:$Vs), (V6_vunpackh $Vs)>;
-def VZxtb: OutPatFrag<(ops node:$Vs), (V6_vunpackub $Vs)>;
-def VZxth: OutPatFrag<(ops node:$Vs), (V6_vunpackuh $Vs)>;
+def VSxtb: OutPatFrag<(ops node:$Vs),
+ (V6_vshuffvdd (HiVec (V6_vsb $Vs)),
+ (LoVec (V6_vsb $Vs)),
+ (A2_tfrsi -2))>;
+def VSxth: OutPatFrag<(ops node:$Vs),
+ (V6_vshuffvdd (HiVec (V6_vsh $Vs)),
+ (LoVec (V6_vsh $Vs)),
+ (A2_tfrsi -4))>;
+def VZxtb: OutPatFrag<(ops node:$Vs),
+ (V6_vshuffvdd (HiVec (V6_vzb $Vs)),
+ (LoVec (V6_vzb $Vs)),
+ (A2_tfrsi -2))>;
+def VZxth: OutPatFrag<(ops node:$Vs),
+ (V6_vshuffvdd (HiVec (V6_vzh $Vs)),
+ (LoVec (V6_vzh $Vs)),
+ (A2_tfrsi -4))>;
let Predicates = [UseHVX] in {
def: Pat<(VecI8 vzero), (V6_vd0)>;
OpenPOWER on IntegriCloud