(define_insn "vgf2p8affineinvqb_<mode><mask_name>"
[(set (match_operand:VI1_AVX512F 0 "register_operand" "=x,x,v")
- (unspec:VI1_AVX512F [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
- (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
- (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
- UNSPEC_GF2P8AFFINEINV))]
+ (unspec:VI1_AVX512F
+ [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
+ (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
+ (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
+ UNSPEC_GF2P8AFFINEINV))]
"TARGET_GFNI"
"@
gf2p8affineinvqb\t{%3, %2, %0| %0, %2, %3}
(define_insn "vgf2p8affineqb_<mode><mask_name>"
[(set (match_operand:VI1_AVX512F 0 "register_operand" "=x,x,v")
- (unspec:VI1_AVX512F [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
- (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
- (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
- UNSPEC_GF2P8AFFINE))]
+ (unspec:VI1_AVX512F
+ [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
+ (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
+ (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
+ UNSPEC_GF2P8AFFINE))]
"TARGET_GFNI"
"@
gf2p8affineqb\t{%3, %2, %0| %0, %2, %3}
(define_insn "vgf2p8mulb_<mode><mask_name>"
[(set (match_operand:VI1_AVX512F 0 "register_operand" "=x,x,v")
- (unspec:VI1_AVX512F [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
- (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")]
- UNSPEC_GF2P8MUL))]
+ (unspec:VI1_AVX512F
+ [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
+ (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")]
+ UNSPEC_GF2P8MUL))]
"TARGET_GFNI"
"@
gf2p8mulb\t{%2, %0| %0, %2}
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
(unspec:VI248_VLBW
[(match_operand:VI248_VLBW 1 "register_operand" "v")
- (match_operand:VI248_VLBW 2 "nonimmediate_operand" "vm")
- (match_operand:SI 3 "const_0_to_255_operand" "n")
-] UNSPEC_VPSHRD))]
+ (match_operand:VI248_VLBW 2 "nonimmediate_operand" "vm")
+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
+ UNSPEC_VPSHRD))]
"TARGET_AVX512VBMI2"
"vpshrd<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
(unspec:VI248_VLBW
[(match_operand:VI248_VLBW 1 "register_operand" "v")
- (match_operand:VI248_VLBW 2 "nonimmediate_operand" "vm")
- (match_operand:SI 3 "const_0_to_255_operand" "n")
-] UNSPEC_VPSHLD))]
+ (match_operand:VI248_VLBW 2 "nonimmediate_operand" "vm")
+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
+ UNSPEC_VPSHLD))]
"TARGET_AVX512VBMI2"
"vpshld<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(unspec:VI248_VLBW
[(match_operand:VI248_VLBW 1 "register_operand" "0")
(match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPSHRDV))]
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHRDV))]
"TARGET_AVX512VBMI2"
"vpshrdv<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(define_insn "vpshrdv_<mode>_mask"
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
- (vec_merge:VI248_VLBW (unspec:VI248_VLBW
- [(match_operand:VI248_VLBW 1 "register_operand" "0")
- (match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPSHRDV)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI248_VLBW
+ (unspec:VI248_VLBW
+ [(match_operand:VI248_VLBW 1 "register_operand" "0")
+ (match_operand:VI248_VLBW 2 "register_operand" "v")
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHRDV)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VBMI2"
"vpshrdv<ssemodesuffix>\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VBMI2"
{
- emit_insn (gen_vpshrdv_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpshrdv_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpshrdv_<mode>_maskz_1"
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
- (vec_merge:VI248_VLBW (unspec:VI248_VLBW
- [(match_operand:VI248_VLBW 1 "register_operand" "0")
- (match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPSHRDV)
+ (vec_merge:VI248_VLBW
+ (unspec:VI248_VLBW
+ [(match_operand:VI248_VLBW 1 "register_operand" "0")
+ (match_operand:VI248_VLBW 2 "register_operand" "v")
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHRDV)
(match_operand:VI248_VLBW 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VBMI2"
"vpshrdv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(unspec:VI248_VLBW
[(match_operand:VI248_VLBW 1 "register_operand" "0")
(match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPSHLDV))]
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHLDV))]
"TARGET_AVX512VBMI2"
"vpshldv<ssemodesuffix>\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(define_insn "vpshldv_<mode>_mask"
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
- (vec_merge:VI248_VLBW (unspec:VI248_VLBW
- [(match_operand:VI248_VLBW 1 "register_operand" "0")
- (match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPSHLDV)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI248_VLBW
+ (unspec:VI248_VLBW
+ [(match_operand:VI248_VLBW 1 "register_operand" "0")
+ (match_operand:VI248_VLBW 2 "register_operand" "v")
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHLDV)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VBMI2"
"vpshldv<ssemodesuffix>\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VBMI2"
{
- emit_insn (gen_vpshldv_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpshldv_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpshldv_<mode>_maskz_1"
[(set (match_operand:VI248_VLBW 0 "register_operand" "=v")
- (vec_merge:VI248_VLBW (unspec:VI248_VLBW
- [(match_operand:VI248_VLBW 1 "register_operand" "0")
- (match_operand:VI248_VLBW 2 "register_operand" "v")
- (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPSHLDV)
+ (vec_merge:VI248_VLBW
+ (unspec:VI248_VLBW
+ [(match_operand:VI248_VLBW 1 "register_operand" "0")
+ (match_operand:VI248_VLBW 2 "register_operand" "v")
+ (match_operand:VI248_VLBW 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPSHLDV)
(match_operand:VI248_VLBW 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VBMI2"
"vpshldv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))
(unspec:VI4_AVX512VL
[(match_operand:VI4_AVX512VL 1 "register_operand" "0")
(match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPMADDUBSWACCD))]
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDUBSWACCD))]
"TARGET_AVX512VNNI"
"vpdpbusd\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(define_insn "vpdpbusd_<mode>_mask"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDUBSWACCD)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDUBSWACCD)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpbusd\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VNNI"
{
- emit_insn (gen_vpdpbusd_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpdpbusd_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpdpbusd_<mode>_maskz_1"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDUBSWACCD)
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
+ ] UNSPEC_VPMADDUBSWACCD)
(match_operand:VI4_AVX512VL 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpbusd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(unspec:VI4_AVX512VL
[(match_operand:VI4_AVX512VL 1 "register_operand" "0")
(match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPMADDUBSWACCSSD))]
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDUBSWACCSSD))]
"TARGET_AVX512VNNI"
"vpdpbusds\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(define_insn "vpdpbusds_<mode>_mask"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDUBSWACCSSD)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDUBSWACCSSD)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpbusds\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VNNI"
{
- emit_insn (gen_vpdpbusds_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpdpbusds_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpdpbusds_<mode>_maskz_1"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDUBSWACCSSD)
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDUBSWACCSSD)
(match_operand:VI4_AVX512VL 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpbusds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(unspec:VI4_AVX512VL
[(match_operand:VI4_AVX512VL 1 "register_operand" "0")
(match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPMADDWDACCD))]
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCD))]
"TARGET_AVX512VNNI"
"vpdpwssd\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(define_insn "vpdpwssd_<mode>_mask"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDWDACCD)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCD)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpwssd\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VNNI"
{
- emit_insn (gen_vpdpwssd_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpdpwssd_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpdpwssd_<mode>_maskz_1"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDWDACCD)
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCD)
(match_operand:VI4_AVX512VL 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpwssd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(unspec:VI4_AVX512VL
[(match_operand:VI4_AVX512VL 1 "register_operand" "0")
(match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
-] UNSPEC_VPMADDWDACCSSD))]
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCSSD))]
"TARGET_AVX512VNNI"
"vpdpwssds\t{%3, %2, %0|%0, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(define_insn "vpdpwssds_<mode>_mask"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDWDACCSSD)
- (match_dup 1)
- (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
-)]
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCSSD)
+ (match_dup 1)
+ (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpwssds\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(match_operand:<avx512fmaskmode> 4 "register_operand")]
"TARGET_AVX512VNNI"
{
- emit_insn (gen_vpdpwssds_<mode>_maskz_1 (
- operands[0], operands[1], operands[2], operands[3],
- CONST0_RTX (<MODE>mode), operands[4]));
+ emit_insn (gen_vpdpwssds_<mode>_maskz_1 (operands[0], operands[1],
+ operands[2], operands[3],
+ CONST0_RTX (<MODE>mode),
+ operands[4]));
DONE;
})
(define_insn "vpdpwssds_<mode>_maskz_1"
[(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
- (vec_merge:VI4_AVX512VL (unspec:VI4_AVX512VL
- [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
- (match_operand:VI4_AVX512VL 2 "register_operand" "v")
- (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
- ] UNSPEC_VPMADDWDACCSSD)
+ (vec_merge:VI4_AVX512VL
+ (unspec:VI4_AVX512VL
+ [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
+ (match_operand:VI4_AVX512VL 2 "register_operand" "v")
+ (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
+ UNSPEC_VPMADDWDACCSSD)
(match_operand:VI4_AVX512VL 4 "const0_operand" "C")
- (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk"))
-)]
+ (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
"TARGET_AVX512VNNI"
"vpdpwssds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
[(set_attr ("prefix") ("evex"))])
(define_insn "vaesdec_<mode>"
[(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v")
- (unspec:VI1_AVX512VL_F
+ (unspec:VI1_AVX512VL_F
[(match_operand:VI1_AVX512VL_F 1 "register_operand" "v")
(match_operand:VI1_AVX512VL_F 2 "vector_operand" "v")]
UNSPEC_VAESDEC))]
(define_insn "vaesdeclast_<mode>"
[(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v")
- (unspec:VI1_AVX512VL_F
+ (unspec:VI1_AVX512VL_F
[(match_operand:VI1_AVX512VL_F 1 "register_operand" "v")
(match_operand:VI1_AVX512VL_F 2 "vector_operand" "v")]
UNSPEC_VAESDECLAST))]
(define_insn "vaesenc_<mode>"
[(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v")
- (unspec:VI1_AVX512VL_F
+ (unspec:VI1_AVX512VL_F
[(match_operand:VI1_AVX512VL_F 1 "register_operand" "v")
(match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")]
UNSPEC_VAESENC))]
(define_insn "vaesenclast_<mode>"
[(set (match_operand:VI1_AVX512VL_F 0 "register_operand" "=v")
- (unspec:VI1_AVX512VL_F
+ (unspec:VI1_AVX512VL_F
[(match_operand:VI1_AVX512VL_F 1 "register_operand" "v")
(match_operand:VI1_AVX512VL_F 2 "vector_operand" "vm")]
UNSPEC_VAESENCLAST))]
(define_insn "vpclmulqdq_<mode>"
[(set (match_operand:VI8_FVL 0 "register_operand" "=v")
(unspec:VI8_FVL [(match_operand:VI8_FVL 1 "register_operand" "v")
- (match_operand:VI8_FVL 2 "vector_operand" "vm")
- (match_operand:SI 3 "const_0_to_255_operand" "n")]
- UNSPEC_VPCLMULQDQ))]
+ (match_operand:VI8_FVL 2 "vector_operand" "vm")
+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
+ UNSPEC_VPCLMULQDQ))]
"TARGET_VPCLMULQDQ"
"vpclmulqdq\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "mode" "DI")])
(unspec:<avx512fmaskmode>
[(match_operand:VI48_AVX512VLBW 1 "register_operand" "v")
(match_operand:VI48_AVX512VLBW 2 "nonimmediate_operand" "vm")]
- UNSPEC_VPSHUFBIT))]
+ UNSPEC_VPSHUFBIT))]
"TARGET_AVX512BITALG"
"vpshufbitqmb\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}"
[(set_attr "prefix" "evex")