Autogenerate most x86 platform intrinsics.
This commit is contained in:
parent
5a167bdb4c
commit
24416a2151
10 changed files with 1593 additions and 174 deletions
152
src/etc/platform-intrinsics/x86/avx.json
Normal file
152
src/etc/platform-intrinsics/x86/avx.json
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.avx.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "256_addsub_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "addsub.{0.data_type}.256",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_dp_ps",
|
||||
"width": [256],
|
||||
"llvm": "dp.ps.256",
|
||||
"ret": "f32",
|
||||
"args": ["0", "0", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_hadd_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "hadd.{0.data_type}.256",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_hsub_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "hsub.{0.data_type}.256",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_max_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "max.{0.data_type}.256",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_min_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "min.{0.data_type}.256",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_movemask_ps",
|
||||
"width": [256],
|
||||
"llvm": "movmsk.ps.256",
|
||||
"ret": "S32",
|
||||
"args": ["f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_movemask_pd",
|
||||
"width": [256],
|
||||
"llvm": "movmsk.pd.256",
|
||||
"ret": "S32",
|
||||
"args": ["f64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{0.width_mm}_permutevar_{0.data_type}",
|
||||
"width": [128, 256],
|
||||
"llvm": "vpermilvar.{0.data_type}{0.width_suffix}",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0s"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_rcp_ps",
|
||||
"width": [256],
|
||||
"llvm": "rcp.ps.256",
|
||||
"ret": "f32",
|
||||
"args": ["f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_rsqrt_ps",
|
||||
"width": [256],
|
||||
"llvm": "rsqrt.ps.256",
|
||||
"ret": "f32",
|
||||
"args": ["f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_sqrt_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "!llvm.sqrt.{0.llvm_name}",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testc_ps",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestc.ps{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f32", "f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testc_pd",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestc.pd{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f64", "f64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_testc_si256",
|
||||
"width": [256],
|
||||
"llvm": "ptestc.256",
|
||||
"ret": "S32",
|
||||
"args": ["u64", "u64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testnzc_ps",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestnzc.ps{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f32", "f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testnzc_pd",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestnzc.pd{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f64", "f64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_testnzc_si256",
|
||||
"width": [256],
|
||||
"llvm": "ptestnzc.256",
|
||||
"ret": "S32",
|
||||
"args": ["u64", "u64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testz_ps",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestz.ps{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f32", "f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "{1.width_mm}_testz_pd",
|
||||
"width": [128, 256],
|
||||
"llvm": "vtestz.pd{1.width_suffix}",
|
||||
"ret": "S32",
|
||||
"args": ["f64", "f64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_testz_si256",
|
||||
"width": [256],
|
||||
"llvm": "ptestz.256",
|
||||
"ret": "S32",
|
||||
"args": ["u64", "u64"]
|
||||
}
|
||||
]
|
||||
}
|
||||
145
src/etc/platform-intrinsics/x86/avx2.json
Normal file
145
src/etc/platform-intrinsics/x86/avx2.json
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.avx2.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "256_abs_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "avx2.pabs.{0.data_type_short}",
|
||||
"ret": "s(8-32)",
|
||||
"args": ["0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "256_adds_{0.data_type}",
|
||||
"width": [256],
|
||||
"llvm": "avx2.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": "avx2.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": "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_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": "u8",
|
||||
"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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
28
src/etc/platform-intrinsics/x86/info.json
Normal file
28
src/etc/platform-intrinsics/x86/info.json
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"platform": "x86",
|
||||
"intrinsic_prefix": "x86_mm",
|
||||
"number_info": {
|
||||
"signed": {
|
||||
"kind": "s",
|
||||
"kind_short": "",
|
||||
"data_type": { "pattern": "epi{bitwidth}" },
|
||||
"data_type_short": { "8": "b", "16": "w", "32": "d", "64": "q" }
|
||||
},
|
||||
"unsigned": {
|
||||
"kind": "u",
|
||||
"kind_short": "u",
|
||||
"data_type": { "pattern": "epu{bitwidth}" },
|
||||
"data_type_short": { "8": "b", "16": "w", "32": "d", "64": "q" }
|
||||
},
|
||||
"float": {
|
||||
"kind": "f",
|
||||
"data_type": { "32": "ps", "64": "pd" },
|
||||
"data_type_short": { "32": "ps", "64": "pd" }
|
||||
}
|
||||
},
|
||||
"width_info": {
|
||||
"128": { "width_mm": "", "width_suffix": "" },
|
||||
"256": { "width_mm": "256", "width_suffix": ".256" },
|
||||
"512": { "width_mm": "512", "width_suffix": ".512" }
|
||||
}
|
||||
}
|
||||
40
src/etc/platform-intrinsics/x86/sse.json
Normal file
40
src/etc/platform-intrinsics/x86/sse.json
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.sse.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "_movemask_ps",
|
||||
"width": [128],
|
||||
"llvm": "movmsk.ps",
|
||||
"ret": "S32",
|
||||
"args": ["f32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_max_ps",
|
||||
"width": [128],
|
||||
"llvm": "max.ps",
|
||||
"ret": "f32",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_min_ps",
|
||||
"width": [128],
|
||||
"llvm": "min.ps",
|
||||
"ret": "f32",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_rsqrt_ps",
|
||||
"width": [128],
|
||||
"llvm": "rsqrt.ps",
|
||||
"ret": "f32",
|
||||
"args": ["0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_rcp_ps",
|
||||
"width": [128],
|
||||
"llvm": "rcp.ps",
|
||||
"ret": "f32",
|
||||
"args": ["0"]
|
||||
}
|
||||
]
|
||||
}
|
||||
110
src/etc/platform-intrinsics/x86/sse2.json
Normal file
110
src/etc/platform-intrinsics/x86/sse2.json
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.sse2.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "_adds_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "padd{0.kind_short}s.{0.data_type_short}",
|
||||
"ret": "i(8-16)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_avg_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "pavg.{0.data_type_short}",
|
||||
"ret": "u(8-16)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_madd_epi16",
|
||||
"width": [128],
|
||||
"llvm": "pmadd.wd",
|
||||
"ret": "s16",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_max_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "pmax{0.kind}.{0.data_type_short}",
|
||||
"ret": ["s16", "u8"],
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_max_pd",
|
||||
"width": [128],
|
||||
"llvm": "max.pd",
|
||||
"ret": "f64",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_min_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "pmin{0.kind}.{0.data_type_short}",
|
||||
"ret": ["s16", "u8"],
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_min_pd",
|
||||
"width": [128],
|
||||
"llvm": "min.pd",
|
||||
"ret": "f64",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_movemask_pd",
|
||||
"width": [128],
|
||||
"llvm": "movmsk.pd",
|
||||
"ret": "S32",
|
||||
"args": ["f64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_movemask_epi8",
|
||||
"width": [128],
|
||||
"llvm": "pmovmskb.128",
|
||||
"ret": "S32",
|
||||
"args": ["s8"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_mul_epu32",
|
||||
"width": [128],
|
||||
"llvm": "pmulu.dq",
|
||||
"ret": "s64",
|
||||
"args": ["0dn", "0dn"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_mulhi_ep{0.kind}16",
|
||||
"width": [128],
|
||||
"llvm": "pmulh{0.kind_short}.w",
|
||||
"ret": "i16",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_packs_{1.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "packss{1.data_type_short}{0.data_type_short}.128",
|
||||
"ret": "s(8-16)",
|
||||
"args": ["0hw", "0hw"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_packus_epi16",
|
||||
"width": [128],
|
||||
"llvm": "packuswb.128",
|
||||
"ret": "u8",
|
||||
"args": ["s16", "s16"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_sad_epu8",
|
||||
"width": [128],
|
||||
"llvm": "psad.bw",
|
||||
"ret": "u64",
|
||||
"args": ["u8", "u8"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_subs_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "psub{0.kind_short}s.{0.data_type_short}",
|
||||
"ret": "i(8-16)",
|
||||
"args": ["0", "0"]
|
||||
}
|
||||
]
|
||||
}
|
||||
26
src/etc/platform-intrinsics/x86/sse3.json
Normal file
26
src/etc/platform-intrinsics/x86/sse3.json
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.sse3.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "_addsub_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "addsub.{0.data_type}",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hadd_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "hadd.{0.data_type}",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hsub_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "hsub.{0.data_type}",
|
||||
"ret": "f(32-64)",
|
||||
"args": ["0", "0"]
|
||||
}
|
||||
]
|
||||
}
|
||||
75
src/etc/platform-intrinsics/x86/sse41.json
Normal file
75
src/etc/platform-intrinsics/x86/sse41.json
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"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"]
|
||||
},
|
||||
{
|
||||
"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"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_mul_epi32",
|
||||
"width": [128],
|
||||
"llvm": "muldq",
|
||||
"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": "_testncz_si128",
|
||||
"width": [128],
|
||||
"llvm": "ptest.nzc",
|
||||
"ret": "S32",
|
||||
"args": ["u64", "u64"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_testz_si128",
|
||||
"width": [128],
|
||||
"llvm": "ptestz",
|
||||
"ret": "S32",
|
||||
"args": ["u64", "u64"]
|
||||
}
|
||||
]
|
||||
}
|
||||
103
src/etc/platform-intrinsics/x86/sse42.json
Normal file
103
src/etc/platform-intrinsics/x86/sse42.json
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.sse42.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "_cmpestra",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestria128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestrc",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestric128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestri",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestri128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestrm",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestrim128",
|
||||
"ret": "s8",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestro",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestrio128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestrs",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestris128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpestrz",
|
||||
"width": [128],
|
||||
"llvm": "pcmpestriz128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistra",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistria128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistrc",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistric128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistri",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistrii128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistrm",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistrim128",
|
||||
"ret": "s8",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistro",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistrio128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistrs",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistris128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_cmpistrz",
|
||||
"width": [128],
|
||||
"llvm": "pcmpistriz128",
|
||||
"ret": "S32",
|
||||
"args": ["s8", "S32", "s8", "S32", "S32"]
|
||||
}
|
||||
]
|
||||
}
|
||||
68
src/etc/platform-intrinsics/x86/ssse3.json
Normal file
68
src/etc/platform-intrinsics/x86/ssse3.json
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"llvm_prefix": "llvm.x86.ssse3.",
|
||||
"intrinsics": [
|
||||
{
|
||||
"intrinsic": "_abs_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "pabs.{0.data_type_short}",
|
||||
"ret": "s(8-32)",
|
||||
"args": ["0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hadd_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "phadd.{0.data_type_short}.128",
|
||||
"ret": "s(16-32)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hadds_epi16",
|
||||
"width": [128],
|
||||
"llvm": "phadd.sw.128",
|
||||
"ret": "s16",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hsub_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "phsub.{0.data_type_short}.128",
|
||||
"ret": "s(16-32)",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_hsubs_epi16",
|
||||
"width": [128],
|
||||
"llvm": "phsub.sw.128",
|
||||
"ret": "s16",
|
||||
"args": ["0", "0"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_maddubs_epi16",
|
||||
"width": [128],
|
||||
"llvm": "pmadd.ub.sw.128",
|
||||
"ret": "s16",
|
||||
"args": ["s8", "s8"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_mulhrs_epi16",
|
||||
"width": [128],
|
||||
"llvm": "pmul.hr.sw.128",
|
||||
"ret": "s16",
|
||||
"args": ["s16", "s16"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_shuffle_epi8",
|
||||
"width": [128],
|
||||
"llvm": "pshuf.b.128",
|
||||
"ret": "s8",
|
||||
"args": ["s8", "s8"]
|
||||
},
|
||||
{
|
||||
"intrinsic": "_sign_{0.data_type}",
|
||||
"width": [128],
|
||||
"llvm": "psign.{0.data_type_short}.128",
|
||||
"ret": "s(8-16)",
|
||||
"args": ["0", "0"]
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue