annotate clang/test/CodeGen/builtins-ppc-pair-mma.c @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 // RUN: %clang_cc1 -O3 -triple powerpc64le-unknown-unknown -target-cpu future -emit-llvm %s -o - | FileCheck %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 // CHECK-LABEL: @test1(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], <16 x i8> [[VC]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2:![0-9]+]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 void test1(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 __vector_quad res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 __builtin_mma_assemble_acc(&res, vc, vc, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 *((__vector_quad *)resp) = res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 // CHECK-LABEL: @test2(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 // CHECK-NEXT: [[TMP2:%.*]] = tail call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.ppc.mma.disassemble.acc(<512 x i1> [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[TMP2]], 0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 // CHECK-NEXT: store <16 x i8> [[TMP4]], <16 x i8>* [[TMP3]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[TMP2]], 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 // CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8, i8* [[RESP]], i64 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 // CHECK-NEXT: [[TMP7:%.*]] = bitcast i8* [[TMP6]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 // CHECK-NEXT: store <16 x i8> [[TMP5]], <16 x i8>* [[TMP7]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[TMP2]], 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 // CHECK-NEXT: [[TMP9:%.*]] = getelementptr inbounds i8, i8* [[RESP]], i64 32
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 // CHECK-NEXT: [[TMP10:%.*]] = bitcast i8* [[TMP9]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 // CHECK-NEXT: store <16 x i8> [[TMP8]], <16 x i8>* [[TMP10]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 // CHECK-NEXT: [[TMP11:%.*]] = extractvalue { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[TMP2]], 3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 // CHECK-NEXT: [[TMP12:%.*]] = getelementptr inbounds i8, i8* [[RESP]], i64 48
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 // CHECK-NEXT: [[TMP13:%.*]] = bitcast i8* [[TMP12]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 // CHECK-NEXT: store <16 x i8> [[TMP11]], <16 x i8>* [[TMP13]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 void test2(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 __builtin_mma_disassemble_acc(resp, (__vector_quad*)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 // CHECK-LABEL: @test3(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 // CHECK-NEXT: [[TMP0:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 // CHECK-NEXT: store <256 x i1> [[TMP0]], <256 x i1>* [[TMP1]], align 32, !tbaa [[TBAA6:![0-9]+]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 void test3(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 __vector_pair res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 __builtin_vsx_assemble_pair(&res, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 *((__vector_pair *)resp) = res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 // CHECK-LABEL: @test4(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 // CHECK-NEXT: [[TMP1:%.*]] = load <256 x i1>, <256 x i1>* [[TMP0]], align 32
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 // CHECK-NEXT: [[TMP2:%.*]] = tail call { <16 x i8>, <16 x i8> } @llvm.ppc.vsx.disassemble.pair(<256 x i1> [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <16 x i8>, <16 x i8> } [[TMP2]], 0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 // CHECK-NEXT: store <16 x i8> [[TMP4]], <16 x i8>* [[TMP3]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <16 x i8>, <16 x i8> } [[TMP2]], 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 // CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8, i8* [[RESP]], i64 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 // CHECK-NEXT: [[TMP7:%.*]] = bitcast i8* [[TMP6]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 // CHECK-NEXT: store <16 x i8> [[TMP5]], <16 x i8>* [[TMP7]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 void test4(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 __builtin_vsx_disassemble_pair(resp, (__vector_pair*)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 // CHECK-LABEL: @test5(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xxmtacc(<512 x i1> [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 void test5(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 __builtin_mma_xxmtacc(&vq);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 // CHECK-LABEL: @test6(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xxmfacc(<512 x i1> [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 void test6(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 __builtin_mma_xxmfacc(&vq);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 // CHECK-LABEL: @test7(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xxsetaccz()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 void test7(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 __builtin_mma_xxsetaccz(&vq);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 // CHECK-LABEL: @test8(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi4ger8(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 void test8(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 __builtin_mma_xvi4ger8(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 // CHECK-LABEL: @test9(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi8ger4(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 void test9(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 __builtin_mma_xvi8ger4(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 // CHECK-LABEL: @test10(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 void test10(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 __builtin_mma_xvi16ger2(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 // CHECK-LABEL: @test11(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi16ger2s(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 void test11(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 __builtin_mma_xvi16ger2s(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 // CHECK-LABEL: @test12(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 void test12(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 __builtin_mma_xvf16ger2(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 // CHECK-LABEL: @test13(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf32ger(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 void test13(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 __builtin_mma_xvf32ger(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 // CHECK-LABEL: @test14(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 // CHECK-NEXT: [[TMP1:%.*]] = load <256 x i1>, <256 x i1>* [[TMP0]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64ger(<256 x i1> [[TMP1]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 void test14(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 __builtin_mma_xvf64ger(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 // CHECK-LABEL: @test15(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi4ger8(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 void test15(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 __builtin_mma_pmxvi4ger8(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 // CHECK-LABEL: @test16(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi8ger4(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 void test16(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 __builtin_mma_pmxvi8ger4(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 // CHECK-LABEL: @test17(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 void test17(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 __builtin_mma_pmxvi16ger2(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 // CHECK-LABEL: @test18(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi16ger2s(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 void test18(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
276 __builtin_mma_pmxvi16ger2s(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
279
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 // CHECK-LABEL: @test19(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
283 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 void test19(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
288 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 __builtin_mma_pmxvf16ger2(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
291 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
292 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
293
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
294 // CHECK-LABEL: @test20(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
296 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf32ger(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
297 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
298 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
301 void test20(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
304 __builtin_mma_pmxvf32ger(&vq, vc, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
305 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
306 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
307
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 // CHECK-LABEL: @test21(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
310 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 // CHECK-NEXT: [[TMP1:%.*]] = load <256 x i1>, <256 x i1>* [[TMP0]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64ger(<256 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
313 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
314 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
315 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
317 void test21(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
318 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
319 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
320 __builtin_mma_pmxvf64ger(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
322 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 // CHECK-LABEL: @test22(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi4ger8pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 void test22(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 __builtin_mma_xvi4ger8pp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
337 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
339
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 // CHECK-LABEL: @test23(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
341 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi8ger4pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
345 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
348 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 void test23(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
350 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
352 __builtin_mma_xvi8ger4pp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 // CHECK-LABEL: @test24(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi8ger4spp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 void test24(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
367 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
368 __builtin_mma_xvi8ger4spp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
369 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
370 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
371
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
372 // CHECK-LABEL: @test25(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
373 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
374 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
375 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
376 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
377 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
378 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
379 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
380 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
381 void test25(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
382 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
383 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
384 __builtin_mma_xvi16ger2pp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
385 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
386 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
388 // CHECK-LABEL: @test26(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
389 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
390 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
391 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
392 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvi16ger2spp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
393 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
394 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
395 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
396 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
397 void test26(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
398 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
399 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
400 __builtin_mma_xvi16ger2spp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
401 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
402 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
403
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404 // CHECK-LABEL: @test27(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
405 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
406 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi4ger8pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
411 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
413 void test27(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
414 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
415 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
416 __builtin_mma_pmxvi4ger8pp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
417 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
418 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
419
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
420 // CHECK-LABEL: @test28(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
422 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi8ger4pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
425 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
426 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 void test28(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
430 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
431 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432 __builtin_mma_pmxvi8ger4pp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
433 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
435
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
436 // CHECK-LABEL: @test29(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
437 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
438 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi8ger4spp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
442 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
443 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
444 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 void test29(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
446 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
447 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
448 __builtin_mma_pmxvi8ger4spp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
449 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
450 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
451
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 // CHECK-LABEL: @test30(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
454 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
460 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
461 void test30(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 __builtin_mma_pmxvi16ger2pp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
467
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 // CHECK-LABEL: @test31(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
471 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
472 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvi16ger2spp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
475 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
476 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
477 void test31(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
478 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
479 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 __builtin_mma_pmxvi16ger2spp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
481 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
482 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
483
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
484 // CHECK-LABEL: @test32(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
485 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
486 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
487 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
488 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
489 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
490 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
491 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
492 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
493 void test32(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
494 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
495 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
496 __builtin_mma_xvf16ger2pp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
497 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
498 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
499
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
500 // CHECK-LABEL: @test33(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
501 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
502 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
503 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
504 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2pn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
505 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
506 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
507 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
508 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
509 void test33(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
510 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
511 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
512 __builtin_mma_xvf16ger2pn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
513 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
514 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
515
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
516 // CHECK-LABEL: @test34(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
517 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
518 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
519 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
520 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2np(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
521 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
522 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
523 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
524 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
525 void test34(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
527 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 __builtin_mma_xvf16ger2np(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
529 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
531
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
532 // CHECK-LABEL: @test35(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
533 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
534 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
535 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
536 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf16ger2nn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
537 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
538 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
539 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
540 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 void test35(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
542 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
543 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
544 __builtin_mma_xvf16ger2nn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
545 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
546 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
547
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
548 // CHECK-LABEL: @test36(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
549 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
550 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
551 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
552 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
553 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
554 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
555 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
556 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
557 void test36(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
558 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
559 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
560 __builtin_mma_pmxvf16ger2pp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
561 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
562 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
563
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
564 // CHECK-LABEL: @test37(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
565 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
566 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
567 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
568 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf16ger2pn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
569 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
570 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
571 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
572 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
573 void test37(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
574 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
575 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
576 __builtin_mma_pmxvf16ger2pn(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
577 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
578 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
579
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
580 // CHECK-LABEL: @test38(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
581 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
582 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
583 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
584 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf16ger2np(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
585 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
586 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
587 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
588 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
589 void test38(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
590 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
591 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
592 __builtin_mma_pmxvf16ger2np(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
593 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
594 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
595
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
596 // CHECK-LABEL: @test39(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
597 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
598 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
599 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
600 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf16ger2nn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
601 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
603 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
604 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 void test39(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
606 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
607 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
608 __builtin_mma_pmxvf16ger2nn(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
609 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
610 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
611
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
612 // CHECK-LABEL: @test40(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
613 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
614 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
615 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
616 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf32gerpp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
617 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
618 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
619 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
620 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
621 void test40(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
622 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
623 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
624 __builtin_mma_xvf32gerpp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
625 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
626 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
627
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
628 // CHECK-LABEL: @test41(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
629 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
630 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
631 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
632 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf32gerpn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
633 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
634 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
635 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
636 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
637 void test41(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
638 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
639 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
640 __builtin_mma_xvf32gerpn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
641 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
642 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
643
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
644 // CHECK-LABEL: @test42(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
645 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
646 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
647 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
648 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf32gernp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
649 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
650 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
651 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
652 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
653 void test42(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
654 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
655 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
656 __builtin_mma_xvf32gernp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
657 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
658 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
659
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
660 // CHECK-LABEL: @test43(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
661 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
662 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
663 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
664 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf32gernn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
665 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
666 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
667 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
668 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
669 void test43(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
670 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
671 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
672 __builtin_mma_xvf32gernn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
673 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
674 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
675
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
676 // CHECK-LABEL: @test44(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
677 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
678 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
679 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
680 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf32gerpp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
681 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
682 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
683 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
684 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
685 void test44(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
686 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
687 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
688 __builtin_mma_pmxvf32gerpp(&vq, vc, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
689 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
690 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
691
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
692 // CHECK-LABEL: @test45(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
693 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
694 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
695 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
696 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf32gerpn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
697 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
698 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
699 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
700 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
701 void test45(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
702 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
703 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
704 __builtin_mma_pmxvf32gerpn(&vq, vc, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
705 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
706 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
707
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
708 // CHECK-LABEL: @test46(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
709 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
710 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
711 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
712 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf32gernp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
713 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
714 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
715 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
716 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
717 void test46(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
718 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
719 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
720 __builtin_mma_pmxvf32gernp(&vq, vc, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
721 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
722 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
723
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
724 // CHECK-LABEL: @test47(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
725 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
726 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
727 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
728 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf32gernn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
729 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
730 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
731 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
732 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
733 void test47(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
734 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
735 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
736 __builtin_mma_pmxvf32gernn(&vq, vc, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
737 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
738 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
739
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
740 // CHECK-LABEL: @test48(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
741 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
742 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
743 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
744 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
745 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
746 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gerpp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
747 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
748 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
749 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
750 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
751 void test48(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
752 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
753 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
754 __builtin_mma_xvf64gerpp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
755 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
756 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
757
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
758 // CHECK-LABEL: @test49(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
759 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
760 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
761 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
762 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
763 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
764 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gerpn(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
765 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
766 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
767 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
768 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
769 void test49(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
770 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
771 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
772 __builtin_mma_xvf64gerpn(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
773 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
774 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
775
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
776 // CHECK-LABEL: @test50(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
777 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
778 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
779 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
780 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
781 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
782 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
783 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
784 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
785 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
786 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
787 void test50(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
788 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
789 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
790 __builtin_mma_xvf64gernp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
791 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
792 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
793
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
794 // CHECK-LABEL: @test51(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
795 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
796 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
797 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
798 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
799 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
800 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernn(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
801 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
802 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
803 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
804 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
805 void test51(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
806 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
807 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
808 __builtin_mma_xvf64gernn(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
809 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
810 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
812 // CHECK-LABEL: @test52(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
813 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
814 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
815 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
816 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
817 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
818 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gerpp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
819 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
820 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
821 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
822 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
823 void test52(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
824 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
825 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
826 __builtin_mma_pmxvf64gerpp(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
827 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
828 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
829
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
830 // CHECK-LABEL: @test53(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
831 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
832 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
833 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
834 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
835 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
836 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gerpn(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
837 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
838 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
839 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
840 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
841 void test53(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
842 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
843 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
844 __builtin_mma_pmxvf64gerpn(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
845 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
846 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
847
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
848 // CHECK-LABEL: @test54(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
849 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
850 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
851 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
852 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
853 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
854 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
855 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
856 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
857 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
858 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
859 void test54(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
860 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
861 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
862 __builtin_mma_pmxvf64gernp(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
863 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
864 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
865
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
866 // CHECK-LABEL: @test55(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
867 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
868 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
869 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
870 // CHECK-NEXT: [[TMP2:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
871 // CHECK-NEXT: [[TMP3:%.*]] = load <256 x i1>, <256 x i1>* [[TMP2]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
872 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gernn(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
873 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
874 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
875 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
876 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
877 void test55(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
878 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
879 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
880 __builtin_mma_pmxvf64gernn(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
881 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
882 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
883
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
884 // CHECK-LABEL: @test56(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
885 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
886 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvbf16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
887 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
888 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
889 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
890 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
891 void test56(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
892 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
893 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
894 __builtin_mma_xvbf16ger2(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
895 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
896 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
897
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
898 // CHECK-LABEL: @test57(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
899 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
900 // CHECK-NEXT: [[TMP0:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvbf16ger2(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
901 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
902 // CHECK-NEXT: store <512 x i1> [[TMP0]], <512 x i1>* [[TMP1]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
903 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
904 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
905 void test57(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
906 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
907 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
908 __builtin_mma_pmxvbf16ger2(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
909 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
910 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
911
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
912 // CHECK-LABEL: @test58(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
913 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
914 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
915 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
916 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvbf16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
917 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
918 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
919 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
920 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
921 void test58(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
922 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
923 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
924 __builtin_mma_xvbf16ger2pp(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
925 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
926 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
927
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
928 // CHECK-LABEL: @test59(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
929 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
930 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
931 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
932 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvbf16ger2pn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
933 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
934 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
935 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
936 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
937 void test59(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
938 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
939 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
940 __builtin_mma_xvbf16ger2pn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
941 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
942 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
943
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
944 // CHECK-LABEL: @test60(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
945 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
946 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
947 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
948 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvbf16ger2np(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
949 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
950 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
951 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
952 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
953 void test60(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
954 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
955 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
956 __builtin_mma_xvbf16ger2np(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
957 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
958 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
959
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
960 // CHECK-LABEL: @test61(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
961 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
962 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
963 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
964 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvbf16ger2nn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
965 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
966 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
967 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
968 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
969 void test61(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
970 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
971 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
972 __builtin_mma_xvbf16ger2nn(&vq, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
973 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
974 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
975
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
976 // CHECK-LABEL: @test62(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
977 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
978 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
979 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
980 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvbf16ger2pp(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
981 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
982 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
983 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
984 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
985 void test62(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
986 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
987 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
988 __builtin_mma_pmxvbf16ger2pp(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
989 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
990 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
991
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
992 // CHECK-LABEL: @test63(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
993 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
994 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
995 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
996 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvbf16ger2pn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
997 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
998 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
999 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1000 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1001 void test63(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1002 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1003 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1004 __builtin_mma_pmxvbf16ger2pn(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1005 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1006 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1007
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1008 // CHECK-LABEL: @test64(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1009 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1010 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1011 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1012 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvbf16ger2np(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1013 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1014 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1015 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1016 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1017 void test64(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1018 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1019 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1020 __builtin_mma_pmxvbf16ger2np(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1021 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1022 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1023
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1024 // CHECK-LABEL: @test65(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1025 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1026 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1027 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1028 // CHECK-NEXT: [[TMP2:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvbf16ger2nn(<512 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], <16 x i8> [[VC]], i32 0, i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1029 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1030 // CHECK-NEXT: store <512 x i1> [[TMP2]], <512 x i1>* [[TMP3]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1031 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1032 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1033 void test65(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1034 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1035 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1036 __builtin_mma_pmxvbf16ger2nn(&vq, vc, vc, 0, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1037 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1038 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1039
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1040 // CHECK-LABEL: @test66(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1041 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1042 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1043 // CHECK-NEXT: [[TMP1:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP0]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1044 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1045 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP1]], i8* [[TMP2]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1046 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1047 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1048 void test66(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1049 __vector_pair vp = __builtin_vsx_lxvp(0LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1050 __builtin_vsx_stxvp(vp, 0LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1051 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1052
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1053 // CHECK-LABEL: @test67(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1054 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1055 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1056 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 [[OFFSET:%.*]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1057 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1058 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1059 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 [[OFFSET]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1060 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1061 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1062 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1063 void test67(const __vector_pair *vpp, signed long long offset, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1064 __vector_pair vp = __builtin_vsx_lxvp(offset, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1065 __builtin_vsx_stxvp(vp, offset, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1066 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1067
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1068 // CHECK-LABEL: @test68(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1069 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1070 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1071 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1072 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1073 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1074 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1075 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1076 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1077 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1078 void test68(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1079 __vector_pair vp = __builtin_vsx_lxvp(18LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1080 __builtin_vsx_stxvp(vp, 18LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1081 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1082
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1083 // CHECK-LABEL: @test69(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1084 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1085 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1086 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1087 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1088 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1089 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1090 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1091 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1092 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1093 void test69(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1094 __vector_pair vp = __builtin_vsx_lxvp(1LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1095 __builtin_vsx_stxvp(vp, 1LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1096 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1097
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1098 // CHECK-LABEL: @test70(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1099 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1100 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1101 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1102 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1103 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1104 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1105 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1106 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1107 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1108 void test70(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1109 __vector_pair vp = __builtin_vsx_lxvp(42LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1110 __builtin_vsx_stxvp(vp, 42LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1111 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1112
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1113 // CHECK-LABEL: @test71(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1114 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1115 // CHECK-NEXT: [[TMP0:%.*]] = getelementptr <256 x i1>, <256 x i1>* [[VPP:%.*]], i64 128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1116 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <256 x i1>* [[TMP0]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1117 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1118 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr <256 x i1>, <256 x i1>* [[VP2:%.*]], i64 128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1119 // CHECK-NEXT: [[TMP4:%.*]] = bitcast <256 x i1>* [[TMP3]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1120 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1121 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1122 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1123 void test71(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1124 __vector_pair vp = __builtin_vsx_lxvp(32768LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1125 __builtin_vsx_stxvp(vp, 32768LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1126 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1127
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1128 // CHECK-LABEL: @test72(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1129 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1130 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1131 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 32799
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1132 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1133 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1134 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 32799
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1135 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1136 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1137 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1138 void test72(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1139 __vector_pair vp = __builtin_vsx_lxvp(32799LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1140 __builtin_vsx_stxvp(vp, 32799LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1141 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1142
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1143 // CHECK-LABEL: @test73(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1144 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1145 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1146 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1147 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1148 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, i8* [[TMP2]], i64 8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1149 // CHECK-NEXT: [[TMP4:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP3]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1150 // CHECK-NEXT: [[TMP5:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gernn(<512 x i1> [[TMP1]], <256 x i1> [[TMP4]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1151 // CHECK-NEXT: [[TMP6:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1152 // CHECK-NEXT: store <512 x i1> [[TMP5]], <512 x i1>* [[TMP6]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1153 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1154 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1155 void test73(unsigned char *vqp, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1156 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1157 __vector_pair vp = __builtin_vsx_lxvp(8LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1158 __builtin_mma_pmxvf64gernn(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1159 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1160 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1162 // CHECK-LABEL: @test74(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1163 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1164 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1165 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1166 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1167 // CHECK-NEXT: [[TMP3:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP2]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1168 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1169 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1170 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1171 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1172 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1173 void test74(unsigned char *vqp, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1174 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1175 __vector_pair vp = __builtin_vsx_lxvp(0LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1176 __builtin_mma_xvf64gernp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1177 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1178 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1179
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1180 // CHECK-LABEL: @test75(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1181 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1182 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1183 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1184 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1185 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, i8* [[TMP2]], i64 [[OFFS:%.*]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1186 // CHECK-NEXT: [[TMP4:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP3]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1187 // CHECK-NEXT: [[TMP5:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP4]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1188 // CHECK-NEXT: [[TMP6:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1189 // CHECK-NEXT: store <512 x i1> [[TMP5]], <512 x i1>* [[TMP6]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1190 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1191 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1192 void test75(unsigned char *vqp, signed long long offs, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1193 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1194 __vector_pair vp = __builtin_vsx_lxvp(offs, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1195 __builtin_mma_xvf64gernp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1196 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1197 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1198
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1199 // CHECK-LABEL: @test76(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1200 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1201 // CHECK-NEXT: [[TMP0:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> [[VC:%.*]], <16 x i8> [[VC]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1202 // CHECK-NEXT: [[TMP1:%.*]] = bitcast i8* [[RESP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1203 // CHECK-NEXT: store <256 x i1> [[TMP0]], <256 x i1>* [[TMP1]], align 32, !tbaa [[TBAA6]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1204 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1205 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1206 void test76(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1207 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1208 __vector_pair vp = *((__vector_pair *)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1209 __vector_pair res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1210 __builtin_mma_assemble_pair(&res, vc, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1211 *((__vector_pair *)resp) = res;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1212 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1213
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1214 // CHECK-LABEL: @test77(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1215 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1216 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VPP:%.*]] to <256 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1217 // CHECK-NEXT: [[TMP1:%.*]] = load <256 x i1>, <256 x i1>* [[TMP0]], align 32
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1218 // CHECK-NEXT: [[TMP2:%.*]] = tail call { <16 x i8>, <16 x i8> } @llvm.ppc.vsx.disassemble.pair(<256 x i1> [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1219 // CHECK-NEXT: [[TMP3:%.*]] = bitcast i8* [[RESP:%.*]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1220 // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <16 x i8>, <16 x i8> } [[TMP2]], 0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1221 // CHECK-NEXT: store <16 x i8> [[TMP4]], <16 x i8>* [[TMP3]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1222 // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <16 x i8>, <16 x i8> } [[TMP2]], 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1223 // CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8, i8* [[RESP]], i64 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1224 // CHECK-NEXT: [[TMP7:%.*]] = bitcast i8* [[TMP6]] to <16 x i8>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1225 // CHECK-NEXT: store <16 x i8> [[TMP5]], <16 x i8>* [[TMP7]], align 16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1226 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1227 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1228 void test77(unsigned char *vqp, unsigned char *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1229 __builtin_mma_disassemble_pair(resp, (__vector_pair*)vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1230 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1231
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1232 // CHECK-LABEL: @test78(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1233 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1234 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1235 // CHECK-NEXT: [[TMP1:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP0]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1236 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1237 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP1]], i8* [[TMP2]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1238 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1239 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1240 void test78(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1241 __vector_pair vp = __builtin_mma_lxvp(0LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1242 __builtin_mma_stxvp(vp, 0LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1243 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1244
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1245 // CHECK-LABEL: @test79(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1246 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1247 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1248 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 [[OFFSET:%.*]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1249 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1250 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1251 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 [[OFFSET]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1252 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1253 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1254 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1255 void test79(const __vector_pair *vpp, signed long long offset, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1256 __vector_pair vp = __builtin_mma_lxvp(offset, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1257 __builtin_mma_stxvp(vp, offset, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1258 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1259
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1260 // CHECK-LABEL: @test80(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1261 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1262 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1263 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1264 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1265 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1266 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1267 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1268 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1269 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1270 void test80(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1271 __vector_pair vp = __builtin_mma_lxvp(18LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1272 __builtin_mma_stxvp(vp, 18LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1273 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1274
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1275 // CHECK-LABEL: @test81(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1276 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1277 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1278 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1279 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1280 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1281 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1282 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1283 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1284 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1285 void test81(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1286 __vector_pair vp = __builtin_mma_lxvp(1LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1287 __builtin_mma_stxvp(vp, 1LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1288 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1289
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1290 // CHECK-LABEL: @test82(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1291 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1292 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1293 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1294 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1295 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1296 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1297 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1298 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1299 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1300 void test82(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1301 __vector_pair vp = __builtin_mma_lxvp(42LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1302 __builtin_mma_stxvp(vp, 42LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1303 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1304
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1305 // CHECK-LABEL: @test83(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1306 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1307 // CHECK-NEXT: [[TMP0:%.*]] = getelementptr <256 x i1>, <256 x i1>* [[VPP:%.*]], i64 128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1308 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <256 x i1>* [[TMP0]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1309 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1310 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr <256 x i1>, <256 x i1>* [[VP2:%.*]], i64 128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1311 // CHECK-NEXT: [[TMP4:%.*]] = bitcast <256 x i1>* [[TMP3]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1312 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1313 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1314 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1315 void test83(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1316 __vector_pair vp = __builtin_mma_lxvp(32768LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1317 __builtin_mma_stxvp(vp, 32768LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1318 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1319
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1320 // CHECK-LABEL: @test84(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1321 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1322 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1323 // CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[TMP0]], i64 32799
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1324 // CHECK-NEXT: [[TMP2:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP1]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1325 // CHECK-NEXT: [[TMP3:%.*]] = bitcast <256 x i1>* [[VP2:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1326 // CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* [[TMP3]], i64 32799
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1327 // CHECK-NEXT: tail call void @llvm.ppc.vsx.stxvp(<256 x i1> [[TMP2]], i8* [[TMP4]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1328 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1329 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1330 void test84(const __vector_pair *vpp, const __vector_pair *vp2) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1331 __vector_pair vp = __builtin_mma_lxvp(32799LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1332 __builtin_mma_stxvp(vp, 32799LL, vp2);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1333 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1334
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1335 // CHECK-LABEL: @test85(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1336 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1337 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1338 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1339 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1340 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, i8* [[TMP2]], i64 8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1341 // CHECK-NEXT: [[TMP4:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP3]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1342 // CHECK-NEXT: [[TMP5:%.*]] = tail call <512 x i1> @llvm.ppc.mma.pmxvf64gernn(<512 x i1> [[TMP1]], <256 x i1> [[TMP4]], <16 x i8> [[VC:%.*]], i32 0, i32 0)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1343 // CHECK-NEXT: [[TMP6:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1344 // CHECK-NEXT: store <512 x i1> [[TMP5]], <512 x i1>* [[TMP6]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1345 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1346 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1347 void test85(unsigned char *vqp, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1348 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1349 __vector_pair vp = __builtin_mma_lxvp(8LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1350 __builtin_mma_pmxvf64gernn(&vq, vp, vc, 0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1351 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1352 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1353
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1354 // CHECK-LABEL: @test86(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1355 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1356 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1357 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1358 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1359 // CHECK-NEXT: [[TMP3:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP2]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1360 // CHECK-NEXT: [[TMP4:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP3]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1361 // CHECK-NEXT: [[TMP5:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1362 // CHECK-NEXT: store <512 x i1> [[TMP4]], <512 x i1>* [[TMP5]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1363 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1364 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1365 void test86(unsigned char *vqp, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1366 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1367 __vector_pair vp = __builtin_mma_lxvp(0LL, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1368 __builtin_mma_xvf64gernp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1369 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1370 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1371
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1372 // CHECK-LABEL: @test87(
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1373 // CHECK-NEXT: entry:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1374 // CHECK-NEXT: [[TMP0:%.*]] = bitcast i8* [[VQP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1375 // CHECK-NEXT: [[TMP1:%.*]] = load <512 x i1>, <512 x i1>* [[TMP0]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1376 // CHECK-NEXT: [[TMP2:%.*]] = bitcast <256 x i1>* [[VPP:%.*]] to i8*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1377 // CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, i8* [[TMP2]], i64 [[OFFS:%.*]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1378 // CHECK-NEXT: [[TMP4:%.*]] = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* [[TMP3]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1379 // CHECK-NEXT: [[TMP5:%.*]] = tail call <512 x i1> @llvm.ppc.mma.xvf64gernp(<512 x i1> [[TMP1]], <256 x i1> [[TMP4]], <16 x i8> [[VC:%.*]])
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1380 // CHECK-NEXT: [[TMP6:%.*]] = bitcast i8* [[RESP:%.*]] to <512 x i1>*
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1381 // CHECK-NEXT: store <512 x i1> [[TMP5]], <512 x i1>* [[TMP6]], align 64, !tbaa [[TBAA2]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1382 // CHECK-NEXT: ret void
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1383 //
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1384 void test87(unsigned char *vqp, signed long long offs, const __vector_pair *vpp, vector unsigned char vc, unsigned char *resp) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1385 __vector_quad vq = *((__vector_quad *)vqp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1386 __vector_pair vp = __builtin_mma_lxvp(offs, vpp);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1387 __builtin_mma_xvf64gernp(&vq, vp, vc);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1388 *((__vector_quad *)resp) = vq;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1389 }