diff options
author | Andrew Stubbs <ams@codesourcery.com> | 2020-01-24 14:31:28 +0000 |
---|---|---|
committer | Andrew Stubbs <ams@codesourcery.com> | 2020-01-24 14:53:35 +0000 |
commit | f4d4a40698c672a2e180ac0af4f80467338842bd (patch) | |
tree | fe93752731f6059fce3ff85793beb1a786d8d902 | |
parent | 612137e17109d890948fe30cb997b590b5944df4 (diff) | |
download | gcc-f4d4a40698c672a2e180ac0af4f80467338842bd.zip gcc-f4d4a40698c672a2e180ac0af4f80467338842bd.tar.gz gcc-f4d4a40698c672a2e180ac0af4f80467338842bd.tar.bz2 |
Fix ICE on unsupported FP comparison
2020-01-24 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn-valu.md (vec_cmp<mode>di): Use
gcn_fp_compare_operator.
(vec_cmpu<mode>di): Use gcn_compare_operator.
(vec_cmp<u>v64qidi): Use gcn_compare_operator.
(vec_cmp<mode>di_exec): Use gcn_fp_compare_operator.
(vec_cmpu<mode>di_exec): Use gcn_compare_operator.
(vec_cmp<u>v64qidi_exec): Use gcn_compare_operator.
(vec_cmp<mode>di_dup): Use gcn_fp_compare_operator.
(vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator.
(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use
gcn_fp_compare_operator.
(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use
gcn_fp_compare_operator.
(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use
gcn_fp_compare_operator.
(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use
gcn_fp_compare_operator.
-rw-r--r-- | gcc/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/config/gcn/gcn-valu.md | 24 |
2 files changed, 32 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f15f03a..9a13fca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2020-01-24 Andrew Stubbs <ams@codesourcery.com> + + * config/gcn/gcn-valu.md (vec_cmp<mode>di): Use + gcn_fp_compare_operator. + (vec_cmpu<mode>di): Use gcn_compare_operator. + (vec_cmp<u>v64qidi): Use gcn_compare_operator. + (vec_cmp<mode>di_exec): Use gcn_fp_compare_operator. + (vec_cmpu<mode>di_exec): Use gcn_compare_operator. + (vec_cmp<u>v64qidi_exec): Use gcn_compare_operator. + (vec_cmp<mode>di_dup): Use gcn_fp_compare_operator. + (vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator. + (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use + gcn_fp_compare_operator. + (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use + gcn_fp_compare_operator. + (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use + gcn_fp_compare_operator. + (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use + gcn_fp_compare_operator. + 2020-01-24 Maciej W. Rozycki <macro@wdc.com> * doc/install.texi (Cross-Compiler-Specific Options): Document diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md index 7c3de8c..331c768 100644 --- a/gcc/config/gcn/gcn-valu.md +++ b/gcc/config/gcn/gcn-valu.md @@ -2530,7 +2530,7 @@ (define_insn "vec_cmp<mode>di" [(set (match_operand:DI 0 "register_operand" "=cV,cV, e, e,Sg,Sg") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_fp_compare_operator" [(match_operand:VCMP_MODE 2 "gcn_alu_operand" "vSv, B,vSv, B, v,vA") (match_operand:VCMP_MODE 3 "gcn_vop3_operand" @@ -2549,7 +2549,7 @@ (define_expand "vec_cmpu<mode>di" [(match_operand:DI 0 "register_operand") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_compare_operator" [(match_operand:VCMP_MODE_INT 2 "gcn_alu_operand") (match_operand:VCMP_MODE_INT 3 "gcn_vop3_operand")])] "" @@ -2565,7 +2565,7 @@ ; There's no instruction for 8-bit vector comparison, so we need to extend. (define_expand "vec_cmp<u>v64qidi" [(match_operand:DI 0 "register_operand") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_compare_operator" [(any_extend:V64SI (match_operand:V64QI 2 "gcn_alu_operand")) (any_extend:V64SI (match_operand:V64QI 3 "gcn_vop3_operand"))])] "can_create_pseudo_p ()" @@ -2582,7 +2582,7 @@ (define_insn "vec_cmp<mode>di_exec" [(set (match_operand:DI 0 "register_operand" "=cV,cV, e, e,Sg,Sg") (and:DI - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_fp_compare_operator" [(match_operand:VCMP_MODE 2 "gcn_alu_operand" "vSv, B,vSv, B, v,vA") (match_operand:VCMP_MODE 3 "gcn_vop3_operand" @@ -2602,7 +2602,7 @@ (define_expand "vec_cmpu<mode>di_exec" [(match_operand:DI 0 "register_operand") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_compare_operator" [(match_operand:VCMP_MODE_INT 2 "gcn_alu_operand") (match_operand:VCMP_MODE_INT 3 "gcn_vop3_operand")]) (match_operand:DI 4 "gcn_exec_reg_operand")] @@ -2619,7 +2619,7 @@ (define_expand "vec_cmp<u>v64qidi_exec" [(match_operand:DI 0 "register_operand") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_compare_operator" [(any_extend:V64SI (match_operand:V64QI 2 "gcn_alu_operand")) (any_extend:V64SI (match_operand:V64QI 3 "gcn_vop3_operand"))]) (match_operand:DI 4 "gcn_exec_reg_operand")] @@ -2639,7 +2639,7 @@ (define_insn "vec_cmp<mode>di_dup" [(set (match_operand:DI 0 "register_operand" "=cV,cV, e,e,Sg") - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_fp_compare_operator" [(vec_duplicate:VCMP_MODE (match_operand:<SCALAR_MODE> 2 "gcn_alu_operand" " Sv, B,Sv,B, A")) @@ -2658,7 +2658,7 @@ (define_insn "vec_cmp<mode>di_dup_exec" [(set (match_operand:DI 0 "register_operand" "=cV,cV, e,e,Sg") (and:DI - (match_operator 1 "comparison_operator" + (match_operator 1 "gcn_fp_compare_operator" [(vec_duplicate:VCMP_MODE (match_operand:<SCALAR_MODE> 2 "gcn_alu_operand" " Sv, B,Sv,B, A")) @@ -2690,7 +2690,7 @@ [(match_operand:VEC_ALLREG_MODE 0 "register_operand") (match_operand:VEC_ALLREG_MODE 1 "gcn_vop3_operand") (match_operand:VEC_ALLREG_MODE 2 "gcn_alu_operand") - (match_operator 3 "comparison_operator" + (match_operator 3 "gcn_fp_compare_operator" [(match_operand:VEC_ALLREG_ALT 4 "gcn_alu_operand") (match_operand:VEC_ALLREG_ALT 5 "gcn_vop3_operand")])] "" @@ -2707,7 +2707,7 @@ [(match_operand:VEC_ALLREG_MODE 0 "register_operand") (match_operand:VEC_ALLREG_MODE 1 "gcn_vop3_operand") (match_operand:VEC_ALLREG_MODE 2 "gcn_alu_operand") - (match_operator 3 "comparison_operator" + (match_operator 3 "gcn_fp_compare_operator" [(match_operand:VEC_ALLREG_ALT 4 "gcn_alu_operand") (match_operand:VEC_ALLREG_ALT 5 "gcn_vop3_operand")]) (match_operand:DI 6 "gcn_exec_reg_operand" "e")] @@ -2725,7 +2725,7 @@ [(match_operand:VEC_ALLREG_MODE 0 "register_operand") (match_operand:VEC_ALLREG_MODE 1 "gcn_vop3_operand") (match_operand:VEC_ALLREG_MODE 2 "gcn_alu_operand") - (match_operator 3 "comparison_operator" + (match_operator 3 "gcn_fp_compare_operator" [(match_operand:VEC_ALLREG_INT_MODE 4 "gcn_alu_operand") (match_operand:VEC_ALLREG_INT_MODE 5 "gcn_vop3_operand")])] "" @@ -2742,7 +2742,7 @@ [(match_operand:VEC_ALLREG_MODE 0 "register_operand") (match_operand:VEC_ALLREG_MODE 1 "gcn_vop3_operand") (match_operand:VEC_ALLREG_MODE 2 "gcn_alu_operand") - (match_operator 3 "comparison_operator" + (match_operator 3 "gcn_fp_compare_operator" [(match_operand:VEC_ALLREG_INT_MODE 4 "gcn_alu_operand") (match_operand:VEC_ALLREG_INT_MODE 5 "gcn_vop3_operand")]) (match_operand:DI 6 "gcn_exec_reg_operand" "e")] |