| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009 |
- // RUN: %clang_cc1 -triple s390x-linux-gnu -fzvector \
- // RUN: -fno-lax-vector-conversions -W -Wall -Wconversion \
- // RUN: -Werror -fsyntax-only -verify %s
- vector signed char sc, sc2;
- vector unsigned char uc, uc2;
- vector bool char bc, bc2;
- vector signed short ss, ss2;
- vector unsigned short us, us2;
- vector bool short bs, bs2;
- vector signed int si, si2;
- vector unsigned int ui, ui2;
- vector bool int bi, bi2;
- vector signed long long sl, sl2;
- vector unsigned long long ul, ul2;
- vector bool long long bl, bl2;
- vector double fd, fd2;
- vector long ll; // expected-error {{cannot use 'long' with '__vector'}}
- vector float ff; // expected-error {{cannot use 'float' with '__vector'}}
- signed char sc_scalar;
- unsigned char uc_scalar;
- signed short ss_scalar;
- unsigned short us_scalar;
- signed int si_scalar;
- unsigned int ui_scalar;
- signed long sl_scalar;
- unsigned long ul_scalar;
- double fd_scalar;
- void foo(void)
- {
- // -------------------------------------------------------------------------
- // Test assignment.
- // -------------------------------------------------------------------------
- sc = sc2;
- uc = uc2;
- bc = bc2;
- ss = ss2;
- us = us2;
- bs = bs2;
- si = si2;
- ui = ui2;
- bi = bi2;
- sl = sl2;
- ul = ul2;
- bl = bl2;
- fd = fd2;
- sc = uc2; // expected-error {{incompatible type}}
- sc = bc2; // expected-error {{incompatible type}}
- uc = sc2; // expected-error {{incompatible type}}
- uc = bc2; // expected-error {{incompatible type}}
- bc = sc2; // expected-error {{incompatible type}}
- bc = uc2; // expected-error {{incompatible type}}
- sc = sc_scalar; // expected-error {{incompatible type}}
- sc = uc_scalar; // expected-error {{incompatible type}}
- uc = sc_scalar; // expected-error {{incompatible type}}
- uc = uc_scalar; // expected-error {{incompatible type}}
- bc = sc_scalar; // expected-error {{incompatible type}}
- bc = uc_scalar; // expected-error {{incompatible type}}
- sc = ss2; // expected-error {{incompatible type}}
- sc = si2; // expected-error {{incompatible type}}
- sc = sl2; // expected-error {{incompatible type}}
- sc = fd2; // expected-error {{incompatible type}}
- ss = sc2; // expected-error {{incompatible type}}
- si = sc2; // expected-error {{incompatible type}}
- sl = sc2; // expected-error {{incompatible type}}
- fd = sc2; // expected-error {{incompatible type}}
- uc = us2; // expected-error {{incompatible type}}
- uc = ui2; // expected-error {{incompatible type}}
- uc = ul2; // expected-error {{incompatible type}}
- uc = fd2; // expected-error {{incompatible type}}
- us = uc2; // expected-error {{incompatible type}}
- ui = uc2; // expected-error {{incompatible type}}
- ul = uc2; // expected-error {{incompatible type}}
- fd = uc2; // expected-error {{incompatible type}}
- bc = us2; // expected-error {{incompatible type}}
- bc = ui2; // expected-error {{incompatible type}}
- bc = ul2; // expected-error {{incompatible type}}
- bc = fd2; // expected-error {{incompatible type}}
- bs = bc2; // expected-error {{incompatible type}}
- bi = bc2; // expected-error {{incompatible type}}
- bl = bc2; // expected-error {{incompatible type}}
- fd = bc2; // expected-error {{incompatible type}}
- // -------------------------------------------------------------------------
- // Test casts to same element width.
- // -------------------------------------------------------------------------
- sc = (vector signed char)bc2;
- bc = (vector bool char)uc2;
- uc = (vector unsigned char)sc2;
- ss = (vector signed short)bs2;
- bs = (vector bool short)us2;
- us = (vector unsigned short)ss2;
- si = (vector signed int)bi2;
- bi = (vector bool int)ui2;
- ui = (vector unsigned int)si2;
- sl = (vector signed long long)bl2;
- bl = (vector bool long long)ul2;
- ul = (vector unsigned long long)fd2;
- fd = (vector double)sl2;
- // -------------------------------------------------------------------------
- // Test casts to different element width.
- // -------------------------------------------------------------------------
- sc = (vector signed char)bs2;
- bc = (vector bool char)us2;
- uc = (vector unsigned char)fd2;
- ss = (vector signed short)bi2;
- bs = (vector bool short)ui2;
- us = (vector unsigned short)fd2;
- si = (vector signed int)bl2;
- bi = (vector bool int)ul2;
- ui = (vector unsigned int)fd2;
- sl = (vector signed long long)bc2;
- bl = (vector bool long long)uc2;
- ul = (vector unsigned long long)sc2;
- fd = (vector double)sc2;
- // -------------------------------------------------------------------------
- // Test ++.
- // -------------------------------------------------------------------------
- ++sc2;
- ++uc2;
- ++bc2; // expected-error {{cannot increment}}
- ++ss2;
- ++us2;
- ++bs2; // expected-error {{cannot increment}}
- ++si2;
- ++ui2;
- ++bi2; // expected-error {{cannot increment}}
- ++sl2;
- ++ul2;
- ++bl2; // expected-error {{cannot increment}}
- ++fd2;
- sc++;
- uc++;
- bc++; // expected-error {{cannot increment}}
- ss++;
- us++;
- bs++; // expected-error {{cannot increment}}
- si++;
- ui++;
- bi++; // expected-error {{cannot increment}}
- sl++;
- ul++;
- bl++; // expected-error {{cannot increment}}
- fd++;
- // -------------------------------------------------------------------------
- // Test --.
- // -------------------------------------------------------------------------
- --sc2;
- --uc2;
- --bc2; // expected-error {{cannot decrement}}
- --ss2;
- --us2;
- --bs2; // expected-error {{cannot decrement}}
- --si2;
- --ui2;
- --bi2; // expected-error {{cannot decrement}}
- --sl2;
- --ul2;
- --bl2; // expected-error {{cannot decrement}}
- --fd2;
- sc--;
- uc--;
- bc--; // expected-error {{cannot decrement}}
- ss--;
- us--;
- bs--; // expected-error {{cannot decrement}}
- si--;
- ui--;
- bi--; // expected-error {{cannot decrement}}
- sl--;
- ul--;
- bl--; // expected-error {{cannot decrement}}
- fd--;
- // -------------------------------------------------------------------------
- // Test unary +.
- // -------------------------------------------------------------------------
- sc = +sc2;
- uc = +uc2;
- bc = +bc2; // expected-error {{invalid argument type}}
- ss = +ss2;
- us = +us2;
- bs = +bs2; // expected-error {{invalid argument type}}
- si = +si2;
- ui = +ui2;
- bi = +bi2; // expected-error {{invalid argument type}}
- sl = +sl2;
- ul = +ul2;
- bl = +bl2; // expected-error {{invalid argument type}}
- fd = +fd2;
- sc = +si2; // expected-error {{assigning to}}
- ui = +si2; // expected-error {{assigning to}}
- ui = +bi2; // expected-error {{invalid argument type}}
- // -------------------------------------------------------------------------
- // Test unary -.
- // -------------------------------------------------------------------------
- sc = -sc2;
- uc = -uc2;
- bc = -bc2; // expected-error {{invalid argument type}}
- ss = -ss2;
- us = -us2;
- bs = -bs2; // expected-error {{invalid argument type}}
- si = -si2;
- ui = -ui2;
- bi = -bi2; // expected-error {{invalid argument type}}
- sl = -sl2;
- ul = -ul2;
- bl = -bl2; // expected-error {{invalid argument type}}
- fd = -fd2;
- sc = -si2; // expected-error {{assigning to}}
- ui = -si2; // expected-error {{assigning to}}
- ui = -bi2; // expected-error {{invalid argument type}}
- // -------------------------------------------------------------------------
- // Test ~.
- // -------------------------------------------------------------------------
- sc = ~sc2;
- uc = ~uc2;
- bc = ~bc2;
- ss = ~ss2;
- us = ~us2;
- bs = ~bs2;
- si = ~si2;
- ui = ~ui2;
- bi = ~bi2;
- sl = ~sl2;
- ul = ~ul2;
- bl = ~bl2;
- fd = ~fd2; // expected-error {{invalid argument}}
- sc = ~si2; // expected-error {{assigning to}}
- ui = ~si2; // expected-error {{assigning to}}
- ui = ~bi2; // expected-error {{assigning to}}
- // -------------------------------------------------------------------------
- // Test binary +.
- // -------------------------------------------------------------------------
- sc = sc + sc2;
- sc = sc + uc2; // expected-error {{can't convert}}
- sc = uc + sc2; // expected-error {{can't convert}}
- sc = sc + bc2;
- sc = bc + sc2;
- uc = uc + uc2;
- uc = sc + uc2; // expected-error {{can't convert}}
- uc = uc + sc2; // expected-error {{can't convert}}
- uc = bc + uc2;
- uc = uc + bc2;
- bc = bc + bc2; // expected-error {{invalid operands}}
- bc = bc + uc2; // expected-error {{incompatible type}}
- bc = uc + bc2; // expected-error {{incompatible type}}
- bc = bc + sc2; // expected-error {{incompatible type}}
- bc = sc + bc2; // expected-error {{incompatible type}}
- sc = sc + sc_scalar; // expected-error {{can't convert}}
- sc = sc + uc_scalar; // expected-error {{can't convert}}
- sc = sc_scalar + sc; // expected-error {{can't convert}}
- sc = uc_scalar + sc; // expected-error {{can't convert}}
- uc = uc + sc_scalar; // expected-error {{can't convert}}
- uc = uc + uc_scalar; // expected-error {{can't convert}}
- uc = sc_scalar + uc; // expected-error {{can't convert}}
- uc = uc_scalar + uc; // expected-error {{can't convert}}
- ss = ss + ss2;
- us = us + us2;
- bs = bs + bs2; // expected-error {{invalid operands}}
- si = si + si2;
- ui = ui + ui2;
- bi = bi + bi2; // expected-error {{invalid operands}}
- sl = sl + sl2;
- ul = ul + ul2;
- bl = bl + bl2; // expected-error {{invalid operands}}
- fd = fd + fd2;
- fd = fd + ul2; // expected-error {{can't convert}}
- fd = sl + fd2; // expected-error {{can't convert}}
- sc += sc2;
- sc += uc2; // expected-error {{can't convert}}
- sc += bc2;
- uc += uc2;
- uc += sc2; // expected-error {{can't convert}}
- uc += bc2;
- bc += bc2; // expected-error {{invalid operands}}
- bc += sc2; // expected-error {{can't convert}}
- bc += uc2; // expected-error {{can't convert}}
- sc += ss2; // expected-error {{can't convert}}
- sc += si2; // expected-error {{can't convert}}
- sc += sl2; // expected-error {{can't convert}}
- sc += fd2; // expected-error {{can't convert}}
- sc += sc_scalar; // expected-error {{can't convert}}
- sc += uc_scalar; // expected-error {{can't convert}}
- uc += sc_scalar; // expected-error {{can't convert}}
- uc += uc_scalar; // expected-error {{can't convert}}
- ss += ss2;
- us += us2;
- bs += bs2; // expected-error {{invalid operands}}
- si += si2;
- ui += ui2;
- bi += bi2; // expected-error {{invalid operands}}
- sl += sl2;
- ul += ul2;
- bl += bl2; // expected-error {{invalid operands}}
- fd += fd2;
- // -------------------------------------------------------------------------
- // Test that binary + rules apply to binary - too.
- // -------------------------------------------------------------------------
- sc = sc - sc2;
- uc = uc - uc2;
- bc = bc - bc2; // expected-error {{invalid operands}}
- sc = uc - sc2; // expected-error {{can't convert}}
- sc = sc - bc2;
- uc = bc - uc2;
- sc -= sc2;
- uc -= uc2;
- bc -= bc2; // expected-error {{invalid operands}}
- sc -= uc2; // expected-error {{can't convert}}
- uc -= bc2;
- bc -= sc2; // expected-error {{can't convert}}
- ss -= ss2;
- us -= us2;
- bs -= bs2; // expected-error {{invalid operands}}
- si -= si2;
- ui -= ui2;
- bi -= bi2; // expected-error {{invalid operands}}
- sl -= sl2;
- ul -= ul2;
- bl -= bl2; // expected-error {{invalid operands}}
- fd -= fd2;
- // -------------------------------------------------------------------------
- // Test that binary + rules apply to * too. 64-bit integer multiplication
- // is not required by the spec and so isn't tested here.
- // -------------------------------------------------------------------------
- sc = sc * sc2;
- uc = uc * uc2;
- bc = bc * bc2; // expected-error {{invalid operands}}
- sc = uc * sc2; // expected-error {{can't convert}}
- sc = sc * bc2; // expected-error {{can't convert}}
- uc = bc * uc2; // expected-error {{can't convert}}
- sc *= sc2;
- uc *= uc2;
- bc *= bc2; // expected-error {{invalid operands}}
- sc *= uc2; // expected-error {{can't convert}}
- uc *= bc2; // expected-error {{can't convert}}
- bc *= sc2; // expected-error {{can't convert}}
- ss *= ss2;
- us *= us2;
- bs *= bs2; // expected-error {{invalid operands}}
- si *= si2;
- ui *= ui2;
- bi *= bi2; // expected-error {{invalid operands}}
- sl *= sl2;
- ul *= ul2;
- bl *= bl2; // expected-error {{invalid operands}}
- fd *= fd2;
- // -------------------------------------------------------------------------
- // Test that * rules apply to / too.
- // -------------------------------------------------------------------------
- sc = sc / sc2;
- uc = uc / uc2;
- bc = bc / bc2; // expected-error {{invalid operands}}
- sc = uc / sc2; // expected-error {{can't convert}}
- sc = sc / bc2; // expected-error {{can't convert}}
- uc = bc / uc2; // expected-error {{can't convert}}
- sc /= sc2;
- uc /= uc2;
- bc /= bc2; // expected-error {{invalid operands}}
- sc /= uc2; // expected-error {{can't convert}}
- uc /= bc2; // expected-error {{can't convert}}
- bc /= sc2; // expected-error {{can't convert}}
- ss /= ss2;
- us /= us2;
- bs /= bs2; // expected-error {{invalid operands}}
- si /= si2;
- ui /= ui2;
- bi /= bi2; // expected-error {{invalid operands}}
- sl /= sl2;
- ul /= ul2;
- bl /= bl2; // expected-error {{invalid operands}}
- fd /= fd2;
- // -------------------------------------------------------------------------
- // Test that / rules apply to % too, except that doubles are not allowed.
- // -------------------------------------------------------------------------
- sc = sc % sc2;
- uc = uc % uc2;
- bc = bc % bc2; // expected-error {{invalid operands}}
- sc = uc % sc2; // expected-error {{can't convert}}
- sc = sc % bc2; // expected-error {{can't convert}}
- uc = bc % uc2; // expected-error {{can't convert}}
- sc %= sc2;
- uc %= uc2;
- bc %= bc2; // expected-error {{invalid operands}}
- sc %= uc2; // expected-error {{can't convert}}
- uc %= bc2; // expected-error {{can't convert}}
- bc %= sc2; // expected-error {{can't convert}}
- ss %= ss2;
- us %= us2;
- bs %= bs2; // expected-error {{invalid operands}}
- si %= si2;
- ui %= ui2;
- bi %= bi2; // expected-error {{invalid operands}}
- sl %= sl2;
- ul %= ul2;
- bl %= bl2; // expected-error {{invalid operands}}
- fd %= fd2; // expected-error {{invalid operands}}
- // -------------------------------------------------------------------------
- // Test &.
- // -------------------------------------------------------------------------
- sc = sc & sc2;
- sc = sc & uc2; // expected-error {{can't convert}}
- sc = uc & sc2; // expected-error {{can't convert}}
- sc = sc & bc2;
- sc = bc & sc2;
- uc = uc & uc2;
- uc = sc & uc2; // expected-error {{can't convert}}
- uc = uc & sc2; // expected-error {{can't convert}}
- uc = bc & uc2;
- uc = uc & bc2;
- bc = bc & bc2;
- bc = bc & uc2; // expected-error {{incompatible type}}
- bc = uc & bc2; // expected-error {{incompatible type}}
- bc = bc & sc2; // expected-error {{incompatible type}}
- bc = sc & bc2; // expected-error {{incompatible type}}
- fd = fd & fd2; // expected-error {{invalid operands}}
- fd = bl & fd2; // expected-error {{invalid operands}}
- fd = fd & bl2; // expected-error {{invalid operands}}
- fd = fd & sl2; // expected-error {{invalid operands}}
- fd = fd & ul2; // expected-error {{invalid operands}}
- sc &= sc2;
- sc &= uc2; // expected-error {{can't convert}}
- sc &= bc2;
- uc &= uc2;
- uc &= sc2; // expected-error {{can't convert}}
- uc &= bc2;
- bc &= bc2;
- bc &= sc2; // expected-error {{can't convert}}
- bc &= uc2; // expected-error {{can't convert}}
- sc &= ss2; // expected-error {{can't convert}}
- sc &= si2; // expected-error {{can't convert}}
- sc &= sl2; // expected-error {{can't convert}}
- sc &= fd2; // expected-error {{invalid operands}}
- us &= bc2; // expected-error {{can't convert}}
- ui &= bc2; // expected-error {{can't convert}}
- ul &= bc2; // expected-error {{can't convert}}
- fd &= bc2; // expected-error {{invalid operands}}
- ss &= ss2;
- us &= us2;
- bs &= bs2;
- si &= si2;
- ui &= ui2;
- bi &= bi2;
- sl &= sl2;
- ul &= ul2;
- bl &= bl2;
- // -------------------------------------------------------------------------
- // Test that & rules apply to | too.
- // -------------------------------------------------------------------------
- sc = sc | sc2;
- sc = sc | uc2; // expected-error {{can't convert}}
- sc = sc | bc2;
- uc = uc | uc2;
- uc = sc | uc2; // expected-error {{can't convert}}
- uc = bc | uc2;
- bc = bc | bc2;
- bc = uc | bc2; // expected-error {{incompatible type}}
- bc = bc | sc2; // expected-error {{incompatible type}}
- fd = fd | fd2; // expected-error {{invalid operands}}
- fd = bl | fd2; // expected-error {{invalid operands}}
- ss |= ss2;
- us |= us2;
- bs |= bs2;
- si |= si2;
- ui |= ui2;
- bi |= bi2;
- sl |= sl2;
- ul |= ul2;
- bl |= bl2;
- fd |= bl2; // expected-error {{invalid operands}}
- fd |= fd2; // expected-error {{invalid operands}}
- // -------------------------------------------------------------------------
- // Test that & rules apply to ^ too.
- // -------------------------------------------------------------------------
- sc = sc ^ sc2;
- sc = sc ^ uc2; // expected-error {{can't convert}}
- sc = sc ^ bc2;
- uc = uc ^ uc2;
- uc = sc ^ uc2; // expected-error {{can't convert}}
- uc = bc ^ uc2;
- bc = bc ^ bc2;
- bc = uc ^ bc2; // expected-error {{incompatible type}}
- bc = bc ^ sc2; // expected-error {{incompatible type}}
- fd = fd ^ fd2; // expected-error {{invalid operands}}
- fd = bl ^ fd2; // expected-error {{invalid operands}}
- ss ^= ss2;
- us ^= us2;
- bs ^= bs2;
- si ^= si2;
- ui ^= ui2;
- bi ^= bi2;
- sl ^= sl2;
- ul ^= ul2;
- bl ^= bl2;
- fd ^= bl2; // expected-error {{invalid operands}}
- fd ^= fd2; // expected-error {{invalid operands}}
- // -------------------------------------------------------------------------
- // Test <<.
- // -------------------------------------------------------------------------
- sc = sc << sc2;
- sc = sc << uc2;
- sc = uc << sc2; // expected-error {{incompatible type}}
- sc = sc << bc2; // expected-error {{invalid operands}}
- sc = bc << sc2; // expected-error {{invalid operands}}
- uc = uc << uc2;
- uc = sc << uc2; // expected-error {{assigning to}}
- uc = uc << sc2;
- uc = bc << uc2; // expected-error {{invalid operands}}
- uc = uc << bc2; // expected-error {{invalid operands}}
- bc = bc << bc2; // expected-error {{invalid operands}}
- bc = bc << uc2; // expected-error {{invalid operands}}
- bc = uc << bc2; // expected-error {{invalid operands}}
- bc = bc << sc2; // expected-error {{invalid operands}}
- bc = sc << bc2; // expected-error {{invalid operands}}
- sc = sc << 1;
- sc = sc << 1.0f; // expected-error {{integer is required}}
- sc = sc << sc_scalar;
- sc = sc << uc_scalar;
- sc = sc << ss_scalar;
- sc = sc << us_scalar;
- sc = sc << si_scalar;
- sc = sc << ui_scalar;
- sc = sc << sl_scalar;
- sc = sc << ul_scalar;
- sc = sc_scalar << sc; // expected-error {{first operand is not a vector}}
- sc = uc_scalar << sc; // expected-error {{first operand is not a vector}}
- uc = uc << sc_scalar;
- uc = uc << uc_scalar;
- uc = sc_scalar << uc; // expected-error {{first operand is not a vector}}
- uc = uc_scalar << uc; // expected-error {{first operand is not a vector}}
- ss = ss << ss2;
- ss = ss << ss_scalar;
- us = us << us2;
- us = us << us_scalar;
- bs = bs << bs2; // expected-error {{invalid operands}}
- si = si << si2;
- si = si << si_scalar;
- ui = ui << ui2;
- ui = ui << ui_scalar;
- bi = bi << bi2; // expected-error {{invalid operands}}
- sl = sl << sl2;
- sl = sl << sl_scalar;
- ul = ul << ul2;
- ul = ul << ul_scalar;
- bl = bl << bl2; // expected-error {{invalid operands}}
- fd = fd << fd2; // expected-error {{integer is required}}
- fd = fd << ul2; // expected-error {{integer is required}}
- fd = sl << fd2; // expected-error {{integer is required}}
- sc <<= sc2;
- sc <<= uc2;
- sc <<= bc2; // expected-error {{invalid operands}}
- sc <<= sc_scalar;
- uc <<= uc2;
- uc <<= sc2;
- uc <<= bc2; // expected-error {{invalid operands}}
- uc <<= uc_scalar;
- bc <<= bc2; // expected-error {{invalid operands}}
- bc <<= sc2; // expected-error {{invalid operands}}
- bc <<= uc2; // expected-error {{invalid operands}}
- sc <<= ss2; // expected-error {{vector operands do not have the same number of elements}}
- sc <<= si2; // expected-error {{vector operands do not have the same number of elements}}
- sc <<= sl2; // expected-error {{vector operands do not have the same number of elements}}
- sc <<= fd2; // expected-error {{integer is required}}
- ss <<= ss2;
- ss <<= ss_scalar;
- us <<= us2;
- us <<= us_scalar;
- bs <<= bs2; // expected-error {{invalid operands}}
- si <<= si2;
- si <<= si_scalar;
- ui <<= ui2;
- ui <<= ui_scalar;
- bi <<= bi2; // expected-error {{invalid operands}}
- sl <<= sl2;
- sl <<= sl_scalar;
- ul <<= ul2;
- ul <<= ul_scalar;
- bl <<= bl2; // expected-error {{invalid operands}}
- fd <<= fd2; // expected-error {{integer is required}}
- // -------------------------------------------------------------------------
- // Test >>.
- // -------------------------------------------------------------------------
- sc = sc >> sc2;
- sc = sc >> uc2;
- sc = uc >> sc2; // expected-error {{incompatible type}}
- sc = sc >> bc2; // expected-error {{invalid operands}}
- sc = bc >> sc2; // expected-error {{invalid operands}}
- uc = uc >> uc2;
- uc = sc >> uc2; // expected-error {{assigning to}}
- uc = uc >> sc2;
- uc = bc >> uc2; // expected-error {{invalid operands}}
- uc = uc >> bc2; // expected-error {{invalid operands}}
- bc = bc >> bc2; // expected-error {{invalid operands}}
- bc = bc >> uc2; // expected-error {{invalid operands}}
- bc = uc >> bc2; // expected-error {{invalid operands}}
- bc = bc >> sc2; // expected-error {{invalid operands}}
- bc = sc >> bc2; // expected-error {{invalid operands}}
- sc = sc >> 1;
- sc = sc >> 1.0f; // expected-error {{integer is required}}
- sc = sc >> sc_scalar;
- sc = sc >> uc_scalar;
- sc = sc >> ss_scalar;
- sc = sc >> us_scalar;
- sc = sc >> si_scalar;
- sc = sc >> ui_scalar;
- sc = sc >> sl_scalar;
- sc = sc >> ul_scalar;
- sc = sc_scalar >> sc; // expected-error {{first operand is not a vector}}
- sc = uc_scalar >> sc; // expected-error {{first operand is not a vector}}
- uc = uc >> sc_scalar;
- uc = uc >> uc_scalar;
- uc = sc_scalar >> uc; // expected-error {{first operand is not a vector}}
- uc = uc_scalar >> uc; // expected-error {{first operand is not a vector}}
- ss = ss >> ss2;
- ss = ss >> ss_scalar;
- us = us >> us2;
- us = us >> us_scalar;
- bs = bs >> bs2; // expected-error {{invalid operands}}
- si = si >> si2;
- si = si >> si_scalar;
- ui = ui >> ui2;
- ui = ui >> ui_scalar;
- bi = bi >> bi2; // expected-error {{invalid operands}}
- sl = sl >> sl2;
- sl = sl >> sl_scalar;
- ul = ul >> ul2;
- ul = ul >> ul_scalar;
- bl = bl >> bl2; // expected-error {{invalid operands}}
- fd = fd >> fd2; // expected-error {{integer is required}}
- fd = fd >> ul2; // expected-error {{integer is required}}
- fd = sl >> fd2; // expected-error {{integer is required}}
- sc >>= sc2;
- sc >>= uc2;
- sc >>= bc2; // expected-error {{invalid operands}}
- sc >>= sc_scalar;
- uc >>= uc2;
- uc >>= sc2;
- uc >>= bc2; // expected-error {{invalid operands}}
- uc >>= uc_scalar;
- bc >>= bc2; // expected-error {{invalid operands}}
- bc >>= sc2; // expected-error {{invalid operands}}
- bc >>= uc2; // expected-error {{invalid operands}}
- sc >>= ss2; // expected-error {{vector operands do not have the same number of elements}}
- sc >>= si2; // expected-error {{vector operands do not have the same number of elements}}
- sc >>= sl2; // expected-error {{vector operands do not have the same number of elements}}
- sc >>= fd2; // expected-error {{integer is required}}
- ss >>= ss2;
- ss >>= ss_scalar;
- us >>= us2;
- us >>= us_scalar;
- bs >>= bs2; // expected-error {{invalid operands}}
- si >>= si2;
- si >>= si_scalar;
- ui >>= ui2;
- ui >>= ui_scalar;
- bi >>= bi2; // expected-error {{invalid operands}}
- sl >>= sl2;
- sl >>= sl_scalar;
- ul >>= ul2;
- ul >>= ul_scalar;
- bl >>= bl2; // expected-error {{invalid operands}}
- fd >>= fd2; // expected-error {{integer is required}}
- // -------------------------------------------------------------------------
- // Test ==.
- // -------------------------------------------------------------------------
- (void)(sc == sc2);
- (void)(uc == uc2);
- (void)(bc == bc2);
- (void)(sc == uc); // expected-error {{can't convert}}
- (void)(sc == bc);
- (void)(uc == sc); // expected-error {{can't convert}}
- (void)(uc == bc);
- (void)(bc == sc);
- (void)(bc == uc);
- (void)(ss == ss2);
- (void)(us == us2);
- (void)(bs == bs2);
- (void)(si == si2);
- (void)(ui == ui2);
- (void)(bi == bi2);
- (void)(sl == sl2);
- (void)(ul == ul2);
- (void)(bl == bl2);
- (void)(fd == fd2);
- (void)(fd == ul); // expected-error {{can't convert}}
- (void)(ul == fd); // expected-error {{can't convert}}
- // -------------------------------------------------------------------------
- // Test that == rules apply to != too.
- // -------------------------------------------------------------------------
- (void)(sc != sc2);
- (void)(uc != uc2);
- (void)(bc != bc2);
- (void)(sc != uc); // expected-error {{can't convert}}
- (void)(sc != bc);
- (void)(ss != ss2);
- (void)(us != us2);
- (void)(bs != bs2);
- (void)(si != si2);
- (void)(ui != ui2);
- (void)(bi != bi2);
- (void)(sl != sl2);
- (void)(ul != ul2);
- (void)(bl != bl2);
- (void)(fd != fd2);
- // -------------------------------------------------------------------------
- // Test that == rules apply to <= too.
- // -------------------------------------------------------------------------
- (void)(sc <= sc2);
- (void)(uc <= uc2);
- (void)(bc <= bc2);
- (void)(sc <= uc); // expected-error {{can't convert}}
- (void)(sc <= bc);
- (void)(ss <= ss2);
- (void)(us <= us2);
- (void)(bs <= bs2);
- (void)(si <= si2);
- (void)(ui <= ui2);
- (void)(bi <= bi2);
- (void)(sl <= sl2);
- (void)(ul <= ul2);
- (void)(bl <= bl2);
- (void)(fd <= fd2);
- // -------------------------------------------------------------------------
- // Test that == rules apply to >= too.
- // -------------------------------------------------------------------------
- (void)(sc >= sc2);
- (void)(uc >= uc2);
- (void)(bc >= bc2);
- (void)(sc >= uc); // expected-error {{can't convert}}
- (void)(sc >= bc);
- (void)(ss >= ss2);
- (void)(us >= us2);
- (void)(bs >= bs2);
- (void)(si >= si2);
- (void)(ui >= ui2);
- (void)(bi >= bi2);
- (void)(sl >= sl2);
- (void)(ul >= ul2);
- (void)(bl >= bl2);
- (void)(fd >= fd2);
- // -------------------------------------------------------------------------
- // Test that == rules apply to < too.
- // -------------------------------------------------------------------------
- (void)(sc < sc2);
- (void)(uc < uc2);
- (void)(bc < bc2);
- (void)(sc < uc); // expected-error {{can't convert}}
- (void)(sc < bc);
- (void)(ss < ss2);
- (void)(us < us2);
- (void)(bs < bs2);
- (void)(si < si2);
- (void)(ui < ui2);
- (void)(bi < bi2);
- (void)(sl < sl2);
- (void)(ul < ul2);
- (void)(bl < bl2);
- (void)(fd < fd2);
- // -------------------------------------------------------------------------
- // Test that == rules apply to > too.
- // -------------------------------------------------------------------------
- (void)(sc > sc2);
- (void)(uc > uc2);
- (void)(bc > bc2);
- (void)(sc > uc); // expected-error {{can't convert}}
- (void)(sc > bc);
- (void)(ss > ss2);
- (void)(us > us2);
- (void)(bs > bs2);
- (void)(si > si2);
- (void)(ui > ui2);
- (void)(bi > bi2);
- (void)(sl > sl2);
- (void)(ul > ul2);
- (void)(bl > bl2);
- (void)(fd > fd2);
- }
|