Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
------------------------------------------------------------------------ r339260 | syzaara | 2018-08-08 08:20:43 -0700 (Wed, 08 Aug 2018) | 13 lines [PowerPC] Improve codegen for vector loads using scalar_to_vector This patch aims to improve the codegen for vector loads involving the scalar_to_vector (load X) sequence. Initially, ld->mv instructions were used for scalar_to_vector (load X), so this patch allows scalar_to_vector (load X) to utilize: LXSD and LXSDX for i64 and f64 LXSIWAX for i32 (sign extension to i64) LXSIWZX for i32 and f64 Committing on behalf of Amy Kwan. Differential Revision: https://reviews.llvm.org/D48950 ------------------------------------------------------------------------ llvm-svn: 347957
- Loading branch information
Showing
15 changed files
with
1,529 additions
and
242 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
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,15 +1,27 @@ | ||
; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck \ | ||
; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s \ | ||
; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck --check-prefix=CHECK-LE \ | ||
; RUN: -implicit-check-not vmrg -implicit-check-not=vperm %s | ||
; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck \ | ||
; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s \ | ||
; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck \ | ||
; RUN: -implicit-check-not vmrg -implicit-check-not=vperm %s | ||
|
||
define <16 x i8> @test(i32* %s, i32* %t) { | ||
; CHECK-LE-LABEL: test: | ||
; CHECK-LE: # %bb.0: # %entry | ||
; CHECK-LE-NEXT: lfiwzx f0, 0, r3 | ||
; CHECK-LE-NEXT: xxpermdi vs0, f0, f0, 2 | ||
; CHECK-LE-NEXT: xxspltw v2, vs0, 3 | ||
; CHECK-LE-NEXT: blr | ||
|
||
; CHECK-LABEL: test: | ||
; CHECK: # %bb.0: # %entry | ||
; CHECK-NEXT: lfiwzx f0, 0, r3 | ||
; CHECK-NEXT: xxsldwi vs0, f0, f0, 1 | ||
; CHECK-NEXT: xxspltw v2, vs0, 0 | ||
; CHECK-NEXT: blr | ||
entry: | ||
%0 = bitcast i32* %s to <4 x i8>* | ||
%1 = load <4 x i8>, <4 x i8>* %0, align 4 | ||
%2 = shufflevector <4 x i8> %1, <4 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3> | ||
ret <16 x i8> %2 | ||
; CHECK-LABEL: test | ||
; CHECK: lxsiwax 34, 0, 3 | ||
; CHECK: xxspltw 34, 34, 1 | ||
} |
Oops, something went wrong.