; Vector modes for one vector register
(define_mode_iterator VEC_1REG_MODE
- [V64QI V64HI V64SI V64HF V64SF])
+ [V64SI V64HF V64SF])
(define_mode_iterator VEC_1REG_ALT
+ [V64SI V64HF V64SF])
+(define_mode_iterator VEC_ALL1REG_MODE
[V64QI V64HI V64SI V64HF V64SF])
(define_mode_iterator VEC_1REG_INT_MODE
- [V64QI V64HI V64SI])
+ [V64SI])
(define_mode_iterator VEC_1REG_INT_ALT
+ [V64SI])
+(define_mode_iterator VEC_ALL1REG_INT_MODE
+ [V64QI V64HI V64SI])
+(define_mode_iterator VEC_ALL1REG_INT_ALT
[V64QI V64HI V64SI])
; Vector modes for two vector registers
; All of above
(define_mode_iterator VEC_REG_MODE
+ [V64SI V64HF V64SF ; Single reg
+ V64DI V64DF]) ; Double reg
+(define_mode_iterator VEC_ALLREG_MODE
[V64QI V64HI V64SI V64HF V64SF ; Single reg
V64DI V64DF]) ; Double reg
"" "_exec")
(define_subst "vec_merge"
- [(set (match_operand:VEC_REG_MODE 0)
- (match_operand:VEC_REG_MODE 1))]
+ [(set (match_operand:VEC_ALLREG_MODE 0)
+ (match_operand:VEC_ALLREG_MODE 1))]
""
[(set (match_dup 0)
- (vec_merge:VEC_REG_MODE
+ (vec_merge:VEC_ALLREG_MODE
(match_dup 1)
- (match_operand:VEC_REG_MODE 3 "gcn_register_or_unspec_operand" "U0")
+ (match_operand:VEC_ALLREG_MODE 3
+ "gcn_register_or_unspec_operand" "U0")
(match_operand:DI 4 "gcn_exec_reg_operand" "e")))])
(define_subst "vec_merge_with_clobber"
- [(set (match_operand:VEC_REG_MODE 0)
- (match_operand:VEC_REG_MODE 1))
+ [(set (match_operand:VEC_ALLREG_MODE 0)
+ (match_operand:VEC_ALLREG_MODE 1))
(clobber (match_operand 2))]
""
[(set (match_dup 0)
- (vec_merge:VEC_REG_MODE
+ (vec_merge:VEC_ALLREG_MODE
(match_dup 1)
- (match_operand:VEC_REG_MODE 3 "gcn_register_or_unspec_operand" "U0")
+ (match_operand:VEC_ALLREG_MODE 3
+ "gcn_register_or_unspec_operand" "U0")
(match_operand:DI 4 "gcn_exec_reg_operand" "e")))
(clobber (match_dup 2))])
(define_subst "vec_merge_with_vcc"
- [(set (match_operand:VEC_REG_MODE 0)
- (match_operand:VEC_REG_MODE 1))
+ [(set (match_operand:VEC_ALLREG_MODE 0)
+ (match_operand:VEC_ALLREG_MODE 1))
(set (match_operand:DI 2)
(match_operand:DI 3))]
""
[(parallel
[(set (match_dup 0)
- (vec_merge:VEC_REG_MODE
+ (vec_merge:VEC_ALLREG_MODE
(match_dup 1)
- (match_operand:VEC_REG_MODE 4
+ (match_operand:VEC_ALLREG_MODE 4
"gcn_register_or_unspec_operand" "U0")
(match_operand:DI 5 "gcn_exec_reg_operand" "e")))
(set (match_dup 2)
; gather/scatter, maskload/store, etc.
(define_expand "mov<mode>"
- [(set (match_operand:VEC_REG_MODE 0 "nonimmediate_operand")
- (match_operand:VEC_REG_MODE 1 "general_operand"))]
+ [(set (match_operand:VEC_ALLREG_MODE 0 "nonimmediate_operand")
+ (match_operand:VEC_ALLREG_MODE 1 "general_operand"))]
""
{
if (MEM_P (operands[0]) && !lra_in_progress && !reload_completed)
; A pseudo instruction that helps LRA use the "U0" constraint.
(define_insn "mov<mode>_unspec"
- [(set (match_operand:VEC_REG_MODE 0 "nonimmediate_operand" "=v")
- (match_operand:VEC_REG_MODE 1 "gcn_unspec_operand" " U"))]
+ [(set (match_operand:VEC_ALLREG_MODE 0 "nonimmediate_operand" "=v")
+ (match_operand:VEC_ALLREG_MODE 1 "gcn_unspec_operand" " U"))]
""
""
[(set_attr "type" "unknown")
(set_attr "length" "0")])
(define_insn "*mov<mode>"
- [(set (match_operand:VEC_1REG_MODE 0 "nonimmediate_operand" "=v,v")
- (match_operand:VEC_1REG_MODE 1 "general_operand" "vA,B"))]
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "nonimmediate_operand" "=v,v")
+ (match_operand:VEC_ALL1REG_MODE 1 "general_operand" "vA,B"))]
""
"v_mov_b32\t%0, %1"
[(set_attr "type" "vop1,vop1")
(set_attr "length" "4,8")])
(define_insn "mov<mode>_exec"
- [(set (match_operand:VEC_1REG_MODE 0 "nonimmediate_operand"
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "nonimmediate_operand"
"=v, v, v, v, v, m")
- (vec_merge:VEC_1REG_MODE
- (match_operand:VEC_1REG_MODE 1 "general_operand"
+ (vec_merge:VEC_ALL1REG_MODE
+ (match_operand:VEC_ALL1REG_MODE 1 "general_operand"
"vA, B, v,vA, m, v")
- (match_operand:VEC_1REG_MODE 3 "gcn_alu_or_unspec_operand"
+ (match_operand:VEC_ALL1REG_MODE 3 "gcn_alu_or_unspec_operand"
"U0,U0,vA,vA,U0,U0")
(match_operand:DI 2 "register_operand" " e, e,cV,Sv, e, e")))
(clobber (match_scratch:V64DI 4 "=X, X, X, X,&v,&v"))]
; read/modify/write which is necessary for maskstore.
;(define_insn "*mov<mode>_exec_match"
-; [(set (match_operand:VEC_1REG_MODE 0 "nonimmediate_operand" "=v,v, v, m")
-; (vec_merge:VEC_1REG_MODE
-; (match_operand:VEC_1REG_MODE 1 "general_operand" "vA,B, m, v")
+; [(set (match_operand:VEC_ALL1REG_MODE 0 "nonimmediate_operand"
+; "=v,v, v, m")
+; (vec_merge:VEC_ALL1REG_MODE
+; (match_operand:VEC_ALL1REG_MODE 1 "general_operand" "vA,B, m, v")
; (match_dup 0)
; (match_operand:DI 2 "gcn_exec_reg_operand" " e,e, e, e")))
; (clobber (match_scratch:V64DI 3 "=X,X,&v,&v"))]
; flat_load v, vT
(define_insn "mov<mode>_sgprbase"
- [(set (match_operand:VEC_1REG_MODE 0 "nonimmediate_operand" "= v, v, v, m")
- (unspec:VEC_1REG_MODE
- [(match_operand:VEC_1REG_MODE 1 "general_operand" " vA,vB, m, v")]
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "nonimmediate_operand"
+ "= v, v, v, m")
+ (unspec:VEC_ALL1REG_MODE
+ [(match_operand:VEC_ALL1REG_MODE 1 "general_operand"
+ " vA,vB, m, v")]
UNSPEC_SGPRBASE))
(clobber (match_operand:V64DI 2 "register_operand" "=&v,&v,&v,&v"))]
"lra_in_progress || reload_completed"
; gcn_secondary_reload. It allows a reload with a scratch register.
(define_expand "reload_in<mode>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand" "= v")
- (match_operand:VEC_REG_MODE 1 "memory_operand" " m"))
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand" "= v")
+ (match_operand:VEC_ALLREG_MODE 1 "memory_operand" " m"))
(clobber (match_operand:V64DI 2 "register_operand" "=&v"))]
""
{
; reload_out is similar to reload_in, above.
(define_expand "reload_out<mode>"
- [(set (match_operand:VEC_REG_MODE 0 "memory_operand" "= m")
- (match_operand:VEC_REG_MODE 1 "register_operand" " v"))
+ [(set (match_operand:VEC_ALLREG_MODE 0 "memory_operand" "= m")
+ (match_operand:VEC_ALLREG_MODE 1 "register_operand" " v"))
(clobber (match_operand:V64DI 2 "register_operand" "=&v"))]
""
{
; Expand scalar addresses into gather/scatter patterns
(define_split
- [(set (match_operand:VEC_REG_MODE 0 "memory_operand")
- (unspec:VEC_REG_MODE
- [(match_operand:VEC_REG_MODE 1 "general_operand")]
+ [(set (match_operand:VEC_ALLREG_MODE 0 "memory_operand")
+ (unspec:VEC_ALLREG_MODE
+ [(match_operand:VEC_ALLREG_MODE 1 "general_operand")]
UNSPEC_SGPRBASE))
(clobber (match_scratch:V64DI 2))]
""
})
(define_split
- [(set (match_operand:VEC_REG_MODE 0 "memory_operand")
- (vec_merge:VEC_REG_MODE
- (match_operand:VEC_REG_MODE 1 "general_operand")
- (match_operand:VEC_REG_MODE 2 "")
+ [(set (match_operand:VEC_ALLREG_MODE 0 "memory_operand")
+ (vec_merge:VEC_ALLREG_MODE
+ (match_operand:VEC_ALLREG_MODE 1 "general_operand")
+ (match_operand:VEC_ALLREG_MODE 2 "")
(match_operand:DI 3 "gcn_exec_reg_operand")))
(clobber (match_scratch:V64DI 4))]
""
})
(define_split
- [(set (match_operand:VEC_REG_MODE 0 "nonimmediate_operand")
- (unspec:VEC_REG_MODE
- [(match_operand:VEC_REG_MODE 1 "memory_operand")]
+ [(set (match_operand:VEC_ALLREG_MODE 0 "nonimmediate_operand")
+ (unspec:VEC_ALLREG_MODE
+ [(match_operand:VEC_ALLREG_MODE 1 "memory_operand")]
UNSPEC_SGPRBASE))
(clobber (match_scratch:V64DI 2))]
""
[(set (match_dup 0)
- (unspec:VEC_REG_MODE [(match_dup 5) (match_dup 6) (match_dup 7)
+ (unspec:VEC_ALLREG_MODE [(match_dup 5) (match_dup 6) (match_dup 7)
(mem:BLK (scratch))]
UNSPEC_GATHER))]
{
})
(define_split
- [(set (match_operand:VEC_REG_MODE 0 "nonimmediate_operand")
- (vec_merge:VEC_REG_MODE
- (match_operand:VEC_REG_MODE 1 "memory_operand")
- (match_operand:VEC_REG_MODE 2 "")
+ [(set (match_operand:VEC_ALLREG_MODE 0 "nonimmediate_operand")
+ (vec_merge:VEC_ALLREG_MODE
+ (match_operand:VEC_ALLREG_MODE 1 "memory_operand")
+ (match_operand:VEC_ALLREG_MODE 2 "")
(match_operand:DI 3 "gcn_exec_reg_operand")))
(clobber (match_scratch:V64DI 4))]
""
[(set (match_dup 0)
- (vec_merge:VEC_REG_MODE
- (unspec:VEC_REG_MODE [(match_dup 5) (match_dup 6) (match_dup 7)
- (mem:BLK (scratch))]
- UNSPEC_GATHER)
+ (vec_merge:VEC_ALLREG_MODE
+ (unspec:VEC_ALLREG_MODE [(match_dup 5) (match_dup 6) (match_dup 7)
+ (mem:BLK (scratch))]
+ UNSPEC_GATHER)
(match_dup 2)
(match_dup 3)))]
{
; FIXME these should take A immediates
(define_insn "*vec_set<mode>"
- [(set (match_operand:VEC_1REG_MODE 0 "register_operand" "= v")
- (vec_merge:VEC_1REG_MODE
- (vec_duplicate:VEC_1REG_MODE
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "register_operand" "= v")
+ (vec_merge:VEC_ALL1REG_MODE
+ (vec_duplicate:VEC_ALL1REG_MODE
(match_operand:<SCALAR_MODE> 1 "register_operand" " Sv"))
- (match_operand:VEC_1REG_MODE 3 "gcn_register_or_unspec_operand"
+ (match_operand:VEC_ALL1REG_MODE 3 "gcn_register_or_unspec_operand"
" U0")
(ashift (const_int 1)
(match_operand:SI 2 "gcn_alu_operand" "SvB"))))]
(set_attr "laneselect" "yes")])
(define_expand "vec_set<mode>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand")
- (vec_merge:VEC_REG_MODE
- (vec_duplicate:VEC_REG_MODE
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand")
+ (vec_merge:VEC_ALLREG_MODE
+ (vec_duplicate:VEC_ALLREG_MODE
(match_operand:<SCALAR_MODE> 1 "register_operand"))
(match_dup 0)
(ashift (const_int 1) (match_operand:SI 2 "gcn_alu_operand"))))]
"")
(define_insn "*vec_set<mode>_1"
- [(set (match_operand:VEC_1REG_MODE 0 "register_operand" "=v")
- (vec_merge:VEC_1REG_MODE
- (vec_duplicate:VEC_1REG_MODE
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "register_operand" "=v")
+ (vec_merge:VEC_ALL1REG_MODE
+ (vec_duplicate:VEC_ALL1REG_MODE
(match_operand:<SCALAR_MODE> 1 "register_operand" "Sv"))
- (match_operand:VEC_1REG_MODE 3 "gcn_register_or_unspec_operand"
+ (match_operand:VEC_ALL1REG_MODE 3 "gcn_register_or_unspec_operand"
"U0")
(match_operand:SI 2 "const_int_operand" " i")))]
"((unsigned) exact_log2 (INTVAL (operands[2])) < 64)"
(set_attr "laneselect" "yes")])
(define_insn "vec_duplicate<mode><exec>"
- [(set (match_operand:VEC_1REG_MODE 0 "register_operand" "=v")
- (vec_duplicate:VEC_1REG_MODE
- (match_operand:<SCALAR_MODE> 1 "gcn_alu_operand" "SvB")))]
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "register_operand" "=v")
+ (vec_duplicate:VEC_ALL1REG_MODE
+ (match_operand:<SCALAR_MODE> 1 "gcn_alu_operand" "SvB")))]
""
"v_mov_b32\t%0, %1"
[(set_attr "type" "vop3a")
(define_insn "vec_extract<mode><scalar_mode>"
[(set (match_operand:<SCALAR_MODE> 0 "register_operand" "=Sg")
(vec_select:<SCALAR_MODE>
- (match_operand:VEC_1REG_MODE 1 "register_operand" " v")
- (parallel [(match_operand:SI 2 "gcn_alu_operand" "SvB")])))]
+ (match_operand:VEC_ALL1REG_MODE 1 "register_operand" " v")
+ (parallel [(match_operand:SI 2 "gcn_alu_operand" "SvB")])))]
""
"v_readlane_b32 %0, %1, %2"
[(set_attr "type" "vop3a")
(set_attr "laneselect" "yes")])
(define_expand "vec_init<mode><scalar_mode>"
- [(match_operand:VEC_REG_MODE 0 "register_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "register_operand")
(match_operand 1)]
""
{
;; - Multiple forms of address expression are supported, below.
(define_expand "gather_load<mode>"
- [(match_operand:VEC_REG_MODE 0 "register_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "register_operand")
(match_operand:DI 1 "register_operand")
(match_operand 2 "register_operand")
(match_operand 3 "immediate_operand")
})
(define_expand "gather<mode>_exec"
- [(match_operand:VEC_REG_MODE 0 "register_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "register_operand")
(match_operand:DI 1 "register_operand")
(match_operand:V64SI 2 "register_operand")
(match_operand 3 "immediate_operand")
; Allow any address expression
(define_expand "gather<mode>_expr<exec>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand")
- (unspec:VEC_REG_MODE
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand")
+ (unspec:VEC_ALLREG_MODE
[(match_operand 1 "")
(match_operand 2 "immediate_operand")
(match_operand 3 "immediate_operand")
{})
(define_insn "gather<mode>_insn_1offset<exec>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand" "=v")
- (unspec:VEC_REG_MODE
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand" "=v")
+ (unspec:VEC_ALLREG_MODE
[(plus:V64DI (match_operand:V64DI 1 "register_operand" " v")
(vec_duplicate:V64DI
(match_operand 2 "immediate_operand" " n")))
(set_attr "length" "12")])
(define_insn "gather<mode>_insn_1offset_ds<exec>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand" "=v")
- (unspec:VEC_REG_MODE
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand" "=v")
+ (unspec:VEC_ALLREG_MODE
[(plus:V64SI (match_operand:V64SI 1 "register_operand" " v")
(vec_duplicate:V64SI
(match_operand 2 "immediate_operand" " n")))
(set_attr "length" "12")])
(define_insn "gather<mode>_insn_2offsets<exec>"
- [(set (match_operand:VEC_REG_MODE 0 "register_operand" "=v")
- (unspec:VEC_REG_MODE
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand" "=v")
+ (unspec:VEC_ALLREG_MODE
[(plus:V64DI
(plus:V64DI
(vec_duplicate:V64DI
(match_operand 1 "register_operand")
(match_operand 2 "immediate_operand")
(match_operand:SI 3 "gcn_alu_operand")
- (match_operand:VEC_REG_MODE 4 "register_operand")]
+ (match_operand:VEC_ALLREG_MODE 4 "register_operand")]
""
{
rtx addr = gcn_expand_scaled_offsets (DEFAULT_ADDR_SPACE, operands[0],
(match_operand 1 "register_operand")
(match_operand 2 "immediate_operand")
(match_operand:SI 3 "gcn_alu_operand")
- (match_operand:VEC_REG_MODE 4 "register_operand")
+ (match_operand:VEC_ALLREG_MODE 4 "register_operand")
(match_operand:DI 5 "gcn_exec_reg_operand")]
""
{
[(set (mem:BLK (scratch))
(unspec:BLK
[(match_operand:V64DI 0 "")
- (match_operand:VEC_REG_MODE 1 "register_operand")
+ (match_operand:VEC_ALLREG_MODE 1 "register_operand")
(match_operand 2 "immediate_operand")
(match_operand 3 "immediate_operand")]
UNSPEC_SCATTER))]
[(plus:V64DI (match_operand:V64DI 0 "register_operand" "v")
(vec_duplicate:V64DI
(match_operand 1 "immediate_operand" "n")))
- (match_operand:VEC_REG_MODE 2 "register_operand" "v")
+ (match_operand:VEC_ALLREG_MODE 2 "register_operand" "v")
(match_operand 3 "immediate_operand" "n")
(match_operand 4 "immediate_operand" "n")]
UNSPEC_SCATTER))]
[(plus:V64SI (match_operand:V64SI 0 "register_operand" "v")
(vec_duplicate:V64SI
(match_operand 1 "immediate_operand" "n")))
- (match_operand:VEC_REG_MODE 2 "register_operand" "v")
+ (match_operand:VEC_ALLREG_MODE 2 "register_operand" "v")
(match_operand 3 "immediate_operand" "n")
(match_operand 4 "immediate_operand" "n")]
UNSPEC_SCATTER))]
(match_operand:V64SI 1 "register_operand" " v")))
(vec_duplicate:V64DI (match_operand 2 "immediate_operand"
" n")))
- (match_operand:VEC_REG_MODE 3 "register_operand" " v")
+ (match_operand:VEC_ALLREG_MODE 3 "register_operand" " v")
(match_operand 4 "immediate_operand" " n")
(match_operand 5 "immediate_operand" " n")]
UNSPEC_SCATTER))]
;; {{{ Permutations
(define_insn "ds_bpermute<mode>"
- [(set (match_operand:VEC_1REG_MODE 0 "register_operand" "=v")
- (unspec:VEC_1REG_MODE
- [(match_operand:VEC_1REG_MODE 2 "register_operand" " v")
- (match_operand:V64SI 1 "register_operand" " v")
- (match_operand:DI 3 "gcn_exec_reg_operand" " e")]
+ [(set (match_operand:VEC_ALL1REG_MODE 0 "register_operand" "=v")
+ (unspec:VEC_ALL1REG_MODE
+ [(match_operand:VEC_ALL1REG_MODE 2 "register_operand" " v")
+ (match_operand:V64SI 1 "register_operand" " v")
+ (match_operand:DI 3 "gcn_exec_reg_operand" " e")]
UNSPEC_BPERMUTE))]
""
"ds_bpermute_b32\t%0, %1, %2\;s_waitcnt\tlgkmcnt(0)"
;; }}}
;; {{{ ALU generic case
-(define_mode_iterator VEC_INT_MODE [V64QI V64HI V64SI V64DI])
+(define_mode_iterator VEC_INT_MODE [V64SI V64DI])
(define_code_iterator bitop [and ior xor])
(define_code_iterator shiftop [ashift lshiftrt ashiftrt])
(define_expand "vcond_mask_<mode>di"
[(parallel
- [(set (match_operand:VEC_REG_MODE 0 "register_operand" "")
- (vec_merge:VEC_REG_MODE
- (match_operand:VEC_REG_MODE 1 "gcn_vop3_operand" "")
- (match_operand:VEC_REG_MODE 2 "gcn_alu_operand" "")
- (match_operand:DI 3 "register_operand" "")))
+ [(set (match_operand:VEC_ALLREG_MODE 0 "register_operand" "")
+ (vec_merge:VEC_ALLREG_MODE
+ (match_operand:VEC_ALLREG_MODE 1 "gcn_vop3_operand" "")
+ (match_operand:VEC_ALLREG_MODE 2 "gcn_alu_operand" "")
+ (match_operand:DI 3 "register_operand" "")))
(clobber (scratch:V64DI))])]
""
"")
-(define_expand "vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>"
- [(match_operand:VEC_1REG_MODE 0 "register_operand")
- (match_operand:VEC_1REG_MODE 1 "gcn_vop3_operand")
- (match_operand:VEC_1REG_MODE 2 "gcn_alu_operand")
+(define_expand "vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>"
+ [(match_operand:VEC_ALL1REG_MODE 0 "register_operand")
+ (match_operand:VEC_ALL1REG_MODE 1 "gcn_vop3_operand")
+ (match_operand:VEC_ALL1REG_MODE 2 "gcn_alu_operand")
(match_operator 3 "comparison_operator"
[(match_operand:VEC_1REG_ALT 4 "gcn_alu_operand")
(match_operand:VEC_1REG_ALT 5 "gcn_vop3_operand")])]
rtx tmp = gen_reg_rtx (DImode);
emit_insn (gen_vec_cmp<VEC_1REG_ALT:mode>di
(tmp, operands[3], operands[4], operands[5]));
- emit_insn (gen_vcond_mask_<VEC_1REG_MODE:mode>di
+ emit_insn (gen_vcond_mask_<VEC_ALL1REG_MODE:mode>di
(operands[0], operands[1], operands[2], tmp));
DONE;
})
-(define_expand "vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>_exec"
- [(match_operand:VEC_1REG_MODE 0 "register_operand")
- (match_operand:VEC_1REG_MODE 1 "gcn_vop3_operand")
- (match_operand:VEC_1REG_MODE 2 "gcn_alu_operand")
+(define_expand "vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec"
+ [(match_operand:VEC_ALL1REG_MODE 0 "register_operand")
+ (match_operand:VEC_ALL1REG_MODE 1 "gcn_vop3_operand")
+ (match_operand:VEC_ALL1REG_MODE 2 "gcn_alu_operand")
(match_operator 3 "comparison_operator"
[(match_operand:VEC_1REG_ALT 4 "gcn_alu_operand")
(match_operand:VEC_1REG_ALT 5 "gcn_vop3_operand")])
rtx tmp = gen_reg_rtx (DImode);
emit_insn (gen_vec_cmp<VEC_1REG_ALT:mode>di_exec
(tmp, operands[3], operands[4], operands[5], operands[6]));
- emit_insn (gen_vcond_mask_<VEC_1REG_MODE:mode>di
+ emit_insn (gen_vcond_mask_<VEC_ALL1REG_MODE:mode>di
(operands[0], operands[1], operands[2], tmp));
DONE;
})
-(define_expand "vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>"
- [(match_operand:VEC_1REG_MODE 0 "register_operand")
- (match_operand:VEC_1REG_MODE 1 "gcn_vop3_operand")
- (match_operand:VEC_1REG_MODE 2 "gcn_alu_operand")
+(define_expand "vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>"
+ [(match_operand:VEC_ALL1REG_MODE 0 "register_operand")
+ (match_operand:VEC_ALL1REG_MODE 1 "gcn_vop3_operand")
+ (match_operand:VEC_ALL1REG_MODE 2 "gcn_alu_operand")
(match_operator 3 "comparison_operator"
[(match_operand:VEC_1REG_INT_ALT 4 "gcn_alu_operand")
(match_operand:VEC_1REG_INT_ALT 5 "gcn_vop3_operand")])]
rtx tmp = gen_reg_rtx (DImode);
emit_insn (gen_vec_cmp<VEC_1REG_INT_ALT:mode>di
(tmp, operands[3], operands[4], operands[5]));
- emit_insn (gen_vcond_mask_<VEC_1REG_MODE:mode>di
+ emit_insn (gen_vcond_mask_<VEC_ALL1REG_MODE:mode>di
(operands[0], operands[1], operands[2], tmp));
DONE;
})
-(define_expand "vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec"
- [(match_operand:VEC_1REG_MODE 0 "register_operand")
- (match_operand:VEC_1REG_MODE 1 "gcn_vop3_operand")
- (match_operand:VEC_1REG_MODE 2 "gcn_alu_operand")
+(define_expand "vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec"
+ [(match_operand:VEC_ALL1REG_MODE 0 "register_operand")
+ (match_operand:VEC_ALL1REG_MODE 1 "gcn_vop3_operand")
+ (match_operand:VEC_ALL1REG_MODE 2 "gcn_alu_operand")
(match_operator 3 "comparison_operator"
[(match_operand:VEC_1REG_INT_ALT 4 "gcn_alu_operand")
(match_operand:VEC_1REG_INT_ALT 5 "gcn_vop3_operand")])
rtx tmp = gen_reg_rtx (DImode);
emit_insn (gen_vec_cmp<VEC_1REG_INT_ALT:mode>di_exec
(tmp, operands[3], operands[4], operands[5], operands[6]));
- emit_insn (gen_vcond_mask_<VEC_1REG_MODE:mode>di
+ emit_insn (gen_vcond_mask_<VEC_ALL1REG_MODE:mode>di
(operands[0], operands[1], operands[2], tmp));
DONE;
})
})
(define_expand "maskload<mode>di"
- [(match_operand:VEC_REG_MODE 0 "register_operand")
- (match_operand:VEC_REG_MODE 1 "memory_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "register_operand")
+ (match_operand:VEC_ALLREG_MODE 1 "memory_operand")
(match_operand 2 "")]
""
{
})
(define_expand "maskstore<mode>di"
- [(match_operand:VEC_REG_MODE 0 "memory_operand")
- (match_operand:VEC_REG_MODE 1 "register_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "memory_operand")
+ (match_operand:VEC_ALLREG_MODE 1 "register_operand")
(match_operand 2 "")]
""
{
})
(define_expand "mask_gather_load<mode>"
- [(match_operand:VEC_REG_MODE 0 "register_operand")
+ [(match_operand:VEC_ALLREG_MODE 0 "register_operand")
(match_operand:DI 1 "register_operand")
(match_operand 2 "register_operand")
(match_operand 3 "immediate_operand")
(match_operand 1 "register_operand")
(match_operand 2 "immediate_operand")
(match_operand:SI 3 "gcn_alu_operand")
- (match_operand:VEC_REG_MODE 4 "register_operand")
+ (match_operand:VEC_ALLREG_MODE 4 "register_operand")
(match_operand:DI 5 "")]
""
{
; Instructions to move a scalar value from lane 63 of a vector register.
(define_insn "mov_from_lane63_<mode>"
- [(set (match_operand:<SCALAR_MODE> 0 "register_operand" "=Sg,v")
+ [(set (match_operand:<SCALAR_MODE> 0 "register_operand" "=Sg,v")
(unspec:<SCALAR_MODE>
- [(match_operand:VEC_1REG_MODE 1 "register_operand" "v,v")]
+ [(match_operand:VEC_ALL1REG_MODE 1 "register_operand" "v,v")]
UNSPEC_MOV_FROM_LANE63))]
""
"@