diff options
Diffstat (limited to 'gcc/config/i386/sse.md')
-rw-r--r-- | gcc/config/i386/sse.md | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 6744cce..7f89679 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -305,6 +305,10 @@ (V8SI "TARGET_AVX") (V4DI "TARGET_AVX") (V8SF "TARGET_AVX") (V4DF"TARGET_AVX")]) +(define_mode_iterator VI48_AVX + [V4SI V2DI + (V8SI "TARGET_AVX") (V4DI "TARGET_AVX")]) + (define_mode_iterator VI8 [(V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") V2DI]) @@ -18225,6 +18229,23 @@ (match_operand:<avx512fmaskmode> 2 "register_operand")))] "TARGET_AVX512BW") +(define_expand "cbranch<mode>4" + [(set (reg:CC FLAGS_REG) + (compare:CC (match_operand:VI48_AVX 1 "register_operand") + (match_operand:VI48_AVX 2 "nonimmediate_operand"))) + (set (pc) (if_then_else + (match_operator 0 "bt_comparison_operator" + [(reg:CC FLAGS_REG) (const_int 0)]) + (label_ref (match_operand 3)) + (pc)))] + "TARGET_SSE4_1" +{ + ix86_expand_branch (GET_CODE (operands[0]), + operands[1], operands[2], operands[3]); + DONE; +}) + + (define_insn_and_split "avx_<castmode><avxsizesuffix>_<castmode>" [(set (match_operand:AVX256MODE2P 0 "nonimmediate_operand" "=x,m") (unspec:AVX256MODE2P |