Commit 6895fffb by Bill Schmidt Committed by William Schmidt

crypto.md (crypto_vpmsum<CR_char>): Change TARGET_CRYPTO to TARGET_P8_VECTOR>

[gcc]

2015-04-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/crypto.md (crypto_vpmsum<CR_char>): Change
	TARGET_CRYPTO to TARGET_P8_VECTOR>
	(crypto_vpermxor_<mode>): Likewise.
	* config/rs6000/rs6000-builtin.def (BU_CRYPTO_2A): New #define.
	(BU_CRYPTO_3A): Likewise.
	(BU_CRYPTO_OVERLOAD_2A): Rename from BU_CRYPTO_OVERLOAD_2.
	(BU_CRYPTO_OVERLOAD_3A): New #define.
	(VPMSUMB): Change from BU_CRYPTO_2 to BU_CRYPTO_2A.
	(VPMSUMH): Likewise.
	(VPMSUMW): Likewise.
	(VPMSUMD): Likewise.
	(VPERMXOR_V2DI): Change from BU_CRYPTO_3 to BU_CRYPTO_3A.
	(VPERMXOR_V4SI): Likewise.
	(VPERMXOR_V8HI): Likewise.
	(VPERMXOR_V16QI): Likewise.
	(VPMSUM): Change from BU_CRYPTO_OVERLOAD_2 to
	BU_CRYPTO_OVERLOAD_2A.
	(VPERMXOR): Change from BU_CRYPTO_OVERLOAD3 to
	BU_CRYPTO_OVERLOAD_3A.
	* config/rs6000/rs6000.opt (mcrypto): Change description of
	option.

[gcc/testsuite]

2015-04-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/crypto-builtin-2.c: New.

