@@ -522,6 +522,15 @@ fn declare_intrinsic(cx: &CodegenCx, key: &str) -> Option<ValueRef> {
522
522
let t_f32 = Type :: f32 ( cx) ;
523
523
let t_f64 = Type :: f64 ( cx) ;
524
524
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
+
525
534
ifn ! ( "llvm.memcpy.p0i8.p0i8.i16" , fn ( i8p, i8p, t_i16, t_i32, i1) -> void) ;
526
535
ifn ! ( "llvm.memcpy.p0i8.p0i8.i32" , fn ( i8p, i8p, t_i32, t_i32, i1) -> void) ;
527
536
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> {
537
546
ifn ! ( "llvm.frameaddress" , fn ( t_i32) -> i8p) ;
538
547
539
548
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) ;
540
553
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
+
541
558
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) ;
542
563
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) ;
543
567
544
568
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) ;
545
573
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
+
546
578
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) ;
547
583
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
+
548
588
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) ;
549
593
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
+
550
598
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) ;
551
603
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
+
552
608
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) ;
553
613
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
+
554
618
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) ;
555
623
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
+
556
628
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) ;
557
633
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
+
558
638
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) ;
559
643
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) ;
560
647
561
648
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) ;
562
653
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) ;
563
657
564
658
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) ;
565
663
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) ;
566
667
567
668
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) ;
568
673
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
+
569
678
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) ;
570
683
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
+
571
688
ifn ! ( "llvm.trunc.f32" , fn ( t_f32) -> t_f32) ;
572
689
ifn ! ( "llvm.trunc.f64" , fn ( t_f64) -> t_f64) ;
573
690
0 commit comments