about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAntoni Boucher <bouanto@zoho.com>2023-04-05 22:22:42 -0400
committerAntoni Boucher <bouanto@zoho.com>2023-04-07 08:10:34 -0400
commit65a20d3f711e8cb6ea418fb7948a9c4a054d5bc8 (patch)
tree7fe2355c46042850830b6e50b713fdd48951f46f
parentba60936e4860990951d032fd92ff07ade846f3fc (diff)
downloadrust-65a20d3f711e8cb6ea418fb7948a9c4a054d5bc8.tar.gz
rust-65a20d3f711e8cb6ea418fb7948a9c4a054d5bc8.zip
Fix vpshrd llvm instrinsics
-rw-r--r--src/intrinsic/llvm.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/intrinsic/llvm.rs b/src/intrinsic/llvm.rs
index 0edec566be3..f28348380d7 100644
--- a/src/intrinsic/llvm.rs
+++ b/src/intrinsic/llvm.rs
@@ -313,6 +313,13 @@ pub fn adjust_intrinsic_arguments<'a, 'b, 'gcc, 'tcx>(builder: &Builder<'a, 'gcc
                 let new_args = args.to_vec();
                 args = vec![new_args[1], new_args[0], new_args[2], new_args[3], new_args[4]].into();
             },
+            "__builtin_ia32_vpshrdv_v8di" | "__builtin_ia32_vpshrdv_v4di" | "__builtin_ia32_vpshrdv_v2di" |
+                "__builtin_ia32_vpshrdv_v16si" | "__builtin_ia32_vpshrdv_v8si" | "__builtin_ia32_vpshrdv_v4si" |
+                "__builtin_ia32_vpshrdv_v32hi" | "__builtin_ia32_vpshrdv_v16hi" | "__builtin_ia32_vpshrdv_v8hi" => {
+                // The first two arguments are reversed, compared to LLVM.
+                let new_args = args.to_vec();
+                args = vec![new_args[1], new_args[0], new_args[2]].into();
+            },
             _ => (),
         }
     }