// Generated by swizzlegen. Do not edit.

use super::{Vec2, Vec3, Vec4};

#[cfg(all(vec4_sse2, target_arch = "x86"))]
use core::arch::x86::*;
#[cfg(all(vec4_sse2, target_arch = "x86_64"))]
use core::arch::x86_64::*;

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

impl Vec4Swizzles for Vec4 {
    #[inline]
    fn xxxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xxxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xxxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xxxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xxyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xxyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xxyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xxyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xxzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xxzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xxzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xxzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xxwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xxwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xxwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xxww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_00_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.x,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xyxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xyxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xyxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xyxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xyyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xyyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xyyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xyyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xyzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xyzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xyzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xywx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xywy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xywz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xyww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_01_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.y,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xzxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xzxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xzxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xzxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xzyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xzyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xzyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xzyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xzzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xzzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xzzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xzzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xzwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xzwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xzwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xzww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_10_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.z,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xwxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xwxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xwxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xwxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xwyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xwyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xwyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xwyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xwzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xwzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xwzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xwzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xwwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn xwwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn xwwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn xwww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_11_00))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.x,
                y: self.w,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yxxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yxxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yxxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yxxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yxyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yxyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yxyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yxyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yxzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yxzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yxzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yxzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yxwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yxwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yxwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yxww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_00_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.x,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yyxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yyxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yyxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yyxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yyyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yyyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yyyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yyyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yyzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yyzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yyzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yyzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yywx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yywy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yywz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yyww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_01_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.y,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yzxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yzxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yzxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yzxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yzyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yzyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yzyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yzyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yzzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yzzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yzzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yzzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn yzwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn yzwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn yzwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn yzww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_10_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.z,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn ywxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn ywxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn ywxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn ywxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn ywyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn ywyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn ywyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn ywyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn ywzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn ywzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn ywzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn ywzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn ywwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn ywwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn ywwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn ywww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_11_01))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.y,
                y: self.w,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zxxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zxxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zxxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zxxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zxyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zxyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zxyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zxyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zxzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zxzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zxzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zxzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zxwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zxwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zxwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zxww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_00_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.x,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zyxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zyxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zyxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zyxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zyyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zyyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zyyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zyyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zyzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zyzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zyzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zyzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zywx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zywy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zywz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zyww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_01_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.y,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zzxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zzxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zzxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zzxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zzyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zzyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zzyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zzyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zzzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zzzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zzzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zzzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zzwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zzwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zzwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zzww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_10_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.z,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zwxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zwxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zwxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zwxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zwyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zwyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zwyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zwyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zwzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zwzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zwzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zwzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn zwwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn zwwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn zwwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn zwww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_11_10))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.z,
                y: self.w,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wxxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wxxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wxxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wxxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wxyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wxyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wxyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wxyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wxzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wxzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wxzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wxzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wxwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wxwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wxwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wxww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_00_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.x,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wyxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wyxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wyxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wyxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wyyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wyyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wyyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wyyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wyzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wyzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wyzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wyzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wywx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wywy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wywz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wyww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_01_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.y,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wzxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wzxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wzxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wzxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wzyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wzyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wzyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wzyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wzzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wzzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wzzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wzzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wzwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wzwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wzwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wzww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_10_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.z,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wwxx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.x,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wwxy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_00_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.x,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wwxz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_00_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.x,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wwxw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_00_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.x,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wwyx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.y,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wwyy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_01_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.y,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wwyz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_01_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.y,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wwyw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_01_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.y,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wwzx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.z,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wwzy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_10_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.z,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wwzz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_10_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.z,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wwzw(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_10_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.z,
                w: self.w,
            }
        }
    }
    #[inline]
    fn wwwx(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.w,
                w: self.x,
            }
        }
    }
    #[inline]
    fn wwwy(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b01_11_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.w,
                w: self.y,
            }
        }
    }
    #[inline]
    fn wwwz(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b10_11_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.w,
                w: self.z,
            }
        }
    }
    #[inline]
    fn wwww(self) -> Vec4 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec4(_mm_shuffle_ps(self.0, self.0, 0b11_11_11_11))
        }

        #[cfg(vec4_f32)]
        {
            Vec4 {
                x: self.w,
                y: self.w,
                z: self.w,
                w: self.w,
            }
        }
    }
    #[inline]
    fn xxx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.x,
                z: self.x,
            }
        }
    }
    #[inline]
    fn xxy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.x,
                z: self.y,
            }
        }
    }
    #[inline]
    fn xxz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.x,
                z: self.z,
            }
        }
    }
    #[inline]
    fn xxw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.x,
                z: self.w,
            }
        }
    }
    #[inline]
    fn xyx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.y,
                z: self.x,
            }
        }
    }
    #[inline]
    fn xyy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.y,
                z: self.y,
            }
        }
    }
    #[inline]
    fn xyz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.y,
                z: self.z,
            }
        }
    }
    #[inline]
    fn xyw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.y,
                z: self.w,
            }
        }
    }
    #[inline]
    fn xzx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.z,
                z: self.x,
            }
        }
    }
    #[inline]
    fn xzy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.z,
                z: self.y,
            }
        }
    }
    #[inline]
    fn xzz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.z,
                z: self.z,
            }
        }
    }
    #[inline]
    fn xzw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.z,
                z: self.w,
            }
        }
    }
    #[inline]
    fn xwx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.w,
                z: self.x,
            }
        }
    }
    #[inline]
    fn xwy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.w,
                z: self.y,
            }
        }
    }
    #[inline]
    fn xwz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.w,
                z: self.z,
            }
        }
    }
    #[inline]
    fn xww(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.x,
                y: self.w,
                z: self.w,
            }
        }
    }
    #[inline]
    fn yxx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.x,
                z: self.x,
            }
        }
    }
    #[inline]
    fn yxy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.x,
                z: self.y,
            }
        }
    }
    #[inline]
    fn yxz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.x,
                z: self.z,
            }
        }
    }
    #[inline]
    fn yxw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.x,
                z: self.w,
            }
        }
    }
    #[inline]
    fn yyx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.y,
                z: self.x,
            }
        }
    }
    #[inline]
    fn yyy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.y,
                z: self.y,
            }
        }
    }
    #[inline]
    fn yyz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.y,
                z: self.z,
            }
        }
    }
    #[inline]
    fn yyw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.y,
                z: self.w,
            }
        }
    }
    #[inline]
    fn yzx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.z,
                z: self.x,
            }
        }
    }
    #[inline]
    fn yzy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.z,
                z: self.y,
            }
        }
    }
    #[inline]
    fn yzz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.z,
                z: self.z,
            }
        }
    }
    #[inline]
    fn yzw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.z,
                z: self.w,
            }
        }
    }
    #[inline]
    fn ywx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.w,
                z: self.x,
            }
        }
    }
    #[inline]
    fn ywy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.w,
                z: self.y,
            }
        }
    }
    #[inline]
    fn ywz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.w,
                z: self.z,
            }
        }
    }
    #[inline]
    fn yww(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.y,
                y: self.w,
                z: self.w,
            }
        }
    }
    #[inline]
    fn zxx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.x,
                z: self.x,
            }
        }
    }
    #[inline]
    fn zxy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.x,
                z: self.y,
            }
        }
    }
    #[inline]
    fn zxz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.x,
                z: self.z,
            }
        }
    }
    #[inline]
    fn zxw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.x,
                z: self.w,
            }
        }
    }
    #[inline]
    fn zyx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.y,
                z: self.x,
            }
        }
    }
    #[inline]
    fn zyy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.y,
                z: self.y,
            }
        }
    }
    #[inline]
    fn zyz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.y,
                z: self.z,
            }
        }
    }
    #[inline]
    fn zyw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.y,
                z: self.w,
            }
        }
    }
    #[inline]
    fn zzx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.z,
                z: self.x,
            }
        }
    }
    #[inline]
    fn zzy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.z,
                z: self.y,
            }
        }
    }
    #[inline]
    fn zzz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.z,
                z: self.z,
            }
        }
    }
    #[inline]
    fn zzw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.z,
                z: self.w,
            }
        }
    }
    #[inline]
    fn zwx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.w,
                z: self.x,
            }
        }
    }
    #[inline]
    fn zwy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.w,
                z: self.y,
            }
        }
    }
    #[inline]
    fn zwz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.w,
                z: self.z,
            }
        }
    }
    #[inline]
    fn zww(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.z,
                y: self.w,
                z: self.w,
            }
        }
    }
    #[inline]
    fn wxx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.x,
                z: self.x,
            }
        }
    }
    #[inline]
    fn wxy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_00_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.x,
                z: self.y,
            }
        }
    }
    #[inline]
    fn wxz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_00_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.x,
                z: self.z,
            }
        }
    }
    #[inline]
    fn wxw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_00_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.x,
                z: self.w,
            }
        }
    }
    #[inline]
    fn wyx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.y,
                z: self.x,
            }
        }
    }
    #[inline]
    fn wyy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_01_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.y,
                z: self.y,
            }
        }
    }
    #[inline]
    fn wyz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_01_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.y,
                z: self.z,
            }
        }
    }
    #[inline]
    fn wyw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_01_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.y,
                z: self.w,
            }
        }
    }
    #[inline]
    fn wzx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.z,
                z: self.x,
            }
        }
    }
    #[inline]
    fn wzy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_10_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.z,
                z: self.y,
            }
        }
    }
    #[inline]
    fn wzz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_10_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.z,
                z: self.z,
            }
        }
    }
    #[inline]
    fn wzw(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_10_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.z,
                z: self.w,
            }
        }
    }
    #[inline]
    fn wwx(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.w,
                z: self.x,
            }
        }
    }
    #[inline]
    fn wwy(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_01_11_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.w,
                z: self.y,
            }
        }
    }
    #[inline]
    fn wwz(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_10_11_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.w,
                z: self.z,
            }
        }
    }
    #[inline]
    fn www(self) -> Vec3 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec3::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_11_11_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec3 {
                x: self.w,
                y: self.w,
                z: self.w,
            }
        }
    }
    #[inline]
    fn xx(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.x,
                y: self.x,
            }
        }
    }
    #[inline]
    fn xy(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.x,
                y: self.y,
            }
        }
    }
    #[inline]
    fn xz(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.x,
                y: self.z,
            }
        }
    }
    #[inline]
    fn xw(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_00)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.x,
                y: self.w,
            }
        }
    }
    #[inline]
    fn yx(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.y,
                y: self.x,
            }
        }
    }
    #[inline]
    fn yy(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.y,
                y: self.y,
            }
        }
    }
    #[inline]
    fn yz(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.y,
                y: self.z,
            }
        }
    }
    #[inline]
    fn yw(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_01)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.y,
                y: self.w,
            }
        }
    }
    #[inline]
    fn zx(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.z,
                y: self.x,
            }
        }
    }
    #[inline]
    fn zy(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.z,
                y: self.y,
            }
        }
    }
    #[inline]
    fn zz(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.z,
                y: self.z,
            }
        }
    }
    #[inline]
    fn zw(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_10)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.z,
                y: self.w,
            }
        }
    }
    #[inline]
    fn wx(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_00_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.w,
                y: self.x,
            }
        }
    }
    #[inline]
    fn wy(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_01_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.w,
                y: self.y,
            }
        }
    }
    #[inline]
    fn wz(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_10_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.w,
                y: self.z,
            }
        }
    }
    #[inline]
    fn ww(self) -> Vec2 {
        #[cfg(vec4_sse2)]
        unsafe {
            Vec2::from(Vec4(_mm_shuffle_ps(self.0, self.0, 0b00_00_11_11)))
        }

        #[cfg(vec4_f32)]
        {
            Vec2 {
                x: self.w,
                y: self.w,
            }
        }
    }
}
