diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3ee9ea19e03..b41cd0353a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -128,12 +128,6 @@ to -fstack-clash-protection for stack-clash-protection. Document new params for stack clash protection. -2017-09-19 Uros Bizjak - - * config/i386/i386.md (*scc_bt): New insn_and_split pattern. - (*scc_bt_1): Ditto. - (*scc_bt_mask): Ditto. - 2017-09-19 Uros Bizjak * config/i386/i386.c (ix86_split_long_move): Do not handle diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b1bde14ad5e..43227dc77ee 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -11246,98 +11246,6 @@ (const_string "SI") (const_string "")))]) -(define_insn_and_split "*scc_bt" - [(set (match_operand:QI 0 "nonimmediate_operand") - (match_operator 1 "bt_comparison_operator" - [(zero_extract:SWI48 - (match_operand:SWI48 2 "nonimmediate_operand") - (const_int 1) - (match_operand:SI 3 "nonmemory_operand")) - (const_int 0)])) - (clobber (reg:CC FLAGS_REG))] - "(TARGET_USE_BT || optimize_function_for_size_p (cfun)) - && (CONST_INT_P (operands[3]) - ? (INTVAL (operands[3]) < GET_MODE_BITSIZE (mode) - && INTVAL (operands[3]) - >= (optimize_function_for_size_p (cfun) ? 8 : 32)) - : !memory_operand (operands[2], mode)) - && can_create_pseudo_p ()" - "#" - "&& 1" - [(set (reg:CCC FLAGS_REG) - (compare:CCC - (zero_extract:SWI48 - (match_dup 2) - (const_int 1) - (match_dup 3)) - (const_int 0))) - (set (match_dup 0) - (match_op_dup 1 [(reg:CCC FLAGS_REG) (const_int 0)]))] -{ - operands[1] = shallow_copy_rtx (operands[1]); - PUT_CODE (operands[1], reverse_condition (GET_CODE (operands[1]))); -}) - -(define_insn_and_split "*scc_bt_1" - [(set (match_operand:QI 0 "nonimmediate_operand") - (match_operator 1 "bt_comparison_operator" - [(zero_extract:SWI48 - (match_operand:SWI48 2 "register_operand") - (const_int 1) - (zero_extend:SI - (match_operand:QI 3 "register_operand"))) - (const_int 0)])) - (clobber (reg:CC FLAGS_REG))] - "(TARGET_USE_BT || optimize_function_for_size_p (cfun)) - && can_create_pseudo_p ()" - "#" - "&& 1" - [(set (reg:CCC FLAGS_REG) - (compare:CCC - (zero_extract:SWI48 - (match_dup 2) - (const_int 1) - (match_dup 3)) - (const_int 0))) - (set (match_dup 0) - (match_op_dup 1 [(reg:CCC FLAGS_REG) (const_int 0)]))] -{ - operands[3] = lowpart_subreg (SImode, operands[3], QImode); - operands[1] = shallow_copy_rtx (operands[1]); - PUT_CODE (operands[1], reverse_condition (GET_CODE (operands[1]))); -}) - -;; Avoid useless masking of bit offset operand. -(define_insn_and_split "*scc_bt_mask" - [(set (match_operand:QI 0 "nonimmediate_operand") - (match_operator 1 "bt_comparison_operator" - [(zero_extract:SWI48 - (match_operand:SWI48 2 "register_operand") - (const_int 1) - (and:SI - (match_operand:SI 3 "register_operand") - (match_operand 4 "const_int_operand")))])) - (clobber (reg:CC FLAGS_REG))] - "(TARGET_USE_BT || optimize_function_for_size_p (cfun)) - && (INTVAL (operands[4]) & (GET_MODE_BITSIZE (mode)-1)) - == GET_MODE_BITSIZE (mode)-1 - && can_create_pseudo_p ()" - "#" - "&& 1" - [(set (reg:CCC FLAGS_REG) - (compare:CCC - (zero_extract:SWI48 - (match_dup 2) - (const_int 1) - (match_dup 3)) - (const_int 0))) - (set (match_dup 0) - (match_op_dup 1 [(reg:CCC FLAGS_REG) (const_int 0)]))] -{ - operands[1] = shallow_copy_rtx (operands[1]); - PUT_CODE (operands[1], reverse_condition (GET_CODE (operands[1]))); -}) - (define_insn_and_split "*jcc_bt" [(set (pc) (if_then_else (match_operator 0 "bt_comparison_operator" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3ebdab9996b..65c489e9a5d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -58,13 +58,6 @@ (check_effective_target_frame_pointer_for_non_leaf): Likewise. (check_effective_target_caller_implicit_probes): Likewise. -2017-09-19 Uros Bizjak - - * gcc.target/i386/bt-5.c: New test. - * gcc.target/i386/bt-6.c: Ditto. - * gcc.target/i386/bt-mask-3.c: Ditto. - * gcc.target/i386/bt-mask-4.c: Ditto. - 2017-09-19 Jakub Jelinek * g++.dg/tree-ssa/pr31146-2.C: Only do scan-tree-dump for c++14_down. diff --git a/gcc/testsuite/gcc.target/i386/bt-5.c b/gcc/testsuite/gcc.target/i386/bt-5.c deleted file mode 100644 index 309adfe291e..00000000000 --- a/gcc/testsuite/gcc.target/i386/bt-5.c +++ /dev/null @@ -1,11 +0,0 @@ -/* PR target/36473 */ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=core2" } */ -/* { dg-additional-options "-mregparm=2" { target ia32 } } */ - -int test(unsigned x, unsigned n) -{ - return !(x & ( 0x01 << n )); -} - -/* { dg-final { scan-assembler "btl\[ \t\]" } } */ diff --git a/gcc/testsuite/gcc.target/i386/bt-6.c b/gcc/testsuite/gcc.target/i386/bt-6.c deleted file mode 100644 index 994ec432e0e..00000000000 --- a/gcc/testsuite/gcc.target/i386/bt-6.c +++ /dev/null @@ -1,12 +0,0 @@ -/* PR target/36473 */ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=core2" } */ -/* { dg-additional-options "-mregparm=2" { target ia32 } } */ - -int test(unsigned long x, unsigned long n) -{ - return !(x & ( (long)0x01 << n )); -} - -/* { dg-final { scan-assembler "btl\[ \t\]" { target { ! lp64 } } } } */ -/* { dg-final { scan-assembler "btq\[ \t\]" { target lp64 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/bt-mask-3.c b/gcc/testsuite/gcc.target/i386/bt-mask-3.c deleted file mode 100644 index bf3a404b0d5..00000000000 --- a/gcc/testsuite/gcc.target/i386/bt-mask-3.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=core2" } */ -/* { dg-additional-options "-mregparm=2" { target ia32 } } */ - -int test (unsigned x, unsigned n) -{ - n &= 0x1f; - - return !(x & (0x01 << n)); -} - -/* { dg-final { scan-assembler-not "and\[lq\]\[ \t\]" } } */ diff --git a/gcc/testsuite/gcc.target/i386/bt-mask-4.c b/gcc/testsuite/gcc.target/i386/bt-mask-4.c deleted file mode 100644 index 819864686f4..00000000000 --- a/gcc/testsuite/gcc.target/i386/bt-mask-4.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=core2" } */ -/* { dg-additional-options "-mregparm=2" { target ia32 } } */ - -int test (unsigned long x, unsigned long n) -{ - n &= 0x3f; - - return !(x & ((long)0x01 << n)); -} - -/* { dg-final { scan-assembler-not "and\[lq\]\[ \t\]" } } */