{-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} module Spec.Swizzle (tests) where import Test.Tasty (TestTree, testGroup) import Test.Tasty.Hedgehog (testPropertyNamed) import Geomancy import Geomancy.Swizzle () import Support.Gen (genDouble, genFloat, genInt32, genInt64, genWord32, genWord64) import Support.Swizzle (Mismatch, swizzled, swizzles) tests :: TestTree tests = testGroup "Swizzle" [ testPropertyNamed "vec2" "prop_vec2_swizzles" $ swizzles (vec2 <$> genFloat <*> genFloat) vec2Swizzles , testPropertyNamed "vec3" "prop_vec3_swizzles" $ swizzles (vec3 <$> genFloat <*> genFloat <*> genFloat) vec3Swizzles , testPropertyNamed "vec4" "prop_vec4_swizzles" $ swizzles (vec4 <$> genFloat <*> genFloat <*> genFloat <*> genFloat) vec4Swizzles , testPropertyNamed "dvec2" "prop_dvec2_swizzles" $ swizzles (dvec2 <$> genDouble <*> genDouble) dvec2Swizzles , testPropertyNamed "dvec3" "prop_dvec3_swizzles" $ swizzles (dvec3 <$> genDouble <*> genDouble <*> genDouble) dvec3Swizzles , testPropertyNamed "dvec4" "prop_dvec4_swizzles" $ swizzles (dvec4 <$> genDouble <*> genDouble <*> genDouble <*> genDouble) dvec4Swizzles , testPropertyNamed "ivec2" "prop_ivec2_swizzles" $ swizzles (ivec2 <$> genInt32 <*> genInt32) ivec2Swizzles , testPropertyNamed "ivec3" "prop_ivec3_swizzles" $ swizzles (ivec3 <$> genInt32 <*> genInt32 <*> genInt32) ivec3Swizzles , testPropertyNamed "ivec4" "prop_ivec4_swizzles" $ swizzles (ivec4 <$> genInt32 <*> genInt32 <*> genInt32 <*> genInt32) ivec4Swizzles , testPropertyNamed "uvec2" "prop_uvec2_swizzles" $ swizzles (uvec2 <$> genWord32 <*> genWord32) uvec2Swizzles , testPropertyNamed "uvec3" "prop_uvec3_swizzles" $ swizzles (uvec3 <$> genWord32 <*> genWord32 <*> genWord32) uvec3Swizzles , testPropertyNamed "uvec4" "prop_uvec4_swizzles" $ swizzles (uvec4 <$> genWord32 <*> genWord32 <*> genWord32 <*> genWord32) uvec4Swizzles , testPropertyNamed "i64vec2" "prop_i64vec2_swizzles" $ swizzles (i64vec2 <$> genInt64 <*> genInt64) i64vec2Swizzles , testPropertyNamed "i64vec3" "prop_i64vec3_swizzles" $ swizzles (i64vec3 <$> genInt64 <*> genInt64 <*> genInt64) i64vec3Swizzles , testPropertyNamed "i64vec4" "prop_i64vec4_swizzles" $ swizzles (i64vec4 <$> genInt64 <*> genInt64 <*> genInt64 <*> genInt64) i64vec4Swizzles , testPropertyNamed "u64vec2" "prop_u64vec2_swizzles" $ swizzles (u64vec2 <$> genWord64 <*> genWord64) u64vec2Swizzles , testPropertyNamed "u64vec3" "prop_u64vec3_swizzles" $ swizzles (u64vec3 <$> genWord64 <*> genWord64 <*> genWord64) u64vec3Swizzles , testPropertyNamed "u64vec4" "prop_u64vec4_swizzles" $ swizzles (u64vec4 <$> genWord64 <*> genWord64 <*> genWord64 <*> genWord64) u64vec4Swizzles ] vec2Swizzles :: Vec2 -> [Maybe Mismatch] vec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] vec3Swizzles :: Vec3 -> [Maybe Mismatch] vec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] vec4Swizzles :: Vec4 -> [Maybe Mismatch] vec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ] dvec2Swizzles :: DVec2 -> [Maybe Mismatch] dvec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] dvec3Swizzles :: DVec3 -> [Maybe Mismatch] dvec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] dvec4Swizzles :: DVec4 -> [Maybe Mismatch] dvec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ] ivec2Swizzles :: IVec2 -> [Maybe Mismatch] ivec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] ivec3Swizzles :: IVec3 -> [Maybe Mismatch] ivec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] ivec4Swizzles :: IVec4 -> [Maybe Mismatch] ivec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ] uvec2Swizzles :: UVec2 -> [Maybe Mismatch] uvec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] uvec3Swizzles :: UVec3 -> [Maybe Mismatch] uvec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] uvec4Swizzles :: UVec4 -> [Maybe Mismatch] uvec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ] i64vec2Swizzles :: I64Vec2 -> [Maybe Mismatch] i64vec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] i64vec3Swizzles :: I64Vec3 -> [Maybe Mismatch] i64vec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] i64vec4Swizzles :: I64Vec4 -> [Maybe Mismatch] i64vec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ] u64vec2Swizzles :: U64Vec2 -> [Maybe Mismatch] u64vec2Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"xy0" v , swizzled @"xy1" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"xy00" v , swizzled @"xy01" v , swizzled @"xy10" v , swizzled @"xy11" v ] u64vec3Swizzles :: U64Vec3 -> [Maybe Mismatch] u64vec3Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"xyz0" v , swizzled @"xyz1" v ] u64vec4Swizzles :: U64Vec4 -> [Maybe Mismatch] u64vec4Swizzles v = [ swizzled @"x" v , swizzled @"y" v , swizzled @"z" v , swizzled @"w" v , swizzled @"xx" v , swizzled @"xy" v , swizzled @"xz" v , swizzled @"xw" v , swizzled @"yx" v , swizzled @"yy" v , swizzled @"yz" v , swizzled @"yw" v , swizzled @"zx" v , swizzled @"zy" v , swizzled @"zz" v , swizzled @"zw" v , swizzled @"wx" v , swizzled @"wy" v , swizzled @"wz" v , swizzled @"ww" v , swizzled @"xxx" v , swizzled @"xxy" v , swizzled @"xxz" v , swizzled @"xxw" v , swizzled @"xyx" v , swizzled @"xyy" v , swizzled @"xyz" v , swizzled @"xyw" v , swizzled @"xzx" v , swizzled @"xzy" v , swizzled @"xzz" v , swizzled @"xzw" v , swizzled @"xwx" v , swizzled @"xwy" v , swizzled @"xwz" v , swizzled @"xww" v , swizzled @"yxx" v , swizzled @"yxy" v , swizzled @"yxz" v , swizzled @"yxw" v , swizzled @"yyx" v , swizzled @"yyy" v , swizzled @"yyz" v , swizzled @"yyw" v , swizzled @"yzx" v , swizzled @"yzy" v , swizzled @"yzz" v , swizzled @"yzw" v , swizzled @"ywx" v , swizzled @"ywy" v , swizzled @"ywz" v , swizzled @"yww" v , swizzled @"zxx" v , swizzled @"zxy" v , swizzled @"zxz" v , swizzled @"zxw" v , swizzled @"zyx" v , swizzled @"zyy" v , swizzled @"zyz" v , swizzled @"zyw" v , swizzled @"zzx" v , swizzled @"zzy" v , swizzled @"zzz" v , swizzled @"zzw" v , swizzled @"zwx" v , swizzled @"zwy" v , swizzled @"zwz" v , swizzled @"zww" v , swizzled @"wxx" v , swizzled @"wxy" v , swizzled @"wxz" v , swizzled @"wxw" v , swizzled @"wyx" v , swizzled @"wyy" v , swizzled @"wyz" v , swizzled @"wyw" v , swizzled @"wzx" v , swizzled @"wzy" v , swizzled @"wzz" v , swizzled @"wzw" v , swizzled @"wwx" v , swizzled @"wwy" v , swizzled @"wwz" v , swizzled @"www" v , swizzled @"xxxx" v , swizzled @"xxxy" v , swizzled @"xxxz" v , swizzled @"xxxw" v , swizzled @"xxyx" v , swizzled @"xxyy" v , swizzled @"xxyz" v , swizzled @"xxyw" v , swizzled @"xxzx" v , swizzled @"xxzy" v , swizzled @"xxzz" v , swizzled @"xxzw" v , swizzled @"xxwx" v , swizzled @"xxwy" v , swizzled @"xxwz" v , swizzled @"xxww" v , swizzled @"xyxx" v , swizzled @"xyxy" v , swizzled @"xyxz" v , swizzled @"xyxw" v , swizzled @"xyyx" v , swizzled @"xyyy" v , swizzled @"xyyz" v , swizzled @"xyyw" v , swizzled @"xyzx" v , swizzled @"xyzy" v , swizzled @"xyzz" v , swizzled @"xyzw" v , swizzled @"xywx" v , swizzled @"xywy" v , swizzled @"xywz" v , swizzled @"xyww" v , swizzled @"xzxx" v , swizzled @"xzxy" v , swizzled @"xzxz" v , swizzled @"xzxw" v , swizzled @"xzyx" v , swizzled @"xzyy" v , swizzled @"xzyz" v , swizzled @"xzyw" v , swizzled @"xzzx" v , swizzled @"xzzy" v , swizzled @"xzzz" v , swizzled @"xzzw" v , swizzled @"xzwx" v , swizzled @"xzwy" v , swizzled @"xzwz" v , swizzled @"xzww" v , swizzled @"xwxx" v , swizzled @"xwxy" v , swizzled @"xwxz" v , swizzled @"xwxw" v , swizzled @"xwyx" v , swizzled @"xwyy" v , swizzled @"xwyz" v , swizzled @"xwyw" v , swizzled @"xwzx" v , swizzled @"xwzy" v , swizzled @"xwzz" v , swizzled @"xwzw" v , swizzled @"xwwx" v , swizzled @"xwwy" v , swizzled @"xwwz" v , swizzled @"xwww" v , swizzled @"yxxx" v , swizzled @"yxxy" v , swizzled @"yxxz" v , swizzled @"yxxw" v , swizzled @"yxyx" v , swizzled @"yxyy" v , swizzled @"yxyz" v , swizzled @"yxyw" v , swizzled @"yxzx" v , swizzled @"yxzy" v , swizzled @"yxzz" v , swizzled @"yxzw" v , swizzled @"yxwx" v , swizzled @"yxwy" v , swizzled @"yxwz" v , swizzled @"yxww" v , swizzled @"yyxx" v , swizzled @"yyxy" v , swizzled @"yyxz" v , swizzled @"yyxw" v , swizzled @"yyyx" v , swizzled @"yyyy" v , swizzled @"yyyz" v , swizzled @"yyyw" v , swizzled @"yyzx" v , swizzled @"yyzy" v , swizzled @"yyzz" v , swizzled @"yyzw" v , swizzled @"yywx" v , swizzled @"yywy" v , swizzled @"yywz" v , swizzled @"yyww" v , swizzled @"yzxx" v , swizzled @"yzxy" v , swizzled @"yzxz" v , swizzled @"yzxw" v , swizzled @"yzyx" v , swizzled @"yzyy" v , swizzled @"yzyz" v , swizzled @"yzyw" v , swizzled @"yzzx" v , swizzled @"yzzy" v , swizzled @"yzzz" v , swizzled @"yzzw" v , swizzled @"yzwx" v , swizzled @"yzwy" v , swizzled @"yzwz" v , swizzled @"yzww" v , swizzled @"ywxx" v , swizzled @"ywxy" v , swizzled @"ywxz" v , swizzled @"ywxw" v , swizzled @"ywyx" v , swizzled @"ywyy" v , swizzled @"ywyz" v , swizzled @"ywyw" v , swizzled @"ywzx" v , swizzled @"ywzy" v , swizzled @"ywzz" v , swizzled @"ywzw" v , swizzled @"ywwx" v , swizzled @"ywwy" v , swizzled @"ywwz" v , swizzled @"ywww" v , swizzled @"zxxx" v , swizzled @"zxxy" v , swizzled @"zxxz" v , swizzled @"zxxw" v , swizzled @"zxyx" v , swizzled @"zxyy" v , swizzled @"zxyz" v , swizzled @"zxyw" v , swizzled @"zxzx" v , swizzled @"zxzy" v , swizzled @"zxzz" v , swizzled @"zxzw" v , swizzled @"zxwx" v , swizzled @"zxwy" v , swizzled @"zxwz" v , swizzled @"zxww" v , swizzled @"zyxx" v , swizzled @"zyxy" v , swizzled @"zyxz" v , swizzled @"zyxw" v , swizzled @"zyyx" v , swizzled @"zyyy" v , swizzled @"zyyz" v , swizzled @"zyyw" v , swizzled @"zyzx" v , swizzled @"zyzy" v , swizzled @"zyzz" v , swizzled @"zyzw" v , swizzled @"zywx" v , swizzled @"zywy" v , swizzled @"zywz" v , swizzled @"zyww" v , swizzled @"zzxx" v , swizzled @"zzxy" v , swizzled @"zzxz" v , swizzled @"zzxw" v , swizzled @"zzyx" v , swizzled @"zzyy" v , swizzled @"zzyz" v , swizzled @"zzyw" v , swizzled @"zzzx" v , swizzled @"zzzy" v , swizzled @"zzzz" v , swizzled @"zzzw" v , swizzled @"zzwx" v , swizzled @"zzwy" v , swizzled @"zzwz" v , swizzled @"zzww" v , swizzled @"zwxx" v , swizzled @"zwxy" v , swizzled @"zwxz" v , swizzled @"zwxw" v , swizzled @"zwyx" v , swizzled @"zwyy" v , swizzled @"zwyz" v , swizzled @"zwyw" v , swizzled @"zwzx" v , swizzled @"zwzy" v , swizzled @"zwzz" v , swizzled @"zwzw" v , swizzled @"zwwx" v , swizzled @"zwwy" v , swizzled @"zwwz" v , swizzled @"zwww" v , swizzled @"wxxx" v , swizzled @"wxxy" v , swizzled @"wxxz" v , swizzled @"wxxw" v , swizzled @"wxyx" v , swizzled @"wxyy" v , swizzled @"wxyz" v , swizzled @"wxyw" v , swizzled @"wxzx" v , swizzled @"wxzy" v , swizzled @"wxzz" v , swizzled @"wxzw" v , swizzled @"wxwx" v , swizzled @"wxwy" v , swizzled @"wxwz" v , swizzled @"wxww" v , swizzled @"wyxx" v , swizzled @"wyxy" v , swizzled @"wyxz" v , swizzled @"wyxw" v , swizzled @"wyyx" v , swizzled @"wyyy" v , swizzled @"wyyz" v , swizzled @"wyyw" v , swizzled @"wyzx" v , swizzled @"wyzy" v , swizzled @"wyzz" v , swizzled @"wyzw" v , swizzled @"wywx" v , swizzled @"wywy" v , swizzled @"wywz" v , swizzled @"wyww" v , swizzled @"wzxx" v , swizzled @"wzxy" v , swizzled @"wzxz" v , swizzled @"wzxw" v , swizzled @"wzyx" v , swizzled @"wzyy" v , swizzled @"wzyz" v , swizzled @"wzyw" v , swizzled @"wzzx" v , swizzled @"wzzy" v , swizzled @"wzzz" v , swizzled @"wzzw" v , swizzled @"wzwx" v , swizzled @"wzwy" v , swizzled @"wzwz" v , swizzled @"wzww" v , swizzled @"wwxx" v , swizzled @"wwxy" v , swizzled @"wwxz" v , swizzled @"wwxw" v , swizzled @"wwyx" v , swizzled @"wwyy" v , swizzled @"wwyz" v , swizzled @"wwyw" v , swizzled @"wwzx" v , swizzled @"wwzy" v , swizzled @"wwzz" v , swizzled @"wwzw" v , swizzled @"wwwx" v , swizzled @"wwwy" v , swizzled @"wwwz" v , swizzled @"wwww" v ]