Fix LWP.
2009-12-14 Jakub Jelinek <jakub@redhat.com> Sebastian Pop <sebastian.pop@amd.com> * config/i386/i386-builtin-types.def (PVOID): Declared. (VOID_FTYPE_PVOID): Declared. (PVOID_FTYPE_VOID): Declared. (UCHAR_FTYPE_USHORT_UINT_USHORT): Removed. (VOID_FTYPE_USHORT_UINT_USHORT): Removed. * config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32, IX86_BUILTIN_LLWPCB64, IX86_BUILTIN_SLWPCB16, IX86_BUILTIN_SLWPCB32, IX86_BUILTIN_SLWPCB64, IX86_BUILTIN_LWPVAL16, IX86_BUILTIN_LWPINS16): Removed. (IX86_BUILTIN_LLWPCB, IX86_BUILTIN_SLWPCB): New. (bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb, __builtin_ia32_slwpcb, __builtin_ia32_lwpval32, __builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and __builtin_ia32_lwpins64. (ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID. Do not handle VOID_FTYPE_USHORT_UINT_USHORT and UCHAR_FTYPE_USHORT_UINT_USHORT. Warn when the third operand is not an immediate. Also handle builtin functions with 3 arguments. (ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and IX86_BUILTIN_SLWPCB. * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC, UNSPEC_SLWP_INTRINSIC): Renamed UNSPECV_LLWP_INTRINSIC and UNSPECV_SLWP_INTRINSIC. (memory attribute): Handle lwp. (lwp*): Rewrite all the insn patterns for LWP. * config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64, __slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed. (__llwpcb, __slwpcb): New. testsuite/ * gcc.target/i386/sse-12.c: Add -mpopcnt and -mlwp. * gcc.target/i386/sse-13.c: Same. (__builtin_ia32_lwpval32, __builtin_ia32_lwpval64, __builtin_ia32_lwpins32, __builtin_ia32_lwpins64): Added testcases. * gcc.target/i386/sse-14.c: Add -mpopcnt -mabm -mlwp. Added tests for __lwpval32, __lwpins32, __lwpval64, and __lwpins64. * gcc.target/i386/sse-22.c: Added tests for popcnt, abm, and lwp. * gcc.target/i386/sse-23.c: Same. Co-Authored-By: Sebastian Pop <sebastian.pop@amd.com> From-SVN: r155217
This commit is contained in:
parent
e49fd61b53
commit
519517fd49
@ -1,3 +1,44 @@
|
||||
2009-12-14 Jakub Jelinek <jakub@redhat.com>
|
||||
Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
* config/i386/i386-builtin-types.def (PVOID): Declared.
|
||||
(VOID_FTYPE_PVOID): Declared.
|
||||
(PVOID_FTYPE_VOID): Declared.
|
||||
(UCHAR_FTYPE_USHORT_UINT_USHORT): Removed.
|
||||
(VOID_FTYPE_USHORT_UINT_USHORT): Removed.
|
||||
* config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32,
|
||||
IX86_BUILTIN_LLWPCB64, IX86_BUILTIN_SLWPCB16, IX86_BUILTIN_SLWPCB32,
|
||||
IX86_BUILTIN_SLWPCB64, IX86_BUILTIN_LWPVAL16, IX86_BUILTIN_LWPINS16):
|
||||
Removed.
|
||||
(IX86_BUILTIN_LLWPCB, IX86_BUILTIN_SLWPCB): New.
|
||||
(bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb,
|
||||
__builtin_ia32_slwpcb, __builtin_ia32_lwpval32,
|
||||
__builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and
|
||||
__builtin_ia32_lwpins64.
|
||||
(ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID.
|
||||
Do not handle VOID_FTYPE_USHORT_UINT_USHORT and
|
||||
UCHAR_FTYPE_USHORT_UINT_USHORT. Warn when the third operand is
|
||||
not an immediate. Also handle builtin functions with 3 arguments.
|
||||
(ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and
|
||||
IX86_BUILTIN_SLWPCB.
|
||||
* config/i386/i386.md (UNSPEC_LLWP_INTRINSIC, UNSPEC_SLWP_INTRINSIC):
|
||||
Renamed UNSPECV_LLWP_INTRINSIC and UNSPECV_SLWP_INTRINSIC.
|
||||
(memory attribute): Handle lwp.
|
||||
(lwp*): Rewrite all the insn patterns for LWP.
|
||||
* config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64,
|
||||
__slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed.
|
||||
(__llwpcb, __slwpcb): New.
|
||||
|
||||
testsuite/
|
||||
* gcc.target/i386/sse-12.c: Add -mpopcnt and -mlwp.
|
||||
* gcc.target/i386/sse-13.c: Same.
|
||||
(__builtin_ia32_lwpval32, __builtin_ia32_lwpval64,
|
||||
__builtin_ia32_lwpins32, __builtin_ia32_lwpins64): Added testcases.
|
||||
* gcc.target/i386/sse-14.c: Add -mpopcnt -mabm -mlwp.
|
||||
Added tests for __lwpval32, __lwpins32, __lwpval64, and __lwpins64.
|
||||
* gcc.target/i386/sse-22.c: Added tests for popcnt, abm, and lwp.
|
||||
* gcc.target/i386/sse-23.c: Same.
|
||||
|
||||
2009-12-14 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
|
||||
|
||||
* dominance.c (set_immediate_dominator): Don't mark as inline.
|
||||
|
@ -104,6 +104,7 @@ DEF_POINTER_TYPE (PCDOUBLE, DOUBLE, CONST)
|
||||
DEF_POINTER_TYPE (PCFLOAT, FLOAT, CONST)
|
||||
DEF_POINTER_TYPE (PCHAR, CHAR)
|
||||
DEF_POINTER_TYPE (PCVOID, VOID, CONST)
|
||||
DEF_POINTER_TYPE (PVOID, VOID)
|
||||
DEF_POINTER_TYPE (PDOUBLE, DOUBLE)
|
||||
DEF_POINTER_TYPE (PFLOAT, FLOAT)
|
||||
DEF_POINTER_TYPE (PINT, INT)
|
||||
@ -195,6 +196,8 @@ DEF_FUNCTION_TYPE (V8SF, V8SI)
|
||||
DEF_FUNCTION_TYPE (V8SI, V4SI)
|
||||
DEF_FUNCTION_TYPE (V8SI, V8SF)
|
||||
DEF_FUNCTION_TYPE (VOID, PCVOID)
|
||||
DEF_FUNCTION_TYPE (VOID, PVOID)
|
||||
DEF_FUNCTION_TYPE (PVOID, VOID)
|
||||
DEF_FUNCTION_TYPE (VOID, UNSIGNED)
|
||||
|
||||
DEF_FUNCTION_TYPE (DI, V2DI, INT)
|
||||
@ -301,7 +304,6 @@ DEF_FUNCTION_TYPE (VOID, UNSIGNED, UNSIGNED)
|
||||
DEF_FUNCTION_TYPE (INT, V16QI, V16QI, INT)
|
||||
DEF_FUNCTION_TYPE (UCHAR, UINT, UINT, UINT)
|
||||
DEF_FUNCTION_TYPE (UCHAR, UINT64, UINT, UINT)
|
||||
DEF_FUNCTION_TYPE (UCHAR, USHORT, UINT, USHORT)
|
||||
DEF_FUNCTION_TYPE (V16HI, V16HI, V16HI, V16HI)
|
||||
DEF_FUNCTION_TYPE (V16QI, V16QI, QI, INT)
|
||||
DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI, INT)
|
||||
@ -343,7 +345,6 @@ DEF_FUNCTION_TYPE (VOID, PV4SF, V4SF, V4SF)
|
||||
DEF_FUNCTION_TYPE (VOID, PV8SF, V8SF, V8SF)
|
||||
DEF_FUNCTION_TYPE (VOID, UINT, UINT, UINT)
|
||||
DEF_FUNCTION_TYPE (VOID, UINT64, UINT, UINT)
|
||||
DEF_FUNCTION_TYPE (VOID, USHORT, UINT, USHORT)
|
||||
DEF_FUNCTION_TYPE (VOID, V16QI, V16QI, PCHAR)
|
||||
DEF_FUNCTION_TYPE (VOID, V8QI, V8QI, PCHAR)
|
||||
DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DI)
|
||||
|
@ -21251,16 +21251,10 @@ enum ix86_builtins
|
||||
IX86_BUILTIN_VPCOMTRUEQ,
|
||||
|
||||
/* LWP instructions. */
|
||||
IX86_BUILTIN_LLWPCB16,
|
||||
IX86_BUILTIN_LLWPCB32,
|
||||
IX86_BUILTIN_LLWPCB64,
|
||||
IX86_BUILTIN_SLWPCB16,
|
||||
IX86_BUILTIN_SLWPCB32,
|
||||
IX86_BUILTIN_SLWPCB64,
|
||||
IX86_BUILTIN_LWPVAL16,
|
||||
IX86_BUILTIN_LLWPCB,
|
||||
IX86_BUILTIN_SLWPCB,
|
||||
IX86_BUILTIN_LWPVAL32,
|
||||
IX86_BUILTIN_LWPVAL64,
|
||||
IX86_BUILTIN_LWPINS16,
|
||||
IX86_BUILTIN_LWPINS32,
|
||||
IX86_BUILTIN_LWPINS64,
|
||||
|
||||
@ -21532,20 +21526,12 @@ static const struct builtin_description bdesc_special_args[] =
|
||||
{ OPTION_MASK_ISA_AVX, CODE_FOR_avx_maskstorepd256, "__builtin_ia32_maskstorepd256", IX86_BUILTIN_MASKSTOREPD256, UNKNOWN, (int) VOID_FTYPE_PV4DF_V4DF_V4DF },
|
||||
{ OPTION_MASK_ISA_AVX, CODE_FOR_avx_maskstoreps256, "__builtin_ia32_maskstoreps256", IX86_BUILTIN_MASKSTOREPS256, UNKNOWN, (int) VOID_FTYPE_PV8SF_V8SF_V8SF },
|
||||
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcbhi1, "__builtin_ia32_llwpcb16", IX86_BUILTIN_LLWPCB16, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcbsi1, "__builtin_ia32_llwpcb32", IX86_BUILTIN_LLWPCB32, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcbdi1, "__builtin_ia32_llwpcb64", IX86_BUILTIN_LLWPCB64, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcbhi1, "__builtin_ia32_slwpcb16", IX86_BUILTIN_SLWPCB16, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcbsi1, "__builtin_ia32_slwpcb32", IX86_BUILTIN_SLWPCB32, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcbdi1, "__builtin_ia32_slwpcb64", IX86_BUILTIN_SLWPCB64, UNKNOWN, (int) VOID_FTYPE_VOID },
|
||||
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvalhi3, "__builtin_ia32_lwpval16", IX86_BUILTIN_LWPVAL16, UNKNOWN, (int) VOID_FTYPE_USHORT_UINT_USHORT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvalsi3, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvaldi3, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinshi3, "__builtin_ia32_lwpins16", IX86_BUILTIN_LWPINS16, UNKNOWN, (int) UCHAR_FTYPE_USHORT_UINT_USHORT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinssi3, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcb, "__builtin_ia32_llwpcb", IX86_BUILTIN_LLWPCB, UNKNOWN, (int) VOID_FTYPE_PVOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcb, "__builtin_ia32_slwpcb", IX86_BUILTIN_SLWPCB, UNKNOWN, (int) PVOID_FTYPE_VOID },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvalsi3, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL32, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvaldi3, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinssi3, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS32, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT },
|
||||
{ OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT },
|
||||
|
||||
};
|
||||
|
||||
@ -23734,7 +23720,7 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||
{
|
||||
rtx op;
|
||||
enum machine_mode mode;
|
||||
} args[2];
|
||||
} args[3];
|
||||
enum insn_code icode = d->icode;
|
||||
bool last_arg_constant = false;
|
||||
const struct insn_data *insn_p = &insn_data[icode];
|
||||
@ -23761,6 +23747,7 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||
case V4DF_FTYPE_PCV2DF:
|
||||
case V4DF_FTYPE_PCDOUBLE:
|
||||
case V2DF_FTYPE_PCDOUBLE:
|
||||
case VOID_FTYPE_PVOID:
|
||||
nargs = 1;
|
||||
klass = load;
|
||||
memory = 0;
|
||||
@ -23804,15 +23791,14 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||
/* Reserve memory operand for target. */
|
||||
memory = ARRAY_SIZE (args);
|
||||
break;
|
||||
case VOID_FTYPE_USHORT_UINT_USHORT:
|
||||
case VOID_FTYPE_UINT_UINT_UINT:
|
||||
case VOID_FTYPE_UINT64_UINT_UINT:
|
||||
case UCHAR_FTYPE_USHORT_UINT_USHORT:
|
||||
case UCHAR_FTYPE_UINT_UINT_UINT:
|
||||
case UCHAR_FTYPE_UINT64_UINT_UINT:
|
||||
nargs = 3;
|
||||
klass = store;
|
||||
memory = 0;
|
||||
klass = load;
|
||||
memory = ARRAY_SIZE (args);
|
||||
last_arg_constant = true;
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
@ -23852,7 +23838,14 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||
if (!match)
|
||||
switch (icode)
|
||||
{
|
||||
default:
|
||||
case CODE_FOR_lwp_lwpvalsi3:
|
||||
case CODE_FOR_lwp_lwpvaldi3:
|
||||
case CODE_FOR_lwp_lwpinssi3:
|
||||
case CODE_FOR_lwp_lwpinsdi3:
|
||||
error ("the last argument must be a 32-bit immediate");
|
||||
return const0_rtx;
|
||||
|
||||
default:
|
||||
error ("the last argument must be an 8-bit immediate");
|
||||
return const0_rtx;
|
||||
}
|
||||
@ -23893,6 +23886,9 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||
case 2:
|
||||
pat = GEN_FCN (icode) (target, args[0].op, args[1].op);
|
||||
break;
|
||||
case 3:
|
||||
pat = GEN_FCN (icode) (target, args[0].op, args[1].op, args[2].op);
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
@ -24205,6 +24201,23 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
|
||||
return target;
|
||||
}
|
||||
|
||||
case IX86_BUILTIN_LLWPCB:
|
||||
arg0 = CALL_EXPR_ARG (exp, 0);
|
||||
op0 = expand_normal (arg0);
|
||||
icode = CODE_FOR_lwp_llwpcb;
|
||||
if (! (*insn_data[icode].operand[0].predicate) (op0, Pmode))
|
||||
op0 = copy_to_mode_reg (Pmode, op0);
|
||||
emit_insn (gen_lwp_llwpcb (op0));
|
||||
return 0;
|
||||
|
||||
case IX86_BUILTIN_SLWPCB:
|
||||
icode = CODE_FOR_lwp_slwpcb;
|
||||
if (!target
|
||||
|| ! (*insn_data[icode].operand[0].predicate) (target, Pmode))
|
||||
target = gen_reg_rtx (Pmode);
|
||||
emit_insn (gen_lwp_slwpcb (target));
|
||||
return target;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -204,10 +204,6 @@
|
||||
(UNSPEC_XOP_TRUEFALSE 152)
|
||||
(UNSPEC_XOP_PERMUTE 153)
|
||||
(UNSPEC_FRCZ 154)
|
||||
(UNSPEC_LLWP_INTRINSIC 155)
|
||||
(UNSPEC_SLWP_INTRINSIC 156)
|
||||
(UNSPECV_LWPVAL_INTRINSIC 157)
|
||||
(UNSPECV_LWPINS_INTRINSIC 158)
|
||||
|
||||
; For AES support
|
||||
(UNSPEC_AESENC 159)
|
||||
@ -251,7 +247,11 @@
|
||||
(UNSPECV_RDTSC 18)
|
||||
(UNSPECV_RDTSCP 19)
|
||||
(UNSPECV_RDPMC 20)
|
||||
(UNSPECV_VSWAPMOV 21)
|
||||
(UNSPECV_VSWAPMOV 21)
|
||||
(UNSPECV_LLWP_INTRINSIC 22)
|
||||
(UNSPECV_SLWP_INTRINSIC 23)
|
||||
(UNSPECV_LWPVAL_INTRINSIC 24)
|
||||
(UNSPECV_LWPINS_INTRINSIC 25)
|
||||
])
|
||||
|
||||
;; Constants to represent pcomtrue/pcomfalse variants
|
||||
@ -578,7 +578,7 @@
|
||||
;; if the instruction is complex.
|
||||
|
||||
(define_attr "memory" "none,load,store,both,unknown"
|
||||
(cond [(eq_attr "type" "other,multi,str")
|
||||
(cond [(eq_attr "type" "other,multi,str,lwp")
|
||||
(const_string "unknown")
|
||||
(eq_attr "type" "lea,fcmov,fpspc")
|
||||
(const_string "none")
|
||||
@ -20835,113 +20835,86 @@
|
||||
;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define_insn "lwp_llwpcbhi1"
|
||||
[(unspec [(match_operand:HI 0 "register_operand" "r")]
|
||||
UNSPEC_LLWP_INTRINSIC)]
|
||||
(define_expand "lwp_llwpcb"
|
||||
[(unspec_volatile [(match_operand 0 "register_operand" "r")]
|
||||
UNSPECV_LLWP_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"")
|
||||
|
||||
(define_insn "*lwp_llwpcb<mode>1"
|
||||
[(unspec_volatile [(match_operand:P 0 "register_operand" "r")]
|
||||
UNSPECV_LLWP_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"llwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "HI")])
|
||||
(set_attr "mode" "<MODE>")
|
||||
(set_attr "length" "5")])
|
||||
|
||||
(define_insn "lwp_llwpcbsi1"
|
||||
[(unspec [(match_operand:SI 0 "register_operand" "r")]
|
||||
UNSPEC_LLWP_INTRINSIC)]
|
||||
(define_expand "lwp_slwpcb"
|
||||
[(set (match_operand 0 "register_operand" "=r")
|
||||
(unspec_volatile [(const_int 0)] UNSPECV_SLWP_INTRINSIC))]
|
||||
"TARGET_LWP"
|
||||
"llwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "SI")])
|
||||
{
|
||||
if (TARGET_64BIT)
|
||||
emit_insn (gen_lwp_slwpcbdi (operands[0]));
|
||||
else
|
||||
emit_insn (gen_lwp_slwpcbsi (operands[0]));
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "lwp_llwpcbdi1"
|
||||
[(unspec [(match_operand:DI 0 "register_operand" "r")]
|
||||
UNSPEC_LLWP_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"llwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "DI")])
|
||||
|
||||
(define_insn "lwp_slwpcbhi1"
|
||||
[(unspec [(match_operand:HI 0 "register_operand" "r")]
|
||||
UNSPEC_SLWP_INTRINSIC)]
|
||||
(define_insn "lwp_slwpcb<mode>"
|
||||
[(set (match_operand:P 0 "register_operand" "=r")
|
||||
(unspec_volatile:P [(const_int 0)] UNSPECV_SLWP_INTRINSIC))]
|
||||
"TARGET_LWP"
|
||||
"slwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "HI")])
|
||||
(set_attr "mode" "<MODE>")
|
||||
(set_attr "length" "5")])
|
||||
|
||||
(define_insn "lwp_slwpcbsi1"
|
||||
[(unspec [(match_operand:SI 0 "register_operand" "r")]
|
||||
UNSPEC_SLWP_INTRINSIC)]
|
||||
(define_expand "lwp_lwpval<mode>3"
|
||||
[(unspec_volatile [(match_operand:SWI48 1 "register_operand" "r")
|
||||
(match_operand:SI 2 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 3 "const_int_operand" "i")]
|
||||
UNSPECV_LWPVAL_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"slwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "SI")])
|
||||
"/* Avoid unused variable warning. */
|
||||
(void) operand0;")
|
||||
|
||||
(define_insn "lwp_slwpcbdi1"
|
||||
[(unspec [(match_operand:DI 0 "register_operand" "r")]
|
||||
UNSPEC_SLWP_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"slwpcb\t%0"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "DI")])
|
||||
|
||||
(define_insn "lwp_lwpvalhi3"
|
||||
[(unspec_volatile [(match_operand:HI 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:HI 2 "const_int_operand" "")]
|
||||
UNSPECV_LWPVAL_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"lwpval\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "HI")])
|
||||
|
||||
(define_insn "lwp_lwpvalsi3"
|
||||
[(unspec_volatile [(match_operand:SI 0 "register_operand" "r")
|
||||
(define_insn "*lwp_lwpval<mode>3_1"
|
||||
[(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 2 "const_int_operand" "")]
|
||||
(match_operand:SI 2 "const_int_operand" "i")]
|
||||
UNSPECV_LWPVAL_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"lwpval\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "SI")])
|
||||
(set_attr "mode" "<MODE>")
|
||||
(set (attr "length")
|
||||
(symbol_ref "ix86_attr_length_address_default (insn) + 9"))])
|
||||
|
||||
(define_insn "lwp_lwpvaldi3"
|
||||
[(unspec_volatile [(match_operand:DI 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 2 "const_int_operand" "")]
|
||||
UNSPECV_LWPVAL_INTRINSIC)]
|
||||
(define_expand "lwp_lwpins<mode>3"
|
||||
[(set (reg:CCC FLAGS_REG)
|
||||
(unspec_volatile:CCC [(match_operand:SWI48 1 "register_operand" "r")
|
||||
(match_operand:SI 2 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 3 "const_int_operand" "i")]
|
||||
UNSPECV_LWPINS_INTRINSIC))
|
||||
(set (match_operand:QI 0 "nonimmediate_operand" "=qm")
|
||||
(eq:QI (reg:CCC FLAGS_REG) (const_int 0)))]
|
||||
"TARGET_LWP"
|
||||
"lwpval\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "DI")])
|
||||
"")
|
||||
|
||||
(define_insn "lwp_lwpinshi3"
|
||||
[(unspec_volatile [(match_operand:HI 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:HI 2 "const_int_operand" "")]
|
||||
UNSPECV_LWPINS_INTRINSIC)]
|
||||
(define_insn "*lwp_lwpins<mode>3_1"
|
||||
[(set (reg:CCC FLAGS_REG)
|
||||
(unspec_volatile:CCC [(match_operand:SWI48 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 2 "const_int_operand" "i")]
|
||||
UNSPECV_LWPINS_INTRINSIC))]
|
||||
"TARGET_LWP"
|
||||
"lwpins\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "HI")])
|
||||
|
||||
(define_insn "lwp_lwpinssi3"
|
||||
[(unspec_volatile [(match_operand:SI 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 2 "const_int_operand" "")]
|
||||
UNSPECV_LWPINS_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"lwpins\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "SI")])
|
||||
|
||||
(define_insn "lwp_lwpinsdi3"
|
||||
[(unspec_volatile [(match_operand:DI 0 "register_operand" "r")
|
||||
(match_operand:SI 1 "nonimmediate_operand" "rm")
|
||||
(match_operand:SI 2 "const_int_operand" "")]
|
||||
UNSPECV_LWPINS_INTRINSIC)]
|
||||
"TARGET_LWP"
|
||||
"lwpins\t{%2, %1, %0|%0, %1, %2}"
|
||||
[(set_attr "type" "lwp")
|
||||
(set_attr "mode" "DI")])
|
||||
(set_attr "mode" "<MODE>")
|
||||
(set (attr "length")
|
||||
(symbol_ref "ix86_attr_length_address_default (insn) + 9"))])
|
||||
|
||||
(include "mmx.md")
|
||||
(include "sse.md")
|
||||
|
@ -33,77 +33,68 @@
|
||||
#else
|
||||
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__llwpcb16 (void *pcbAddress)
|
||||
__llwpcb (void *pcbAddress)
|
||||
{
|
||||
__builtin_ia32_llwpcb16 (pcbAddress);
|
||||
}
|
||||
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__llwpcb32 (void *pcbAddress)
|
||||
{
|
||||
__builtin_ia32_llwpcb32 (pcbAddress);
|
||||
}
|
||||
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__llwpcb64 (void *pcbAddress)
|
||||
{
|
||||
__builtin_ia32_llwpcb64 (pcbAddress);
|
||||
__builtin_ia32_llwpcb (pcbAddress);
|
||||
}
|
||||
|
||||
extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__slwpcb16 (void)
|
||||
__slwpcb (void)
|
||||
{
|
||||
return __builtin_ia32_slwpcb16 ();
|
||||
return __builtin_ia32_slwpcb ();
|
||||
}
|
||||
|
||||
extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__slwpcb32 (void)
|
||||
{
|
||||
return __builtin_ia32_slwpcb32 ();
|
||||
}
|
||||
|
||||
extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__slwpcb64 (void)
|
||||
{
|
||||
return __builtin_ia32_slwpcb64 ();
|
||||
}
|
||||
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpval16 (unsigned short data2, unsigned int data1, unsigned short flags)
|
||||
{
|
||||
__builtin_ia32_lwpval16 (data2, data1, flags);
|
||||
}
|
||||
/*
|
||||
#ifdef __OPTIMIZE__
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpval32 (unsigned int data2, unsigned int data1, unsigned int flags)
|
||||
{
|
||||
__builtin_ia32_lwpval32 (data2, data1, flags);
|
||||
}
|
||||
|
||||
#ifdef __x86_64__
|
||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpval64 (unsigned __int64 data2, unsigned int data1, unsigned int flags)
|
||||
__lwpval64 (unsigned long long data2, unsigned int data1, unsigned int flags)
|
||||
{
|
||||
__builtin_ia32_lwpval64 (data2, data1, flags);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#define __lwpval32(D2, D1, F) \
|
||||
(__builtin_ia32_lwpval32 ((unsigned int) (D2), (unsigned int) (D1), \
|
||||
(unsigned int) (F)))
|
||||
#ifdef __x86_64__
|
||||
#define __lwpval64(D2, D1, F) \
|
||||
(__builtin_ia32_lwpval64 ((unsigned long long) (D2), (unsigned int) (D1), \
|
||||
(unsigned int) (F)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpins16 (unsigned short data2, unsigned int data1, unsigned short flags)
|
||||
{
|
||||
return __builtin_ia32_lwpins16 (data2, data1, flags);
|
||||
}
|
||||
|
||||
#ifdef __OPTIMIZE__
|
||||
extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpins32 (unsigned int data2, unsigned int data1, unsigned int flags)
|
||||
{
|
||||
return __builtin_ia32_lwpins32 (data2, data1, flags);
|
||||
}
|
||||
|
||||
#ifdef __x86_64__
|
||||
extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
__lwpins64 (unsigned __int64 data2, unsigned int data1, unsigned int flags)
|
||||
__lwpins64 (unsigned long long data2, unsigned int data1, unsigned int flags)
|
||||
{
|
||||
return __builtin_ia32_lwpins64 (data2, data1, flags);
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
#else
|
||||
#define __lwpins32(D2, D1, F) \
|
||||
(__builtin_ia32_lwpins32 ((unsigned int) (D2), (unsigned int) (D1), \
|
||||
(unsigned int) (F)))
|
||||
#ifdef __x86_64__
|
||||
#define __lwpins64(D2, D1, F) \
|
||||
(__builtin_ia32_lwpins64 ((unsigned long long) (D2), (unsigned int) (D1), \
|
||||
(unsigned int) (F)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* __LWP__ */
|
||||
|
||||
#endif /* _LWPINTRIN_H_INCLUDED */
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, xopintrin.h, mm3dnow.h,
|
||||
abmintrin.h and mm_malloc.h are usable with -O -std=c89
|
||||
-pedantic-errors. */
|
||||
abmintrin.h, lwpintrin.h, popcntintrin.h and mm_malloc.h are usable
|
||||
with -O -std=c89 -pedantic-errors. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -mavx -mfma4 -mxop -maes -mpclmul -mabm" } */
|
||||
/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -mavx -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlwp" } */
|
||||
|
||||
#include <x86intrin.h>
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mxop -maes -mpclmul -mabm" } */
|
||||
/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mxop -maes -mpclmul -mpopcnt -mabm -mlwp" } */
|
||||
|
||||
#include <mm_malloc.h>
|
||||
|
||||
/* Test that the intrinsics compile with optimization. All of them
|
||||
are defined as inline functions in {,x,e,p,t,s,w,a,b,i}mmintrin.h,
|
||||
xopintrin.h, abmintrin.h and mm3dnow.h that reference the proper
|
||||
builtin functions. Defining away "extern" and "__inline" results
|
||||
in all of them being compiled as proper functions. */
|
||||
xopintrin.h, abmintrin.h, lwpintrin.h, popcntintrin.h and mm3dnow.h
|
||||
that reference the proper builtin functions. Defining away
|
||||
"extern" and "__inline" results in all of them being compiled as
|
||||
proper functions. */
|
||||
|
||||
#define extern
|
||||
#define __inline
|
||||
@ -127,9 +128,15 @@
|
||||
#define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0)
|
||||
|
||||
/* xopintrin.h */
|
||||
#define __builtin_ia32_vprotbi(A, N) __builtin_ia32_vprotbi (A,1)
|
||||
#define __builtin_ia32_vprotwi(A, N) __builtin_ia32_vprotwi (A,1)
|
||||
#define __builtin_ia32_vprotdi(A, N) __builtin_ia32_vprotdi (A,1)
|
||||
#define __builtin_ia32_vprotqi(A, N) __builtin_ia32_vprotqi (A,1)
|
||||
#define __builtin_ia32_vprotbi(A, N) __builtin_ia32_vprotbi (A,1)
|
||||
#define __builtin_ia32_vprotwi(A, N) __builtin_ia32_vprotwi (A,1)
|
||||
#define __builtin_ia32_vprotdi(A, N) __builtin_ia32_vprotdi (A,1)
|
||||
#define __builtin_ia32_vprotqi(A, N) __builtin_ia32_vprotqi (A,1)
|
||||
|
||||
/* lwpintrin.h */
|
||||
#define __builtin_ia32_lwpval32(D2, D1, F) __builtin_ia32_lwpval32 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpval64(D2, D1, F) __builtin_ia32_lwpval64 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpins32(D2, D1, F) __builtin_ia32_lwpins32 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpins64(D2, D1, F) __builtin_ia32_lwpins64 (D2, D1, 1)
|
||||
|
||||
#include <x86intrin.h>
|
||||
|
@ -1,12 +1,13 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mxop -msse4a -maes -mpclmul" } */
|
||||
/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mxop -msse4a -maes -mpclmul -mpopcnt -mabm -mlwp" } */
|
||||
|
||||
#include <mm_malloc.h>
|
||||
|
||||
/* Test that the intrinsics compile without optimization. All of them are
|
||||
defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h, xopintrin.h and mm3dnow.h
|
||||
that reference the proper builtin functions. Defining away "extern" and
|
||||
"__inline" results in all of them being compiled as proper functions. */
|
||||
defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h, xopintrin.h,
|
||||
lwpintrin.h and mm3dnow.h that reference the proper builtin functions.
|
||||
Defining away "extern" and "__inline" results in all of them being compiled
|
||||
as proper functions. */
|
||||
|
||||
#define extern
|
||||
#define __inline
|
||||
@ -162,3 +163,10 @@ test_1 ( _mm_roti_epi16, __m128i, __m128i, 1)
|
||||
test_1 ( _mm_roti_epi32, __m128i, __m128i, 1)
|
||||
test_1 ( _mm_roti_epi64, __m128i, __m128i, 1)
|
||||
|
||||
/* lwpintrin.h */
|
||||
test_2 ( __lwpval32, void, unsigned int, unsigned int, 1)
|
||||
test_2 ( __lwpins32, unsigned char, unsigned int, unsigned int, 1)
|
||||
#ifdef __x86_64__
|
||||
test_2 ( __lwpval64, void, unsigned long long, unsigned int, 1)
|
||||
test_2 ( __lwpins64, unsigned char, unsigned long long, unsigned int, 1)
|
||||
#endif
|
||||
|
@ -4,10 +4,12 @@
|
||||
|
||||
#include <mm_malloc.h>
|
||||
|
||||
/* Test that the intrinsics compile without optimization. All of them are
|
||||
defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h, xopintrin.h and mm3dnow.h
|
||||
that reference the proper builtin functions. Defining away "extern" and
|
||||
"__inline" results in all of them being compiled as proper functions. */
|
||||
/* Test that the intrinsics compile without optimization. All of them
|
||||
are defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h,
|
||||
xopintrin.h, lwpintrin.h, popcntintrin.h and mm3dnow.h that
|
||||
reference the proper builtin functions. Defining away "extern" and
|
||||
"__inline" results in all of them being compiled as proper
|
||||
functions. */
|
||||
|
||||
#define extern
|
||||
#define __inline
|
||||
@ -37,7 +39,7 @@
|
||||
|
||||
|
||||
#ifndef DIFFERENT_PRAGMAS
|
||||
#pragma GCC target ("mmx,3dnow,sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,aes,pclmul,xop")
|
||||
#pragma GCC target ("mmx,3dnow,sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,aes,pclmul,xop,popcnt,abm,lwp")
|
||||
#endif
|
||||
|
||||
/* Following intrinsics require immediate arguments. They
|
||||
@ -162,10 +164,18 @@ test_2 (_mm_round_ss, __m128, __m128, __m128, 1)
|
||||
|
||||
/* xopintrin.h (XOP). */
|
||||
#ifdef DIFFERENT_PRAGMAS
|
||||
#pragma GCC target ("xop")
|
||||
#pragma GCC target ("xop,lwp")
|
||||
#endif
|
||||
#include <x86intrin.h>
|
||||
test_1 ( _mm_roti_epi8, __m128i, __m128i, 1)
|
||||
test_1 ( _mm_roti_epi16, __m128i, __m128i, 1)
|
||||
test_1 ( _mm_roti_epi32, __m128i, __m128i, 1)
|
||||
test_1 ( _mm_roti_epi64, __m128i, __m128i, 1)
|
||||
|
||||
/* lwpintrin.h (LWP). */
|
||||
test_2 ( __lwpval32, void, unsigned int, unsigned int, 1)
|
||||
test_2 ( __lwpins32, unsigned char, unsigned int, unsigned int, 1)
|
||||
#ifdef __x86_64__
|
||||
test_2 ( __lwpval64, void, unsigned long long, unsigned int, 1)
|
||||
test_2 ( __lwpins64, unsigned char, unsigned long long, unsigned int, 1)
|
||||
#endif
|
||||
|
@ -3,10 +3,12 @@
|
||||
|
||||
#include <mm_malloc.h>
|
||||
|
||||
/* Test that the intrinsics compile with optimization. All of them are
|
||||
defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h, xopintrin.h and mm3dnow.h
|
||||
that reference the proper builtin functions. Defining away "extern" and
|
||||
"__inline" results in all of them being compiled as proper functions. */
|
||||
/* Test that the intrinsics compile with optimization. All of them
|
||||
are defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h,
|
||||
xopintrin.h, lwpintrin.h, popcntintrin.h and mm3dnow.h that
|
||||
reference the proper builtin functions. Defining away "extern" and
|
||||
"__inline" results in all of them being compiled as proper
|
||||
functions. */
|
||||
|
||||
#define extern
|
||||
#define __inline
|
||||
@ -93,13 +95,52 @@
|
||||
#define __builtin_ia32_vec_ext_v4hi(A, N) __builtin_ia32_vec_ext_v4hi(A, 0)
|
||||
#define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0)
|
||||
|
||||
/* immintrin.h */
|
||||
#define __builtin_ia32_blendpd256(X, Y, M) __builtin_ia32_blendpd256(X, Y, 1)
|
||||
#define __builtin_ia32_blendps256(X, Y, M) __builtin_ia32_blendps256(X, Y, 1)
|
||||
#define __builtin_ia32_dpps256(X, Y, M) __builtin_ia32_dpps256(X, Y, 1)
|
||||
#define __builtin_ia32_shufpd256(X, Y, M) __builtin_ia32_shufpd256(X, Y, 1)
|
||||
#define __builtin_ia32_shufps256(X, Y, M) __builtin_ia32_shufps256(X, Y, 1)
|
||||
#define __builtin_ia32_cmpsd(X, Y, O) __builtin_ia32_cmpsd(X, Y, 1)
|
||||
#define __builtin_ia32_cmpss(X, Y, O) __builtin_ia32_cmpss(X, Y, 1)
|
||||
#define __builtin_ia32_cmppd(X, Y, O) __builtin_ia32_cmppd(X, Y, 1)
|
||||
#define __builtin_ia32_cmpps(X, Y, O) __builtin_ia32_cmpps(X, Y, 1)
|
||||
#define __builtin_ia32_cmppd256(X, Y, O) __builtin_ia32_cmppd256(X, Y, 1)
|
||||
#define __builtin_ia32_cmpps256(X, Y, O) __builtin_ia32_cmpps256(X, Y, 1)
|
||||
#define __builtin_ia32_vextractf128_pd256(X, N) __builtin_ia32_vextractf128_pd256(X, 1)
|
||||
#define __builtin_ia32_vextractf128_ps256(X, N) __builtin_ia32_vextractf128_ps256(X, 1)
|
||||
#define __builtin_ia32_vextractf128_si256(X, N) __builtin_ia32_vextractf128_si256(X, 1)
|
||||
#define __builtin_ia32_vpermilpd(X, N) __builtin_ia32_vpermilpd(X, 1)
|
||||
#define __builtin_ia32_vpermilpd256(X, N) __builtin_ia32_vpermilpd256(X, 1)
|
||||
#define __builtin_ia32_vpermilps(X, N) __builtin_ia32_vpermilps(X, 1)
|
||||
#define __builtin_ia32_vpermilps256(X, N) __builtin_ia32_vpermilps256(X, 1)
|
||||
#define __builtin_ia32_vpermil2pd(X, Y, C, I) __builtin_ia32_vpermil2pd(X, Y, C, 1)
|
||||
#define __builtin_ia32_vpermil2pd256(X, Y, C, I) __builtin_ia32_vpermil2pd256(X, Y, C, 1)
|
||||
#define __builtin_ia32_vpermil2ps(X, Y, C, I) __builtin_ia32_vpermil2ps(X, Y, C, 1)
|
||||
#define __builtin_ia32_vpermil2ps256(X, Y, C, I) __builtin_ia32_vpermil2ps256(X, Y, C, 1)
|
||||
#define __builtin_ia32_vperm2f128_pd256(X, Y, C) __builtin_ia32_vperm2f128_pd256(X, Y, 1)
|
||||
#define __builtin_ia32_vperm2f128_ps256(X, Y, C) __builtin_ia32_vperm2f128_ps256(X, Y, 1)
|
||||
#define __builtin_ia32_vperm2f128_si256(X, Y, C) __builtin_ia32_vperm2f128_si256(X, Y, 1)
|
||||
#define __builtin_ia32_vinsertf128_pd256(X, Y, C) __builtin_ia32_vinsertf128_pd256(X, Y, 1)
|
||||
#define __builtin_ia32_vinsertf128_ps256(X, Y, C) __builtin_ia32_vinsertf128_ps256(X, Y, 1)
|
||||
#define __builtin_ia32_vinsertf128_si256(X, Y, C) __builtin_ia32_vinsertf128_si256(X, Y, 1)
|
||||
#define __builtin_ia32_roundpd256(V, M) __builtin_ia32_roundpd256(V, 1)
|
||||
#define __builtin_ia32_roundps256(V, M) __builtin_ia32_roundps256(V, 1)
|
||||
|
||||
/* xopintrin.h */
|
||||
#define __builtin_ia32_vprotbi(A, B) __builtin_ia32_vprotbi(A,1)
|
||||
#define __builtin_ia32_vprotwi(A, B) __builtin_ia32_vprotwi(A,1)
|
||||
#define __builtin_ia32_vprotdi(A, B) __builtin_ia32_vprotdi(A,1)
|
||||
#define __builtin_ia32_vprotqi(A, B) __builtin_ia32_vprotqi(A,1)
|
||||
|
||||
#pragma GCC target ("3dnow,sse4,sse4a,aes,pclmul,xop")
|
||||
/* lwpintrin.h */
|
||||
#define __builtin_ia32_lwpval32(D2, D1, F) __builtin_ia32_lwpval32 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpval64(D2, D1, F) __builtin_ia32_lwpval64 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpins32(D2, D1, F) __builtin_ia32_lwpins32 (D2, D1, 1)
|
||||
#define __builtin_ia32_lwpins64(D2, D1, F) __builtin_ia32_lwpins64 (D2, D1, 1)
|
||||
|
||||
#pragma GCC target ("3dnow,sse4,sse4a,aes,pclmul,xop,abm,popcnt,lwp")
|
||||
#include <wmmintrin.h>
|
||||
#include <smmintrin.h>
|
||||
#include <mm3dnow.h>
|
||||
#include <x86intrin.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user