[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / PowerPC / vec_conv.ll
blobafddfd262a700cbff9a1019af495fb9fa473bea6
1 ; RUN: llc -verify-machineinstrs -mattr=+altivec < %s | FileCheck %s
3 ; Check vector float/int conversion using altivec.
5 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
6 target triple = "powerpc64-unknown-linux-gnu"
8 @cte_float = global <4 x float> <float 6.5e+00, float 6.5e+00, float 6.5e+00, float 6.5e+00>, align 16
9 @cte_int = global <4 x i32> <i32 6, i32 6, i32 6, i32 6>, align 16
12 define void @v4f32_to_v4i32(<4 x float> %x, <4 x i32>* nocapture %y) nounwind {
13 entry:
14   %0 = load <4 x float>, <4 x float>* @cte_float, align 16
15   %mul = fmul <4 x float> %0, %x
16   %1 = fptosi <4 x float> %mul to <4 x i32>
17   store <4 x i32> %1, <4 x i32>* %y, align 16
18   ret void
20 ;CHECK-LABEL: v4f32_to_v4i32:
21 ;CHECK: vctsxs {{[0-9]+}}, {{[0-9]+}}, 0
24 define void @v4f32_to_v4u32(<4 x float> %x, <4 x i32>* nocapture %y) nounwind {
25 entry:
26   %0 = load <4 x float>, <4 x float>* @cte_float, align 16
27   %mul = fmul <4 x float> %0, %x
28   %1 = fptoui <4 x float> %mul to <4 x i32>
29   store <4 x i32> %1, <4 x i32>* %y, align 16
30   ret void
32 ;CHECK-LABEL: v4f32_to_v4u32:
33 ;CHECK: vctuxs {{[0-9]+}}, {{[0-9]+}}, 0
36 define void @v4i32_to_v4f32(<4 x i32> %x, <4 x float>* nocapture %y) nounwind {
37 entry:
38   %0 = load <4 x i32>, <4 x i32>* @cte_int, align 16
39   %mul = mul <4 x i32> %0, %x
40   %1 = sitofp <4 x i32> %mul to <4 x float>
41   store <4 x float> %1, <4 x float>* %y, align 16
42   ret void
44 ;CHECK-LABEL: v4i32_to_v4f32:
45 ;CHECK: vcfsx {{[0-9]+}}, {{[0-9]+}}, 0
48 define void @v4u32_to_v4f32(<4 x i32> %x, <4 x float>* nocapture %y) nounwind {
49 entry:
50   %0 = load <4 x i32>, <4 x i32>* @cte_int, align 16
51   %mul = mul <4 x i32> %0, %x
52   %1 = uitofp <4 x i32> %mul to <4 x float>
53   store <4 x float> %1, <4 x float>* %y, align 16
54   ret void
56 ;CHECK-LABEL: v4u32_to_v4f32:
57 ;CHECK: vcfux {{[0-9]+}}, {{[0-9]+}}, 0