def : Pat<(v2i32 (AArch64NvCast (v2f32 FPR64:$src))), (v2i32 FPR64:$src)>;
def : Pat<(v2f32 (AArch64NvCast (v2f32 FPR64:$src))), (v2f32 FPR64:$src)>;
def : Pat<(v1i64 (AArch64NvCast (v2f32 FPR64:$src))), (v1i64 FPR64:$src)>;
+def : Pat<(v1f64 (AArch64NvCast (v2f32 FPR64:$src))), (v1f64 FPR64:$src)>;
// Natural vector casts (128 bit)
def : Pat<(v16i8 (AArch64NvCast (v4i32 FPR128:$src))), (v16i8 FPR128:$src)>;
store <2 x float> <float 0xC7DFDFDFC0000000, float 0xC7DFDFDFC0000000>, <2 x float>* bitcast (%"st1"* @_gv to <2 x float>*), align 8
ret void
}
+
+%struct.Vector3 = type { float, float, float }
+
+define void @nvcast_v2f32_v1f64(%struct.Vector3*) {
+; CHECK-LABEL: _nvcast_v2f32_v1f64
+; CHECK: fmov.2s v[[REG:[0-9]+]], #1.00000000
+; CHECK: str d[[REG]], [x0]
+entry:
+ %a13 = bitcast %struct.Vector3* %0 to <1 x double>*
+ store <1 x double> <double 0x3F8000003F800000>, <1 x double>* %a13, align 8
+ ret void
+}