@@ -522,6 +522,15 @@ fn declare_intrinsic(cx: &CodegenCx, key: &str) -> Option<ValueRef> {
522522 let t_f32 = Type :: f32 ( cx) ;
523523 let t_f64 = Type :: f64 ( cx) ;
524524
525+ let t_v2f32 = Type :: vector ( & t_f32, 2 ) ;
526+ let t_v4f32 = Type :: vector ( & t_f32, 4 ) ;
527+ let t_v8f32 = Type :: vector ( & t_f32, 8 ) ;
528+ let t_v16f32 = Type :: vector ( & t_f32, 16 ) ;
529+
530+ let t_v2f64 = Type :: vector ( & t_f64, 2 ) ;
531+ let t_v4f64 = Type :: vector ( & t_f64, 4 ) ;
532+ let t_v8f64 = Type :: vector ( & t_f64, 8 ) ;
533+
525534 ifn ! ( "llvm.memcpy.p0i8.p0i8.i16" , fn ( i8p, i8p, t_i16, t_i32, i1) -> void) ;
526535 ifn ! ( "llvm.memcpy.p0i8.p0i8.i32" , fn ( i8p, i8p, t_i32, t_i32, i1) -> void) ;
527536 ifn ! ( "llvm.memcpy.p0i8.p0i8.i64" , fn ( i8p, i8p, t_i64, t_i32, i1) -> void) ;
@@ -537,37 +546,145 @@ fn declare_intrinsic(cx: &CodegenCx, key: &str) -> Option<ValueRef> {
537546 ifn ! ( "llvm.frameaddress" , fn ( t_i32) -> i8p) ;
538547
539548 ifn ! ( "llvm.powi.f32" , fn ( t_f32, t_i32) -> t_f32) ;
549+ ifn ! ( "llvm.powi.v2f32" , fn ( t_v2f32, t_i32) -> t_v2f32) ;
550+ ifn ! ( "llvm.powi.v4f32" , fn ( t_v4f32, t_i32) -> t_v4f32) ;
551+ ifn ! ( "llvm.powi.v8f32" , fn ( t_v8f32, t_i32) -> t_v8f32) ;
552+ ifn ! ( "llvm.powi.v16f32" , fn ( t_v16f32, t_i32) -> t_v16f32) ;
540553 ifn ! ( "llvm.powi.f64" , fn ( t_f64, t_i32) -> t_f64) ;
554+ ifn ! ( "llvm.powi.v2f64" , fn ( t_v2f64, t_i32) -> t_v2f64) ;
555+ ifn ! ( "llvm.powi.v4f64" , fn ( t_v4f64, t_i32) -> t_v4f64) ;
556+ ifn ! ( "llvm.powi.v8f64" , fn ( t_v8f64, t_i32) -> t_v8f64) ;
557+
541558 ifn ! ( "llvm.pow.f32" , fn ( t_f32, t_f32) -> t_f32) ;
559+ ifn ! ( "llvm.pow.v2f32" , fn ( t_v2f32, t_v2f32) -> t_v2f32) ;
560+ ifn ! ( "llvm.pow.v4f32" , fn ( t_v4f32, t_v4f32) -> t_v4f32) ;
561+ ifn ! ( "llvm.pow.v8f32" , fn ( t_v8f32, t_v8f32) -> t_v8f32) ;
562+ ifn ! ( "llvm.pow.v16f32" , fn ( t_v16f32, t_v16f32) -> t_v16f32) ;
542563 ifn ! ( "llvm.pow.f64" , fn ( t_f64, t_f64) -> t_f64) ;
564+ ifn ! ( "llvm.pow.v2f64" , fn ( t_v2f64, t_v2f64) -> t_v2f64) ;
565+ ifn ! ( "llvm.pow.v4f64" , fn ( t_v4f64, t_v4f64) -> t_v4f64) ;
566+ ifn ! ( "llvm.pow.v8f64" , fn ( t_v8f64, t_v8f64) -> t_v8f64) ;
543567
544568 ifn ! ( "llvm.sqrt.f32" , fn ( t_f32) -> t_f32) ;
569+ ifn ! ( "llvm.sqrt.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
570+ ifn ! ( "llvm.sqrt.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
571+ ifn ! ( "llvm.sqrt.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
572+ ifn ! ( "llvm.sqrt.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
545573 ifn ! ( "llvm.sqrt.f64" , fn ( t_f64) -> t_f64) ;
574+ ifn ! ( "llvm.sqrt.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
575+ ifn ! ( "llvm.sqrt.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
576+ ifn ! ( "llvm.sqrt.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
577+
546578 ifn ! ( "llvm.sin.f32" , fn ( t_f32) -> t_f32) ;
579+ ifn ! ( "llvm.sin.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
580+ ifn ! ( "llvm.sin.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
581+ ifn ! ( "llvm.sin.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
582+ ifn ! ( "llvm.sin.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
547583 ifn ! ( "llvm.sin.f64" , fn ( t_f64) -> t_f64) ;
584+ ifn ! ( "llvm.sin.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
585+ ifn ! ( "llvm.sin.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
586+ ifn ! ( "llvm.sin.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
587+
548588 ifn ! ( "llvm.cos.f32" , fn ( t_f32) -> t_f32) ;
589+ ifn ! ( "llvm.cos.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
590+ ifn ! ( "llvm.cos.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
591+ ifn ! ( "llvm.cos.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
592+ ifn ! ( "llvm.cos.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
549593 ifn ! ( "llvm.cos.f64" , fn ( t_f64) -> t_f64) ;
594+ ifn ! ( "llvm.cos.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
595+ ifn ! ( "llvm.cos.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
596+ ifn ! ( "llvm.cos.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
597+
550598 ifn ! ( "llvm.exp.f32" , fn ( t_f32) -> t_f32) ;
599+ ifn ! ( "llvm.exp.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
600+ ifn ! ( "llvm.exp.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
601+ ifn ! ( "llvm.exp.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
602+ ifn ! ( "llvm.exp.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
551603 ifn ! ( "llvm.exp.f64" , fn ( t_f64) -> t_f64) ;
604+ ifn ! ( "llvm.exp.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
605+ ifn ! ( "llvm.exp.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
606+ ifn ! ( "llvm.exp.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
607+
552608 ifn ! ( "llvm.exp2.f32" , fn ( t_f32) -> t_f32) ;
609+ ifn ! ( "llvm.exp2.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
610+ ifn ! ( "llvm.exp2.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
611+ ifn ! ( "llvm.exp2.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
612+ ifn ! ( "llvm.exp2.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
553613 ifn ! ( "llvm.exp2.f64" , fn ( t_f64) -> t_f64) ;
614+ ifn ! ( "llvm.exp2.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
615+ ifn ! ( "llvm.exp2.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
616+ ifn ! ( "llvm.exp2.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
617+
554618 ifn ! ( "llvm.log.f32" , fn ( t_f32) -> t_f32) ;
619+ ifn ! ( "llvm.log.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
620+ ifn ! ( "llvm.log.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
621+ ifn ! ( "llvm.log.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
622+ ifn ! ( "llvm.log.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
555623 ifn ! ( "llvm.log.f64" , fn ( t_f64) -> t_f64) ;
624+ ifn ! ( "llvm.log.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
625+ ifn ! ( "llvm.log.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
626+ ifn ! ( "llvm.log.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
627+
556628 ifn ! ( "llvm.log10.f32" , fn ( t_f32) -> t_f32) ;
629+ ifn ! ( "llvm.log10.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
630+ ifn ! ( "llvm.log10.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
631+ ifn ! ( "llvm.log10.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
632+ ifn ! ( "llvm.log10.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
557633 ifn ! ( "llvm.log10.f64" , fn ( t_f64) -> t_f64) ;
634+ ifn ! ( "llvm.log10.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
635+ ifn ! ( "llvm.log10.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
636+ ifn ! ( "llvm.log10.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
637+
558638 ifn ! ( "llvm.log2.f32" , fn ( t_f32) -> t_f32) ;
639+ ifn ! ( "llvm.log2.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
640+ ifn ! ( "llvm.log2.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
641+ ifn ! ( "llvm.log2.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
642+ ifn ! ( "llvm.log2.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
559643 ifn ! ( "llvm.log2.f64" , fn ( t_f64) -> t_f64) ;
644+ ifn ! ( "llvm.log2.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
645+ ifn ! ( "llvm.log2.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
646+ ifn ! ( "llvm.log2.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
560647
561648 ifn ! ( "llvm.fma.f32" , fn ( t_f32, t_f32, t_f32) -> t_f32) ;
649+ ifn ! ( "llvm.fma.v2f32" , fn ( t_v2f32, t_v2f32, t_v2f32) -> t_v2f32) ;
650+ ifn ! ( "llvm.fma.v4f32" , fn ( t_v4f32, t_v4f32, t_v4f32) -> t_v4f32) ;
651+ ifn ! ( "llvm.fma.v8f32" , fn ( t_v8f32, t_v8f32, t_v8f32) -> t_v8f32) ;
652+ ifn ! ( "llvm.fma.v16f32" , fn ( t_v16f32, t_v16f32, t_v16f32) -> t_v16f32) ;
562653 ifn ! ( "llvm.fma.f64" , fn ( t_f64, t_f64, t_f64) -> t_f64) ;
654+ ifn ! ( "llvm.fma.v2f64" , fn ( t_v2f64, t_v2f64, t_v2f64) -> t_v2f64) ;
655+ ifn ! ( "llvm.fma.v4f64" , fn ( t_v4f64, t_v4f64, t_v4f64) -> t_v4f64) ;
656+ ifn ! ( "llvm.fma.v8f64" , fn ( t_v8f64, t_v8f64, t_v8f64) -> t_v8f64) ;
563657
564658 ifn ! ( "llvm.fabs.f32" , fn ( t_f32) -> t_f32) ;
659+ ifn ! ( "llvm.fabs.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
660+ ifn ! ( "llvm.fabs.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
661+ ifn ! ( "llvm.fabs.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
662+ ifn ! ( "llvm.fabs.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
565663 ifn ! ( "llvm.fabs.f64" , fn ( t_f64) -> t_f64) ;
664+ ifn ! ( "llvm.fabs.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
665+ ifn ! ( "llvm.fabs.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
666+ ifn ! ( "llvm.fabs.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
566667
567668 ifn ! ( "llvm.floor.f32" , fn ( t_f32) -> t_f32) ;
669+ ifn ! ( "llvm.floor.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
670+ ifn ! ( "llvm.floor.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
671+ ifn ! ( "llvm.floor.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
672+ ifn ! ( "llvm.floor.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
568673 ifn ! ( "llvm.floor.f64" , fn ( t_f64) -> t_f64) ;
674+ ifn ! ( "llvm.floor.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
675+ ifn ! ( "llvm.floor.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
676+ ifn ! ( "llvm.floor.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
677+
569678 ifn ! ( "llvm.ceil.f32" , fn ( t_f32) -> t_f32) ;
679+ ifn ! ( "llvm.ceil.v2f32" , fn ( t_v2f32) -> t_v2f32) ;
680+ ifn ! ( "llvm.ceil.v4f32" , fn ( t_v4f32) -> t_v4f32) ;
681+ ifn ! ( "llvm.ceil.v8f32" , fn ( t_v8f32) -> t_v8f32) ;
682+ ifn ! ( "llvm.ceil.v16f32" , fn ( t_v16f32) -> t_v16f32) ;
570683 ifn ! ( "llvm.ceil.f64" , fn ( t_f64) -> t_f64) ;
684+ ifn ! ( "llvm.ceil.v2f64" , fn ( t_v2f64) -> t_v2f64) ;
685+ ifn ! ( "llvm.ceil.v4f64" , fn ( t_v4f64) -> t_v4f64) ;
686+ ifn ! ( "llvm.ceil.v8f64" , fn ( t_v8f64) -> t_v8f64) ;
687+
571688 ifn ! ( "llvm.trunc.f32" , fn ( t_f32) -> t_f32) ;
572689 ifn ! ( "llvm.trunc.f64" , fn ( t_f64) -> t_f64) ;
573690
0 commit comments