13ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// REQUIRES: powerpc-registered-target
23ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown \
33ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: -target-feature +crypto -target-feature +power8-vector \
43ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: -emit-llvm %s -o - | FileCheck %s
53ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
63ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -faltivec -triple powerpc64-unknown-unknown \
73ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: -target-feature +crypto -target-feature +power8-vector \
83ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: -emit-llvm %s -o - | FileCheck %s
93ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#include <altivec.h>
103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define B_INIT1 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, \
113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 };
123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define B_INIT2 { 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, \
133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x70 };
143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define H_INIT1 { 0x0102, 0x0304, 0x0506, 0x0708, \
153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x090A, 0x0B0C, 0x0D0E, 0x0F10 };
163ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define H_INIT2 { 0x7172, 0x7374, 0x7576, 0x7778, \
173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x797A, 0x7B7C, 0x7D7E, 0x7F70 };
183ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define W_INIT1 { 0x01020304, 0x05060708, \
193ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x090A0B0C, 0x0D0E0F10 };
203ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define W_INIT2 { 0x71727374, 0x75767778, \
213ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x797A7B7C, 0x7D7E7F70 };
223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define D_INIT1 { 0x0102030405060708, \
233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x090A0B0C0D0E0F10 };
243ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#define D_INIT2 { 0x7172737475767778, \
253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar                  0x797A7B7C7D7E7F70 };
263ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpmsumb
283ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned char test_vpmsumb(void)
293ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char a = B_INIT1
313ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char b = B_INIT2
323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpmsumb(a, b);
3387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumb
343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpmsumh
373ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned short test_vpmsumh(void)
383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short a = H_INIT1
403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short b = H_INIT2
413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpmsumh(a, b);
4287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumh
433ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
443ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpmsumw
463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vpmsumw(void)
473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
483ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
493ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int b = W_INIT2
503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpmsumw(a, b);
5187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumw
523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
533ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
543ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpmsumd
553ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vpmsumd(void)
563ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
583ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
593ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpmsumd(a, b);
6087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumd
613ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
623ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
633ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsbox
643ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vsbox(void)
653ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
663ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
673ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vsbox(a);
683ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vsbox
693ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
713ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpermxorb
723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned char test_vpermxorb(void)
733ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
743ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char a = B_INIT1
753ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char b = B_INIT2
763ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char c = B_INIT2
773ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpermxor(a, b, c);
783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
793ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
803ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpermxorh
823ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned short test_vpermxorh(void)
833ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
843ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short a = H_INIT1
853ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short b = H_INIT2
863ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short c = H_INIT2
873ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpermxor(a, b, c);
883ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
893ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
903ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
913ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpermxorw
923ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vpermxorw(void)
933ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
943ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
953ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int b = W_INIT2
963ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int c = W_INIT2
973ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpermxor(a, b, c);
983ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
993ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1003ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1013ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpermxord
1023ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vpermxord(void)
1033ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1043ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1053ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1063ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long c = D_INIT2
1073ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vpermxor(a, b, c);
1083ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
1093ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcipher
1123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vcipher(void)
1133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1163ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vcipher(a, b);
1173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipher
1183ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1193ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1203ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcipherlast
1213ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vcipherlast(void)
1223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1243ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vcipherlast(a, b);
1263ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipherlast
1273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1283ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
12987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vncipher
1303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vncipher(void)
1313ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1333ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vncipher(a, b);
1353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipher
1363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1373ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vncipherlast
1393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vncipherlast(void)
1403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1433ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vncipherlast(a, b);
1443ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipherlast
1453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshasigmaw
1483ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vshasigmaw(void)
1493ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
1513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vshasigmaw(a, 1, 15);
1523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmaw
1533ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1543ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1553ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshasigmad
1563ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vshasigmad(void)
1573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1583ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT2
1593ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_altivec_crypto_vshasigmad(a, 1, 15);
1603ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmad
1613ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1623ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1633ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// Test cases for the builtins the way they are exposed to
1643ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// users through altivec.h
1653ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpmsumb_e
1663ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned char test_vpmsumb_e(void)
1673ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1683ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char a = B_INIT1
1693ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char b = B_INIT2
1703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpmsumb(a, b);
17187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumb
1723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1733ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1743ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpmsumh_e
1753ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned short test_vpmsumh_e(void)
1763ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1773ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short a = H_INIT1
1783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short b = H_INIT2
1793ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpmsumb(a, b);
18087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumh
1813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1823ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1833ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpmsumw_e
1843ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vpmsumw_e(void)
1853ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1863ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
1873ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int b = W_INIT2
1883ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpmsumb(a, b);
18987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumw
1903ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
1913ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
1923ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpmsumd_e
1933ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vpmsumd_e(void)
1943ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
1953ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
1963ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
1973ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpmsumb(a, b);
19887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumd
1993ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2003ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2013ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsbox_e
2023ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vsbox_e(void)
2033ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2043ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2053ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vsbox(a);
2063ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vsbox
2073ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2083ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2093ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpermxorb_e
2103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned char test_vpermxorb_e(void)
2113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char a = B_INIT1
2133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char b = B_INIT2
2143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned char c = B_INIT2
2153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpermxor(a, b, c);
2163ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
2173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2183ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2193ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpermxorh_e
2203ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned short test_vpermxorh_e(void)
2213ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short a = H_INIT1
2233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short b = H_INIT2
2243ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned short c = H_INIT2
2253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpermxor(a, b, c);
22687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
2273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2283ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2293ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpermxorw_e
2303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vpermxorw_e(void)
2313ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
2333ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int b = W_INIT2
2343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int c = W_INIT2
2353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpermxor(a, b, c);
2363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
2373ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpermxord_e
2403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vpermxord_e(void)
2413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2433ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
2443ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long c = D_INIT2
2453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vpermxor(a, b, c);
2463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpermxor
2473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2483ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2493ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcipher_e
2503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vcipher_e(void)
2513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2523ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2533ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
2543ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vcipher(a, b);
2553ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipher
2563ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2573ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2583ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcipherlast_e
2593ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vcipherlast_e(void)
2603ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2613ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2623ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
2633ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vcipherlast(a, b);
2643ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipherlast
2653ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2663ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2673ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vncipher_e
2683ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vncipher_e(void)
2693ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2703ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2713ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
2723ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vncipher(a, b);
2733ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipher
2743ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2753ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2763ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vncipherlast_e
2773ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vncipherlast_e(void)
2783ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2793ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT1
2803ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long b = D_INIT2
2813ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vncipherlast(a, b);
2823ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipherlast
2833ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2843ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2853ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshasigmaw_e
2863ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned int test_vshasigmaw_e(void)
2873ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2883ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned int a = W_INIT1
2893ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vshasigmaw(a, 1, 15);
2903ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmaw
2913ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
2923ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
2933ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshasigmad_e
2943ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarvector unsigned long long test_vshasigmad_e(void)
2953ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar{
2963ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  vector unsigned long long a = D_INIT2
2973ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  return __builtin_crypto_vshasigmad(a, 0, 15);
2983ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmad
2993ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar}
3003ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar
30187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_sbox_be
30287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned char test_vec_sbox_be(void)
30387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
30487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
30587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_sbox_be(a);
30687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vsbox
30787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
30887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
30987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_cipher_be
31087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned char test_vec_cipher_be(void)
31187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
31287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
31387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char b = B_INIT2
31487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_cipher_be(a, b);
31587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipher
31687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
31787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
31887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_cipherlast_be
31987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned char test_vec_cipherlast_be(void)
32087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
32187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
32287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char b = B_INIT2
32387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_cipherlast_be(a, b);
32487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vcipherlast
32587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
32687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
32787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_ncipher_be
32887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned char test_vec_ncipher_be(void)
32987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
33087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
33187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char b = B_INIT2
33287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_ncipher_be(a, b);
33387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipher
33487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
33587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
33687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_ncipherlast_be
33787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned char test_vec_ncipherlast_be(void)
33887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
33987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
34087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char b = B_INIT2
34187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_ncipherlast_be(a, b);
34287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vncipherlast
34387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
34487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
34587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_shasigma_bew
34687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned int test_vec_shasigma_bew(void)
34787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
34887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned int a = W_INIT1
34987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_shasigma_be(a, 1, 15);
35087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmaw
35187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
35287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
35387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_shasigma_bed
35487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned long long test_vec_shasigma_bed(void)
35587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
35687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned long long a = D_INIT2
35787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_shasigma_be(a, 1, 15);
35887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vshasigmad
35987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
36087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
36187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_pmsum_beb
36287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned short test_vec_pmsum_beb(void)
36387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
36487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char a = B_INIT1
36587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned char b = B_INIT2
36687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_pmsum_be(a, b);
36787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumb
36887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
36987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
37087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_pmsum_beh
37187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned int test_vec_pmsum_beh(void)
37287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
37387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned short a = H_INIT1
37487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned short b = H_INIT2
37587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_pmsum_be(a, b);
37687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumh
37787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
37887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
37987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_pmsum_bew
38087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned long long test_vec_pmsum_bew(void)
38187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
38287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned int a = W_INIT1
38387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned int b = W_INIT2
38487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_pmsum_be(a, b);
38587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumw
38687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
38787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
38887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-LABEL: @test_vec_pmsum_bed
38987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvector unsigned __int128 test_vec_pmsum_bed(void)
39087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar{
39187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned long long a = D_INIT1
39287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  vector unsigned long long b = D_INIT2
39387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return vec_pmsum_be(a, b);
39487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.crypto.vpmsumd
39587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
39687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
397