\f
(define_insn "movdf"
- [(set (match_operand:DF 0 "general_operand" "=g,g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g,g")
(match_operand:DF 1 "general_operand" "G,gF"))]
""
"@
mov%# %1,%0")
(define_insn "movsf"
- [(set (match_operand:SF 0 "general_operand" "=g,g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g,g")
(match_operand:SF 1 "general_operand" "G,gF"))]
""
"@
;; "movh %1,%0")
(define_insn "movdi"
- [(set (match_operand:DI 0 "general_operand" "=g,g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g,g")
(match_operand:DI 1 "general_operand" "I,g"))]
""
"@
;; "addl3 $63,#,dst" but this is slower than movzbl and takes as much space.
(define_insn "movsi"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:SI 1 "general_operand" "g"))]
""
"*
}")
(define_insn "movhi"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(match_operand:HI 1 "general_operand" "g"))]
""
"*
}")
(define_insn "movqi"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(match_operand:QI 1 "general_operand" "g"))]
""
"*
;; that anything generated as this insn will be recognized as one
;; and that it won't successfully combine with anything.
(define_insn "movstrhi1"
- [(set (match_operand:BLK 0 "general_operand" "=g")
- (match_operand:BLK 1 "general_operand" "g"))
+ [(set (match_operand:BLK 0 "memory_operand" "=m")
+ (match_operand:BLK 1 "memory_operand" "m"))
(use (match_operand:HI 2 "general_operand" "g"))
(clobber (reg:SI 0))
(clobber (reg:SI 1))
;; Extension and truncation insns.
(define_insn "truncsiqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(truncate:QI (match_operand:SI 1 "nonimmediate_operand" "g")))]
""
"cvtlb %1,%0")
(define_insn "truncsihi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(truncate:HI (match_operand:SI 1 "nonimmediate_operand" "g")))]
""
"cvtlw %1,%0")
(define_insn "trunchiqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(truncate:QI (match_operand:HI 1 "nonimmediate_operand" "g")))]
""
"cvtwb %1,%0")
(define_insn "extendhisi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "g")))]
""
"cvtwl %1,%0")
(define_insn "extendqihi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"cvtbw %1,%0")
(define_insn "extendqisi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"cvtbl %1,%0")
(define_insn "extendsfdf2"
- [(set (match_operand:DF 0 "general_operand" "=g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g")
(float_extend:DF (match_operand:SF 1 "general_operand" "gF")))]
""
"cvtf%# %1,%0")
(define_insn "truncdfsf2"
- [(set (match_operand:SF 0 "general_operand" "=g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g")
(float_truncate:SF (match_operand:DF 1 "general_operand" "gF")))]
""
"cvt%#f %1,%0")
(define_insn "zero_extendhisi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "g")))]
""
"movzwl %1,%0")
(define_insn "zero_extendqihi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"movzbw %1,%0")
(define_insn "zero_extendqisi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"movzbl %1,%0")
;; Fix-to-float conversion insns.
(define_insn "floatsisf2"
- [(set (match_operand:SF 0 "general_operand" "=g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g")
(float:SF (match_operand:SI 1 "nonimmediate_operand" "g")))]
""
"cvtlf %1,%0")
(define_insn "floatsidf2"
- [(set (match_operand:DF 0 "general_operand" "=g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g")
(float:DF (match_operand:SI 1 "nonimmediate_operand" "g")))]
""
"cvtl%# %1,%0")
(define_insn "floathisf2"
- [(set (match_operand:SF 0 "general_operand" "=g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g")
(float:SF (match_operand:HI 1 "nonimmediate_operand" "g")))]
""
"cvtwf %1,%0")
(define_insn "floathidf2"
- [(set (match_operand:DF 0 "general_operand" "=g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g")
(float:DF (match_operand:HI 1 "nonimmediate_operand" "g")))]
""
"cvtw%# %1,%0")
(define_insn "floatqisf2"
- [(set (match_operand:SF 0 "general_operand" "=g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g")
(float:SF (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"cvtbf %1,%0")
(define_insn "floatqidf2"
- [(set (match_operand:DF 0 "general_operand" "=g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g")
(float:DF (match_operand:QI 1 "nonimmediate_operand" "g")))]
""
"cvtb%# %1,%0")
;; Float-to-fix conversion insns.
(define_insn "fix_truncsfqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(fix:QI (fix:SF (match_operand:SF 1 "general_operand" "gF"))))]
""
"cvtfb %1,%0")
(define_insn "fix_truncsfhi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(fix:HI (fix:SF (match_operand:SF 1 "general_operand" "gF"))))]
""
"cvtfw %1,%0")
(define_insn "fix_truncsfsi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(fix:SI (fix:SF (match_operand:SF 1 "general_operand" "gF"))))]
""
"cvtfl %1,%0")
(define_insn "fix_truncdfqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(fix:QI (fix:DF (match_operand:DF 1 "general_operand" "gF"))))]
""
"cvt%#b %1,%0")
(define_insn "fix_truncdfhi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(fix:HI (fix:DF (match_operand:DF 1 "general_operand" "gF"))))]
""
"cvt%#w %1,%0")
(define_insn "fix_truncdfsi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(fix:SI (fix:DF (match_operand:DF 1 "general_operand" "gF"))))]
""
"cvt%#l %1,%0")
;;- All kinds of add instructions.
(define_insn "adddf3"
- [(set (match_operand:DF 0 "general_operand" "=g,g,g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g,g,g")
(plus:DF (match_operand:DF 1 "general_operand" "0,gF,gF")
(match_operand:DF 2 "general_operand" "gF,0,gF")))]
""
add%#3 %1,%2,%0")
(define_insn "addsf3"
- [(set (match_operand:SF 0 "general_operand" "=g,g,g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g,g,g")
(plus:SF (match_operand:SF 1 "general_operand" "0,gF,gF")
(match_operand:SF 2 "general_operand" "gF,0,gF")))]
""
(define_insn "addsi3"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(plus:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:SI 2 "general_operand" "g")))]
""
}")
(define_insn "addhi3"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(plus:HI (match_operand:HI 1 "general_operand" "g")
(match_operand:HI 2 "general_operand" "g")))]
""
}")
(define_insn "addqi3"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(plus:QI (match_operand:QI 1 "general_operand" "g")
(match_operand:QI 2 "general_operand" "g")))]
""
;; The add-with-carry (adwc) instruction only accepts two operands.
(define_insn "adddi3"
- [(set (match_operand:DI 0 "general_operand" "=ro>,ro>")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=ro>,ro>")
(plus:DI (match_operand:DI 1 "general_operand" "%0,ro>")
(match_operand:DI 2 "general_operand" "Fro,F")))]
""
;;- All kinds of subtract instructions.
(define_insn "subdf3"
- [(set (match_operand:DF 0 "general_operand" "=g,g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g,g")
(minus:DF (match_operand:DF 1 "general_operand" "0,gF")
(match_operand:DF 2 "general_operand" "gF,gF")))]
""
sub%#3 %2,%1,%0")
(define_insn "subsf3"
- [(set (match_operand:SF 0 "general_operand" "=g,g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g,g")
(minus:SF (match_operand:SF 1 "general_operand" "0,gF")
(match_operand:SF 2 "general_operand" "gF,gF")))]
""
subf3 %2,%1,%0")
(define_insn "subsi3"
- [(set (match_operand:SI 0 "general_operand" "=g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g")
(minus:SI (match_operand:SI 1 "general_operand" "0,g")
(match_operand:SI 2 "general_operand" "g,g")))]
""
subl3 %2,%1,%0")
(define_insn "subhi3"
- [(set (match_operand:HI 0 "general_operand" "=g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g")
(minus:HI (match_operand:HI 1 "general_operand" "0,g")
(match_operand:HI 2 "general_operand" "g,g")))]
""
subw3 %2,%1,%0")
(define_insn "subqi3"
- [(set (match_operand:QI 0 "general_operand" "=g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g")
(minus:QI (match_operand:QI 1 "general_operand" "0,g")
(match_operand:QI 2 "general_operand" "g,g")))]
""
;; The subtract-with-carry (sbwc) instruction only takes two operands.
(define_insn "subdi3"
- [(set (match_operand:DI 0 "general_operand" "=or>,or>")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=or>,or>")
(minus:DI (match_operand:DI 1 "general_operand" "0,or>")
(match_operand:DI 2 "general_operand" "For,F")))]
""
;;- Multiply instructions.
(define_insn "muldf3"
- [(set (match_operand:DF 0 "general_operand" "=g,g,g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g,g,g")
(mult:DF (match_operand:DF 1 "general_operand" "0,gF,gF")
(match_operand:DF 2 "general_operand" "gF,0,gF")))]
""
mul%#3 %1,%2,%0")
(define_insn "mulsf3"
- [(set (match_operand:SF 0 "general_operand" "=g,g,g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g,g,g")
(mult:SF (match_operand:SF 1 "general_operand" "0,gF,gF")
(match_operand:SF 2 "general_operand" "gF,0,gF")))]
""
mulf3 %1,%2,%0")
(define_insn "mulsi3"
- [(set (match_operand:SI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g,g")
(mult:SI (match_operand:SI 1 "general_operand" "0,g,g")
(match_operand:SI 2 "general_operand" "g,0,g")))]
""
mull3 %1,%2,%0")
(define_insn "mulhi3"
- [(set (match_operand:HI 0 "general_operand" "=g,g,")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g,")
(mult:HI (match_operand:HI 1 "general_operand" "0,g,g")
(match_operand:HI 2 "general_operand" "g,0,g")))]
""
mulw3 %1,%2,%0")
(define_insn "mulqi3"
- [(set (match_operand:QI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g,g")
(mult:QI (match_operand:QI 1 "general_operand" "0,g,g")
(match_operand:QI 2 "general_operand" "g,0,g")))]
""
mulb3 %1,%2,%0")
(define_insn "mulsidi3"
- [(set (match_operand:DI 0 "general_operand" "=g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g")
(mult:DI (sign_extend:DI
(match_operand:SI 1 "nonimmediate_operand" "g"))
(sign_extend:DI
"emul %1,%2,$0,%0")
(define_insn ""
- [(set (match_operand:DI 0 "general_operand" "=g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g")
(plus:DI
(mult:DI (sign_extend:DI
(match_operand:SI 1 "nonimmediate_operand" "g"))
;; 'F' constraint means type CONST_DOUBLE
(define_insn ""
- [(set (match_operand:DI 0 "general_operand" "=g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g")
(plus:DI
(mult:DI (sign_extend:DI
(match_operand:SI 1 "nonimmediate_operand" "g"))
;;- Divide instructions.
(define_insn "divdf3"
- [(set (match_operand:DF 0 "general_operand" "=g,g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g,g")
(div:DF (match_operand:DF 1 "general_operand" "0,gF")
(match_operand:DF 2 "general_operand" "gF,gF")))]
""
div%#3 %2,%1,%0")
(define_insn "divsf3"
- [(set (match_operand:SF 0 "general_operand" "=g,g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g,g")
(div:SF (match_operand:SF 1 "general_operand" "0,gF")
(match_operand:SF 2 "general_operand" "gF,gF")))]
""
divf3 %2,%1,%0")
(define_insn "divsi3"
- [(set (match_operand:SI 0 "general_operand" "=g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g")
(div:SI (match_operand:SI 1 "general_operand" "0,g")
(match_operand:SI 2 "general_operand" "g,g")))]
""
divl3 %2,%1,%0")
(define_insn "divhi3"
- [(set (match_operand:HI 0 "general_operand" "=g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g")
(div:HI (match_operand:HI 1 "general_operand" "0,g")
(match_operand:HI 2 "general_operand" "g,g")))]
""
divw3 %2,%1,%0")
(define_insn "divqi3"
- [(set (match_operand:QI 0 "general_operand" "=g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g")
(div:QI (match_operand:QI 1 "general_operand" "0,g")
(match_operand:QI 2 "general_operand" "g,g")))]
""
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g")
(and:SI (not:SI (match_operand:SI 1 "general_operand" "g,g"))
(match_operand:SI 2 "general_operand" "0,g")))]
""
bicl3 %1,%2,%0")
(define_insn ""
- [(set (match_operand:HI 0 "general_operand" "=g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g")
(and:HI (not:HI (match_operand:HI 1 "general_operand" "g,g"))
(match_operand:HI 2 "general_operand" "0,g")))]
""
bicw3 %1,%2,%0")
(define_insn ""
- [(set (match_operand:QI 0 "general_operand" "=g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g")
(and:QI (not:QI (match_operand:QI 1 "general_operand" "g,g"))
(match_operand:QI 2 "general_operand" "0,g")))]
""
;; opportunities in combine.c.
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g")
(and:SI (match_operand:SI 1 "general_operand" "0,g")
(match_operand:SI 2 "const_int_operand" "n,n")))]
""
bicl3 %N2,%1,%0")
(define_insn ""
- [(set (match_operand:HI 0 "general_operand" "=g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g")
(and:HI (match_operand:HI 1 "general_operand" "0,g")
(match_operand:HI 2 "const_int_operand" "n,n")))]
""
bicw3 %H2,%1,%0")
(define_insn ""
- [(set (match_operand:QI 0 "general_operand" "=g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g")
(and:QI (match_operand:QI 1 "general_operand" "0,g")
(match_operand:QI 2 "const_int_operand" "n,n")))]
""
;;- Bit set instructions.
(define_insn "iorsi3"
- [(set (match_operand:SI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g,g")
(ior:SI (match_operand:SI 1 "general_operand" "0,g,g")
(match_operand:SI 2 "general_operand" "g,0,g")))]
""
bisl3 %2,%1,%0")
(define_insn "iorhi3"
- [(set (match_operand:HI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g,g")
(ior:HI (match_operand:HI 1 "general_operand" "0,g,g")
(match_operand:HI 2 "general_operand" "g,0,g")))]
""
bisw3 %2,%1,%0")
(define_insn "iorqi3"
- [(set (match_operand:QI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g,g")
(ior:QI (match_operand:QI 1 "general_operand" "0,g,g")
(match_operand:QI 2 "general_operand" "g,0,g")))]
""
;;- xor instructions.
(define_insn "xorsi3"
- [(set (match_operand:SI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,g,g")
(xor:SI (match_operand:SI 1 "general_operand" "0,g,g")
(match_operand:SI 2 "general_operand" "g,0,g")))]
""
xorl3 %2,%1,%0")
(define_insn "xorhi3"
- [(set (match_operand:HI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g,g,g")
(xor:HI (match_operand:HI 1 "general_operand" "0,g,g")
(match_operand:HI 2 "general_operand" "g,0,g")))]
""
xorw3 %2,%1,%0")
(define_insn "xorqi3"
- [(set (match_operand:QI 0 "general_operand" "=g,g,g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g,g,g")
(xor:QI (match_operand:QI 1 "general_operand" "0,g,g")
(match_operand:QI 2 "general_operand" "g,0,g")))]
""
xorb3 %2,%1,%0")
\f
(define_insn "negdf2"
- [(set (match_operand:DF 0 "general_operand" "=g")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=g")
(neg:DF (match_operand:DF 1 "general_operand" "gF")))]
""
"mneg%# %1,%0")
(define_insn "negsf2"
- [(set (match_operand:SF 0 "general_operand" "=g")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=g")
(neg:SF (match_operand:SF 1 "general_operand" "gF")))]
""
"mnegf %1,%0")
(define_insn "negsi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(neg:SI (match_operand:SI 1 "general_operand" "g")))]
""
"mnegl %1,%0")
(define_insn "neghi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(neg:HI (match_operand:HI 1 "general_operand" "g")))]
""
"mnegw %1,%0")
(define_insn "negqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(neg:QI (match_operand:QI 1 "general_operand" "g")))]
""
"mnegb %1,%0")
\f
(define_insn "one_cmplsi2"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(not:SI (match_operand:SI 1 "general_operand" "g")))]
""
"mcoml %1,%0")
(define_insn "one_cmplhi2"
- [(set (match_operand:HI 0 "general_operand" "=g")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=g")
(not:HI (match_operand:HI 1 "general_operand" "g")))]
""
"mcomw %1,%0")
(define_insn "one_cmplqi2"
- [(set (match_operand:QI 0 "general_operand" "=g")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=g")
(not:QI (match_operand:QI 1 "general_operand" "g")))]
""
"mcomb %1,%0")
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(ashiftrt:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "const_int_operand" "n")))]
""
"ashl $%n2,%1,%0")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(ashiftrt:SI (match_operand:SI 1 "general_operand" "g")
(neg:QI (match_operand:QI 2 "general_operand" "g"))))]
""
"ashl %2,%1,%0")
(define_insn "ashlsi3"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(ashift:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "general_operand" "g")))]
""
}")
(define_insn "ashldi3"
- [(set (match_operand:DI 0 "general_operand" "=g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g")
(ashift:DI (match_operand:DI 1 "general_operand" "g")
(match_operand:QI 2 "general_operand" "g")))]
""
"ashq %2,%1,%0")
(define_insn ""
- [(set (match_operand:DI 0 "general_operand" "=g")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=g")
(ashiftrt:DI (match_operand:DI 1 "general_operand" "g")
(neg:QI (match_operand:QI 2 "general_operand" "g"))))]
""
}")
(define_insn "rotlsi3"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(rotate:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "general_operand" "g")))]
""
"rotl %2,%1,%0")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(rotatert:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "const_int_operand" "n")))]
""
"rotl %R2,%1,%0")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(rotatert:SI (match_operand:SI 1 "general_operand" "g")
(neg:QI (match_operand:QI 2 "general_operand" "g"))))]
""
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=&g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=&g")
(zero_extract:SI (match_operand:SI 1 "register_operand" "ro")
(match_operand:QI 2 "const_int_operand" "n")
(match_operand:SI 3 "const_int_operand" "n")))]
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(sign_extract:SI (match_operand:SI 1 "register_operand" "ro")
(match_operand:QI 2 "const_int_operand" "n")
(match_operand:SI 3 "const_int_operand" "n")))]
;; anyway, we can't allow immediate values for the primary source operand.
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(sign_extract:SI (match_operand:SI 1 "register_operand" "ro")
(match_operand:QI 2 "general_operand" "g")
(match_operand:SI 3 "general_operand" "g")))]
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(zero_extract:SI (match_operand:SI 1 "register_operand" "ro")
(match_operand:QI 2 "general_operand" "g")
(match_operand:SI 3 "general_operand" "g")))]
"cmpzv %2,%1,%0,%3")
(define_insn "extv"
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(sign_extract:SI (match_operand:QI 1 "memory_operand" "m")
(match_operand:QI 2 "general_operand" "g")
(match_operand:SI 3 "general_operand" "g")))]
"")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(zero_extract:SI (match_operand:QI 1 "memory_operand" "m")
(match_operand:QI 2 "general_operand" "g")
(match_operand:SI 3 "general_operand" "g")))]
(define_insn ""
[(set (pc)
(if_then_else
- (gt (plus:SI (match_operand:SI 0 "general_operand" "+g")
+ (gt (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+g")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
(define_insn ""
[(set (pc)
(if_then_else
- (ge (plus:SI (match_operand:SI 0 "general_operand" "+g")
+ (ge (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+g")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
(define_insn ""
[(set (pc)
(if_then_else
- (lt (plus:SI (match_operand:SI 0 "general_operand" "+g")
+ (lt (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+g")
(const_int 1))
(match_operand:SI 1 "general_operand" "g"))
(label_ref (match_operand 2 "" ""))
(define_insn ""
[(set (pc)
(if_then_else
- (lt (match_operand:SI 0 "general_operand" "+g")
+ (lt (match_operand:SI 0 "nonimmediate_operand" "+g")
(match_operand:SI 1 "general_operand" "g"))
(label_ref (match_operand 2 "" ""))
(pc)))
(define_insn ""
[(set (pc)
(if_then_else
- (le (plus:SI (match_operand:SI 0 "general_operand" "+g")
+ (le (plus:SI (match_operand:SI 0 "nonimmediate_operand" "+g")
(const_int 1))
(match_operand:SI 1 "general_operand" "g"))
(label_ref (match_operand 2 "" ""))
(define_insn ""
[(set (pc)
(if_then_else
- (le (match_operand:SI 0 "general_operand" "+g")
+ (le (match_operand:SI 0 "nonimmediate_operand" "+g")
(match_operand:SI 1 "general_operand" "g"))
(label_ref (match_operand 2 "" ""))
(pc)))
(define_insn ""
[(set (pc)
(if_then_else
- (ne (match_operand:SI 0 "general_operand" "+g")
+ (ne (match_operand:SI 0 "nonimmediate_operand" "+g")
(const_int 0))
(label_ref (match_operand 1 "" ""))
(pc)))
(mult:SI (minus:SI (match_dup 0)
(const_int 0))
(const_int 2)))))
- (label_ref:SI (match_operand 3 "" "")))
+ (label_ref:SI (match_operand 2 "" "")))
(pc)))]
""
"casel %0,$0,%1")
;; because < matches any autodecrement, not just a push.
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:QI 1 "address_operand" "p"))]
""
"*
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:HI 1 "address_operand" "p"))]
""
"*
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:SI 1 "address_operand" "p"))]
""
"*
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:DI 1 "address_operand" "p"))]
""
"*
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:SF 1 "address_operand" "p"))]
""
"*
}")
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=g")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
(match_operand:DF 1 "address_operand" "p"))]
""
"*
;; above sequences to before attempting to recognize the new insn.
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=ro")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=ro")
(and:SI (ashiftrt:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "const_int_operand" "n"))
(match_operand:SI 3 "const_int_operand" "n")))]
;; optimized away.
(define_insn ""
- [(set (match_operand:SI 0 "general_operand" "=ro")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=ro")
(and:SI (ashift:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:QI 2 "const_int_operand" "n"))
(match_operand:SI 3 "const_int_operand" "n")))]