forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[DAGCombiner] Attempt to mask vectors before zero extension instead o…
…f after. For cases where we TRUNCATE and then ZERO_EXTEND to a larger size (often from vector legalization), see if we can mask the source data and then ZERO_EXTEND (instead of after a ANY_EXTEND). This can help avoid having to generate a larger mask, and possibly applying it to several sub-vectors. (zext (truncate x)) -> (zext (and(x, m)) Includes a minor patch to SystemZ to better recognise 8/16-bit zero extension patterns from RISBG bit-extraction code. This is the first of a number of minor patches to help improve the conversion of byte masks to clear mask shuffles. Differential Revision: http://reviews.llvm.org/D11764 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245160 91177308-0d34-0410-b5e6-96231b3b80d8
- Loading branch information
Showing
10 changed files
with
141 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,27 @@ | ||
; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s | ||
|
||
;CHECK: @func30 | ||
;CHECK: ushll.4s v0, v0, #0 | ||
;CHECK: movi.4s v1, #0x1 | ||
;CHECK: and.16b v0, v0, v1 | ||
;CHECK: str q0, [x0] | ||
;CHECK: ret | ||
|
||
%T0_30 = type <4 x i1> | ||
%T1_30 = type <4 x i32> | ||
define void @func30(%T0_30 %v0, %T1_30* %p1) { | ||
%r = zext %T0_30 %v0 to %T1_30 | ||
store %T1_30 %r, %T1_30* %p1 | ||
ret void | ||
} | ||
|
||
; Extend from v1i1 was crashing things (PR20791). Make sure we do something | ||
; sensible instead. | ||
define <1 x i32> @autogen_SD7918() { | ||
; CHECK-LABEL: autogen_SD7918 | ||
; CHECK: movi d0, #0000000000000000 | ||
; CHECK-NEXT: ret | ||
%I29 = insertelement <1 x i1> zeroinitializer, i1 false, i32 0 | ||
%ZE = zext <1 x i1> %I29 to <1 x i32> | ||
ret <1 x i32> %ZE | ||
} | ||
; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s | ||
|
||
;CHECK: @func30 | ||
;CHECK: movi.4h v1, #0x1 | ||
;CHECK: and.8b v0, v0, v1 | ||
;CHECK: ushll.4s v0, v0, #0 | ||
;CHECK: str q0, [x0] | ||
;CHECK: ret | ||
|
||
%T0_30 = type <4 x i1> | ||
%T1_30 = type <4 x i32> | ||
define void @func30(%T0_30 %v0, %T1_30* %p1) { | ||
%r = zext %T0_30 %v0 to %T1_30 | ||
store %T1_30 %r, %T1_30* %p1 | ||
ret void | ||
} | ||
|
||
; Extend from v1i1 was crashing things (PR20791). Make sure we do something | ||
; sensible instead. | ||
define <1 x i32> @autogen_SD7918() { | ||
; CHECK-LABEL: autogen_SD7918 | ||
; CHECK: movi d0, #0000000000000000 | ||
; CHECK-NEXT: ret | ||
%I29 = insertelement <1 x i1> zeroinitializer, i1 false, i32 0 | ||
%ZE = zext <1 x i1> %I29 to <1 x i32> | ||
ret <1 x i32> %ZE | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters