| { |
| "intrinsic_prefix": "_mm", |
| "llvm_prefix": "llvm.x86.avx2.", |
| "intrinsics": [ |
| { |
| "intrinsic": "256_abs_{0.data_type}", |
| "width": [256], |
| "llvm": "pabs.{0.data_type_short}", |
| "ret": "s(8-32)", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "256_adds_{0.data_type}", |
| "width": [256], |
| "llvm": "padd{0.kind_short}s.{0.data_type_short}", |
| "ret": "i(8-16)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_avg_{0.data_type}", |
| "width": [256], |
| "llvm": "pavg.{0.data_type_short}", |
| "ret": "u(8-16)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_hadd_{0.data_type}", |
| "width": [256], |
| "llvm": "phadd.{0.data_type_short}", |
| "ret": "s(16-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_hadds_epi16", |
| "width": [256], |
| "llvm": "phadd.sw", |
| "ret": "s16", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_hsub_{0.data_type}", |
| "width": [256], |
| "llvm": "phsub.{0.data_type_short}", |
| "ret": "s(16-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_hsubs_epi16", |
| "width": [256], |
| "llvm": "phsub.sw", |
| "ret": "s16", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_madd_epi16", |
| "width": [256], |
| "llvm": "pmadd.wd", |
| "ret": "s32", |
| "args": ["s16", "s16"] |
| }, |
| { |
| "intrinsic": "256_maddubs_epi16", |
| "width": [256], |
| "llvm": "pmadd.ub.sw", |
| "ret": "s16", |
| "args": ["s8", "s8"] |
| }, |
| { |
| "intrinsic": "{0.width_mm}_mask_i32gather_{0.data_type}", |
| "width": [128, 256], |
| "llvm": "gather.d.{0.data_type_short}{0.width_suffix}", |
| "ret": ["s32", "f32"], |
| "args": ["0", "0SPc/S8", "s32", "0s->0", "S32/8"] |
| }, |
| { |
| "intrinsic": "{0.width_mm}_mask_i32gather_{0.data_type}", |
| "width": [128, 256], |
| "llvm": "gather.d.{0.data_type_short}{0.width_suffix}", |
| "ret": ["s64", "f64"], |
| "args": ["0", "0SPc/S8", "s32x128", "0s->0", "S32/8"] |
| }, |
| { |
| "intrinsic": "{3.width_mm}_mask_i64gather_{0.data_type}", |
| "width": [128, 256], |
| "llvm": "gather.q.{0.data_type_short}{0.width_suffix}", |
| "ret": ["s32x128", "f32x128"], |
| "args": ["0", "0SPc/S8", "s64", "0s->0", "S32/8"] |
| }, |
| { |
| "intrinsic": "{0.width_mm}_mask_i64gather_{0.data_type}", |
| "width": [128, 256], |
| "llvm": "gather.q.{0.data_type_short}{0.width_suffix}", |
| "ret": ["s64", "f64"], |
| "args": ["0", "0SPc/S8", "s64", "0s->0", "S32/8"] |
| }, |
| { |
| "intrinsic": "{0.width_mm}_maskload_{0.data_type}", |
| "width": [128, 256], |
| "llvm": "maskload.{0.data_type_short}{0.width_suffix}", |
| "ret": ["s(32-64)"], |
| "args": ["0Pc/S8", "0"] |
| }, |
| { |
| "intrinsic": "{2.width_mm}_maskstore_{2.data_type}", |
| "width": [128, 256], |
| "llvm": "maskstore.{2.data_type_short}{2.width_suffix}", |
| "ret": "V", |
| "args": ["S(32-64)Pm/S8", "1Dv", "2"] |
| }, |
| { |
| "intrinsic": "256_max_{0.data_type}", |
| "width": [256], |
| "llvm": "pmax{0.kind}.{0.data_type_short}", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_min_{0.data_type}", |
| "width": [256], |
| "llvm": "pmin{0.kind}.{0.data_type_short}", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_movemask_epi8", |
| "width": [256], |
| "llvm": "pmovmskb", |
| "ret": "S32", |
| "args": ["s8"] |
| }, |
| { |
| "intrinsic": "256_mpsadbw_epu8", |
| "width": [256], |
| "llvm": "mpsadbw", |
| "ret": "u16", |
| "args": ["u8", "u8", "S32/8"] |
| }, |
| { |
| "intrinsic": "256_mul_{0.data_type}", |
| "width": [256], |
| "llvm": "pmul{0.data_type_short}.dq", |
| "ret": "i64", |
| "args": ["0dn", "0dn"] |
| }, |
| { |
| "intrinsic": "256_mulhi_{0.data_type}", |
| "width": [256], |
| "llvm": "pmulh{0.data_type_short}.w", |
| "ret": "i16", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_mulhrs_epi16", |
| "width": [256], |
| "llvm": "pmul.hr.sw", |
| "ret": "s16", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_pack{0.kind_short}s_{1.data_type}", |
| "width": [256], |
| "llvm": "pack{0.kind}s{1.data_type_short}{0.data_type_short}", |
| "ret": "i(8-16)", |
| "args": ["0hws", "0hws"] |
| }, |
| { |
| "intrinsic": "256_permutevar8x32_{0.data_type}", |
| "width": [256], |
| "llvm": "perm{0.data_type_short}", |
| "ret": ["s32", "f32"], |
| "args": ["0", "0s"] |
| }, |
| { |
| "intrinsic": "256_sad_epu8", |
| "width": [256], |
| "llvm": "psad.bw", |
| "ret": "u64", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_shuffle_epi8", |
| "width": [256], |
| "llvm": "pshuf.b", |
| "ret": "s8", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_sign_{0.data_type}", |
| "width": [256], |
| "llvm": "psign.{0.data_type_short}", |
| "ret": "s(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "256_subs_{0.data_type}", |
| "width": [256], |
| "llvm": "psub{0.kind_short}s.{0.data_type_short}", |
| "ret": "i(8-16)", |
| "args": ["0", "0"] |
| } |
| ] |
| } |