AND (immediate) Bitwise AND (immediate) This instruction performs a bitwise AND of a register value and an immediate value, and writes the result to the destination register. If PSTATE.DIT is 1: The execution time of this instruction is independent of: The values of the data supplied in any of its registers. The values of the NZCV flags. The response of this instruction to asynchronous exceptions does not vary based on: The values of the data supplied in any of its registers. The values of the NZCV flags. 0 0 1 0 0 1 0 0 0 0 AND <Wd|WSP>, <Wn>, #<imm> 1 AND <Xd|SP>, <Xn>, #<imm> if sf == '0' && N != '0' then UNDEFINED; constant integer d = UInt(Rd); constant integer n = UInt(Rn); constant integer datasize = 32 << UInt(sf); bits(datasize) imm; (imm, -) = DecodeBitMasks(N, imms, immr, TRUE, datasize); <Wd|WSP> Is the 32-bit name of the destination general-purpose register or stack pointer, encoded in the "Rd" field. <Wn> Is the 32-bit name of the general-purpose source register, encoded in the "Rn" field. <imm> For the 32-bit variant: is the bitmask immediate, encoded in "imms:immr". <imm> For the 64-bit variant: is the bitmask immediate, encoded in "N:imms:immr". <Xd|SP> Is the 64-bit name of the destination general-purpose register or stack pointer, encoded in the "Rd" field. <Xn> Is the 64-bit name of the general-purpose source register, encoded in the "Rn" field. constant bits(datasize) operand1 = X[n, datasize]; constant bits(datasize) operand2 = imm; constant bits(datasize) result = operand1 AND operand2; if d == 31 then SP[] = ZeroExtend(result, 64); else X[d, datasize] = result;