alias punpcklbw_indices = #""; alias punpckhbw_indices = #""; alias punpcklwd_indices = #""; alias palignr_0_indices = #""; alias palignr_1_indices = #""; alias palignr_2_indices = #""; alias palignr_3_indices = #""; alias palignr_4_indices = #""; alias palignr_5_indices = #""; alias palignr_6_indices = #""; alias palignr_7_indices = #""; alias palignr_8_indices = #""; alias palignr_9_indices = #""; alias palignr_10_indices = #""; alias palignr_11_indices = #""; alias palignr_12_indices = #""; alias palignr_13_indices = #""; alias palignr_14_indices = #""; alias palignr_15_indices = #""; [SHUFFLE] private x86_shuffle_llvm(a:Vec[Byte,16], b:Vec[Byte,16], static SHUFFLE) returned:Vec[Byte,16] __llvm__{ %1 = load ${Vec[Byte,16]} * %a %2 = load ${Vec[Byte,16]} * %b %3 = shufflevector ${Vec[Byte,16]} %1, ${Vec[Byte,16]} %2, <16 x i32> ${SHUFFLE} store ${Vec[Byte,16]} %3, ${Vec[Byte,16]} * %returned ret i32 0 } x86_palignr_0(a, b) = x86_shuffle_llvm(a, b, palignr_0_indices); x86_palignr_1(a, b) = x86_shuffle_llvm(a, b, palignr_1_indices); x86_palignr_2(a, b) = x86_shuffle_llvm(a, b, palignr_2_indices); x86_palignr_3(a, b) = x86_shuffle_llvm(a, b, palignr_3_indices); x86_palignr_4(a, b) = x86_shuffle_llvm(a, b, palignr_4_indices); x86_palignr_5(a, b) = x86_shuffle_llvm(a, b, palignr_5_indices); x86_palignr_6(a, b) = x86_shuffle_llvm(a, b, palignr_6_indices); x86_palignr_7(a, b) = x86_shuffle_llvm(a, b, palignr_7_indices); x86_palignr_8(a, b) = x86_shuffle_llvm(a, b, palignr_8_indices); x86_palignr_9(a, b) = x86_shuffle_llvm(a, b, palignr_9_indices); x86_palignr_10(a, b) = x86_shuffle_llvm(a, b, palignr_10_indices); x86_palignr_11(a, b) = x86_shuffle_llvm(a, b, palignr_11_indices); x86_palignr_12(a, b) = x86_shuffle_llvm(a, b, palignr_12_indices); x86_palignr_13(a, b) = x86_shuffle_llvm(a, b, palignr_13_indices); x86_palignr_14(a, b) = x86_shuffle_llvm(a, b, palignr_14_indices); x86_palignr_15(a, b) = x86_shuffle_llvm(a, b, palignr_15_indices); x86_palignr(a,b,c) { if (c==0) return x86_palignr_0(a,b); if (c==1) return x86_palignr_1(a,b); if (c==2) return x86_palignr_2(a,b); if (c==3) return x86_palignr_3(a,b); if (c==4) return x86_palignr_4(a,b); if (c==5) return x86_palignr_5(a,b); if (c==6) return x86_palignr_6(a,b); if (c==7) return x86_palignr_7(a,b); if (c==8) return x86_palignr_8(a,b); if (c==9) return x86_palignr_9(a,b); if (c==10) return x86_palignr_10(a,b); if (c==11) return x86_palignr_11(a,b); if (c==12) return x86_palignr_12(a,b); if (c==13) return x86_palignr_13(a,b); if (c==14) return x86_palignr_14(a,b); if (c==15) return x86_palignr_15(a,b); breakpoint(); // this ain't good ! return x86_palignr_0(a,b); }