@@ -93,10 +93,42 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
93
93
"testc_si128" => p ! ( "sse41.ptestc" , ( i64x2, i64x2) -> i32 ) ,
94
94
"testnzc_si128" => p ! ( "sse41.ptestnzc" , ( i64x2, i64x2) -> i32 ) ,
95
95
"testz_si128" => p ! ( "sse41.ptestz" , ( i64x2, i64x2) -> i32 ) ,
96
+
97
+ "permutevar_pd" => p ! ( "avx.vpermilvar.pd" , ( f64x2, i64x2) -> f64x2) ,
98
+ "permutevar_ps" => p ! ( "avx.vpermilvar.ps" , ( f32x4, i32x4) -> f32x4) ,
99
+ "testc_pd" => p ! ( "avx.vtestc.pd" , ( f64x2, f64x2) -> i32 ) ,
100
+ "testc_ps" => p ! ( "avx.vtestc.ps" , ( f32x4, f32x4) -> i32 ) ,
101
+ "testnzc_pd" => p ! ( "avx.vtestnzc.pd" , ( f64x2, f64x2) -> i32 ) ,
102
+ "testnzc_ps" => p ! ( "avx.vtestnzc.ps" , ( f32x4, f32x4) -> i32 ) ,
103
+ "testz_pd" => p ! ( "avx.vtestz.pd" , ( f64x2, f64x2) -> i32 ) ,
104
+ "testz_ps" => p ! ( "avx.vtestz.ps" , ( f32x4, f32x4) -> i32 ) ,
105
+
96
106
_ => return None
97
107
} )
98
108
} else if name. starts_with ( "mm256_" ) {
99
109
Some ( match & name[ "mm256_" . len ( ) ..] {
110
+ "addsub_pd" => p ! ( "avx.addsub.pd.256" , ( f64x4, f64x4) -> f64x4) ,
111
+ "addsub_ps" => p ! ( "avx.addsub.ps.256" , ( f32x8, f32x8) -> f32x8) ,
112
+ "hadd_pd" => p ! ( "avx.hadd.pd.256" , ( f64x4, f64x4) -> f64x4) ,
113
+ "hadd_ps" => p ! ( "avx.hadd.ps.256" , ( f32x8, f32x8) -> f32x8) ,
114
+ "hsub_pd" => p ! ( "avx.hsub.pd.256" , ( f64x4, f64x4) -> f64x4) ,
115
+ "hsub_ps" => p ! ( "avx.hsub.ps.256" , ( f32x8, f32x8) -> f32x8) ,
116
+ "max_pd" => p ! ( "avx.max.pd.256" , ( f64x4, f64x4) -> f64x4) ,
117
+ "max_ps" => p ! ( "avx.max.ps.256" , ( f32x8, f32x8) -> f32x8) ,
118
+ "min_pd" => p ! ( "avx.min.pd.256" , ( f64x4, f64x4) -> f64x4) ,
119
+ "min_ps" => p ! ( "avx.min.ps.256" , ( f32x8, f32x8) -> f32x8) ,
120
+ "permutevar_pd" => p ! ( "avx.vpermilvar.pd.256" , ( f64x4, i64x4) -> f64x4) ,
121
+ "permutevar_ps" => p ! ( "avx.vpermilvar.ps.256" , ( f32x8, i32x8) -> f32x8) ,
122
+ "rcp_ps" => p ! ( "avx.rcp.ps.256" , ( f32x8) -> f32x8) ,
123
+ "rsqrt_ps" => p ! ( "avx.rsqrt.ps.256" , ( f32x8) -> f32x8) ,
124
+ "sqrt_pd" => p ! ( "llvm.sqrt.v4f64" , ( f64x4) -> f64x4) ,
125
+ "sqrt_ps" => p ! ( "llvm.sqrt.v8f32" , ( f32x8) -> f32x8) ,
126
+ "testc_pd" => p ! ( "avx.vtestc.pd.256" , ( f64x4, f64x4) -> i32 ) ,
127
+ "testc_ps" => p ! ( "avx.vtestc.ps.256" , ( f32x8, f32x8) -> i32 ) ,
128
+ "testnzc_pd" => p ! ( "avx.vtestnzc.pd.256" , ( f64x4, f64x4) -> i32 ) ,
129
+ "testnzc_ps" => p ! ( "avx.vtestnzc.ps.256" , ( f32x8, f32x8) -> i32 ) ,
130
+ "testz_pd" => p ! ( "avx.vtestz.pd.256" , ( f64x4, f64x4) -> i32 ) ,
131
+ "testz_ps" => p ! ( "avx.vtestz.ps.256" , ( f32x8, f32x8) -> i32 ) ,
100
132
_ => return None ,
101
133
} )
102
134
} else {
0 commit comments