| { |
| "platform": "powerpc", |
| "intrinsic_prefix": "_vec_", |
| "llvm_prefix": "llvm.ppc.altivec.", |
| "number_info": { |
| "unsigned": { |
| "kind" : "u", |
| "data_type_short": { "8": "b", "16": "h", "32": "w", "64": "d" } |
| }, |
| "signed": { |
| "kind" : "s", |
| "data_type_short": { "8": "b", "16": "h", "32": "w", "64": "d" } |
| }, |
| "float": {} |
| }, |
| "width_info": { |
| "128": { "width": "" } |
| }, |
| "intrinsics": [ |
| { |
| "intrinsic": "perm", |
| "width": [128], |
| "llvm": "vperm", |
| "ret": "s32", |
| "args": ["0", "0", "s8"] |
| }, |
| { |
| "intrinsic": "mradds", |
| "width": [128], |
| "llvm": "vmhraddshs", |
| "ret": "s16", |
| "args": ["0", "0", "0"] |
| }, |
| { |
| "intrinsic": "cmpb", |
| "width": [128], |
| "llvm": "vcmpbfp", |
| "ret": "s32", |
| "args": ["f32", "f32"] |
| }, |
| { |
| "intrinsic": "cmpeq{0.data_type_short}", |
| "width": [128], |
| "llvm": "vcmpequ{0.data_type_short}", |
| "ret": "s(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "cmpgt{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vcmpgt{1.kind}{1.data_type_short}", |
| "ret": "s(8-32)", |
| "args": ["0u", "1"] |
| }, |
| { |
| "intrinsic": "cmpgt{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vcmpgt{1.kind}{1.data_type_short}", |
| "ret": "s(8-32)", |
| "args": ["0", "1"] |
| }, |
| { |
| "intrinsic": "max{0.kind}{0.data_type_short}", |
| "width": [128], |
| "llvm": "vmax{0.kind}{0.data_type_short}", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "min{0.kind}{0.data_type_short}", |
| "width": [128], |
| "llvm": "vmin{0.kind}{0.data_type_short}", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "sub{0.kind}{0.data_type_short}s", |
| "width": [128], |
| "llvm": "vsub{0.kind}{0.data_type_short}s", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "subc", |
| "width": [128], |
| "llvm": "vsubcuw", |
| "ret": "u32", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "add{0.kind}{0.data_type_short}s", |
| "width": [128], |
| "llvm": "vadd{0.kind}{0.data_type_short}s", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "addc", |
| "width": [128], |
| "llvm": "vaddcuw", |
| "ret": "u32", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "mule{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vmule{0.kind}{1.data_type_short}", |
| "ret": "i(16-32)", |
| "args": ["0N", "1"] |
| }, |
| { |
| "intrinsic": "mulo{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vmulo{0.kind}{1.data_type_short}", |
| "ret": "i(16-32)", |
| "args": ["0N", "1"] |
| }, |
| { |
| "intrinsic": "avg{0.kind}{0.data_type_short}", |
| "width": [128], |
| "llvm": "vavg{0.kind}{0.data_type_short}", |
| "ret": "i(8-32)", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "packs{0.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vpk{0.kind}{1.data_type_short}{0.kind}s", |
| "ret": "i(8-16)", |
| "args": ["0W", "1"] |
| }, |
| { |
| "intrinsic": "packsu{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vpk{1.kind}{1.data_type_short}{0.kind}s", |
| "ret": "u(8-16)", |
| "args": ["0Ws", "1"] |
| }, |
| { |
| "intrinsic": "packpx", |
| "width": [128], |
| "llvm": "vpkpx", |
| "ret": "s16", |
| "args": ["s32", "s32"] |
| }, |
| { |
| "intrinsic": "unpackl{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vupkl{1.kind}{1.data_type_short}", |
| "ret": "s(16-32)", |
| "args": ["0N"] |
| }, |
| { |
| "intrinsic": "unpackh{1.kind}{1.data_type_short}", |
| "width": [128], |
| "llvm": "vupkh{1.kind}{1.data_type_short}", |
| "ret": "s(16-32)", |
| "args": ["0N"] |
| }, |
| { |
| "intrinsic": "madds", |
| "width": [128], |
| "llvm": "vmhaddshs", |
| "ret": "s16", |
| "args": ["0", "0", "0"] |
| }, |
| { |
| "intrinsic": "msumu{1.data_type_short}m", |
| "width": [128], |
| "llvm": "vmsumu{1.data_type_short}m", |
| "ret": "u32", |
| "args": ["u(8-16)", "1", "u32"] |
| }, |
| { |
| "intrinsic": "msummbm", |
| "width": [128], |
| "llvm": "vmsummbm", |
| "ret": "s32", |
| "args": ["s8", "u8", "s32"] |
| }, |
| { |
| "intrinsic": "msumshm", |
| "width": [128], |
| "llvm": "vmsumshm", |
| "ret": "s32", |
| "args": ["s16", "s16", "s32"] |
| }, |
| { |
| "intrinsic": "msum{0.kind}hs", |
| "width": [128], |
| "llvm": "vmsum{0.kind}hs", |
| "ret": "i32", |
| "args": ["0N", "0N", "0"] |
| }, |
| { |
| "intrinsic": "sum2s", |
| "width": [128], |
| "llvm": "vsum2sws", |
| "ret": "s32", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "sum4{0.kind}bs", |
| "width": [128], |
| "llvm": "vsum4{0.kind}bs", |
| "ret": "i32", |
| "args": ["0NN", "0"] |
| }, |
| { |
| "intrinsic": "sum4shs", |
| "width": [128], |
| "llvm": "vsum4shs", |
| "ret": "s32", |
| "args": ["0N", "0"] |
| }, |
| { |
| "intrinsic": "sums", |
| "width": [128], |
| "llvm": "vsumsws", |
| "ret": "s32", |
| "args": ["0", "0"] |
| }, |
| { |
| "intrinsic": "madd", |
| "width": [128], |
| "llvm": "vmaddfp", |
| "ret": "f32", |
| "args": ["0", "0", "0"] |
| }, |
| { |
| "intrinsic": "nmsub", |
| "width": [128], |
| "llvm": "vnmsubfp", |
| "ret": "f32", |
| "args": ["0", "0", "0"] |
| }, |
| { |
| "intrinsic": "expte", |
| "width": [128], |
| "llvm": "vexptefp", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "floor", |
| "width": [128], |
| "llvm": "vrfim", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "ceil", |
| "width": [128], |
| "llvm": "vrfip", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "round", |
| "width": [128], |
| "llvm": "vrfin", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "trunc", |
| "width": [128], |
| "llvm": "vrfiz", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "loge", |
| "width": [128], |
| "llvm": "vlogefp", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "re", |
| "width": [128], |
| "llvm": "vrefp", |
| "ret": "f32", |
| "args": ["0"] |
| }, |
| { |
| "intrinsic": "rsqrte", |
| "width": [128], |
| "llvm": "vrsqrtefp", |
| "ret": "f32", |
| "args": ["0"] |
| } |
| ] |
| } |