xref: /llvm-project/llvm/test/CodeGen/PowerPC/vec_cmpq.ll (revision 2e7117f847708d2fd1ff2d2961c3439470532b80)
188cdbeabSAlbion Fung; Test the quadword comparison instructions that were added in POWER10.
288cdbeabSAlbion Fung;
388cdbeabSAlbion Fung; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
488cdbeabSAlbion Fung; RUN:     -mcpu=pwr10 < %s | FileCheck %s
588cdbeabSAlbion Fung; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
688cdbeabSAlbion Fung; RUN:     -mcpu=pwr10 -mattr=-vsx < %s | FileCheck %s
788cdbeabSAlbion Fung; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
888cdbeabSAlbion Fung; RUN:     -mcpu=pwr10 < %s | FileCheck %s
988cdbeabSAlbion Fungdefine <1 x i128> @v1si128_cmp(<1 x i128> %x, <1 x i128> %y) nounwind readnone {
1088cdbeabSAlbion Fung       %cmp = icmp eq <1 x i128> %x, %y
1188cdbeabSAlbion Fung       %result = sext <1 x i1> %cmp to <1 x i128>
1288cdbeabSAlbion Fung       ret <1 x i128> %result
1388cdbeabSAlbion Fung; CHECK-LABEL: v1si128_cmp:
1488cdbeabSAlbion Fung; CHECK: vcmpequq 2, 2, 3
1588cdbeabSAlbion Fung}
1688cdbeabSAlbion Fung
1788cdbeabSAlbion Fungdefine <2 x i128> @v2si128_cmp(<2 x i128> %x, <2 x i128> %y) nounwind readnone {
1888cdbeabSAlbion Fung       %cmp = icmp eq <2 x i128> %x, %y
1988cdbeabSAlbion Fung       %result = sext <2 x i1> %cmp to <2 x i128>
2088cdbeabSAlbion Fung       ret <2 x i128> %result
2188cdbeabSAlbion Fung; CHECK-LABEL: v2si128_cmp
2288cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
2388cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
2488cdbeabSAlbion Fung; CHECK: blr
2588cdbeabSAlbion Fung}
2688cdbeabSAlbion Fung
2788cdbeabSAlbion Fungdefine <4 x i128> @v4si128_cmp(<4 x i128> %x, <4 x i128> %y) nounwind readnone {
2888cdbeabSAlbion Fung       %cmp = icmp eq <4 x i128> %x, %y
2988cdbeabSAlbion Fung       %result = sext <4 x i1> %cmp to <4 x i128>
3088cdbeabSAlbion Fung       ret <4 x i128> %result
3188cdbeabSAlbion Fung; CHECK-LABEL: v4si128_cmp
3288cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
3388cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
3488cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
3588cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
3688cdbeabSAlbion Fung; CHECK: blr
3788cdbeabSAlbion Fung}
3888cdbeabSAlbion Fung
3988cdbeabSAlbion Fungdefine <8 x i128> @v8si128_cmp(<8 x i128> %x, <8 x i128> %y) nounwind readnone {
4088cdbeabSAlbion Fung       %cmp = icmp eq <8 x i128> %x, %y
4188cdbeabSAlbion Fung       %result = sext <8 x i1> %cmp to <8 x i128>
4288cdbeabSAlbion Fung       ret <8 x i128> %result
4388cdbeabSAlbion Fung; CHECK-LABEL: v8si128_cmp
4488cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
4588cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
4688cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
4788cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
4888cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
4988cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
5088cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
5188cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
5288cdbeabSAlbion Fung; CHECK: blr
5388cdbeabSAlbion Fung}
5488cdbeabSAlbion Fung
5588cdbeabSAlbion Fungdefine <16 x i128> @v16si128_cmp(<16 x i128> %x, <16 x i128> %y) nounwind readnone {
5688cdbeabSAlbion Fung       %cmp = icmp eq <16 x i128> %x, %y
5788cdbeabSAlbion Fung       %result = sext <16 x i1> %cmp to <16 x i128>
5888cdbeabSAlbion Fung       ret <16 x i128> %result
5988cdbeabSAlbion Fung; CHECK-LABEL: v16si128_cmp
6088cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6188cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6288cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6388cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6488cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6588cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6688cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6788cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6888cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
6988cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7088cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7188cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7288cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7388cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7488cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7588cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
7688cdbeabSAlbion Fung; CHECK: blr
7788cdbeabSAlbion Fung}
7888cdbeabSAlbion Fung
7988cdbeabSAlbion Fung; Greater than signed
8088cdbeabSAlbion Fungdefine <1 x i128> @v1si128_cmp_gt(<1 x i128> %x, <1 x i128> %y) nounwind readnone {
8188cdbeabSAlbion Fung       %cmp = icmp sgt <1 x i128> %x, %y
8288cdbeabSAlbion Fung       %result = sext <1 x i1> %cmp to <1 x i128>
8388cdbeabSAlbion Fung       ret <1 x i128> %result
8488cdbeabSAlbion Fung; CHECK-LABEL: v1si128_cmp_gt
8588cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
8688cdbeabSAlbion Fung; CHECK: blr
8788cdbeabSAlbion Fung}
8888cdbeabSAlbion Fung
8988cdbeabSAlbion Fungdefine <2 x i128> @v2si128_cmp_gt(<2 x i128> %x, <2 x i128> %y) nounwind readnone {
9088cdbeabSAlbion Fung       %cmp = icmp sgt <2 x i128> %x, %y
9188cdbeabSAlbion Fung       %result = sext <2 x i1> %cmp to <2 x i128>
9288cdbeabSAlbion Fung       ret <2 x i128> %result
9388cdbeabSAlbion Fung; CHECK-LABEL: v2si128_cmp_gt
9488cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
9588cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
9688cdbeabSAlbion Fung; CHECK: blr
9788cdbeabSAlbion Fung}
9888cdbeabSAlbion Fung
9988cdbeabSAlbion Fungdefine <4 x i128> @v4si128_cmp_gt(<4 x i128> %x, <4 x i128> %y) nounwind readnone {
10088cdbeabSAlbion Fung       %cmp = icmp sgt <4 x i128> %x, %y
10188cdbeabSAlbion Fung       %result = sext <4 x i1> %cmp to <4 x i128>
10288cdbeabSAlbion Fung       ret <4 x i128> %result
10388cdbeabSAlbion Fung; CHECK-LABEL: v4si128_cmp_gt
10488cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
10588cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
10688cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
10788cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
10888cdbeabSAlbion Fung; CHECK: blr
10988cdbeabSAlbion Fung}
11088cdbeabSAlbion Fung
11188cdbeabSAlbion Fungdefine <8 x i128> @v8si128_cmp_gt(<8 x i128> %x, <8 x i128> %y) nounwind readnone {
11288cdbeabSAlbion Fung       %cmp = icmp sgt <8 x i128> %x, %y
11388cdbeabSAlbion Fung       %result = sext <8 x i1> %cmp to <8 x i128>
11488cdbeabSAlbion Fung       ret <8 x i128> %result
11588cdbeabSAlbion Fung; CHECK-LABEL: v8si128_cmp_gt
11688cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
11788cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
11888cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
11988cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
12088cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
12188cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
12288cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
12388cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
12488cdbeabSAlbion Fung; CHECK: blr
12588cdbeabSAlbion Fung}
12688cdbeabSAlbion Fung
12788cdbeabSAlbion Fungdefine <16 x i128> @v16si128_cmp_gt(<16 x i128> %x, <16 x i128> %y) nounwind readnone {
12888cdbeabSAlbion Fung       %cmp = icmp sgt <16 x i128> %x, %y
12988cdbeabSAlbion Fung       %result = sext <16 x i1> %cmp to <16 x i128>
13088cdbeabSAlbion Fung       ret <16 x i128> %result
13188cdbeabSAlbion Fung; CHECK-LABEL: v16si128_cmp_gt
13288cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13388cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13488cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13588cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13688cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13788cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13888cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
13988cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14088cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14188cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14288cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14388cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14488cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14588cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14688cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14788cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
14888cdbeabSAlbion Fung; CHECK: blr
14988cdbeabSAlbion Fung}
15088cdbeabSAlbion Fung
15188cdbeabSAlbion Fung; Greater than unsigned
15288cdbeabSAlbion Fungdefine <1 x i128> @v1ui128_cmp_gt(<1 x i128> %x, <1 x i128> %y) nounwind readnone {
15388cdbeabSAlbion Fung       %cmp = icmp ugt <1 x i128> %x, %y
15488cdbeabSAlbion Fung       %result = sext <1 x i1> %cmp to <1 x i128>
15588cdbeabSAlbion Fung       ret <1 x i128> %result
15688cdbeabSAlbion Fung; CHECK-LABEL: v1ui128_cmp_gt
15788cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
15888cdbeabSAlbion Fung; CHECK: blr
15988cdbeabSAlbion Fung}
16088cdbeabSAlbion Fung
16188cdbeabSAlbion Fungdefine <2 x i128> @v2ui128_cmp_gt(<2 x i128> %x, <2 x i128> %y) nounwind readnone {
16288cdbeabSAlbion Fung       %cmp = icmp ugt <2 x i128> %x, %y
16388cdbeabSAlbion Fung       %result = sext <2 x i1> %cmp to <2 x i128>
16488cdbeabSAlbion Fung       ret <2 x i128> %result
16588cdbeabSAlbion Fung; CHECK-LABEL: v2ui128_cmp_gt
16688cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
16788cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
16888cdbeabSAlbion Fung; CHECK: blr
16988cdbeabSAlbion Fung}
17088cdbeabSAlbion Fung
17188cdbeabSAlbion Fungdefine <4 x i128> @v4ui128_cmp_gt(<4 x i128> %x, <4 x i128> %y) nounwind readnone {
17288cdbeabSAlbion Fung       %cmp = icmp ugt <4 x i128> %x, %y
17388cdbeabSAlbion Fung       %result = sext <4 x i1> %cmp to <4 x i128>
17488cdbeabSAlbion Fung       ret <4 x i128> %result
17588cdbeabSAlbion Fung; CHECK-LABEL: v4ui128_cmp_gt
17688cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
17788cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
17888cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
17988cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
18088cdbeabSAlbion Fung; CHECK: blr
18188cdbeabSAlbion Fung}
18288cdbeabSAlbion Fung
18388cdbeabSAlbion Fungdefine <8 x i128> @v8ui128_cmp_gt(<8 x i128> %x, <8 x i128> %y) nounwind readnone {
18488cdbeabSAlbion Fung       %cmp = icmp ugt <8 x i128> %x, %y
18588cdbeabSAlbion Fung       %result = sext <8 x i1> %cmp to <8 x i128>
18688cdbeabSAlbion Fung       ret <8 x i128> %result
18788cdbeabSAlbion Fung; CHECK-LABEL: v8ui128_cmp_gt
18888cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
18988cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19088cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19188cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19288cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19388cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19488cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19588cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
19688cdbeabSAlbion Fung; CHECK: blr
19788cdbeabSAlbion Fung}
19888cdbeabSAlbion Fung
19988cdbeabSAlbion Fungdefine <16 x i128> @v16ui128_cmp_gt(<16 x i128> %x, <16 x i128> %y) nounwind readnone {
20088cdbeabSAlbion Fung       %cmp = icmp ugt <16 x i128> %x, %y
20188cdbeabSAlbion Fung       %result = sext <16 x i1> %cmp to <16 x i128>
20288cdbeabSAlbion Fung       ret <16 x i128> %result
20388cdbeabSAlbion Fung; CHECK-LABEL: v16ui128_cmp_gt
20488cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
20588cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
20688cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
20788cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
20888cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
20988cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21088cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21188cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21288cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21388cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21488cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21588cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21688cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21788cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21888cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
21988cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
22088cdbeabSAlbion Fung; CHECK: blr
22188cdbeabSAlbion Fung}
22288cdbeabSAlbion Fung
22388cdbeabSAlbion Fung; Check the intrinsics also
22488cdbeabSAlbion Fungdeclare <1 x i128> @llvm.ppc.altivec.vcmpequq(<1 x i128>, <1 x i128>) nounwind readnone
22588cdbeabSAlbion Fungdeclare <1 x i128> @llvm.ppc.altivec.vcmpgtsq(<1 x i128>, <1 x i128>) nounwind readnone
22688cdbeabSAlbion Fungdeclare <1 x i128> @llvm.ppc.altivec.vcmpgtuq(<1 x i128>, <1 x i128>) nounwind readnone
22788cdbeabSAlbion Fung
22888cdbeabSAlbion Fungdefine <1 x i128> @test_vcmpequq(<1 x i128> %x, <1 x i128> %y) {
22988cdbeabSAlbion Fung       %tmp = tail call <1 x i128> @llvm.ppc.altivec.vcmpequq(<1 x i128> %x, <1 x i128> %y)
23088cdbeabSAlbion Fung       ret <1 x i128> %tmp
23188cdbeabSAlbion Fung; CHECK-LABEL: test_vcmpequq:
23288cdbeabSAlbion Fung; CHECK: vcmpequq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
23388cdbeabSAlbion Fung; CHECK: blr
23488cdbeabSAlbion Fung}
23588cdbeabSAlbion Fung
23688cdbeabSAlbion Fungdefine <1 x i128> @test_vcmpgtsq(<1 x i128> %x, <1 x i128> %y) {
23788cdbeabSAlbion Fung       %tmp = tail call <1 x i128> @llvm.ppc.altivec.vcmpgtsq(<1 x i128> %x, <1 x i128> %y)
23888cdbeabSAlbion Fung       ret <1 x i128> %tmp
23988cdbeabSAlbion Fung; CHECK-LABEL: test_vcmpgtsq
24088cdbeabSAlbion Fung; CHECK: vcmpgtsq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
24188cdbeabSAlbion Fung; CHECK: blr
24288cdbeabSAlbion Fung}
24388cdbeabSAlbion Fung
24488cdbeabSAlbion Fungdefine <1 x i128> @test_vcmpgtuq(<1 x i128> %x, <1 x i128> %y) {
24588cdbeabSAlbion Fung       %tmp = tail call <1 x i128> @llvm.ppc.altivec.vcmpgtuq(<1 x i128> %x, <1 x i128> %y)
24688cdbeabSAlbion Fung       ret <1 x i128> %tmp
24788cdbeabSAlbion Fung; CHECK-LABEL: test_vcmpgtuq
24888cdbeabSAlbion Fung; CHECK: vcmpgtuq {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
24988cdbeabSAlbion Fung; CHECK: blr
25088cdbeabSAlbion Fung}
251*2e7117f8SAmy Kwan
252*2e7117f8SAmy Kwandeclare i32 @llvm.ppc.altivec.vcmpequq.p(i32, <1 x i128>, <1 x i128>) nounwind readnone
253*2e7117f8SAmy Kwandeclare i32 @llvm.ppc.altivec.vcmpgtsq.p(i32, <1 x i128>, <1 x i128>) nounwind readnone
254*2e7117f8SAmy Kwandeclare i32 @llvm.ppc.altivec.vcmpgtuq.p(i32, <1 x i128>, <1 x i128>) nounwind readnone
255*2e7117f8SAmy Kwan
256*2e7117f8SAmy Kwandefine i32 @test_vcmpequq_p(<1 x i128> %x, <1 x i128> %y) {
257*2e7117f8SAmy Kwan      %tmp = tail call i32 @llvm.ppc.altivec.vcmpequq.p(i32 2, <1 x i128> %x, <1 x i128> %y)
258*2e7117f8SAmy Kwan      ret i32 %tmp
259*2e7117f8SAmy Kwan; CHECK-LABEL: test_vcmpequq_p:
260*2e7117f8SAmy Kwan; CHECK: vcmpequq. {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
261*2e7117f8SAmy Kwan; CHECK: blr
262*2e7117f8SAmy Kwan}
263*2e7117f8SAmy Kwan
264*2e7117f8SAmy Kwandefine i32 @test_vcmpgtsq_p(<1 x i128> %x, <1 x i128> %y) {
265*2e7117f8SAmy Kwan      %tmp = tail call i32 @llvm.ppc.altivec.vcmpgtsq.p(i32 2, <1 x i128> %x, <1 x i128> %y)
266*2e7117f8SAmy Kwan      ret i32 %tmp
267*2e7117f8SAmy Kwan; CHECK-LABEL: test_vcmpgtsq_p
268*2e7117f8SAmy Kwan; CHECK: vcmpgtsq. {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
269*2e7117f8SAmy Kwan; CHECK: blr
270*2e7117f8SAmy Kwan}
271*2e7117f8SAmy Kwan
272*2e7117f8SAmy Kwandefine i32 @test_vcmpgtuq_p(<1 x i128> %x, <1 x i128> %y) {
273*2e7117f8SAmy Kwan      %tmp = tail call i32 @llvm.ppc.altivec.vcmpgtuq.p(i32 2, <1 x i128> %x, <1 x i128> %y)
274*2e7117f8SAmy Kwan      ret i32 %tmp
275*2e7117f8SAmy Kwan; CHECK-LABEL: test_vcmpgtuq_p
276*2e7117f8SAmy Kwan; CHECK: vcmpgtuq. {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}
277*2e7117f8SAmy Kwan; CHECK: blr
278*2e7117f8SAmy Kwan}
279