File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed
Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -1313,6 +1313,35 @@ pub(super) fn codegen_x86_llvm_intrinsic_call<'tcx>(
13131313 ret. write_cvalue_transmute ( fx, res) ;
13141314 }
13151315
1316+ "llvm.x86.vcvtps2ph.128" => {
1317+ // https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_ph
1318+ intrinsic_args ! ( fx, args => ( a, _imm8) ; intrinsic) ;
1319+ let a = a. load_scalar ( fx) ;
1320+
1321+ let imm8 =
1322+ if let Some ( imm8) = crate :: constant:: mir_operand_get_const_val ( fx, & args[ 1 ] . node ) {
1323+ imm8
1324+ } else {
1325+ fx. tcx
1326+ . dcx ( )
1327+ . span_fatal ( span, "Index argument for `_mm_cvtps_ph` is not a constant" ) ;
1328+ } ;
1329+
1330+ let imm8 = imm8. to_u32 ( ) ;
1331+
1332+ codegen_inline_asm_inner (
1333+ fx,
1334+ & [ InlineAsmTemplatePiece :: String ( format ! ( "vcvtps2ph xmm0, xmm0, {imm8}" ) . into ( ) ) ] ,
1335+ & [ CInlineAsmOperand :: InOut {
1336+ reg : InlineAsmRegOrRegClass :: Reg ( InlineAsmReg :: X86 ( X86InlineAsmReg :: xmm0) ) ,
1337+ _late : true ,
1338+ in_value : a,
1339+ out_place : Some ( ret)
1340+ } ] ,
1341+ InlineAsmOptions :: NOSTACK | InlineAsmOptions :: PURE | InlineAsmOptions :: NOMEM ,
1342+ ) ;
1343+ }
1344+
13161345 _ => {
13171346 fx. tcx
13181347 . dcx ( )
You can’t perform that action at this time.
0 commit comments