diff --git a/module.cpp b/module.cpp index cc9e0b7c..56162ba9 100644 --- a/module.cpp +++ b/module.cpp @@ -949,10 +949,12 @@ Module::writeObjectFileOrAssembly(OutputType outputType, const char *outFileName } std::string featuresString; + llvm::TargetMachine *targetMachine = NULL; #if defined LLVM_3_0svn || defined LLVM_3_0 - llvm::TargetMachine *targetMachine = - target->createTargetMachine(triple.getTriple(), g->target.cpu, - featuresString); + if (g->target.isa == Target::AVX) + featuresString = "+avx"; + targetMachine = target->createTargetMachine(triple.getTriple(), g->target.cpu, + featuresString); #else if (g->target.cpu.size()) { llvm::SubtargetFeatures features; @@ -960,8 +962,8 @@ Module::writeObjectFileOrAssembly(OutputType outputType, const char *outFileName featuresString = features.getString(); } - llvm::TargetMachine *targetMachine = - target->createTargetMachine(triple.getTriple(), featuresString); + targetMachine = target->createTargetMachine(triple.getTriple(), + featuresString); #endif if (targetMachine == NULL) { fprintf(stderr, "Unable to create target machine for target \"%s\"!", diff --git a/stdlib-avx.ll b/stdlib-avx.ll index de7f87fa..897c55a0 100644 --- a/stdlib-avx.ll +++ b/stdlib-avx.ll @@ -698,12 +698,16 @@ define void @__masked_store_blend_64(<8 x i64>* nocapture %ptr, <8 x i64> %new, ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; gather/scatter +gen_gather(8, i8) +gen_gather(8, i16) gen_gather(8, i32) gen_gather(8, i64) + +gen_scatter(8, i8) +gen_scatter(8, i16) gen_scatter(8, i32) gen_scatter(8, i64) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; double precision sqrt