mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
Add a pattern for a nvcast from v2f64 -> v4f32
Since the NvCast is generated by the selection process the concerns about endianess and bit reversal don't apply. rdar://21703486 llvm-svn: 241611
This commit is contained in:
parent
19bede10ac
commit
a112326960
@ -5315,6 +5315,7 @@ def : Pat<(v8i16 (AArch64NvCast (v2f64 FPR128:$src))), (v8i16 FPR128:$src)>;
|
||||
def : Pat<(v4i32 (AArch64NvCast (v2f64 FPR128:$src))), (v4i32 FPR128:$src)>;
|
||||
def : Pat<(v2i64 (AArch64NvCast (v2f64 FPR128:$src))), (v2i64 FPR128:$src)>;
|
||||
def : Pat<(v2f64 (AArch64NvCast (v2f64 FPR128:$src))), (v2f64 FPR128:$src)>;
|
||||
def : Pat<(v4f32 (AArch64NvCast (v2f64 FPR128:$src))), (v4f32 FPR128:$src)>;
|
||||
|
||||
let Predicates = [IsLE] in {
|
||||
def : Pat<(v8i8 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
|
||||
|
8
test/CodeGen/AArch64/arm64-nvcast.ll
Normal file
8
test/CodeGen/AArch64/arm64-nvcast.ll
Normal file
@ -0,0 +1,8 @@
|
||||
; RUN: llc < %s -mtriple=arm64-apple-ios
|
||||
|
||||
define void @test(float * %p1, i32 %v1) {
|
||||
entry:
|
||||
%v2 = extractelement <3 x float> <float 0.000000e+00, float 2.000000e+00, float 0.000000e+00>, i32 %v1
|
||||
store float %v2, float* %p1, align 4
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user