Fix classof for ISD::INTRINSIC_W_CHAIN and INTRINSIC_VOID
[oota-llvm.git] / test / CodeGen / PowerPC / unal-altivec-wint.ll
1 ; RUN: llc -mcpu=pwr7 < %s | FileCheck %s
2 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-f128:128:128-v128:128:128-n32:64"
3 target triple = "powerpc64-unknown-linux-gnu"
4 ; XFAIL: *
5
6 declare <4 x i32> @llvm.ppc.altivec.lvx(i8*) #1
7
8 define <4 x i32> @test1(<4 x i32>* %h) #0 {
9 entry:
10   %h1 = getelementptr <4 x i32>* %h, i64 1
11   %hv = bitcast <4 x i32>* %h1 to i8*
12   %vl = call <4 x i32> @llvm.ppc.altivec.lvx(i8* %hv)
13
14   %v0 = load <4 x i32>* %h, align 8
15
16   %a = add <4 x i32> %v0, %vl
17   ret <4 x i32> %a
18
19 ; CHECK-LABEL: @test1
20 ; CHECK: li [[REG:[0-9]+]], 16
21 ; CHECK-NOT: li {{[0-9]+}}, 15
22 ; CHECK-DAG: lvx {{[0-9]+}}, 0, 3
23 ; CHECK-DAG: lvx {{[0-9]+}}, 3, [[REG]]
24 ; CHECK: blr
25 }
26
27 declare void @llvm.ppc.altivec.stvx(<4 x i32>, i8*) #0
28
29 define <4 x i32> @test2(<4 x i32>* %h, <4 x i32> %d) #0 {
30 entry:
31   %h1 = getelementptr <4 x i32>* %h, i64 1
32   %hv = bitcast <4 x i32>* %h1 to i8*
33   call void @llvm.ppc.altivec.stvx(<4 x i32> %d, i8* %hv)
34
35   %v0 = load <4 x i32>* %h, align 8
36
37   ret <4 x i32> %v0
38
39 ; CHECK-LABEL: @test2
40 ; CHECK: li [[REG:[0-9]+]], 16
41 ; CHECK-NOT: li {{[0-9]+}}, 15
42 ; CHECK-DAG: lvx {{[0-9]+}}, 0, 3
43 ; CHECK-DAG: lvx {{[0-9]+}}, 3, [[REG]]
44 ; CHECK: blr
45 }
46
47 attributes #0 = { nounwind }
48 attributes #1 = { nounwind readonly }
49