1! Testcases for the AND, OR and XOR functions (GNU intrinsics). 2! { dg-do run } 3! { dg-options "-ffixed-line-length-none" } 4 integer(kind=1) i1, j1 5 integer(kind=2) i2, j2 6 integer i4, j4 7 integer(kind=8) i8, j8 8 logical(kind=1) l1, k1 9 logical(kind=2) l2, k2 10 logical l4, k4 11 logical(kind=8) l8, k8 12 13#define TEST_INTEGER(u,ukind,v,vkind) \ 14 ukind = u;\ 15 vkind = v;\ 16 if (iand(u,v) /= and(ukind, vkind)) call abort;\ 17 if (iand(u,v) /= and(vkind, ukind)) call abort;\ 18 if (ieor(u,v) /= xor(ukind, vkind)) call abort;\ 19 if (ieor(u,v) /= xor(vkind, ukind)) call abort;\ 20 if (ior(u,v) /= or(ukind, vkind)) call abort;\ 21 if (ior(u,v) /= or(vkind, ukind)) call abort 22 23 TEST_INTEGER(19,i1,6,j1) 24 TEST_INTEGER(19,i1,6,j2) 25 TEST_INTEGER(19,i1,6,j4) 26 TEST_INTEGER(19,i1,6,j8) 27 28 TEST_INTEGER(19,i2,6,j1) 29 TEST_INTEGER(19,i2,6,j2) 30 TEST_INTEGER(19,i2,6,j4) 31 TEST_INTEGER(19,i2,6,j8) 32 33 TEST_INTEGER(19,i4,6,j1) 34 TEST_INTEGER(19,i4,6,j2) 35 TEST_INTEGER(19,i4,6,j4) 36 TEST_INTEGER(19,i4,6,j8) 37 38 TEST_INTEGER(19,i8,6,j1) 39 TEST_INTEGER(19,i8,6,j2) 40 TEST_INTEGER(19,i8,6,j4) 41 TEST_INTEGER(19,i8,6,j8) 42 43 44 45#define TEST_LOGICAL(u,ukind,v,vkind) \ 46 ukind = u;\ 47 vkind = v;\ 48 if ((u .and. v) .neqv. and(ukind, vkind)) call abort;\ 49 if ((u .and. v) .neqv. and(vkind, ukind)) call abort;\ 50 if (((u .and. .not. v) .or. (.not. u .and. v)) .neqv. xor(ukind, vkind)) call abort;\ 51 if (((u .and. .not. v) .or. (.not. u .and. v)) .neqv. xor(vkind, ukind)) call abort;\ 52 if ((u .or. v) .neqv. or(ukind, vkind)) call abort;\ 53 if ((u .or. v) .neqv. or(vkind, ukind)) call abort 54 55 TEST_LOGICAL(.true.,l1,.false.,k1) 56 TEST_LOGICAL(.true.,l1,.true.,k1) 57 TEST_LOGICAL(.true.,l1,.false.,k2) 58 TEST_LOGICAL(.true.,l1,.true.,k2) 59 TEST_LOGICAL(.true.,l1,.false.,k4) 60 TEST_LOGICAL(.true.,l1,.true.,k4) 61 TEST_LOGICAL(.true.,l1,.false.,k8) 62 TEST_LOGICAL(.true.,l1,.true.,k8) 63 64 TEST_LOGICAL(.true.,l2,.false.,k1) 65 TEST_LOGICAL(.true.,l2,.true.,k1) 66 TEST_LOGICAL(.true.,l2,.false.,k2) 67 TEST_LOGICAL(.true.,l2,.true.,k2) 68 TEST_LOGICAL(.true.,l2,.false.,k4) 69 TEST_LOGICAL(.true.,l2,.true.,k4) 70 TEST_LOGICAL(.true.,l2,.false.,k8) 71 TEST_LOGICAL(.true.,l2,.true.,k8) 72 73 TEST_LOGICAL(.true.,l4,.false.,k1) 74 TEST_LOGICAL(.true.,l4,.true.,k1) 75 TEST_LOGICAL(.true.,l4,.false.,k2) 76 TEST_LOGICAL(.true.,l4,.true.,k2) 77 TEST_LOGICAL(.true.,l4,.false.,k4) 78 TEST_LOGICAL(.true.,l4,.true.,k4) 79 TEST_LOGICAL(.true.,l4,.false.,k8) 80 TEST_LOGICAL(.true.,l4,.true.,k8) 81 82 TEST_LOGICAL(.true.,l8,.false.,k1) 83 TEST_LOGICAL(.true.,l8,.true.,k1) 84 TEST_LOGICAL(.true.,l8,.false.,k2) 85 TEST_LOGICAL(.true.,l8,.true.,k2) 86 TEST_LOGICAL(.true.,l8,.false.,k4) 87 TEST_LOGICAL(.true.,l8,.true.,k4) 88 TEST_LOGICAL(.true.,l8,.false.,k8) 89 TEST_LOGICAL(.true.,l8,.true.,k8) 90 91 end 92