brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · d53b7c7 Raw
121 lines · plain
1! RUN: %python %S/test_folding.py %s %flang_fc1 -funsigned2! UNSIGNED operations and intrinsic functions3 4module m5 6  logical, parameter :: test_neg0    = -0u_1 == 0u_17  logical, parameter :: test_neg0_k  = kind(-0u_1) == 18  logical, parameter :: test_neg1    = -1u_1 == 255u9  logical, parameter :: test_neg255  = -255u_1 == 1u10  logical, parameter :: test_add1    = 0u_1 + 1u_1 == 1u_111  logical, parameter :: test_add1_k  = kind(0u_1 + 1u_1) == 112  logical, parameter :: test_addprom = 255u_1 + 1u == 256u13  logical, parameter :: test_addmix  = 255u_1 + z'1' == 0u14  logical, parameter :: test_sub1    = 0u_1 - 1u_1 == 255u_115  logical, parameter :: test_sub1_k  = kind(0u_1 + 1u_1) == 116  logical, parameter :: test_mul15   = 15u_1 * 15u_1 == 225u_117  logical, parameter :: test_mul15_k = kind(15u_1 * 15u_1) == 118  logical, parameter :: test_mul152  = 5u_1 * 52u_1 == 4u_119  logical, parameter :: test_div15   = 225u_1 / 15u_1 == 15u_120  logical, parameter :: test_div15_k = kind(225u_1 / 15u_1) == 121 22  logical, parameter :: test_rel = all([0u_1 < 255u_1, 255u_1 > 0u_1, &23                                        0u_1 <= 255u_1, 255u_1 >= 0u_1])24 25  logical, parameter :: test_cus0    = int(0u,1) == 026  logical, parameter :: test_cus0_k  = kind(int(0u,1)) == 127  !WARN: warning: conversion of 255_U1 to INTEGER(1) overflowed; result is -1 [-Wfolding-exception]28  logical, parameter :: test_cus255  = int(255u_1,1) == -129  logical, parameter :: test_cur255  = real(255u) == 255.30 31  logical, parameter :: test_csu255   = uint(255,1) == 255u_132  logical, parameter :: test_csu255_k = kind(uint(255,1)) == 133  logical, parameter :: test_cru255   = uint(255.) == 255u34  logical, parameter :: test_ctu255   = uint(z'ff',1) == 255u_135  logical, parameter :: test_ctu255_k = kind(uint(z'ff',1)) == 136 37  logical, parameter :: test_not1a = not(0u_1) == 255u_138  logical, parameter :: test_not1b = not(255u_1) == 0u_139  logical, parameter :: test_not4a = not(0u) == huge(0u)40  logical, parameter :: test_not4b = not(huge(0u)) == 0u41 42  logical, parameter :: test_iand1  = iand(170u,240u) == 160u43  logical, parameter :: test_ior1   = ior(170u,240u) == 250u44  logical, parameter :: test_ieor1  = ieor(170u,240u) == 90u45  logical, parameter :: test_ibclr1 = all(ibclr(255u,[(j,j=7,0,-1)]) == &46                                        [127u,191u,223u,239u, &47                                         247u,251u,253u,254u])48  logical, parameter :: test_ibset1 = all(ibset(0u,[(j,j=7,0,-1)]) == &49                                        [128u,64u,32u,16u,8u,4u,2u,1u])50  logical, parameter :: test_ibits1 = all(ibits(126u,[(j,j=0,7)],3) == &51                                        [6u,7u,7u,7u,7u,3u,1u,0u])52 53  logical, parameter :: test_mb_1 = merge_bits(13u_1, 18u_1, 22u_1) .EQ. 4u_154  logical, parameter :: test_mb_2 = merge_bits(13u_2, 18u_2, 22u_2) .EQ. 4u_255  logical, parameter :: test_mb_4 = merge_bits(13u_4, 18u_4, 22u_4) .EQ. 4u_456  logical, parameter :: test_mb_8 = merge_bits(13u_8, 18u_8, 22u_8) .EQ. 4u_857  logical, parameter :: test_mb_16 = merge_bits(13u_16, 18u_16, 22u_16) .EQ. 4u_1658 59  logical, parameter :: test_mb_z11 = merge_bits(13u_1, B'00010010', 22u_1) .EQ. 4u_160  logical, parameter :: test_mb_z12 = merge_bits(13u_2, B'00010010', 22u_2) .EQ. 4u_261  logical, parameter :: test_mb_z14 = merge_bits(13u_4, B'00010010', 22u_4) .EQ. 4u_462  logical, parameter :: test_mb_z18 = merge_bits(13u_8, B'00010010', 22u_8) .EQ. 4u_863  logical, parameter :: test_mb_z116 = merge_bits(13u_16, B'00010010', 22u_16) .EQ. 4u_1664 65  logical, parameter :: test_mb_z01 = merge_bits(Z'0D', 18u_1, 22u_1) .EQ. 4u_166  logical, parameter :: test_mb_z02 = merge_bits(Z'0D', 18u_2, 22u_2) .EQ. 4u_267  logical, parameter :: test_mb_z04 = merge_bits(Z'0D', 18u_4, 22u_4) .EQ. 4u_468  logical, parameter :: test_mb_z08 = merge_bits(Z'0D', 18u_8, 22u_8) .EQ. 4u_869  logical, parameter :: test_mb_z016 = merge_bits(Z'0D', 18u_16, 22u_16) .EQ. 4u_1670 71  logical, parameter :: test_btest1 = all(btest(uint(b'00011011'),[(j,j=0,7)]) .eqv. &72                                        [.true., .true., .false., .true., &73                                         .true., .false., .false., .false.])74 75  logical, parameter :: test_ishft1 = all(ishft(1u_1,[(j,j=0,8)]) == &76                                        [1u, 2u, 4u, 8u, 16u, 32u, 64u, 128u, 0u])77  logical, parameter :: test_ishft2 = all(ishft(255u,[(j,j=0,-8,-1)]) == &78                                        [255u, 127u, 63u, 31u, 15u, 7u, 3u, 1u, 0u])79 80  logical, parameter :: test_ishftc1 = all(ishftc(254u_1,[(j,j=0,8)]) == &81                                         [254u, 253u, 251u, 247u, 239u, 223u, 191u, 127u, 254u])82  logical, parameter :: test_ishftc2 = all(ishftc(254u_1,[(j,j=0,-8,-1)]) == &83                                         [254u, 127u, 191u, 223u, 239u, 247u, 251u, 253u, 254u])84 85  logical, parameter :: test_shifta1 = all(shifta(128u_1,[(j,j=0,8)]) == &86                                         [128u, 192u, 224u, 240u, 248u, 252u, 254u, 255u, 255u])87  logical, parameter :: test_shiftl1 = all(shiftl(1u_1,[(j,j=0,8)]) == &88                                        [1u, 2u, 4u, 8u, 16u, 32u, 64u, 128u, 0u])89  logical, parameter :: test_shiftr1 = all(shiftr(128u_1,[(j,j=0,8)]) == &90                                        [128u,64u,32u,16u,8u,4u,2u,1u,0u])91  logical, parameter :: test_shiftr2 = all(shiftr(255u,[(j,j=0,8)]) == &92                                        [255u, 127u, 63u, 31u, 15u, 7u, 3u, 1u, 0u])93 94  logical, parameter :: test_transfer1 = transfer(1.,0u) == uint(z'3f800000')95  logical, parameter :: test_transfer2 = transfer(uint(z'3f800000'),0.) == 1.96 97  logical, parameter :: test_bit_size = &98    all([integer::bit_size(0u_1), bit_size(0u_2), &99                  bit_size(0u_4), bit_size(0u_8), &100                  bit_size(0u_16)] == [8,16,32,64,128])101 102  logical, parameter :: test_digits = &103    all([digits(0u_1), digits(0u_2), digits(0u_4), digits(0u_8), &104         digits(0u_16)] == [8,16,32,64,128])105 106  logical, parameter :: test_huge_1  = huge(0u_1)  == 255u_1107  logical, parameter :: test_huge_2  = huge(0u_2)  == 65535u_2108  logical, parameter :: test_huge_4  = huge(0u_4)  == uint(huge(0_4),4) * 2u + 1u109  logical, parameter :: test_huge_8  = huge(0u_8)  == uint(huge(0_8),8) * 2u + 1u110  logical, parameter :: test_huge_16 = huge(0u_16) == uint(huge(0_16),16) * 2u + 1u111 112  logical, parameter :: test_range = &113    all([range(0u_1), range(0u_2), range(0u_4), range(0u_8), range(0u_16)] == &114        [2,4,9,19,38])115 116  logical, parameter :: test_max1  = max(0u,255u,128u) == 255u117  logical, parameter :: test_max1k = kind(max(0u_1,255u_1,128u_1)) == 1118  logical, parameter :: test_min1  = min(0u,255u,128u) == 0u119  logical, parameter :: test_min1k = kind(min(0u_1,255u_1,128u_1)) == 1120end121