diff --git a/docs/LangRef.html b/docs/LangRef.html index d6696884e4a..a84de0ebc34 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -3101,9 +3101,8 @@ yields a bool result, as follows:

If the operands are pointer typed, the pointer values are treated as integers and then compared.

If the operands are packed typed, the elements of -the vector are compared in turn and the predicate must hold for all elements. -While this is of dubious use for predicates other than eq and -ne, the other predicates can be used with packed types.

+the vector are compared in turn and the predicate must hold for all +elements.

Example:
  <result> = icmp eq int 4, 5           ; yields: result=false
@@ -3130,7 +3129,7 @@ of its floating point operands.

the condition code which indicates the kind of comparison to perform. It is not a value, just a keyword. The possibilities for the condition code are:
    -
  1. false: no comparison, always false (always folded)
  2. +
  3. false: no comparison, always returns false
  4. oeq: ordered and equal
  5. ogt: ordered and greater than
  6. oge: ordered and greater than or equal
  7. @@ -3145,49 +3144,50 @@ a value, just a keyword. The possibilities for the condition code are:
  8. ule: unordered or less than or equal
  9. une: unordered or not equal
  10. uno: unordered (either nans)
  11. -
  12. true: no comparison, always true (always folded)
  13. +
  14. true: no comparison, always returns true

The val1 and val2 arguments must be of floating point, or a packed floating point type. They must have identical types.

+

In the foregoing, ordered means that neither operand is a QNAN and +unordered means that either operand is a QNAN.

Semantics:

The 'fcmp' compares var1 and var2 according to the condition code given as cond. The comparison performed always yields a bool result, as follows:

  1. false: always yields false, regardless of operands.
  2. -
  3. oeq: yields true if both operands are ordered and +
  4. oeq: yields true if both operands are not a QNAN and var1 is equal to var2.
  5. -
  6. ogt: yields true if both operands are ordered and +
  7. ogt: yields true if both operands are not a QNAN and var1 is greather than var2.
  8. -
  9. oge: yields true if both operands are ordered and +
  10. oge: yields true if both operands are not a QNAN and var1 is greater than or equal to var2.
  11. -
  12. olt: yields true if both operands are ordered and +
  13. olt: yields true if both operands are not a QNAN and var1 is less than var2.
  14. -
  15. ole: yields true if both operands are ordered and +
  16. ole: yields true if both operands are not a QNAN and var1 is less than or equal to var2.
  17. -
  18. one: yields true if both operands are ordered and +
  19. one: yields true if both operands are not a QNAN and var1 is not equal to var2.
  20. -
  21. ord: yields true if both operands are ordered.
  22. -
  23. ueq: yields true if either operand is unordered or +
  24. ord: yields true if both operands are not a QNAN.
  25. +
  26. ueq: yields true if either operand is a QNAN or var1 is equal to var2.
  27. -
  28. ugt: yields true if either operand is unordered or +
  29. ugt: yields true if either operand is a QNAN or var1 is greater than var2.
  30. -
  31. uge: yields true if either operand is unordered or +
  32. uge: yields true if either operand is a QNAN or var1 is greater than or equal to var2.
  33. -
  34. ult: yields true if either operand is unordered or +
  35. ult: yields true if either operand is a QNAN or var1 is less than var2.
  36. -
  37. ule: yields true if either operand is unordered or +
  38. ule: yields true if either operand is a QNAN or var1 is less than or equal to var2.
  39. -
  40. une: yields true if either operand is unordered or +
  41. une: yields true if either operand is a QNAN or var1 is not equal to var2.
  42. -
  43. uno: yields true if either operand is unordered.
  44. +
  45. uno: yields true if either operand is a QNAN.
  46. true: always yields true, regardless of operands.

If the operands are packed typed, the elements of the vector are compared in turn and the predicate must hold for all elements. -While this is of dubious use for predicates other than eq and -ne, the other predicates can be used with packed types.

+

Example:
  <result> = fcmp oeq float 4.0, 5.0    ; yields: result=false