===================================================================
@@ -161,6 +161,9 @@ (define_mode_attr avx_avx2
(V4SI "avx2") (V2DI "avx2")
(V8SI "avx2") (V4DI "avx2")])
+(define_mode_attr cmpmode
+ [(V8SF "V8SI") (V4SF "V4SI") (V4DF "V4DI") (V2DF "V2DI")])
+
;; Mapping of logic-shift operators
(define_code_iterator lshift [lshiftrt ashift])
@@ -1348,9 +1351,9 @@ (define_insn "<sse>_maskcmp<mode>3"
(set_attr "mode" "<MODE>")])
(define_insn "<sse>_vmmaskcmp<mode>3"
- [(set (match_operand:VF_128 0 "register_operand" "=x,x")
- (vec_merge:VF_128
- (match_operator:VF_128 3 "sse_comparison_operator"
+ [(set (match_operand:<cmpmode> 0 "register_operand" "=x,x")
+ (vec_merge:<cmpmode>
+ (match_operator:<cmpmode> 3 "sse_comparison_operator"
[(match_operand:VF_128 1 "register_operand" "0,x")
(match_operand:VF_128 2 "nonimmediate_operand" "xm,xm")])
(match_dup 1)
@@ -1406,13 +1409,13 @@ (define_insn "<sse>_ucomi"
(set_attr "mode" "<MODE>")])
(define_expand "vcond<mode>"
- [(set (match_operand:VF 0 "register_operand" "")
- (if_then_else:VF
- (match_operator 3 ""
+ [(set (match_operand 0 "register_operand" "")
+ (if_then_else
+ (match_operator:<cmpmode> 3 ""
[(match_operand:VF 4 "nonimmediate_operand" "")
(match_operand:VF 5 "nonimmediate_operand" "")])
- (match_operand:VF 1 "general_operand" "")
- (match_operand:VF 2 "general_operand" "")))]
+ (match_operand 1 "general_operand" "")
+ (match_operand 2 "general_operand" "")))]
"TARGET_SSE"
{
bool ok = ix86_expand_fp_vcond (operands);