Skip to content

Commit 29b79aa

Browse files
committed
Add most AVX intrinsics.
1 parent 67d56db commit 29b79aa

File tree

1 file changed

+32
-0
lines changed
  • src/librustc_platform_intrinsics

1 file changed

+32
-0
lines changed

src/librustc_platform_intrinsics/x86.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,42 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
9393
"testc_si128" => p!("sse41.ptestc", (i64x2, i64x2) -> i32),
9494
"testnzc_si128" => p!("sse41.ptestnzc", (i64x2, i64x2) -> i32),
9595
"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+
96106
_ => return None
97107
})
98108
} else if name.starts_with("mm256_") {
99109
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),
100132
_ => return None,
101133
})
102134
} else {

0 commit comments

Comments
 (0)