[llvm] r330276 - [AArch64] Add isel pattern for v8i8->v2f32 NVCASTs.

Amara Emerson via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 18 10:10:19 PDT 2018


Author: aemerson
Date: Wed Apr 18 10:10:19 2018
New Revision: 330276

URL: http://llvm.org/viewvc/llvm-project?rev=330276&view=rev
Log:
[AArch64] Add isel pattern for v8i8->v2f32 NVCASTs.

rdar://39454635

Modified:
    llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td
    llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll

Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td?rev=330276&r1=330275&r2=330276&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td Wed Apr 18 10:10:19 2018
@@ -5651,6 +5651,7 @@ def : Pat<(v8i8 (AArch64NvCast (v8i8 FPR
 def : Pat<(v4i16 (AArch64NvCast (v8i8 FPR64:$src))), (v4i16 FPR64:$src)>;
 def : Pat<(v4f16 (AArch64NvCast (v8i8 FPR64:$src))), (v4f16 FPR64:$src)>;
 def : Pat<(v2i32 (AArch64NvCast (v8i8 FPR64:$src))), (v2i32 FPR64:$src)>;
+def : Pat<(v2f32 (AArch64NvCast (v8i8 FPR64:$src))), (v2f32 FPR64:$src)>;
 def : Pat<(v1i64 (AArch64NvCast (v8i8 FPR64:$src))), (v1i64 FPR64:$src)>;
 
 def : Pat<(v8i8 (AArch64NvCast (f64 FPR64:$src))), (v8i8 FPR64:$src)>;

Modified: llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll?rev=330276&r1=330275&r2=330276&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll (original)
+++ llvm/trunk/test/CodeGen/AArch64/arm64-nvcast.ll Wed Apr 18 10:10:19 2018
@@ -31,3 +31,19 @@ entry:
   store float %v2, float* %p1, align 4
   ret void
 }
+
+
+%"st1" = type { %"subst1", %"subst1", %"subst1" }
+%"subst1" = type { %float4 }
+%float4 = type { float, float, float, float }
+
+ at _gv = external unnamed_addr global %"st1", align 8
+
+define internal void @nvcast_f32_v8i8() {
+; CHECK-LABEL: _nvcast_f32_v8i8
+; CHECK: movi.8b v[[REG:[0-9]+]], #254
+; CHECK: str d[[REG]]
+entry:
+  store <2 x float> <float 0xC7DFDFDFC0000000, float 0xC7DFDFDFC0000000>, <2 x float>* bitcast (%"st1"* @_gv to <2 x float>*), align 8
+  ret void
+}




More information about the llvm-commits mailing list