require '_h2ph_pre.ph';

unless(defined(&_XMMINTRIN_H_INCLUDED)) {
    eval 'sub _XMMINTRIN_H_INCLUDED () {1;}' unless defined(&_XMMINTRIN_H_INCLUDED);
    require 'mmintrin.ph';
    eval 'sub _MM_SHUFFLE {
        local($fp3,$fp2,$fp1,$fp0) = @_;
	    eval q(((($fp3) << 6) | (($fp2) << 4) | (($fp1) << 2) | ($fp0)));
    }' unless defined(&_MM_SHUFFLE);
    eval("sub _MM_HINT_T0 () { 3; }") unless defined(&_MM_HINT_T0);
    eval("sub _MM_HINT_T1 () { 2; }") unless defined(&_MM_HINT_T1);
    eval("sub _MM_HINT_T2 () { 1; }") unless defined(&_MM_HINT_T2);
    eval("sub _MM_HINT_NTA () { 0; }") unless defined(&_MM_HINT_NTA);
    eval 'sub _MM_EXCEPT_MASK () {0x3f;}' unless defined(&_MM_EXCEPT_MASK);
    eval 'sub _MM_EXCEPT_INVALID () {0x1;}' unless defined(&_MM_EXCEPT_INVALID);
    eval 'sub _MM_EXCEPT_DENORM () {0x2;}' unless defined(&_MM_EXCEPT_DENORM);
    eval 'sub _MM_EXCEPT_DIV_ZERO () {0x4;}' unless defined(&_MM_EXCEPT_DIV_ZERO);
    eval 'sub _MM_EXCEPT_OVERFLOW () {0x8;}' unless defined(&_MM_EXCEPT_OVERFLOW);
    eval 'sub _MM_EXCEPT_UNDERFLOW () {0x10;}' unless defined(&_MM_EXCEPT_UNDERFLOW);
    eval 'sub _MM_EXCEPT_INEXACT () {0x20;}' unless defined(&_MM_EXCEPT_INEXACT);
    eval 'sub _MM_MASK_MASK () {0x1f80;}' unless defined(&_MM_MASK_MASK);
    eval 'sub _MM_MASK_INVALID () {0x80;}' unless defined(&_MM_MASK_INVALID);
    eval 'sub _MM_MASK_DENORM () {0x100;}' unless defined(&_MM_MASK_DENORM);
    eval 'sub _MM_MASK_DIV_ZERO () {0x200;}' unless defined(&_MM_MASK_DIV_ZERO);
    eval 'sub _MM_MASK_OVERFLOW () {0x400;}' unless defined(&_MM_MASK_OVERFLOW);
    eval 'sub _MM_MASK_UNDERFLOW () {0x800;}' unless defined(&_MM_MASK_UNDERFLOW);
    eval 'sub _MM_MASK_INEXACT () {0x1000;}' unless defined(&_MM_MASK_INEXACT);
    eval 'sub _MM_ROUND_MASK () {0x6000;}' unless defined(&_MM_ROUND_MASK);
    eval 'sub _MM_ROUND_NEAREST () {0x;}' unless defined(&_MM_ROUND_NEAREST);
    eval 'sub _MM_ROUND_DOWN () {0x2000;}' unless defined(&_MM_ROUND_DOWN);
    eval 'sub _MM_ROUND_UP () {0x4000;}' unless defined(&_MM_ROUND_UP);
    eval 'sub _MM_ROUND_TOWARD_ZERO () {0x6000;}' unless defined(&_MM_ROUND_TOWARD_ZERO);
    eval 'sub _MM_FLUSH_ZERO_MASK () {0x8000;}' unless defined(&_MM_FLUSH_ZERO_MASK);
    eval 'sub _MM_FLUSH_ZERO_ON () {0x8000;}' unless defined(&_MM_FLUSH_ZERO_ON);
    eval 'sub _MM_FLUSH_ZERO_OFF () {0x;}' unless defined(&_MM_FLUSH_ZERO_OFF);
    if(0) {
    } else {
	eval 'sub _mm_shuffle_ps {
	    local($A, $B, $MASK) = @_;
    	    eval q((  &__builtin_ia32_shufps (, ($B), ($MASK))));
	}' unless defined(&_mm_shuffle_ps);
    }
    if(0) {
    } else {
	eval 'sub _mm_extract_pi16 {
	    local($A, $N) = @_;
    	    eval q( &__builtin_ia32_pextrw (($A), ($N)));
	}' unless defined(&_mm_extract_pi16);
    }
    if(0) {
    } else {
	eval 'sub _mm_insert_pi16 {
	    local($A, $D, $N) = @_;
    	    eval q((  &__builtin_ia32_pinsrw (($A), ($D), ($N))));
	}' unless defined(&_mm_insert_pi16);
    }
    if(0) {
    } else {
	eval 'sub _mm_shuffle_pi16 {
	    local($A, $N) = @_;
    	    eval q((  &__builtin_ia32_pshufw (($A), ($N))));
	}' unless defined(&_mm_shuffle_pi16);
    }
    if(0) {
    } else {
	eval 'sub _mm_prefetch {
	    local($P, $I) = @_;
    	    eval q( &__builtin_prefetch (($P), 0, ($I)));
	}' unless defined(&_mm_prefetch);
    }
    eval 'sub _MM_TRANSPOSE4_PS {
        local($row0, $row1, $row2, $row3) = @_;
	    eval q( &do {  &__v4sf  &__r0 = ($row0),  &__r1 = ($row1),  &__r2 = ($row2),  &__r3 = ($row3);  &__v4sf  &__t0 =  &__builtin_ia32_shufps ( &__r0,  &__r1, 0x44);  &__v4sf  &__t2 =  &__builtin_ia32_shufps ( &__r0,  &__r1, 0xee);  &__v4sf  &__t1 =  &__builtin_ia32_shufps ( &__r2,  &__r3, 0x44);  &__v4sf  &__t3 =  &__builtin_ia32_shufps ( &__r2,  &__r3, 0xee); ($row0) =  &__builtin_ia32_shufps ( &__t0,  &__t1, 0x88); ($row1) =  &__builtin_ia32_shufps ( &__t0,  &__t1, 0xdd); ($row2) =  &__builtin_ia32_shufps ( &__t2,  &__t3, 0x88); ($row3) =  &__builtin_ia32_shufps ( &__t2,  &__t3, 0xdd); }  &while (0));
    }' unless defined(&_MM_TRANSPOSE4_PS);
}
1;
