[llvm] r241611 - Add a pattern for a nvcast from v2f64 -> v4f32
Arnold Schwaighofer
aschwaighofer at apple.com
Tue Jul 7 11:31:55 PDT 2015
Author: arnolds
Date: Tue Jul 7 13:31:55 2015
New Revision: 241611
URL: http://llvm.org/viewvc/llvm-project?rev=241611&view=rev
Log:
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
Added:
llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll
Modified:
llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td
Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td?rev=241611&r1=241610&r2=241611&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td Tue Jul 7 13:31:55 2015
@@ -5315,6 +5315,7 @@ def : Pat<(v8i16 (AArch64NvCast (v2f64 F
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)>;
Added: llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll?rev=241611&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll (added)
+++ llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll Tue Jul 7 13:31:55 2015
@@ -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
+}
More information about the llvm-commits
mailing list