The RTX code asm_operands represents a value produced by a
user-specified assembler instruction.  It is used to represent
an asm statement with arguments.  An asm statement with
a single output operand, like this:
     asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));
 is represented using a single asm_operands RTX which represents
the value that is stored in outputvar:
     (set rtx-for-outputvar
          (asm_operands "foo %1,%2,%0" "a" 0
                        [rtx-for-addition-result rtx-for-*z]
                        [(asm_input:m1 "g")
                         (asm_input:m2 "di")]))
 Here the operands of the asm_operands RTX are the assembler
template string, the output-operand's constraint, the index-number of the
output operand among the output operands specified, a vector of input
operand RTX's, and a vector of input-operand modes and constraints.  The
mode m1 is the mode of the sum x+y; m2 is that of
*z.
 
When an asm statement has multiple output values, its insn has
several such set RTX's inside of a parallel.  Each set
contains an asm_operands; all of these share the same assembler
template and vectors, but each contains the constraint for the respective
output operand.  They are also distinguished by the output-operand index
number, which is 0, 1, ... for successive output operands.