From-SVN: r222362
parent f3b0bb7a
2015-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/crypto.md (crypto_vpmsum<CR_char>): Change
TARGET_CRYPTO to TARGET_P8_VECTOR>
(crypto_vpermxor_<mode>): Likewise.
* config/rs6000/rs6000-builtin.def (BU_CRYPTO_2A): New #define.
(BU_CRYPTO_3A): Likewise.
(BU_CRYPTO_OVERLOAD_2A): Rename from BU_CRYPTO_OVERLOAD_2.
(BU_CRYPTO_OVERLOAD_3A): New #define.
(VPMSUMB): Change from BU_CRYPTO_2 to BU_CRYPTO_2A.
(VPMSUMH): Likewise.
(VPMSUMW): Likewise.
(VPMSUMD): Likewise.
(VPERMXOR_V2DI): Change from BU_CRYPTO_3 to BU_CRYPTO_3A.
(VPERMXOR_V4SI): Likewise.
(VPERMXOR_V8HI): Likewise.
(VPERMXOR_V16QI): Likewise.
(VPMSUM): Change from BU_CRYPTO_OVERLOAD_2 to
BU_CRYPTO_OVERLOAD_2A.
(VPERMXOR): Change from BU_CRYPTO_OVERLOAD3 to
BU_CRYPTO_OVERLOAD_3A.
* config/rs6000/rs6000.opt (mcrypto): Change description of
option.
2015-04-23 Richard Biener <rguenther@suse.de> 2015-04-23 Richard Biener <rguenther@suse.de>
* passes.def: Remove copy propagation passes run directly after CCP. * passes.def: Remove copy propagation passes run directly after CCP.
......
...@@ -18,6 +18,15 @@ ...@@ -18,6 +18,15 @@
;; along with GCC; see the file COPYING3. If not see ;; along with GCC; see the file COPYING3. If not see
;; <http://www.gnu.org/licenses/>. ;; <http://www.gnu.org/licenses/>.
;; NOTE: Although this file contains all the instructions from
;; section 5.11 of ISA 2.07, only those in sections 5.11.1 and
;; 5.11.2 are in Category:Vector.Crypto. Those are the only
;; ones controlled by -m[no-]crypto.
;; FIXME: The builtin names for the instructions in this file
;; are likely to be deprecated in favor of other names to be
;; agreed upon with the XL compilers and LLVM.
(define_c_enum "unspec" (define_c_enum "unspec"
[UNSPEC_VCIPHER [UNSPEC_VCIPHER
UNSPEC_VNCIPHER UNSPEC_VNCIPHER
...@@ -65,7 +74,7 @@ ...@@ -65,7 +74,7 @@
(unspec:CR_mode [(match_operand:CR_mode 1 "register_operand" "v") (unspec:CR_mode [(match_operand:CR_mode 1 "register_operand" "v")
(match_operand:CR_mode 2 "register_operand" "v")] (match_operand:CR_mode 2 "register_operand" "v")]
UNSPEC_VPMSUM))] UNSPEC_VPMSUM))]
"TARGET_CRYPTO" "TARGET_P8_VECTOR"
"vpmsum<CR_char> %0,%1,%2" "vpmsum<CR_char> %0,%1,%2"
[(set_attr "type" "crypto")]) [(set_attr "type" "crypto")])
...@@ -76,7 +85,7 @@ ...@@ -76,7 +85,7 @@
(match_operand:CR_mode 2 "register_operand" "v") (match_operand:CR_mode 2 "register_operand" "v")
(match_operand:CR_mode 3 "register_operand" "v")] (match_operand:CR_mode 3 "register_operand" "v")]
UNSPEC_VPERMXOR))] UNSPEC_VPERMXOR))]
"TARGET_CRYPTO" "TARGET_P8_VECTOR"
"vpermxor %0,%1,%2,%3" "vpermxor %0,%1,%2,%3"
[(set_attr "type" "crypto")]) [(set_attr "type" "crypto")])
......
...@@ -392,6 +392,14 @@ ...@@ -392,6 +392,14 @@
| RS6000_BTC_BINARY), \ | RS6000_BTC_BINARY), \
CODE_FOR_ ## ICODE) /* ICODE */ CODE_FOR_ ## ICODE) /* ICODE */
#define BU_CRYPTO_2A(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \
RS6000_BTM_P8_VECTOR, /* MASK */ \
(RS6000_BTC_ ## ATTR /* ATTR */ \
| RS6000_BTC_BINARY), \
CODE_FOR_ ## ICODE) /* ICODE */
#define BU_CRYPTO_3(ENUM, NAME, ATTR, ICODE) \ #define BU_CRYPTO_3(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \ RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \ "__builtin_crypto_" NAME, /* NAME */ \
...@@ -400,6 +408,14 @@ ...@@ -400,6 +408,14 @@
| RS6000_BTC_TERNARY), \ | RS6000_BTC_TERNARY), \
CODE_FOR_ ## ICODE) /* ICODE */ CODE_FOR_ ## ICODE) /* ICODE */
#define BU_CRYPTO_3A(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \
RS6000_BTM_P8_VECTOR, /* MASK */ \
(RS6000_BTC_ ## ATTR /* ATTR */ \
| RS6000_BTC_TERNARY), \
CODE_FOR_ ## ICODE) /* ICODE */
#define BU_CRYPTO_OVERLOAD_1(ENUM, NAME) \ #define BU_CRYPTO_OVERLOAD_1(ENUM, NAME) \
RS6000_BUILTIN_1 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \ RS6000_BUILTIN_1 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \ "__builtin_crypto_" NAME, /* NAME */ \
...@@ -408,10 +424,10 @@ ...@@ -408,10 +424,10 @@
| RS6000_BTC_UNARY), \ | RS6000_BTC_UNARY), \
CODE_FOR_nothing) /* ICODE */ CODE_FOR_nothing) /* ICODE */
#define BU_CRYPTO_OVERLOAD_2(ENUM, NAME) \ #define BU_CRYPTO_OVERLOAD_2A(ENUM, NAME) \
RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \ RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \ "__builtin_crypto_" NAME, /* NAME */ \
RS6000_BTM_CRYPTO, /* MASK */ \ RS6000_BTM_P8_VECTOR, /* MASK */ \
(RS6000_BTC_OVERLOADED /* ATTR */ \ (RS6000_BTC_OVERLOADED /* ATTR */ \
| RS6000_BTC_BINARY), \ | RS6000_BTC_BINARY), \
CODE_FOR_nothing) /* ICODE */ CODE_FOR_nothing) /* ICODE */
...@@ -424,6 +440,14 @@ ...@@ -424,6 +440,14 @@
| RS6000_BTC_TERNARY), \ | RS6000_BTC_TERNARY), \
CODE_FOR_nothing) /* ICODE */ CODE_FOR_nothing) /* ICODE */
#define BU_CRYPTO_OVERLOAD_3A(ENUM, NAME) \
RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_crypto_" NAME, /* NAME */ \
RS6000_BTM_P8_VECTOR, /* MASK */ \
(RS6000_BTC_OVERLOADED /* ATTR */ \
| RS6000_BTC_TERNARY), \
CODE_FOR_nothing) /* ICODE */
/* HTM convenience macros. */ /* HTM convenience macros. */
#define BU_HTM_0(ENUM, NAME, ATTR, ICODE) \ #define BU_HTM_0(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \ RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
...@@ -1611,24 +1635,24 @@ BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher) ...@@ -1611,24 +1635,24 @@ BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher)
BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", CONST, crypto_vcipherlast) BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", CONST, crypto_vcipherlast)
BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher) BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher)
BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", CONST, crypto_vncipherlast) BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", CONST, crypto_vncipherlast)
BU_CRYPTO_2 (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb) BU_CRYPTO_2A (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb)
BU_CRYPTO_2 (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh) BU_CRYPTO_2A (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh)
BU_CRYPTO_2 (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw) BU_CRYPTO_2A (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw)
BU_CRYPTO_2 (VPMSUMD, "vpmsumd", CONST, crypto_vpmsumd) BU_CRYPTO_2A (VPMSUMD, "vpmsumd", CONST, crypto_vpmsumd)
/* 3 argument crypto functions. */ /* 3 argument crypto functions. */
BU_CRYPTO_3 (VPERMXOR_V2DI, "vpermxor_v2di", CONST, crypto_vpermxor_v2di) BU_CRYPTO_3A (VPERMXOR_V2DI, "vpermxor_v2di", CONST, crypto_vpermxor_v2di)
BU_CRYPTO_3 (VPERMXOR_V4SI, "vpermxor_v4si", CONST, crypto_vpermxor_v4si) BU_CRYPTO_3A (VPERMXOR_V4SI, "vpermxor_v4si", CONST, crypto_vpermxor_v4si)
BU_CRYPTO_3 (VPERMXOR_V8HI, "vpermxor_v8hi", CONST, crypto_vpermxor_v8hi) BU_CRYPTO_3A (VPERMXOR_V8HI, "vpermxor_v8hi", CONST, crypto_vpermxor_v8hi)
BU_CRYPTO_3 (VPERMXOR_V16QI, "vpermxor_v16qi", CONST, crypto_vpermxor_v16qi) BU_CRYPTO_3A (VPERMXOR_V16QI, "vpermxor_v16qi", CONST, crypto_vpermxor_v16qi)
BU_CRYPTO_3 (VSHASIGMAW, "vshasigmaw", CONST, crypto_vshasigmaw) BU_CRYPTO_3 (VSHASIGMAW, "vshasigmaw", CONST, crypto_vshasigmaw)
BU_CRYPTO_3 (VSHASIGMAD, "vshasigmad", CONST, crypto_vshasigmad) BU_CRYPTO_3 (VSHASIGMAD, "vshasigmad", CONST, crypto_vshasigmad)
/* 2 argument crypto overloaded functions. */ /* 2 argument crypto overloaded functions. */
BU_CRYPTO_OVERLOAD_2 (VPMSUM, "vpmsum") BU_CRYPTO_OVERLOAD_2A (VPMSUM, "vpmsum")
/* 3 argument crypto overloaded functions. */ /* 3 argument crypto overloaded functions. */
BU_CRYPTO_OVERLOAD_3 (VPERMXOR, "vpermxor") BU_CRYPTO_OVERLOAD_3A (VPERMXOR, "vpermxor")
BU_CRYPTO_OVERLOAD_3 (VSHASIGMA, "vshasigma") BU_CRYPTO_OVERLOAD_3 (VSHASIGMA, "vshasigma")
......
...@@ -563,7 +563,7 @@ Use/do not use vector and scalar instructions added in ISA 2.07. ...@@ -563,7 +563,7 @@ Use/do not use vector and scalar instructions added in ISA 2.07.
mcrypto mcrypto
Target Report Mask(CRYPTO) Var(rs6000_isa_flags) Target Report Mask(CRYPTO) Var(rs6000_isa_flags)
Use ISA 2.07 crypto instructions Use ISA 2.07 Category:Vector.Crypto instructions
mdirect-move mdirect-move
Target Report Mask(DIRECT_MOVE) Var(rs6000_isa_flags) Target Report Mask(DIRECT_MOVE) Var(rs6000_isa_flags)
......
2015-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/crypto-builtin-2.c: New.
2015-04-23 Andre Vehreschild <vehre@gmx.de> 2015-04-23 Andre Vehreschild <vehre@gmx.de>
PR fortran/60322 PR fortran/60322
......
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
/* { dg-options "-O2 -mcpu=power8 -mno-crypto" } */
void use_builtins_d (__vector unsigned long long *p, __vector unsigned long long *q, __vector unsigned long long *r, __vector unsigned long long *s)
{
p[0] = __builtin_crypto_vcipher (q[0], r[0]); /* { dg-error "Builtin function __builtin_crypto_vcipher is not supported with the current options" } */
p[1] = __builtin_crypto_vcipherlast (q[1], r[1]); /* { dg-error "Builtin function __builtin_crypto_vcipherlast is not supported with the current options" } */
p[2] = __builtin_crypto_vncipher (q[2], r[2]); /* { dg-error "Builtin function __builtin_crypto_vncipher is not supported with the current options" } */
p[3] = __builtin_crypto_vncipherlast (q[3], r[3]); /* { dg-error "Builtin function __builtin_crypto_vncipherlast is not supported with the current options" } */
p[4] = __builtin_crypto_vpermxor (q[4], r[4], s[4]);
p[5] = __builtin_crypto_vpmsumd (q[5], r[5]);
p[6] = __builtin_crypto_vshasigmad (q[6], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmad is not supported with the current options" } */
p[7] = __builtin_crypto_vsbox (q[7]); /* { dg-error "Builtin function __builtin_crypto_vsbox is not supported with the current options" } */
}
void use_builtins_w (__vector unsigned int *p, __vector unsigned int *q, __vector unsigned int *r, __vector unsigned int *s)
{
p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]);
p[1] = __builtin_crypto_vpmsumw (q[1], r[1]);
p[2] = __builtin_crypto_vshasigmaw (q[2], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmaw is not supported with the current options" } */
}
void use_builtins_h (__vector unsigned short *p, __vector unsigned short *q, __vector unsigned short *r, __vector unsigned short *s)
{
p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]);
p[1] = __builtin_crypto_vpmsumh (q[1], r[1]);
}
void use_builtins_b (__vector unsigned char *p, __vector unsigned char *q, __vector unsigned char *r, __vector unsigned char *s)
{
p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]);
p[1] = __builtin_crypto_vpmsumb (q[1], r[1]);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment