geomancy-0.2.4.0: src/Geomancy/Swizzle.hs
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
module Geomancy.Swizzle
( swizzle
, (.@)
) where
import GHC.OverloadedLabels
import Geomancy.Vec2 (Vec2, vec2, withVec2)
import Geomancy.Vec3 (Vec3, vec3, withVec3)
import Geomancy.Vec4 (Vec4, vec4, withVec4)
newtype Swizzle to fro = Swizzle { swizzle :: fro -> to }
{-# INLINE (.@) #-}
(.@) :: forall to fro . fro -> Swizzle to fro -> to
v .@ Swizzle f = f v
-- * From Vec2
-- ** To Float
instance IsLabel "x" (Swizzle Float Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x _ -> x
instance IsLabel "y" (Swizzle Float Vec2) where
fromLabel = Swizzle \v -> withVec2 v \_ y -> y
-- ** To Vec2
instance IsLabel "xx" (Swizzle Vec2 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x _ -> vec2 x x
instance IsLabel "yx" (Swizzle Vec2 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec2 y x
instance IsLabel "yy" (Swizzle Vec2 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \_ y -> vec2 y y
-- ** To Vec3
instance IsLabel "xxx" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x _ -> vec3 x x x
instance IsLabel "xxy" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 x x y
instance IsLabel "xyx" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 x y x
instance IsLabel "xyy" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 x y y
instance IsLabel "yxx" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 y x x
instance IsLabel "yxy" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 y x y
instance IsLabel "yyx" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec3 y y x
instance IsLabel "yyy" (Swizzle Vec3 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \_ y -> vec3 y y y
-- ** To Vec4
instance IsLabel "xxxx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x _ -> vec4 x x x x
instance IsLabel "xxxy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x x x y
instance IsLabel "xxyx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x x y x
instance IsLabel "xxyy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x x y y
instance IsLabel "xyxx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x y x x
instance IsLabel "xyxy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x y x y
instance IsLabel "xyyx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x y y x
instance IsLabel "xyyy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 x y y y
instance IsLabel "yxxx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y x x x
instance IsLabel "yxxy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y x x y
instance IsLabel "yxyx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y x y x
instance IsLabel "yxyy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y x y y
instance IsLabel "yyxx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y y x x
instance IsLabel "yyxy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y y x y
instance IsLabel "yyyx" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \x y -> vec4 y y y x
instance IsLabel "yyyy" (Swizzle Vec4 Vec2) where
fromLabel = Swizzle \v -> withVec2 v \_ y -> vec4 y y y y
-- * From Vec3
-- * To Float
instance IsLabel "x" (Swizzle Float Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ _ -> x
instance IsLabel "y" (Swizzle Float Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y _ -> y
instance IsLabel "z" (Swizzle Float Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ _ z -> z
-- * To Vec2
instance IsLabel "xx" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ _ -> vec2 x x
instance IsLabel "xy" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec2 x y
instance IsLabel "xz" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec2 x z
instance IsLabel "yx" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec2 y x
instance IsLabel "yy" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y _ -> vec2 y y
instance IsLabel "yz" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec2 y z
instance IsLabel "zx" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec2 z x
instance IsLabel "zy" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec2 z y
instance IsLabel "zz" (Swizzle Vec2 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ _ z -> vec2 z z
-- * To Vec3
instance IsLabel "xxx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ _ -> vec3 x x x
instance IsLabel "xxy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 x x y
instance IsLabel "xxz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 x x z
instance IsLabel "xyx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 x y x
instance IsLabel "xyy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 x y y
instance IsLabel "xzx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 x z x
instance IsLabel "xzy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec3 x z y
instance IsLabel "xzz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 x z z
instance IsLabel "yxx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 y x x
instance IsLabel "yxy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 y x y
instance IsLabel "yxz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec3 y x z
instance IsLabel "yyx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec3 y y x
instance IsLabel "yyy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y _ -> vec3 y y y
instance IsLabel "yyz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 y y z
instance IsLabel "yzx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec3 y z x
instance IsLabel "yzy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 y z y
instance IsLabel "yzz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 y z z
instance IsLabel "zxx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 z x x
instance IsLabel "zxy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec3 z x y
instance IsLabel "zxz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 z x z
instance IsLabel "zyx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec3 z y x
instance IsLabel "zyy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 z y y
instance IsLabel "zyz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 z y z
instance IsLabel "zzx" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec3 z z x
instance IsLabel "zzy" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec3 z z y
instance IsLabel "zzz" (Swizzle Vec3 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ _ z -> vec3 z z z
-- * To Vec4
instance IsLabel "xxxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ _ -> vec4 x x x x
instance IsLabel "xxxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x x x y
instance IsLabel "xxxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x x x z
instance IsLabel "xxyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x x y x
instance IsLabel "xxyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x x y y
instance IsLabel "xxyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x x y z
instance IsLabel "xxzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x x z x
instance IsLabel "xxzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x x z y
instance IsLabel "xxzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x x z z
instance IsLabel "xyxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x y x x
instance IsLabel "xyxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x y x y
instance IsLabel "xyxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x y x z
instance IsLabel "xyyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x y y x
instance IsLabel "xyyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 x y y y
instance IsLabel "xyyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x y y z
instance IsLabel "xyzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x y z x
instance IsLabel "xyzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x y z y
instance IsLabel "xyzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x y z z
instance IsLabel "xzxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x z x x
instance IsLabel "xzxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x z x y
instance IsLabel "xzxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x z x z
instance IsLabel "xzyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x z y x
instance IsLabel "xzyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x z y y
instance IsLabel "xzyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x z y z
instance IsLabel "xzzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x z z x
instance IsLabel "xzzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 x z z y
instance IsLabel "xzzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 x z z z
instance IsLabel "yxxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y x x x
instance IsLabel "yxxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y x x y
instance IsLabel "yxxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y x x z
instance IsLabel "yxyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y x y x
instance IsLabel "yxyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y x y y
instance IsLabel "yxyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y x y z
instance IsLabel "yxzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y x z x
instance IsLabel "yxzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y x z y
instance IsLabel "yxzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y x z z
instance IsLabel "yyxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y y x x
instance IsLabel "yyxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y y x y
instance IsLabel "yyxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y y x z
instance IsLabel "yyyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y _ -> vec4 y y y x
instance IsLabel "yyyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y _ -> vec4 y y y y
instance IsLabel "yyyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y y y z
instance IsLabel "yyzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y y z x
instance IsLabel "yyzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y y z y
instance IsLabel "yyzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y y z z
instance IsLabel "yzxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y z x x
instance IsLabel "yzxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y z x y
instance IsLabel "yzxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y z x z
instance IsLabel "yzyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y z y x
instance IsLabel "yzyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y z y y
instance IsLabel "yzyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y z y z
instance IsLabel "yzzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 y z z x
instance IsLabel "yzzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y z z y
instance IsLabel "yzzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 y z z z
instance IsLabel "zxxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z x x x
instance IsLabel "zxxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z x x y
instance IsLabel "zxxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z x x z
instance IsLabel "zxyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z x y x
instance IsLabel "zxyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z x y y
instance IsLabel "zxyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z x y z
instance IsLabel "zxzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z x z x
instance IsLabel "zxzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z x z y
instance IsLabel "zxzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z x z z
instance IsLabel "zyxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z y x x
instance IsLabel "zyxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z y x y
instance IsLabel "zyxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z y x z
instance IsLabel "zyyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z y y x
instance IsLabel "zyyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z y y y
instance IsLabel "zyyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z y y z
instance IsLabel "zyzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z y z x
instance IsLabel "zyzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z y z y
instance IsLabel "zyzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z y z z
instance IsLabel "zzxx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z z x x
instance IsLabel "zzxy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z z x y
instance IsLabel "zzxz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z z x z
instance IsLabel "zzyx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x y z -> vec4 z z y x
instance IsLabel "zzyy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z z y y
instance IsLabel "zzyz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z z y z
instance IsLabel "zzzx" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \x _ z -> vec4 z z z x
instance IsLabel "zzzy" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ y z -> vec4 z z z y
instance IsLabel "zzzz" (Swizzle Vec4 Vec3) where
fromLabel = Swizzle \v -> withVec3 v \_ _ z -> vec4 z z z z
-- * From Vec4
-- ** To Float
instance IsLabel "x" (Swizzle Float Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ _ -> x
instance IsLabel "y" (Swizzle Float Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ _ -> y
instance IsLabel "z" (Swizzle Float Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z _ -> z
instance IsLabel "w" (Swizzle Float Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ _ w -> w
-- ** To Vec2
instance IsLabel "xx" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ _ -> vec2 x x
instance IsLabel "xy" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec2 x y
instance IsLabel "xz" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec2 x z
instance IsLabel "xw" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec2 x w
instance IsLabel "yx" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec2 y x
instance IsLabel "yy" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ _ -> vec2 y y
instance IsLabel "yz" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec2 y z
instance IsLabel "yw" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec2 y w
instance IsLabel "zx" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec2 z x
instance IsLabel "zy" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec2 z y
instance IsLabel "zz" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z _ -> vec2 z z
instance IsLabel "zw" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec2 z w
instance IsLabel "wx" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec2 w x
instance IsLabel "wy" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec2 w y
instance IsLabel "wz" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec2 w z
instance IsLabel "ww" (Swizzle Vec2 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ _ w -> vec2 w w
-- ** To Vec3
instance IsLabel "xxx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ _ -> vec3 x x x
instance IsLabel "xxy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 x x y
instance IsLabel "xxz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 x x z
instance IsLabel "xxw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 x x w
instance IsLabel "xyx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 x y x
instance IsLabel "xyy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 x y y
instance IsLabel "xyz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 x y z
instance IsLabel "xyw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 x y w
instance IsLabel "xzx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 x z x
instance IsLabel "xzy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 x z y
instance IsLabel "xzz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 x z z
instance IsLabel "xzw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 x z w
instance IsLabel "xwx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 x w x
instance IsLabel "xwy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 x w y
instance IsLabel "xwz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 x w z
instance IsLabel "xww" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 x w w
instance IsLabel "yxx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 y x x
instance IsLabel "yxy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 y x y
instance IsLabel "yxz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 y x z
instance IsLabel "yxw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 y x w
instance IsLabel "yyx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec3 y y x
instance IsLabel "yyy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ _ -> vec3 y y y
instance IsLabel "yyz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 y y z
instance IsLabel "yyw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 y y w
instance IsLabel "yzx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 y z x
instance IsLabel "yzy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 y z y
instance IsLabel "yzz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 y z z
instance IsLabel "yzw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 y z w
instance IsLabel "ywx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 y w x
instance IsLabel "ywy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 y w y
instance IsLabel "ywz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 y w z
instance IsLabel "yww" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 y w w
instance IsLabel "zxx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 z x x
instance IsLabel "zxy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 z x y
instance IsLabel "zxz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 z x z
instance IsLabel "zxw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 z x w
instance IsLabel "zyx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec3 z y x
instance IsLabel "zyy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 z y y
instance IsLabel "zyz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 z y z
instance IsLabel "zyw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 z y w
instance IsLabel "zzx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec3 z z x
instance IsLabel "zzy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec3 z z y
instance IsLabel "zzz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z _ -> vec3 z z z
instance IsLabel "zzw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 z z w
instance IsLabel "zwx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 z w x
instance IsLabel "zwy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 z w y
instance IsLabel "zwz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 z w z
instance IsLabel "zww" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 z w w
instance IsLabel "wxx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 w x x
instance IsLabel "wxy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 w x y
instance IsLabel "wxz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 w x z
instance IsLabel "wxw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 w x w
instance IsLabel "wyx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec3 w y x
instance IsLabel "wyy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 w y y
instance IsLabel "wyz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 w y z
instance IsLabel "wyw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 w y w
instance IsLabel "wzx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec3 w z x
instance IsLabel "wzy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec3 w z y
instance IsLabel "wzz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 w z z
instance IsLabel "wzw" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 w z w
instance IsLabel "wwx" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec3 w w x
instance IsLabel "wwy" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec3 w w y
instance IsLabel "wwz" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec3 w w z
instance IsLabel "www" (Swizzle Vec3 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ _ w -> vec3 w w w
-- ** To Vec4
instance IsLabel "xxxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ _ -> vec4 x x x x
instance IsLabel "xxxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x x x y
instance IsLabel "xxxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x x x z
instance IsLabel "xxxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x x x w
instance IsLabel "xxyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x x y x
instance IsLabel "xxyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x x y y
instance IsLabel "xxyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x x y z
instance IsLabel "xxyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x x y w
instance IsLabel "xxzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x x z x
instance IsLabel "xxzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x x z y
instance IsLabel "xxzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x x z z
instance IsLabel "xxzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x x z w
instance IsLabel "xxwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x x w x
instance IsLabel "xxwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x x w y
instance IsLabel "xxwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x x w z
instance IsLabel "xxww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x x w w
instance IsLabel "xyxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x y x x
instance IsLabel "xyxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x y x y
instance IsLabel "xyxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x y x z
instance IsLabel "xyxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x y x w
instance IsLabel "xyyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x y y x
instance IsLabel "xyyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 x y y y
instance IsLabel "xyyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x y y z
instance IsLabel "xyyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x y y w
instance IsLabel "xyzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x y z x
instance IsLabel "xyzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x y z y
instance IsLabel "xyzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x y z z
instance IsLabel "xywx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x y w x
instance IsLabel "xywy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x y w y
instance IsLabel "xywz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 x y w z
instance IsLabel "xyww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x y w w
instance IsLabel "xzxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x z x x
instance IsLabel "xzxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x z x y
instance IsLabel "xzxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x z x z
instance IsLabel "xzxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x z x w
instance IsLabel "xzyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x z y x
instance IsLabel "xzyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x z y y
instance IsLabel "xzyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x z y z
instance IsLabel "xzyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 x z y w
instance IsLabel "xzzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x z z x
instance IsLabel "xzzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 x z z y
instance IsLabel "xzzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 x z z z
instance IsLabel "xzzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x z z w
instance IsLabel "xzwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x z w x
instance IsLabel "xzwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 x z w y
instance IsLabel "xzwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x z w z
instance IsLabel "xzww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x z w w
instance IsLabel "xwxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x w x x
instance IsLabel "xwxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x w x y
instance IsLabel "xwxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x w x z
instance IsLabel "xwxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x w x w
instance IsLabel "xwyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x w y x
instance IsLabel "xwyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x w y y
instance IsLabel "xwyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 x w y z
instance IsLabel "xwyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x w y w
instance IsLabel "xwzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x w z x
instance IsLabel "xwzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 x w z y
instance IsLabel "xwzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x w z z
instance IsLabel "xwzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x w z w
instance IsLabel "xwwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x w w x
instance IsLabel "xwwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 x w w y
instance IsLabel "xwwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 x w w z
instance IsLabel "xwww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 x w w w
instance IsLabel "yxxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y x x x
instance IsLabel "yxxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y x x y
instance IsLabel "yxxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y x x z
instance IsLabel "yxxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y x x w
instance IsLabel "yxyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y x y x
instance IsLabel "yxyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y x y y
instance IsLabel "yxyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y x y z
instance IsLabel "yxyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y x y w
instance IsLabel "yxzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y x z x
instance IsLabel "yxzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y x z y
instance IsLabel "yxzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y x z z
instance IsLabel "yxzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y x z w
instance IsLabel "yxwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y x w x
instance IsLabel "yxwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y x w y
instance IsLabel "yxwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y x w z
instance IsLabel "yxww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y x w w
instance IsLabel "yyxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y y x x
instance IsLabel "yyxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y y x y
instance IsLabel "yyxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y y x z
instance IsLabel "yyxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y y x w
instance IsLabel "yyyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ _ -> vec4 y y y x
instance IsLabel "yyyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ _ -> vec4 y y y y
instance IsLabel "yyyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y y y z
instance IsLabel "yyyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y y y w
instance IsLabel "yyzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y y z x
instance IsLabel "yyzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y y z y
instance IsLabel "yyzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y y z z
instance IsLabel "yyzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y y z w
instance IsLabel "yywx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y y w x
instance IsLabel "yywy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y y w y
instance IsLabel "yywz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y y w z
instance IsLabel "yyww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y y w w
instance IsLabel "yzxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y z x x
instance IsLabel "yzxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y z x y
instance IsLabel "yzxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y z x z
instance IsLabel "yzxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y z x w
instance IsLabel "yzyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y z y x
instance IsLabel "yzyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y z y y
instance IsLabel "yzyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y z y z
instance IsLabel "yzyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y z y w
instance IsLabel "yzzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 y z z x
instance IsLabel "yzzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y z z y
instance IsLabel "yzzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 y z z z
instance IsLabel "yzzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y z z w
instance IsLabel "yzwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y z w x
instance IsLabel "yzwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y z w y
instance IsLabel "yzwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y z w z
instance IsLabel "yzww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y z w w
instance IsLabel "ywxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y w x x
instance IsLabel "ywxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y w x y
instance IsLabel "ywxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y w x z
instance IsLabel "ywxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y w x w
instance IsLabel "ywyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y w y x
instance IsLabel "ywyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y w y y
instance IsLabel "ywyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y w y z
instance IsLabel "ywyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y w y w
instance IsLabel "ywzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 y w z x
instance IsLabel "ywzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y w z y
instance IsLabel "ywzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y w z z
instance IsLabel "ywzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y w z w
instance IsLabel "ywwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 y w w x
instance IsLabel "ywwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y w w y
instance IsLabel "ywwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 y w w z
instance IsLabel "ywww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 y w w w
instance IsLabel "zxxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z x x x
instance IsLabel "zxxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z x x y
instance IsLabel "zxxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z x x z
instance IsLabel "zxxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z x x w
instance IsLabel "zxyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z x y x
instance IsLabel "zxyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z x y y
instance IsLabel "zxyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z x y z
instance IsLabel "zxyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z x y w
instance IsLabel "zxzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z x z x
instance IsLabel "zxzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z x z y
instance IsLabel "zxzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z x z z
instance IsLabel "zxzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z x z w
instance IsLabel "zxwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z x w x
instance IsLabel "zxwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z x w y
instance IsLabel "zxwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z x w z
instance IsLabel "zxww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z x w w
instance IsLabel "zyxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z y x x
instance IsLabel "zyxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z y x y
instance IsLabel "zyxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z y x z
instance IsLabel "zyxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z y x w
instance IsLabel "zyyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z y y x
instance IsLabel "zyyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z y y y
instance IsLabel "zyyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z y y z
instance IsLabel "zyyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z y y w
instance IsLabel "zyzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z y z x
instance IsLabel "zyzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z y z y
instance IsLabel "zyzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z y z z
instance IsLabel "zyzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z y z w
instance IsLabel "zywx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z y w x
instance IsLabel "zywy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z y w y
instance IsLabel "zywz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z y w z
instance IsLabel "zyww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z y w w
instance IsLabel "zzxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z z x x
instance IsLabel "zzxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z z x y
instance IsLabel "zzxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z z x z
instance IsLabel "zzxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z z x w
instance IsLabel "zzyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z _ -> vec4 z z y x
instance IsLabel "zzyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z z y y
instance IsLabel "zzyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z z y z
instance IsLabel "zzyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z z y w
instance IsLabel "zzzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z _ -> vec4 z z z x
instance IsLabel "zzzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z _ -> vec4 z z z y
instance IsLabel "zzzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z _ -> vec4 z z z z
instance IsLabel "zzzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z z z w
instance IsLabel "zzwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z z w x
instance IsLabel "zzwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z z w y
instance IsLabel "zzwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z z w z
instance IsLabel "zzww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z z w w
instance IsLabel "zwxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z w x x
instance IsLabel "zwxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z w x y
instance IsLabel "zwxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z w x z
instance IsLabel "zwxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z w x w
instance IsLabel "zwyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 z w y x
instance IsLabel "zwyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z w y y
instance IsLabel "zwyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z w y z
instance IsLabel "zwyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z w y w
instance IsLabel "zwzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z w z x
instance IsLabel "zwzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z w z y
instance IsLabel "zwzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z w z z
instance IsLabel "zwzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z w z w
instance IsLabel "zwwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 z w w x
instance IsLabel "zwwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 z w w y
instance IsLabel "zwwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z w w z
instance IsLabel "zwww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 z w w w
instance IsLabel "wxxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w x x x
instance IsLabel "wxxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w x x y
instance IsLabel "wxxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w x x z
instance IsLabel "wxxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w x x w
instance IsLabel "wxyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w x y x
instance IsLabel "wxyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w x y y
instance IsLabel "wxyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w x y z
instance IsLabel "wxyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w x y w
instance IsLabel "wxzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w x z x
instance IsLabel "wxzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w x z y
instance IsLabel "wxzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w x z z
instance IsLabel "wxzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w x z w
instance IsLabel "wxwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w x w x
instance IsLabel "wxwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w x w y
instance IsLabel "wxwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w x w z
instance IsLabel "wxww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w x w w
instance IsLabel "wyxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w y x x
instance IsLabel "wyxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w y x y
instance IsLabel "wyxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w y x z
instance IsLabel "wyxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w y x w
instance IsLabel "wyyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w y y x
instance IsLabel "wyyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w y y y
instance IsLabel "wyyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w y y z
instance IsLabel "wyyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w y y w
instance IsLabel "wyzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w y z x
instance IsLabel "wyzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w y z y
instance IsLabel "wyzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w y z z
instance IsLabel "wyzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w y z w
instance IsLabel "wywx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w y w x
instance IsLabel "wywy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w y w y
instance IsLabel "wywz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w y w z
instance IsLabel "wyww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w y w w
instance IsLabel "wzxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w z x x
instance IsLabel "wzxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w z x y
instance IsLabel "wzxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w z x z
instance IsLabel "wzxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w z x w
instance IsLabel "wzyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y z w -> vec4 w z y x
instance IsLabel "wzyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w z y y
instance IsLabel "wzyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w z y z
instance IsLabel "wzyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w z y w
instance IsLabel "wzzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w z z x
instance IsLabel "wzzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w z z y
instance IsLabel "wzzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w z z z
instance IsLabel "wzzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w z z w
instance IsLabel "wzwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w z w x
instance IsLabel "wzwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w z w y
instance IsLabel "wzwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w z w z
instance IsLabel "wzww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w z w w
instance IsLabel "wwxx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w w x x
instance IsLabel "wwxy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w w x y
instance IsLabel "wwxz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w w x z
instance IsLabel "wwxw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w w x w
instance IsLabel "wwyx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x y _ w -> vec4 w w y x
instance IsLabel "wwyy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w w y y
instance IsLabel "wwyz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w w y z
instance IsLabel "wwyw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w w y w
instance IsLabel "wwzx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ z w -> vec4 w w z x
instance IsLabel "wwzy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y z w -> vec4 w w z y
instance IsLabel "wwzz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w w z z
instance IsLabel "wwzw" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w w z w
instance IsLabel "wwwx" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \x _ _ w -> vec4 w w w x
instance IsLabel "wwwy" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ y _ w -> vec4 w w w y
instance IsLabel "wwwz" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ z w -> vec4 w w w z
instance IsLabel "wwww" (Swizzle Vec4 Vec4) where
fromLabel = Swizzle \v -> withVec4 v \_ _ _ w -> vec4 w w w w