1! RUN: %python %S/test_folding.py %s %flang_fc1 2 3! Test directional shift intrinsics 4 5module consts 6 integer, parameter :: z40 = 1073741824 7 integer, parameter :: z60 = 1610612736 8 integer, parameter :: z80 = -2147483648_8 9 integer, parameter :: zC0 = -1073741824 10 integer, parameter :: zE0 = -536870912 11 integer, parameter :: zF0 = -268435456 12 13 integer(1), parameter :: z40_1 = 64_1 14 integer(1), parameter :: z60_1 = 96_1 15 integer(1), parameter :: z80_1 = -128_2 16 integer(1), parameter :: zC0_1 = -64_1 17 integer(1), parameter :: zE0_1 = -32_1 18 integer(1), parameter :: zF0_1 = -16_1 19 20 integer(2), parameter :: z40_2 = 16384_2 21 integer(2), parameter :: z60_2 = 24576_2 22 integer(2), parameter :: z80_2 = -32768_4 23 integer(2), parameter :: zC0_2 = -16384_2 24 integer(2), parameter :: zE0_2 = -8192_2 25 integer(2), parameter :: zF0_2 = -4096_2 26 27 integer(4), parameter :: z40_4 = 1073741824_4 28 integer(4), parameter :: z60_4 = 1610612736_4 29 integer(4), parameter :: z80_4 = -2147483648_8 30 integer(4), parameter :: zC0_4 = -1073741824_4 31 integer(4), parameter :: zE0_4 = -536870912_4 32 integer(4), parameter :: zF0_4 = -268435456_4 33 34 integer(8), parameter :: z40_8 = 4611686018427387904_8 35 integer(8), parameter :: z60_8 = 6917529027641081856_8 36 integer(8), parameter :: z80_8 = -9223372036854775808_16 37 integer(8), parameter :: zC0_8 = -4611686018427387904_8 38 integer(8), parameter :: zE0_8 = -2305843009213693952_8 39 integer(8), parameter :: ZF0_8 = -1152921504606846976_8 40 41 integer(16), parameter :: z40_16 = 85070591730234615865843651857942052864_16 42 integer(16), parameter :: z60_16 = 127605887595351923798765477786913079296_16 43 integer(16), parameter :: zC0_16 = -85070591730234615865843651857942052864_16 44 integer(16), parameter :: zE0_16 = -42535295865117307932921825928971026432_16 45 integer(16), parameter :: ZF0_16 = -21267647932558653966460912964485513216_16 46 47end module consts 48 49module shiftltest 50 use consts 51 52 logical, parameter :: test_l0 = shiftl(1, 0) .EQ. 1 53 logical, parameter :: test_l1 = shiftl(1, 1) .EQ. 2 54 logical, parameter :: test_lm = shiftl(1, 16) .EQ. 65536 55 logical, parameter :: test_l3e2 = shiftl(3, 30) .EQ. zC0 56 logical, parameter :: test_l3e1 = shiftl(3, 31) .EQ. z80 57 logical, parameter :: test_le1 = shiftl(1, 31) .EQ. z80 58 logical, parameter :: test_le = shiftl(1, 32) .EQ. 0 59 60 logical, parameter :: test_l0_1 = shiftl(1_1, 0) .EQ. 1_1 61 logical, parameter :: test_l1_1 = shiftl(1_1, 1) .EQ. 2_1 62 logical, parameter :: test_lm_1 = shiftl(1_1, 4) .EQ. 16_1 63 logical, parameter :: test_l3e2_1 = shiftl(3_1, 6) .EQ. zC0_1 64 logical, parameter :: test_l3e1_1 = shiftl(3_1, 7) .EQ. z80_1 65 logical, parameter :: test_le1_1 = shiftl(1_1, 7) .EQ. z80_1 66 logical, parameter :: test_le_1 = shiftl(1_1, 8) .EQ. 0_1 67 68 logical, parameter :: test_l0_2 = shiftl(1_2, 0) .EQ. 1 69 logical, parameter :: test_l1_2 = shiftl(1_2, 1) .EQ. 2 70 logical, parameter :: test_lm_2 = shiftl(1_2, 8) .EQ. 256_2 71 logical, parameter :: test_l3e2_2 = shiftl(3_2, 14) .EQ. zC0_2 72 logical, parameter :: test_l3e1_2 = shiftl(3_2, 15) .EQ. z80_2 73 logical, parameter :: test_le1_2 = shiftl(1_2, 15) .EQ. z80_2 74 logical, parameter :: test_le_2 = shiftl(1_2, 16) .EQ. 0_2 75 76 logical, parameter :: test_l0_4 = shiftl(1_4, 0) .EQ. 1_4 77 logical, parameter :: test_l1_4 = shiftl(1_4, 1) .EQ. 2_4 78 logical, parameter :: test_lm_4 = shiftl(1_4, 16) .EQ. 65536_4 79 logical, parameter :: test_l3e2_4 = shiftl(3_4, 30) .EQ. zC0_4 80 logical, parameter :: test_l3e1_4 = shiftl(3_4, 31) .EQ. z80_4 81 logical, parameter :: test_le1_4 = shiftl(1_4, 31) .EQ. z80_4 82 logical, parameter :: test_le_4 = shiftl(1_4, 32) .EQ. 0_4 83 84 logical, parameter :: test_l0_8 = shiftl(1_8, 0) .EQ. 1_8 85 logical, parameter :: test_l1_8 = shiftl(1_8, 1) .EQ. 2_8 86 logical, parameter :: test_lm_8 = shiftl(1_8, 16) .EQ. 65536 87 logical, parameter :: test_l3e2_8 = shiftl(3_8, 62) .EQ. zC0_8 88 logical, parameter :: test_l3e1_8 = shiftl(3_8, 63) .EQ. z80_8 89 logical, parameter :: test_le1_8 = shiftl(1_8, 63) .EQ. z80_8 90 logical, parameter :: test_le_8 = shiftl(1_8, 64) .EQ. 0_8 91 92 logical, parameter :: test_l0_16 = shiftl(1_16, 0) .EQ. 1_16 93 logical, parameter :: test_l1_16 = shiftl(1_16, 1) .EQ. 2_16 94 logical, parameter :: test_lm_16 = shiftl(1_16, 64) .EQ. 18446744073709551616_16 95 logical, parameter :: test_l3e2_16 = shiftl(3_16, 126) .EQ. zC0_16 96 logical, parameter :: test_le_16 = shiftl(1_16, 128) .EQ. 0_16 97end module shiftltest 98 99module shiftrtest 100 use consts 101 102 logical, parameter :: test_r0 = shiftr(zC0, 0) .EQ. zC0 103 logical, parameter :: test_r1 = shiftr(zC0, 1) .EQ. z60 104 logical, parameter :: test_rm = shiftr(z40, 16) .EQ. 16384 105 logical, parameter :: test_r3e2 = shiftr(zC0, 30) .EQ. 3 106 logical, parameter :: test_r3e1 = shiftr(zC0, 31) .EQ. 1 107 logical, parameter :: test_re = shiftr(z80, 32) .EQ. 0 108 109 logical, parameter :: test_r0_1 = shiftr(zC0_1, 0) .EQ. zC0_1 110 logical, parameter :: test_r1_1 = shiftr(zC0_1, 1) .EQ. z60_1 111 logical, parameter :: test_rm_1 = shiftr(z40_1, 4) .EQ. 4_1 112 logical, parameter :: test_r3e2_1 = shiftr(zC0_1, 6) .EQ. 3_1 113 logical, parameter :: test_r3e1_1 = shiftr(zC0_1, 7) .EQ. 1_1 114 logical, parameter :: test_re_1 = shiftr(z80_1, 8) .EQ. 0_1 115 116 logical, parameter :: test_r0_2 = shiftr(zC0_2, 0) .EQ. zC0_2 117 logical, parameter :: test_r1_2 = shiftr(zC0_2, 1) .EQ. z60_2 118 logical, parameter :: test_rm_2 = shiftr(z40_2, 8) .EQ. 64_1 119 logical, parameter :: test_r3e2_2 = shiftr(zC0_2, 14) .EQ. 3_2 120 logical, parameter :: test_r3e1_2 = shiftr(zC0_2, 15) .EQ. 1_2 121 logical, parameter :: test_re_2 = shiftr(z80_2, 16) .EQ. 0_2 122 123 logical, parameter :: test_r0_4 = shiftr(zC0_4, 0) .EQ. zC0_4 124 logical, parameter :: test_r1_4 = shiftr(zC0_4, 1) .EQ. z60_4 125 logical, parameter :: test_rm_4 = shiftr(z40_4, 16) .EQ. 16384_4 126 logical, parameter :: test_r3e2_4 = shiftr(zC0_4, 30) .EQ. 3_4 127 logical, parameter :: test_r3e1_4 = shiftr(zC0_4, 31) .EQ. 1_4 128 logical, parameter :: test_re_4 = shiftr(z80_4, 32) .EQ. 0_4 129 130 logical, parameter :: test_r0_8 = shiftr(zC0_8, 0) .EQ. zC0_8 131 logical, parameter :: test_r1_8 = shiftr(zC0_8, 1) .EQ. z60_8 132 logical, parameter :: test_rm_8 = shiftr(z40_8, 32) .EQ. 1073741824_8 133 logical, parameter :: test_r3e2_8 = shiftr(zC0_8, 62) .EQ. 3_8 134 logical, parameter :: test_r3e1_8 = shiftr(zC0_8, 63) .EQ. 1_8 135 logical, parameter :: test_re_8 = shiftr(z80_8, 64) .EQ. 0_8 136 137 logical, parameter :: test_r0_16 = shiftr(zC0_16, 0) .EQ. zC0_16 138 logical, parameter :: test_r1_16 = shiftr(zC0_16, 1) .EQ. z60_16 139 logical, parameter :: test_rm_16 = shiftr(z40_16, 64) .EQ. 4611686018427387904_16 140 logical, parameter :: test_r3e2_16 = shiftr(zC0_16, 126) .EQ. 3_16 141 logical, parameter :: test_r3e1_16 = shiftr(zC0_16, 127) .EQ. 1_16 142 logical, parameter :: test_re_16 = shiftr(z40_16, 128) .EQ. 0_16 143end module shiftrtest 144 145module shiftatest 146 use consts 147 148 logical, parameter :: test_a0 = shifta(zC0, 0) .EQ. zC0 149 logical, parameter :: test_a1 = shifta(zC0, 1) .EQ. zE0 150 logical, parameter :: test_a2 = shifta(zC0, 2) .EQ. zF0 151 logical, parameter :: test_a3e2 = shifta(zC0, 29) .EQ. -2 152 logical, parameter :: test_a3e1 = shifta(zC0, 31) .EQ. -1 153 logical, parameter :: test_ae = shifta(z80, 32) .EQ. -1 154 155 logical, parameter :: test_a0_1 = shifta(zC0_1, 0) .EQ. zC0_1 156 logical, parameter :: test_a1_1 = shifta(zC0_1, 1) .EQ. zE0_1 157 logical, parameter :: test_a2_1 = shifta(zC0_1, 2) .EQ. zF0_1 158 logical, parameter :: test_a3e2_1 = shifta(zC0_1, 5) .EQ. -2_1 159 logical, parameter :: test_a3e1_1 = shifta(zC0_1, 7) .EQ. -1_1 160 logical, parameter :: test_ae_1 = shifta(z80_1, 8) .EQ. -1_1 161 162 logical, parameter :: test_a0_2 = shifta(zC0_2, 0) .EQ. zC0_2 163 logical, parameter :: test_a1_2 = shifta(zC0_2, 1) .EQ. zE0_2 164 logical, parameter :: test_a2_2 = shifta(zC0_2, 2) .EQ. zF0_2 165 logical, parameter :: test_a3e2_2 = shifta(zC0_2, 13) .EQ. -2_2 166 logical, parameter :: test_a3e1_2 = shifta(zC0_2, 15) .EQ. -1_2 167 logical, parameter :: test_ae_2 = shifta(z80_2, 16) .EQ. -1_2 168 169 logical, parameter :: test_a0_4 = shifta(zC0_4, 0) .EQ. zC0_4 170 logical, parameter :: test_a1_4 = shifta(zC0_4, 1) .EQ. zE0_4 171 logical, parameter :: test_a2_4 = shifta(zC0_4, 2) .EQ. zF0_4 172 logical, parameter :: test_a3e2_4 = shifta(zC0_4, 29) .EQ. -2_4 173 logical, parameter :: test_a3e1_4 = shifta(zC0_4, 31) .EQ. -1_4 174 logical, parameter :: test_ae_4 = shifta(z80_4, 32) .EQ. -1_4 175 176 logical, parameter :: test_a0_8 = shifta(zC0_8, 0) .EQ. zC0_8 177 logical, parameter :: test_a1_8 = shifta(zC0_8, 1) .EQ. zE0_8 178 logical, parameter :: test_a2_8 = shifta(zC0_8, 2) .EQ. zF0_8 179 logical, parameter :: test_a3e2_8 = shifta(zC0_8, 61) .EQ. -2_8 180 logical, parameter :: test_a3e1_8 = shifta(zC0_8, 63) .EQ. -1_8 181 logical, parameter :: test_ae_8 = shifta(z80_8, 64) .EQ. -1_8 182 183 logical, parameter :: test_a0_16 = shifta(zC0_16, 0) .EQ. zC0_16 184 logical, parameter :: test_a1_16 = shifta(zC0_16, 1) .EQ. zE0_16 185 logical, parameter :: test_a2_16 = shifta(zC0_16, 2) .EQ. zF0_16 186 logical, parameter :: test_a3e2_16 = shifta(zC0_16, 125) .EQ. -2_16 187 logical, parameter :: test_a3e1_16 = shifta(zC0_16, 127) .EQ. -1_16 188 logical, parameter :: test_ae_16 = shifta(zC0_16, 128) .EQ. -1_16 189end module shiftatest 190