| { |
| "intrinsic_prefix": "_mm", |
| "llvm_prefix": "llvm.x86.sse41.", |
| "intrinsics": [ |
| { |
| "intrinsic": "_dp_{0.data_type}", |
| "width": [128], |
| "llvm": "dp{0.data_type}", |
| "ret": "f(32-64)", |
| "args": ["0", "0", "S32/8"] |
| }, |
| { |
| "intrinsic": "_max_{0.data_type}", |
| "width": [128], |
| "llvm": "pmax{0.kind}{0.data_type_short}", |
| "ret": ["s8", "u16", "i32"], |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "_min_{0.data_type}", |
| "width": [128], |
| "llvm": "pmin{0.kind}{0.data_type_short}", |
| "ret": ["s8", "u16", "i32"], |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "_minpos_epu16", |
| "width": [128], |
| "llvm": "phminposuw", |
| "ret": "u16", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "_mpsadbw_epu8", |
| "width": [128], |
| "llvm": "mpsadbw", |
| "ret": "u16", |
| "args": ["u8", "u8", "S32/8"] |
| }, |
| { |
| "intrinsic": "_mul_epi32", |
| "width": [128], |
| "llvm": "pmuldq", |
| "ret": "s64", |
| "args": ["s32", "s32"] |
| }, |
| { |
| "intrinsic": "_packus_epi32", |
| "width": [128], |
| "llvm": "packusdw", |
| "ret": "u16", |
| "args": ["s32", "s32"] |
| }, |
| { |
| "intrinsic": "_testc_si128", |
| "width": [128], |
| "llvm": "ptestc", |
| "ret": "S32", |
| "args": ["u64", "u64"] |
| }, |
| { |
| "intrinsic": "_testnzc_si128", |
| "width": [128], |
| "llvm": "ptestnzc", |
| "ret": "S32", |
| "args": ["u64", "u64"] |
| }, |
| { |
| "intrinsic": "_testz_si128", |
| "width": [128], |
| "llvm": "ptestz", |
| "ret": "S32", |
| "args": ["u64", "u64"] |
| } |
| ] |
| } |