packages feed

geomancy-0.4.0.0: src/Geomancy/Swizzle/I64Vec/Shuffle.hs

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Geomancy.Swizzle.I64Vec.Shuffle () where

import GHC.Records (HasField(..))

import Geomancy.I64Vec2 (I64Vec2, i64vec2, withI64Vec2)
import Geomancy.I64Vec3 (I64Vec3, i64vec3, withI64Vec3)
import Geomancy.I64Vec4 (I64Vec4, i64vec4, withI64Vec4)

instance HasField "xx" I64Vec2 I64Vec2 where
  {-# INLINE getField #-}
  getField v = withI64Vec2 v \x _ -> i64vec2 x x

instance HasField "xy" I64Vec2 I64Vec2 where
  {-# INLINE getField #-}
  getField v = v

instance HasField "yx" I64Vec2 I64Vec2 where
  {-# INLINE getField #-}
  getField v = withI64Vec2 v \x y -> i64vec2 y x

instance HasField "yy" I64Vec2 I64Vec2 where
  {-# INLINE getField #-}
  getField v = withI64Vec2 v \_ y -> i64vec2 y y

instance HasField "xxx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ _ -> i64vec3 x x x

instance HasField "xxy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 x x y

instance HasField "xxz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 x x z

instance HasField "xyx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 x y x

instance HasField "xyy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 x y y

instance HasField "xyz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = v

instance HasField "xzx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 x z x

instance HasField "xzy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y z -> i64vec3 x z y

instance HasField "xzz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 x z z

instance HasField "yxx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 y x x

instance HasField "yxy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 y x y

instance HasField "yxz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y z -> i64vec3 y x z

instance HasField "yyx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y _ -> i64vec3 y y x

instance HasField "yyy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y _ -> i64vec3 y y y

instance HasField "yyz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 y y z

instance HasField "yzx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y z -> i64vec3 y z x

instance HasField "yzy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 y z y

instance HasField "yzz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 y z z

instance HasField "zxx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 z x x

instance HasField "zxy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y z -> i64vec3 z x y

instance HasField "zxz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 z x z

instance HasField "zyx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x y z -> i64vec3 z y x

instance HasField "zyy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 z y y

instance HasField "zyz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 z y z

instance HasField "zzx" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \x _ z -> i64vec3 z z x

instance HasField "zzy" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ y z -> i64vec3 z z y

instance HasField "zzz" I64Vec3 I64Vec3 where
  {-# INLINE getField #-}
  getField v = withI64Vec3 v \_ _ z -> i64vec3 z z z

instance HasField "xxxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ _ -> i64vec4 x x x x

instance HasField "xxxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x x x y

instance HasField "xxxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x x x z

instance HasField "xxxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x x x w

instance HasField "xxyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x x y x

instance HasField "xxyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x x y y

instance HasField "xxyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x x y z

instance HasField "xxyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x x y w

instance HasField "xxzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x x z x

instance HasField "xxzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x x z y

instance HasField "xxzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x x z z

instance HasField "xxzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x x z w

instance HasField "xxwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x x w x

instance HasField "xxwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x x w y

instance HasField "xxwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x x w z

instance HasField "xxww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x x w w

instance HasField "xyxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x y x x

instance HasField "xyxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x y x y

instance HasField "xyxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x y x z

instance HasField "xyxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x y x w

instance HasField "xyyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x y y x

instance HasField "xyyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 x y y y

instance HasField "xyyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x y y z

instance HasField "xyyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x y y w

instance HasField "xyzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x y z x

instance HasField "xyzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x y z y

instance HasField "xyzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x y z z

instance HasField "xyzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = v

instance HasField "xywx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x y w x

instance HasField "xywy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x y w y

instance HasField "xywz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 x y w z

instance HasField "xyww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x y w w

instance HasField "xzxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x z x x

instance HasField "xzxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x z x y

instance HasField "xzxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x z x z

instance HasField "xzxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x z x w

instance HasField "xzyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x z y x

instance HasField "xzyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x z y y

instance HasField "xzyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x z y z

instance HasField "xzyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 x z y w

instance HasField "xzzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x z z x

instance HasField "xzzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 x z z y

instance HasField "xzzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 x z z z

instance HasField "xzzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x z z w

instance HasField "xzwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x z w x

instance HasField "xzwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 x z w y

instance HasField "xzwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x z w z

instance HasField "xzww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x z w w

instance HasField "xwxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x w x x

instance HasField "xwxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x w x y

instance HasField "xwxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x w x z

instance HasField "xwxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x w x w

instance HasField "xwyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x w y x

instance HasField "xwyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x w y y

instance HasField "xwyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 x w y z

instance HasField "xwyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x w y w

instance HasField "xwzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x w z x

instance HasField "xwzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 x w z y

instance HasField "xwzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x w z z

instance HasField "xwzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x w z w

instance HasField "xwwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x w w x

instance HasField "xwwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 x w w y

instance HasField "xwwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 x w w z

instance HasField "xwww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 x w w w

instance HasField "yxxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y x x x

instance HasField "yxxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y x x y

instance HasField "yxxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y x x z

instance HasField "yxxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y x x w

instance HasField "yxyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y x y x

instance HasField "yxyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y x y y

instance HasField "yxyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y x y z

instance HasField "yxyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y x y w

instance HasField "yxzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y x z x

instance HasField "yxzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y x z y

instance HasField "yxzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y x z z

instance HasField "yxzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y x z w

instance HasField "yxwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y x w x

instance HasField "yxwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y x w y

instance HasField "yxwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y x w z

instance HasField "yxww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y x w w

instance HasField "yyxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y y x x

instance HasField "yyxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y y x y

instance HasField "yyxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y y x z

instance HasField "yyxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y y x w

instance HasField "yyyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ _ -> i64vec4 y y y x

instance HasField "yyyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ _ -> i64vec4 y y y y

instance HasField "yyyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y y y z

instance HasField "yyyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y y y w

instance HasField "yyzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y y z x

instance HasField "yyzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y y z y

instance HasField "yyzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y y z z

instance HasField "yyzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y y z w

instance HasField "yywx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y y w x

instance HasField "yywy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y y w y

instance HasField "yywz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y y w z

instance HasField "yyww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y y w w

instance HasField "yzxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y z x x

instance HasField "yzxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y z x y

instance HasField "yzxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y z x z

instance HasField "yzxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y z x w

instance HasField "yzyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y z y x

instance HasField "yzyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y z y y

instance HasField "yzyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y z y z

instance HasField "yzyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y z y w

instance HasField "yzzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 y z z x

instance HasField "yzzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y z z y

instance HasField "yzzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 y z z z

instance HasField "yzzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y z z w

instance HasField "yzwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y z w x

instance HasField "yzwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y z w y

instance HasField "yzwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y z w z

instance HasField "yzww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y z w w

instance HasField "ywxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y w x x

instance HasField "ywxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y w x y

instance HasField "ywxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y w x z

instance HasField "ywxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y w x w

instance HasField "ywyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y w y x

instance HasField "ywyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y w y y

instance HasField "ywyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y w y z

instance HasField "ywyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y w y w

instance HasField "ywzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 y w z x

instance HasField "ywzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y w z y

instance HasField "ywzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y w z z

instance HasField "ywzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y w z w

instance HasField "ywwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 y w w x

instance HasField "ywwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y w w y

instance HasField "ywwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 y w w z

instance HasField "ywww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 y w w w

instance HasField "zxxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z x x x

instance HasField "zxxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z x x y

instance HasField "zxxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z x x z

instance HasField "zxxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z x x w

instance HasField "zxyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z x y x

instance HasField "zxyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z x y y

instance HasField "zxyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z x y z

instance HasField "zxyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z x y w

instance HasField "zxzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z x z x

instance HasField "zxzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z x z y

instance HasField "zxzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z x z z

instance HasField "zxzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z x z w

instance HasField "zxwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z x w x

instance HasField "zxwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z x w y

instance HasField "zxwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z x w z

instance HasField "zxww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z x w w

instance HasField "zyxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z y x x

instance HasField "zyxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z y x y

instance HasField "zyxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z y x z

instance HasField "zyxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z y x w

instance HasField "zyyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z y y x

instance HasField "zyyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z y y y

instance HasField "zyyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z y y z

instance HasField "zyyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z y y w

instance HasField "zyzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z y z x

instance HasField "zyzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z y z y

instance HasField "zyzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z y z z

instance HasField "zyzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z y z w

instance HasField "zywx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z y w x

instance HasField "zywy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z y w y

instance HasField "zywz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z y w z

instance HasField "zyww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z y w w

instance HasField "zzxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z z x x

instance HasField "zzxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z z x y

instance HasField "zzxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z z x z

instance HasField "zzxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z z x w

instance HasField "zzyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z _ -> i64vec4 z z y x

instance HasField "zzyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z z y y

instance HasField "zzyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z z y z

instance HasField "zzyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z z y w

instance HasField "zzzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z _ -> i64vec4 z z z x

instance HasField "zzzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z _ -> i64vec4 z z z y

instance HasField "zzzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z _ -> i64vec4 z z z z

instance HasField "zzzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z z z w

instance HasField "zzwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z z w x

instance HasField "zzwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z z w y

instance HasField "zzwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z z w z

instance HasField "zzww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z z w w

instance HasField "zwxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z w x x

instance HasField "zwxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z w x y

instance HasField "zwxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z w x z

instance HasField "zwxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z w x w

instance HasField "zwyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 z w y x

instance HasField "zwyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z w y y

instance HasField "zwyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z w y z

instance HasField "zwyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z w y w

instance HasField "zwzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z w z x

instance HasField "zwzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z w z y

instance HasField "zwzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z w z z

instance HasField "zwzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z w z w

instance HasField "zwwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 z w w x

instance HasField "zwwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 z w w y

instance HasField "zwwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z w w z

instance HasField "zwww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 z w w w

instance HasField "wxxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w x x x

instance HasField "wxxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w x x y

instance HasField "wxxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w x x z

instance HasField "wxxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w x x w

instance HasField "wxyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w x y x

instance HasField "wxyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w x y y

instance HasField "wxyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w x y z

instance HasField "wxyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w x y w

instance HasField "wxzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w x z x

instance HasField "wxzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w x z y

instance HasField "wxzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w x z z

instance HasField "wxzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w x z w

instance HasField "wxwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w x w x

instance HasField "wxwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w x w y

instance HasField "wxwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w x w z

instance HasField "wxww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w x w w

instance HasField "wyxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w y x x

instance HasField "wyxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w y x y

instance HasField "wyxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w y x z

instance HasField "wyxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w y x w

instance HasField "wyyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w y y x

instance HasField "wyyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w y y y

instance HasField "wyyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w y y z

instance HasField "wyyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w y y w

instance HasField "wyzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w y z x

instance HasField "wyzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w y z y

instance HasField "wyzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w y z z

instance HasField "wyzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w y z w

instance HasField "wywx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w y w x

instance HasField "wywy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w y w y

instance HasField "wywz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w y w z

instance HasField "wyww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w y w w

instance HasField "wzxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w z x x

instance HasField "wzxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w z x y

instance HasField "wzxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w z x z

instance HasField "wzxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w z x w

instance HasField "wzyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y z w -> i64vec4 w z y x

instance HasField "wzyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w z y y

instance HasField "wzyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w z y z

instance HasField "wzyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w z y w

instance HasField "wzzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w z z x

instance HasField "wzzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w z z y

instance HasField "wzzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w z z z

instance HasField "wzzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w z z w

instance HasField "wzwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w z w x

instance HasField "wzwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w z w y

instance HasField "wzwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w z w z

instance HasField "wzww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w z w w

instance HasField "wwxx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w w x x

instance HasField "wwxy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w w x y

instance HasField "wwxz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w w x z

instance HasField "wwxw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w w x w

instance HasField "wwyx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x y _ w -> i64vec4 w w y x

instance HasField "wwyy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w w y y

instance HasField "wwyz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w w y z

instance HasField "wwyw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w w y w

instance HasField "wwzx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ z w -> i64vec4 w w z x

instance HasField "wwzy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y z w -> i64vec4 w w z y

instance HasField "wwzz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w w z z

instance HasField "wwzw" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w w z w

instance HasField "wwwx" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \x _ _ w -> i64vec4 w w w x

instance HasField "wwwy" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ y _ w -> i64vec4 w w w y

instance HasField "wwwz" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ z w -> i64vec4 w w w z

instance HasField "wwww" I64Vec4 I64Vec4 where
  {-# INLINE getField #-}
  getField v = withI64Vec4 v \_ _ _ w -> i64vec4 w w w w