6597
6637
! PR47293 NAN not correctly read
6598
6638
character(len=200) :: str
6640
--- a/src/gcc/testsuite/gcc.dg/vmx/stl-be-order.c
6641
+++ b/src/gcc/testsuite/gcc.dg/vmx/stl-be-order.c
6643
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
6645
+#include "harness.h"
6647
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
6648
+static signed char svsc[16] __attribute__ ((aligned (16)));
6649
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
6650
+static unsigned short svus[8] __attribute__ ((aligned (16)));
6651
+static signed short svss[8] __attribute__ ((aligned (16)));
6652
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
6653
+static unsigned short svp[8] __attribute__ ((aligned (16)));
6654
+static unsigned int svui[4] __attribute__ ((aligned (16)));
6655
+static signed int svsi[4] __attribute__ ((aligned (16)));
6656
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
6657
+static float svf[4] __attribute__ ((aligned (16)));
6659
+static void check_arrays ()
6662
+ for (i = 0; i < 16; ++i)
6664
+ check (svuc[i] == i, "svuc");
6665
+ check (svsc[i] == i - 8, "svsc");
6666
+ check (svbc[i] == ((i % 2) ? 0xff : 0), "svbc");
6668
+ for (i = 0; i < 8; ++i)
6670
+ check (svus[i] == i, "svus");
6671
+ check (svss[i] == i - 4, "svss");
6672
+ check (svbs[i] == ((i % 2) ? 0xffff : 0), "svbs");
6673
+ check (svp[i] == i, "svp");
6675
+ for (i = 0; i < 4; ++i)
6677
+ check (svui[i] == i, "svui");
6678
+ check (svsi[i] == i - 2, "svsi");
6679
+ check (svbi[i] == ((i % 2) ? 0xffffffff : 0), "svbi");
6680
+ check (svf[i] == i * 1.0f, "svf");
6684
+static void test ()
6686
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
6687
+ vector unsigned char vuc = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
6688
+ vector signed char vsc = {7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8};
6689
+ vector bool char vbc = {255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0};
6690
+ vector unsigned short vus = {7,6,5,4,3,2,1,0};
6691
+ vector signed short vss = {3,2,1,0,-1,-2,-3,-4};
6692
+ vector bool short vbs = {65535,0,65535,0,65535,0,65535,0};
6693
+ vector pixel vp = {7,6,5,4,3,2,1,0};
6694
+ vector unsigned int vui = {3,2,1,0};
6695
+ vector signed int vsi = {1,0,-1,-2};
6696
+ vector bool int vbi = {0xffffffff,0,0xffffffff,0};
6697
+ vector float vf = {3.0,2.0,1.0,0.0};
6699
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
6700
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
6701
+ vector bool char vbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
6702
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
6703
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
6704
+ vector bool short vbs = {0,65535,0,65535,0,65535,0,65535};
6705
+ vector pixel vp = {0,1,2,3,4,5,6,7};
6706
+ vector unsigned int vui = {0,1,2,3};
6707
+ vector signed int vsi = {-2,-1,0,1};
6708
+ vector bool int vbi = {0,0xffffffff,0,0xffffffff};
6709
+ vector float vf = {0.0,1.0,2.0,3.0};
6712
+ vec_stl (vuc, 0, (vector unsigned char *)svuc);
6713
+ vec_stl (vsc, 0, (vector signed char *)svsc);
6714
+ vec_stl (vbc, 0, (vector bool char *)svbc);
6715
+ vec_stl (vus, 0, (vector unsigned short *)svus);
6716
+ vec_stl (vss, 0, (vector signed short *)svss);
6717
+ vec_stl (vbs, 0, (vector bool short *)svbs);
6718
+ vec_stl (vp, 0, (vector pixel *)svp);
6719
+ vec_stl (vui, 0, (vector unsigned int *)svui);
6720
+ vec_stl (vsi, 0, (vector signed int *)svsi);
6721
+ vec_stl (vbi, 0, (vector bool int *)svbi);
6722
+ vec_stl (vf, 0, (vector float *)svf);
6600
6726
--- a/src/gcc/testsuite/gcc.dg/vmx/perm-be-order.c
6601
6727
+++ b/src/gcc/testsuite/gcc.dg/vmx/perm-be-order.c
6602
6728
@@ -0,0 +1,74 @@
6871
--- a/src/gcc/testsuite/gcc.dg/vmx/ldl.c
6872
+++ b/src/gcc/testsuite/gcc.dg/vmx/ldl.c
6874
+#include "harness.h"
6876
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
6877
+static signed char svsc[16] __attribute__ ((aligned (16)));
6878
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
6879
+static unsigned short svus[8] __attribute__ ((aligned (16)));
6880
+static signed short svss[8] __attribute__ ((aligned (16)));
6881
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
6882
+static unsigned short svp[8] __attribute__ ((aligned (16)));
6883
+static unsigned int svui[4] __attribute__ ((aligned (16)));
6884
+static signed int svsi[4] __attribute__ ((aligned (16)));
6885
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
6886
+static float svf[4] __attribute__ ((aligned (16)));
6888
+static void init ()
6891
+ for (i = 0; i < 16; ++i)
6895
+ svbc[i] = (i % 2) ? 0xff : 0;
6897
+ for (i = 0; i < 8; ++i)
6901
+ svbs[i] = (i % 2) ? 0xffff : 0;
6904
+ for (i = 0; i < 4; ++i)
6908
+ svbi[i] = (i % 2) ? 0xffffffff : 0;
6909
+ svf[i] = i * 1.0f;
6913
+static void test ()
6915
+ vector unsigned char evuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
6916
+ vector signed char evsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
6917
+ vector bool char evbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
6918
+ vector unsigned short evus = {0,1,2,3,4,5,6,7};
6919
+ vector signed short evss = {-4,-3,-2,-1,0,1,2,3};
6920
+ vector bool short evbs = {0,65535,0,65535,0,65535,0,65535};
6921
+ vector pixel evp = {0,1,2,3,4,5,6,7};
6922
+ vector unsigned int evui = {0,1,2,3};
6923
+ vector signed int evsi = {-2,-1,0,1};
6924
+ vector bool int evbi = {0,0xffffffff,0,0xffffffff};
6925
+ vector float evf = {0.0,1.0,2.0,3.0};
6927
+ vector unsigned char vuc;
6928
+ vector signed char vsc;
6929
+ vector bool char vbc;
6930
+ vector unsigned short vus;
6931
+ vector signed short vss;
6932
+ vector bool short vbs;
6934
+ vector unsigned int vui;
6935
+ vector signed int vsi;
6936
+ vector bool int vbi;
6941
+ vuc = vec_ldl (0, (vector unsigned char *)svuc);
6942
+ vsc = vec_ldl (0, (vector signed char *)svsc);
6943
+ vbc = vec_ldl (0, (vector bool char *)svbc);
6944
+ vus = vec_ldl (0, (vector unsigned short *)svus);
6945
+ vss = vec_ldl (0, (vector signed short *)svss);
6946
+ vbs = vec_ldl (0, (vector bool short *)svbs);
6947
+ vp = vec_ldl (0, (vector pixel *)svp);
6948
+ vui = vec_ldl (0, (vector unsigned int *)svui);
6949
+ vsi = vec_ldl (0, (vector signed int *)svsi);
6950
+ vbi = vec_ldl (0, (vector bool int *)svbi);
6951
+ vf = vec_ldl (0, (vector float *)svf);
6953
+ check (vec_all_eq (vuc, evuc), "vuc");
6954
+ check (vec_all_eq (vsc, evsc), "vsc");
6955
+ check (vec_all_eq (vbc, evbc), "vbc");
6956
+ check (vec_all_eq (vus, evus), "vus");
6957
+ check (vec_all_eq (vss, evss), "vss");
6958
+ check (vec_all_eq (vbs, evbs), "vbs");
6959
+ check (vec_all_eq (vp, evp ), "vp" );
6960
+ check (vec_all_eq (vui, evui), "vui");
6961
+ check (vec_all_eq (vsi, evsi), "vsi");
6962
+ check (vec_all_eq (vbi, evbi), "vbi");
6963
+ check (vec_all_eq (vf, evf ), "vf" );
6965
--- a/src/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c
6966
+++ b/src/gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c
6968
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
6969
+/* { dg-require-effective-target powerpc_vsx_ok } */
6970
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */
6972
+#include "harness.h"
6974
+static unsigned long svul[2] __attribute__ ((aligned (16)));
6975
+static double svd[2] __attribute__ ((aligned (16)));
6977
+static void check_arrays ()
6980
+ for (i = 0; i < 2; ++i)
6982
+ check (svul[i] == i, "svul");
6983
+ check (svd[i] == i * 1.0, "svd");
6987
+static void test ()
6989
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
6990
+ vector unsigned long vul = {1,0};
6991
+ vector double vd = {1.0,0.0};
6993
+ vector unsigned long vul = {0,1};
6994
+ vector double vd = {0.0,1.0};
6997
+ vec_stl (vul, 0, (vector unsigned long *)svul);
6998
+ vec_stl (vd, 0, (vector double *)svd);
6745
7002
--- a/src/gcc/testsuite/gcc.dg/vmx/vsums.c
6746
7003
+++ b/src/gcc/testsuite/gcc.dg/vmx/vsums.c
6747
7004
@@ -0,0 +1,12 @@
7313
7656
+ check (vec_all_eq (vussur1, vussuer1), "vussur1");
7314
7657
+ check (vec_all_eq (vussur2, vussuer2), "vussur2");
7659
--- a/src/gcc/testsuite/gcc.dg/vmx/st-be-order.c
7660
+++ b/src/gcc/testsuite/gcc.dg/vmx/st-be-order.c
7662
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
7664
+#include "harness.h"
7666
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
7667
+static signed char svsc[16] __attribute__ ((aligned (16)));
7668
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
7669
+static unsigned short svus[8] __attribute__ ((aligned (16)));
7670
+static signed short svss[8] __attribute__ ((aligned (16)));
7671
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
7672
+static unsigned short svp[8] __attribute__ ((aligned (16)));
7673
+static unsigned int svui[4] __attribute__ ((aligned (16)));
7674
+static signed int svsi[4] __attribute__ ((aligned (16)));
7675
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
7676
+static float svf[4] __attribute__ ((aligned (16)));
7678
+static void check_arrays ()
7681
+ for (i = 0; i < 16; ++i)
7683
+ check (svuc[i] == i, "svuc");
7684
+ check (svsc[i] == i - 8, "svsc");
7685
+ check (svbc[i] == ((i % 2) ? 0xff : 0), "svbc");
7687
+ for (i = 0; i < 8; ++i)
7689
+ check (svus[i] == i, "svus");
7690
+ check (svss[i] == i - 4, "svss");
7691
+ check (svbs[i] == ((i % 2) ? 0xffff : 0), "svbs");
7692
+ check (svp[i] == i, "svp");
7694
+ for (i = 0; i < 4; ++i)
7696
+ check (svui[i] == i, "svui");
7697
+ check (svsi[i] == i - 2, "svsi");
7698
+ check (svbi[i] == ((i % 2) ? 0xffffffff : 0), "svbi");
7699
+ check (svf[i] == i * 1.0f, "svf");
7703
+static void test ()
7705
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
7706
+ vector unsigned char vuc = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
7707
+ vector signed char vsc = {7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8};
7708
+ vector bool char vbc = {255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0};
7709
+ vector unsigned short vus = {7,6,5,4,3,2,1,0};
7710
+ vector signed short vss = {3,2,1,0,-1,-2,-3,-4};
7711
+ vector bool short vbs = {65535,0,65535,0,65535,0,65535,0};
7712
+ vector pixel vp = {7,6,5,4,3,2,1,0};
7713
+ vector unsigned int vui = {3,2,1,0};
7714
+ vector signed int vsi = {1,0,-1,-2};
7715
+ vector bool int vbi = {0xffffffff,0,0xffffffff,0};
7716
+ vector float vf = {3.0,2.0,1.0,0.0};
7718
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
7719
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
7720
+ vector bool char vbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
7721
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
7722
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
7723
+ vector bool short vbs = {0,65535,0,65535,0,65535,0,65535};
7724
+ vector pixel vp = {0,1,2,3,4,5,6,7};
7725
+ vector unsigned int vui = {0,1,2,3};
7726
+ vector signed int vsi = {-2,-1,0,1};
7727
+ vector bool int vbi = {0,0xffffffff,0,0xffffffff};
7728
+ vector float vf = {0.0,1.0,2.0,3.0};
7731
+ vec_st (vuc, 0, (vector unsigned char *)svuc);
7732
+ vec_st (vsc, 0, (vector signed char *)svsc);
7733
+ vec_st (vbc, 0, (vector bool char *)svbc);
7734
+ vec_st (vus, 0, (vector unsigned short *)svus);
7735
+ vec_st (vss, 0, (vector signed short *)svss);
7736
+ vec_st (vbs, 0, (vector bool short *)svbs);
7737
+ vec_st (vp, 0, (vector pixel *)svp);
7738
+ vec_st (vui, 0, (vector unsigned int *)svui);
7739
+ vec_st (vsi, 0, (vector signed int *)svsi);
7740
+ vec_st (vbi, 0, (vector bool int *)svbi);
7741
+ vec_st (vf, 0, (vector float *)svf);
7316
7745
--- a/src/gcc/testsuite/gcc.dg/vmx/gcc-bug-i.c
7317
7746
+++ b/src/gcc/testsuite/gcc.dg/vmx/gcc-bug-i.c
7318
7747
@@ -13,12 +13,27 @@
7790
--- a/src/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c
7791
+++ b/src/gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c
7793
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
7794
+/* { dg-require-effective-target powerpc_vsx_ok } */
7795
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */
7797
+#include "harness.h"
7799
+static unsigned long svul[2] __attribute__ ((aligned (16)));
7800
+static double svd[2] __attribute__ ((aligned (16)));
7802
+static void check_arrays ()
7805
+ for (i = 0; i < 2; ++i)
7807
+ check (svul[i] == i, "svul");
7808
+ check (svd[i] == i * 1.0, "svd");
7812
+static void test ()
7814
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
7815
+ vector unsigned long vul = {1,0};
7816
+ vector double vd = {1.0,0.0};
7818
+ vector unsigned long vul = {0,1};
7819
+ vector double vd = {0.0,1.0};
7822
+ vec_st (vul, 0, (vector unsigned long *)svul);
7823
+ vec_st (vd, 0, (vector double *)svd);
7827
--- a/src/gcc/testsuite/gcc.dg/vmx/lde.c
7828
+++ b/src/gcc/testsuite/gcc.dg/vmx/lde.c
7830
+#include "harness.h"
7832
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
7833
+static signed char svsc[16] __attribute__ ((aligned (16)));
7834
+static unsigned short svus[8] __attribute__ ((aligned (16)));
7835
+static signed short svss[8] __attribute__ ((aligned (16)));
7836
+static unsigned int svui[4] __attribute__ ((aligned (16)));
7837
+static signed int svsi[4] __attribute__ ((aligned (16)));
7838
+static float svf[4] __attribute__ ((aligned (16)));
7840
+static void init ()
7843
+ for (i = 0; i < 16; ++i)
7848
+ for (i = 0; i < 8; ++i)
7853
+ for (i = 0; i < 4; ++i)
7857
+ svf[i] = i * 1.0f;
7861
+static void test ()
7863
+ vector unsigned char vuc;
7864
+ vector signed char vsc;
7865
+ vector unsigned short vus;
7866
+ vector signed short vss;
7867
+ vector unsigned int vui;
7868
+ vector signed int vsi;
7873
+ vuc = vec_lde (9*1, (unsigned char *)svuc);
7874
+ vsc = vec_lde (14*1, (signed char *)svsc);
7875
+ vus = vec_lde (7*2, (unsigned short *)svus);
7876
+ vss = vec_lde (1*2, (signed short *)svss);
7877
+ vui = vec_lde (3*4, (unsigned int *)svui);
7878
+ vsi = vec_lde (2*4, (signed int *)svsi);
7879
+ vf = vec_lde (0*4, (float *)svf);
7881
+ check (vec_extract (vuc, 9) == 9, "vuc");
7882
+ check (vec_extract (vsc, 14) == 6, "vsc");
7883
+ check (vec_extract (vus, 7) == 7, "vus");
7884
+ check (vec_extract (vss, 1) == -3, "vss");
7885
+ check (vec_extract (vui, 3) == 3, "vui");
7886
+ check (vec_extract (vsi, 2) == 0, "vsi");
7887
+ check (vec_extract (vf, 0) == 0.0, "vf");
7889
--- a/src/gcc/testsuite/gcc.dg/vmx/pack.c
7890
+++ b/src/gcc/testsuite/gcc.dg/vmx/pack.c
7892
+#include "harness.h"
7894
+#define BIG 4294967295
7898
+ /* Input vectors. */
7899
+ vector unsigned short vusa = {0,1,2,3,4,5,6,7};
7900
+ vector unsigned short vusb = {8,9,10,11,12,13,14,15};
7901
+ vector signed short vssa = {-8,-7,-6,-5,-4,-3,-2,-1};
7902
+ vector signed short vssb = {0,1,2,3,4,5,6,7};
7903
+ vector bool short vbsa = {0,65535,65535,0,0,0,65535,0};
7904
+ vector bool short vbsb = {65535,0,0,65535,65535,65535,0,65535};
7905
+ vector unsigned int vuia = {0,1,2,3};
7906
+ vector unsigned int vuib = {4,5,6,7};
7907
+ vector signed int vsia = {-4,-3,-2,-1};
7908
+ vector signed int vsib = {0,1,2,3};
7909
+ vector bool int vbia = {0,BIG,BIG,BIG};
7910
+ vector bool int vbib = {BIG,0,0,0};
7911
+ vector unsigned int vipa = {(0<<24) + (2<<19) + (3<<11) + (4<<3),
7912
+ (1<<24) + (5<<19) + (6<<11) + (7<<3),
7913
+ (0<<24) + (8<<19) + (9<<11) + (10<<3),
7914
+ (1<<24) + (11<<19) + (12<<11) + (13<<3)};
7915
+ vector unsigned int vipb = {(1<<24) + (14<<19) + (15<<11) + (16<<3),
7916
+ (0<<24) + (17<<19) + (18<<11) + (19<<3),
7917
+ (1<<24) + (20<<19) + (21<<11) + (22<<3),
7918
+ (0<<24) + (23<<19) + (24<<11) + (25<<3)};
7919
+ vector unsigned short vusc = {0,256,1,257,2,258,3,259};
7920
+ vector unsigned short vusd = {4,260,5,261,6,262,7,263};
7921
+ vector signed short vssc = {-1,-128,0,127,-2,-129,1,128};
7922
+ vector signed short vssd = {-3,-130,2,129,-4,-131,3,130};
7923
+ vector unsigned int vuic = {0,65536,1,65537};
7924
+ vector unsigned int vuid = {2,65538,3,65539};
7925
+ vector signed int vsic = {-1,-32768,0,32767};
7926
+ vector signed int vsid = {-2,-32769,1,32768};
7928
+ /* Result vectors. */
7929
+ vector unsigned char vucr;
7930
+ vector signed char vscr;
7931
+ vector bool char vbcr;
7932
+ vector unsigned short vusr;
7933
+ vector signed short vssr;
7934
+ vector bool short vbsr;
7936
+ vector unsigned char vucsr;
7937
+ vector signed char vscsr;
7938
+ vector unsigned short vussr;
7939
+ vector signed short vsssr;
7940
+ vector unsigned char vucsur1, vucsur2;
7941
+ vector unsigned short vussur1, vussur2;
7943
+ /* Expected result vectors. */
7944
+ vector unsigned char vucer = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
7945
+ vector signed char vscer = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
7946
+ vector bool char vbcer = {0,255,255,0,0,0,255,0,255,0,0,255,255,255,0,255};
7947
+ vector unsigned short vuser = {0,1,2,3,4,5,6,7};
7948
+ vector signed short vsser = {-4,-3,-2,-1,0,1,2,3};
7949
+ vector bool short vbser = {0,65535,65535,65535,65535,0,0,0};
7950
+ vector pixel vper = {(0<<15) + (2<<10) + (3<<5) + 4,
7951
+ (1<<15) + (5<<10) + (6<<5) + 7,
7952
+ (0<<15) + (8<<10) + (9<<5) + 10,
7953
+ (1<<15) + (11<<10) + (12<<5) + 13,
7954
+ (1<<15) + (14<<10) + (15<<5) + 16,
7955
+ (0<<15) + (17<<10) + (18<<5) + 19,
7956
+ (1<<15) + (20<<10) + (21<<5) + 22,
7957
+ (0<<15) + (23<<10) + (24<<5) + 25};
7958
+ vector unsigned char vucser = {0,255,1,255,2,255,3,255,4,255,5,255,6,255,7,255};
7959
+ vector signed char vscser = {-1,-128,0,127,-2,-128,1,127,
7960
+ -3,-128,2,127,-4,-128,3,127};
7961
+ vector unsigned short vusser = {0,65535,1,65535,2,65535,3,65535};
7962
+ vector signed short vssser = {-1,-32768,0,32767,-2,-32768,1,32767};
7963
+ vector unsigned char vucsuer1 = {0,255,1,255,2,255,3,255,4,255,5,255,6,255,7,255};
7964
+ vector unsigned char vucsuer2 = {0,0,0,127,0,0,1,128,0,0,2,129,0,0,3,130};
7965
+ vector unsigned short vussuer1 = {0,65535,1,65535,2,65535,3,65535};
7966
+ vector unsigned short vussuer2 = {0,0,0,32767,0,0,1,32768};
7968
+ vucr = vec_pack (vusa, vusb);
7969
+ vscr = vec_pack (vssa, vssb);
7970
+ vbcr = vec_pack (vbsa, vbsb);
7971
+ vusr = vec_pack (vuia, vuib);
7972
+ vssr = vec_pack (vsia, vsib);
7973
+ vbsr = vec_pack (vbia, vbib);
7974
+ vpr = vec_packpx (vipa, vipb);
7975
+ vucsr = vec_packs (vusc, vusd);
7976
+ vscsr = vec_packs (vssc, vssd);
7977
+ vussr = vec_packs (vuic, vuid);
7978
+ vsssr = vec_packs (vsic, vsid);
7979
+ vucsur1 = vec_packsu (vusc, vusd);
7980
+ vucsur2 = vec_packsu (vssc, vssd);
7981
+ vussur1 = vec_packsu (vuic, vuid);
7982
+ vussur2 = vec_packsu (vsic, vsid);
7984
+ check (vec_all_eq (vucr, vucer), "vucr");
7985
+ check (vec_all_eq (vscr, vscer), "vscr");
7986
+ check (vec_all_eq (vbcr, vbcer), "vbcr");
7987
+ check (vec_all_eq (vusr, vuser), "vusr");
7988
+ check (vec_all_eq (vssr, vsser), "vssr");
7989
+ check (vec_all_eq (vbsr, vbser), "vbsr");
7990
+ check (vec_all_eq (vpr, vper ), "vpr" );
7991
+ check (vec_all_eq (vucsr, vucser), "vucsr");
7992
+ check (vec_all_eq (vscsr, vscser), "vscsr");
7993
+ check (vec_all_eq (vussr, vusser), "vussr");
7994
+ check (vec_all_eq (vsssr, vssser), "vsssr");
7995
+ check (vec_all_eq (vucsur1, vucsuer1), "vucsur1");
7996
+ check (vec_all_eq (vucsur2, vucsuer2), "vucsur2");
7997
+ check (vec_all_eq (vussur1, vussuer1), "vussur1");
7998
+ check (vec_all_eq (vussur2, vussuer2), "vussur2");
7361
8000
--- a/src/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c
7362
8001
+++ b/src/gcc/testsuite/gcc.dg/vmx/unpack-be-order.c
7363
8002
@@ -0,0 +1,88 @@
7449
8088
+ check (vec_all_eq (vbih, vbihr), "vbih");
7450
8089
+ check (vec_all_eq (vbil, vbilr), "vbil");
7452
--- a/src/gcc/testsuite/gcc.dg/vmx/pack.c
7453
+++ b/src/gcc/testsuite/gcc.dg/vmx/pack.c
7455
+#include "harness.h"
7457
+#define BIG 4294967295
7461
+ /* Input vectors. */
7462
+ vector unsigned short vusa = {0,1,2,3,4,5,6,7};
7463
+ vector unsigned short vusb = {8,9,10,11,12,13,14,15};
7464
+ vector signed short vssa = {-8,-7,-6,-5,-4,-3,-2,-1};
7465
+ vector signed short vssb = {0,1,2,3,4,5,6,7};
7466
+ vector bool short vbsa = {0,65535,65535,0,0,0,65535,0};
7467
+ vector bool short vbsb = {65535,0,0,65535,65535,65535,0,65535};
7468
+ vector unsigned int vuia = {0,1,2,3};
7469
+ vector unsigned int vuib = {4,5,6,7};
7470
+ vector signed int vsia = {-4,-3,-2,-1};
7471
+ vector signed int vsib = {0,1,2,3};
7472
+ vector bool int vbia = {0,BIG,BIG,BIG};
7473
+ vector bool int vbib = {BIG,0,0,0};
7474
+ vector unsigned int vipa = {(0<<24) + (2<<19) + (3<<11) + (4<<3),
7475
+ (1<<24) + (5<<19) + (6<<11) + (7<<3),
7476
+ (0<<24) + (8<<19) + (9<<11) + (10<<3),
7477
+ (1<<24) + (11<<19) + (12<<11) + (13<<3)};
7478
+ vector unsigned int vipb = {(1<<24) + (14<<19) + (15<<11) + (16<<3),
7479
+ (0<<24) + (17<<19) + (18<<11) + (19<<3),
7480
+ (1<<24) + (20<<19) + (21<<11) + (22<<3),
7481
+ (0<<24) + (23<<19) + (24<<11) + (25<<3)};
7482
+ vector unsigned short vusc = {0,256,1,257,2,258,3,259};
7483
+ vector unsigned short vusd = {4,260,5,261,6,262,7,263};
7484
+ vector signed short vssc = {-1,-128,0,127,-2,-129,1,128};
7485
+ vector signed short vssd = {-3,-130,2,129,-4,-131,3,130};
7486
+ vector unsigned int vuic = {0,65536,1,65537};
7487
+ vector unsigned int vuid = {2,65538,3,65539};
7488
+ vector signed int vsic = {-1,-32768,0,32767};
7489
+ vector signed int vsid = {-2,-32769,1,32768};
7491
+ /* Result vectors. */
7492
+ vector unsigned char vucr;
7493
+ vector signed char vscr;
7494
+ vector bool char vbcr;
7495
+ vector unsigned short vusr;
7496
+ vector signed short vssr;
7497
+ vector bool short vbsr;
7499
+ vector unsigned char vucsr;
7500
+ vector signed char vscsr;
7501
+ vector unsigned short vussr;
7502
+ vector signed short vsssr;
7503
+ vector unsigned char vucsur1, vucsur2;
7504
+ vector unsigned short vussur1, vussur2;
7506
+ /* Expected result vectors. */
7507
+ vector unsigned char vucer = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
7508
+ vector signed char vscer = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
7509
+ vector bool char vbcer = {0,255,255,0,0,0,255,0,255,0,0,255,255,255,0,255};
7510
+ vector unsigned short vuser = {0,1,2,3,4,5,6,7};
7511
+ vector signed short vsser = {-4,-3,-2,-1,0,1,2,3};
7512
+ vector bool short vbser = {0,65535,65535,65535,65535,0,0,0};
7513
+ vector pixel vper = {(0<<15) + (2<<10) + (3<<5) + 4,
7514
+ (1<<15) + (5<<10) + (6<<5) + 7,
7515
+ (0<<15) + (8<<10) + (9<<5) + 10,
7516
+ (1<<15) + (11<<10) + (12<<5) + 13,
7517
+ (1<<15) + (14<<10) + (15<<5) + 16,
7518
+ (0<<15) + (17<<10) + (18<<5) + 19,
7519
+ (1<<15) + (20<<10) + (21<<5) + 22,
7520
+ (0<<15) + (23<<10) + (24<<5) + 25};
7521
+ vector unsigned char vucser = {0,255,1,255,2,255,3,255,4,255,5,255,6,255,7,255};
7522
+ vector signed char vscser = {-1,-128,0,127,-2,-128,1,127,
7523
+ -3,-128,2,127,-4,-128,3,127};
7524
+ vector unsigned short vusser = {0,65535,1,65535,2,65535,3,65535};
7525
+ vector signed short vssser = {-1,-32768,0,32767,-2,-32768,1,32767};
7526
+ vector unsigned char vucsuer1 = {0,255,1,255,2,255,3,255,4,255,5,255,6,255,7,255};
7527
+ vector unsigned char vucsuer2 = {0,0,0,127,0,0,1,128,0,0,2,129,0,0,3,130};
7528
+ vector unsigned short vussuer1 = {0,65535,1,65535,2,65535,3,65535};
7529
+ vector unsigned short vussuer2 = {0,0,0,32767,0,0,1,32768};
7531
+ vucr = vec_pack (vusa, vusb);
7532
+ vscr = vec_pack (vssa, vssb);
7533
+ vbcr = vec_pack (vbsa, vbsb);
7534
+ vusr = vec_pack (vuia, vuib);
7535
+ vssr = vec_pack (vsia, vsib);
7536
+ vbsr = vec_pack (vbia, vbib);
7537
+ vpr = vec_packpx (vipa, vipb);
7538
+ vucsr = vec_packs (vusc, vusd);
7539
+ vscsr = vec_packs (vssc, vssd);
7540
+ vussr = vec_packs (vuic, vuid);
7541
+ vsssr = vec_packs (vsic, vsid);
7542
+ vucsur1 = vec_packsu (vusc, vusd);
7543
+ vucsur2 = vec_packsu (vssc, vssd);
7544
+ vussur1 = vec_packsu (vuic, vuid);
7545
+ vussur2 = vec_packsu (vsic, vsid);
7547
+ check (vec_all_eq (vucr, vucer), "vucr");
7548
+ check (vec_all_eq (vscr, vscer), "vscr");
7549
+ check (vec_all_eq (vbcr, vbcer), "vbcr");
7550
+ check (vec_all_eq (vusr, vuser), "vusr");
7551
+ check (vec_all_eq (vssr, vsser), "vssr");
7552
+ check (vec_all_eq (vbsr, vbser), "vbsr");
7553
+ check (vec_all_eq (vpr, vper ), "vpr" );
7554
+ check (vec_all_eq (vucsr, vucser), "vucsr");
7555
+ check (vec_all_eq (vscsr, vscser), "vscsr");
7556
+ check (vec_all_eq (vussr, vusser), "vussr");
7557
+ check (vec_all_eq (vsssr, vssser), "vsssr");
7558
+ check (vec_all_eq (vucsur1, vucsuer1), "vucsur1");
7559
+ check (vec_all_eq (vucsur2, vucsuer2), "vucsur2");
7560
+ check (vec_all_eq (vussur1, vussuer1), "vussur1");
7561
+ check (vec_all_eq (vussur2, vussuer2), "vussur2");
8091
--- a/src/gcc/testsuite/gcc.dg/vmx/st.c
8092
+++ b/src/gcc/testsuite/gcc.dg/vmx/st.c
8094
+#include "harness.h"
8096
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8097
+static signed char svsc[16] __attribute__ ((aligned (16)));
8098
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
8099
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8100
+static signed short svss[8] __attribute__ ((aligned (16)));
8101
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
8102
+static unsigned short svp[8] __attribute__ ((aligned (16)));
8103
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8104
+static signed int svsi[4] __attribute__ ((aligned (16)));
8105
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
8106
+static float svf[4] __attribute__ ((aligned (16)));
8108
+static void check_arrays ()
8111
+ for (i = 0; i < 16; ++i)
8113
+ check (svuc[i] == i, "svuc");
8114
+ check (svsc[i] == i - 8, "svsc");
8115
+ check (svbc[i] == ((i % 2) ? 0xff : 0), "svbc");
8117
+ for (i = 0; i < 8; ++i)
8119
+ check (svus[i] == i, "svus");
8120
+ check (svss[i] == i - 4, "svss");
8121
+ check (svbs[i] == ((i % 2) ? 0xffff : 0), "svbs");
8122
+ check (svp[i] == i, "svp");
8124
+ for (i = 0; i < 4; ++i)
8126
+ check (svui[i] == i, "svui");
8127
+ check (svsi[i] == i - 2, "svsi");
8128
+ check (svbi[i] == ((i % 2) ? 0xffffffff : 0), "svbi");
8129
+ check (svf[i] == i * 1.0f, "svf");
8133
+static void test ()
8135
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8136
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8137
+ vector bool char vbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
8138
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
8139
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
8140
+ vector bool short vbs = {0,65535,0,65535,0,65535,0,65535};
8141
+ vector pixel vp = {0,1,2,3,4,5,6,7};
8142
+ vector unsigned int vui = {0,1,2,3};
8143
+ vector signed int vsi = {-2,-1,0,1};
8144
+ vector bool int vbi = {0,0xffffffff,0,0xffffffff};
8145
+ vector float vf = {0.0,1.0,2.0,3.0};
8147
+ vec_st (vuc, 0, (vector unsigned char *)svuc);
8148
+ vec_st (vsc, 0, (vector signed char *)svsc);
8149
+ vec_st (vbc, 0, (vector bool char *)svbc);
8150
+ vec_st (vus, 0, (vector unsigned short *)svus);
8151
+ vec_st (vss, 0, (vector signed short *)svss);
8152
+ vec_st (vbs, 0, (vector bool short *)svbs);
8153
+ vec_st (vp, 0, (vector pixel *)svp);
8154
+ vec_st (vui, 0, (vector unsigned int *)svui);
8155
+ vec_st (vsi, 0, (vector signed int *)svsi);
8156
+ vec_st (vbi, 0, (vector bool int *)svbi);
8157
+ vec_st (vf, 0, (vector float *)svf);
8161
--- a/src/gcc/testsuite/gcc.dg/vmx/ste-be-order.c
8162
+++ b/src/gcc/testsuite/gcc.dg/vmx/ste-be-order.c
8164
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
8166
+#include "harness.h"
8168
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8169
+static signed char svsc[16] __attribute__ ((aligned (16)));
8170
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8171
+static signed short svss[8] __attribute__ ((aligned (16)));
8172
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8173
+static signed int svsi[4] __attribute__ ((aligned (16)));
8174
+static float svf[4] __attribute__ ((aligned (16)));
8176
+static void check_arrays ()
8178
+ check (svuc[9] == 9, "svuc");
8179
+ check (svsc[14] == 6, "svsc");
8180
+ check (svus[7] == 7, "svus");
8181
+ check (svss[1] == -3, "svss");
8182
+ check (svui[3] == 3, "svui");
8183
+ check (svsi[2] == 0, "svsi");
8184
+ check (svf[0] == 0.0, "svf");
8187
+static void test ()
8189
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
8190
+ vector unsigned char vuc = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
8191
+ vector signed char vsc = {7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8};
8192
+ vector unsigned short vus = {7,6,5,4,3,2,1,0};
8193
+ vector signed short vss = {3,2,1,0,-1,-2,-3,-4};
8194
+ vector unsigned int vui = {3,2,1,0};
8195
+ vector signed int vsi = {1,0,-1,-2};
8196
+ vector float vf = {3.0,2.0,1.0,0.0};
8198
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8199
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8200
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
8201
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
8202
+ vector unsigned int vui = {0,1,2,3};
8203
+ vector signed int vsi = {-2,-1,0,1};
8204
+ vector float vf = {0.0,1.0,2.0,3.0};
8207
+ vec_ste (vuc, 9*1, (unsigned char *)svuc);
8208
+ vec_ste (vsc, 14*1, (signed char *)svsc);
8209
+ vec_ste (vus, 7*2, (unsigned short *)svus);
8210
+ vec_ste (vss, 1*2, (signed short *)svss);
8211
+ vec_ste (vui, 3*4, (unsigned int *)svui);
8212
+ vec_ste (vsi, 2*4, (signed int *)svsi);
8213
+ vec_ste (vf, 0*4, (float *)svf);
7563
8217
--- a/src/gcc/testsuite/gcc.dg/vmx/insert.c
7564
8218
+++ b/src/gcc/testsuite/gcc.dg/vmx/insert.c
8422
--- a/src/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c
8423
+++ b/src/gcc/testsuite/gcc.dg/vmx/ldl-be-order.c
8425
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
8427
+#include "harness.h"
8429
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8430
+static signed char svsc[16] __attribute__ ((aligned (16)));
8431
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
8432
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8433
+static signed short svss[8] __attribute__ ((aligned (16)));
8434
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
8435
+static unsigned short svp[8] __attribute__ ((aligned (16)));
8436
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8437
+static signed int svsi[4] __attribute__ ((aligned (16)));
8438
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
8439
+static float svf[4] __attribute__ ((aligned (16)));
8441
+static void init ()
8444
+ for (i = 0; i < 16; ++i)
8448
+ svbc[i] = (i % 2) ? 0xff : 0;
8450
+ for (i = 0; i < 8; ++i)
8454
+ svbs[i] = (i % 2) ? 0xffff : 0;
8457
+ for (i = 0; i < 4; ++i)
8461
+ svbi[i] = (i % 2) ? 0xffffffff : 0;
8462
+ svf[i] = i * 1.0f;
8466
+static void test ()
8468
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
8469
+ vector unsigned char evuc = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
8470
+ vector signed char evsc = {7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8};
8471
+ vector bool char evbc = {255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0};
8472
+ vector unsigned short evus = {7,6,5,4,3,2,1,0};
8473
+ vector signed short evss = {3,2,1,0,-1,-2,-3,-4};
8474
+ vector bool short evbs = {65535,0,65535,0,65535,0,65535,0};
8475
+ vector pixel evp = {7,6,5,4,3,2,1,0};
8476
+ vector unsigned int evui = {3,2,1,0};
8477
+ vector signed int evsi = {1,0,-1,-2};
8478
+ vector bool int evbi = {0xffffffff,0,0xffffffff,0};
8479
+ vector float evf = {3.0,2.0,1.0,0.0};
8481
+ vector unsigned char evuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8482
+ vector signed char evsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8483
+ vector bool char evbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
8484
+ vector unsigned short evus = {0,1,2,3,4,5,6,7};
8485
+ vector signed short evss = {-4,-3,-2,-1,0,1,2,3};
8486
+ vector bool short evbs = {0,65535,0,65535,0,65535,0,65535};
8487
+ vector pixel evp = {0,1,2,3,4,5,6,7};
8488
+ vector unsigned int evui = {0,1,2,3};
8489
+ vector signed int evsi = {-2,-1,0,1};
8490
+ vector bool int evbi = {0,0xffffffff,0,0xffffffff};
8491
+ vector float evf = {0.0,1.0,2.0,3.0};
8494
+ vector unsigned char vuc;
8495
+ vector signed char vsc;
8496
+ vector bool char vbc;
8497
+ vector unsigned short vus;
8498
+ vector signed short vss;
8499
+ vector bool short vbs;
8501
+ vector unsigned int vui;
8502
+ vector signed int vsi;
8503
+ vector bool int vbi;
8508
+ vuc = vec_ldl (0, (vector unsigned char *)svuc);
8509
+ vsc = vec_ldl (0, (vector signed char *)svsc);
8510
+ vbc = vec_ldl (0, (vector bool char *)svbc);
8511
+ vus = vec_ldl (0, (vector unsigned short *)svus);
8512
+ vss = vec_ldl (0, (vector signed short *)svss);
8513
+ vbs = vec_ldl (0, (vector bool short *)svbs);
8514
+ vp = vec_ldl (0, (vector pixel *)svp);
8515
+ vui = vec_ldl (0, (vector unsigned int *)svui);
8516
+ vsi = vec_ldl (0, (vector signed int *)svsi);
8517
+ vbi = vec_ldl (0, (vector bool int *)svbi);
8518
+ vf = vec_ldl (0, (vector float *)svf);
8520
+ check (vec_all_eq (vuc, evuc), "vuc");
8521
+ check (vec_all_eq (vsc, evsc), "vsc");
8522
+ check (vec_all_eq (vbc, evbc), "vbc");
8523
+ check (vec_all_eq (vus, evus), "vus");
8524
+ check (vec_all_eq (vss, evss), "vss");
8525
+ check (vec_all_eq (vbs, evbs), "vbs");
8526
+ check (vec_all_eq (vp, evp ), "vp" );
8527
+ check (vec_all_eq (vui, evui), "vui");
8528
+ check (vec_all_eq (vsi, evsi), "vsi");
8529
+ check (vec_all_eq (vbi, evbi), "vbi");
8530
+ check (vec_all_eq (vf, evf ), "vf" );
7730
8532
--- a/src/gcc/testsuite/gcc.dg/vmx/mult-even-odd.c
7731
8533
+++ b/src/gcc/testsuite/gcc.dg/vmx/mult-even-odd.c
7732
8534
@@ -0,0 +1,43 @@
7857
8659
+ check (vec_extract (vd, 1) == 1.0, "vd, 1");
8662
--- a/src/gcc/testsuite/gcc.dg/vmx/ld-be-order.c
8663
+++ b/src/gcc/testsuite/gcc.dg/vmx/ld-be-order.c
8665
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
8667
+#include "harness.h"
8669
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8670
+static signed char svsc[16] __attribute__ ((aligned (16)));
8671
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
8672
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8673
+static signed short svss[8] __attribute__ ((aligned (16)));
8674
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
8675
+static unsigned short svp[8] __attribute__ ((aligned (16)));
8676
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8677
+static signed int svsi[4] __attribute__ ((aligned (16)));
8678
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
8679
+static float svf[4] __attribute__ ((aligned (16)));
8681
+static void init ()
8684
+ for (i = 0; i < 16; ++i)
8688
+ svbc[i] = (i % 2) ? 0xff : 0;
8690
+ for (i = 0; i < 8; ++i)
8694
+ svbs[i] = (i % 2) ? 0xffff : 0;
8697
+ for (i = 0; i < 4; ++i)
8701
+ svbi[i] = (i % 2) ? 0xffffffff : 0;
8702
+ svf[i] = i * 1.0f;
8706
+static void test ()
8708
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
8709
+ vector unsigned char evuc = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};
8710
+ vector signed char evsc = {7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8};
8711
+ vector bool char evbc = {255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0};
8712
+ vector unsigned short evus = {7,6,5,4,3,2,1,0};
8713
+ vector signed short evss = {3,2,1,0,-1,-2,-3,-4};
8714
+ vector bool short evbs = {65535,0,65535,0,65535,0,65535,0};
8715
+ vector pixel evp = {7,6,5,4,3,2,1,0};
8716
+ vector unsigned int evui = {3,2,1,0};
8717
+ vector signed int evsi = {1,0,-1,-2};
8718
+ vector bool int evbi = {0xffffffff,0,0xffffffff,0};
8719
+ vector float evf = {3.0,2.0,1.0,0.0};
8721
+ vector unsigned char evuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8722
+ vector signed char evsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8723
+ vector bool char evbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
8724
+ vector unsigned short evus = {0,1,2,3,4,5,6,7};
8725
+ vector signed short evss = {-4,-3,-2,-1,0,1,2,3};
8726
+ vector bool short evbs = {0,65535,0,65535,0,65535,0,65535};
8727
+ vector pixel evp = {0,1,2,3,4,5,6,7};
8728
+ vector unsigned int evui = {0,1,2,3};
8729
+ vector signed int evsi = {-2,-1,0,1};
8730
+ vector bool int evbi = {0,0xffffffff,0,0xffffffff};
8731
+ vector float evf = {0.0,1.0,2.0,3.0};
8734
+ vector unsigned char vuc;
8735
+ vector signed char vsc;
8736
+ vector bool char vbc;
8737
+ vector unsigned short vus;
8738
+ vector signed short vss;
8739
+ vector bool short vbs;
8741
+ vector unsigned int vui;
8742
+ vector signed int vsi;
8743
+ vector bool int vbi;
8748
+ vuc = vec_ld (0, (vector unsigned char *)svuc);
8749
+ vsc = vec_ld (0, (vector signed char *)svsc);
8750
+ vbc = vec_ld (0, (vector bool char *)svbc);
8751
+ vus = vec_ld (0, (vector unsigned short *)svus);
8752
+ vss = vec_ld (0, (vector signed short *)svss);
8753
+ vbs = vec_ld (0, (vector bool short *)svbs);
8754
+ vp = vec_ld (0, (vector pixel *)svp);
8755
+ vui = vec_ld (0, (vector unsigned int *)svui);
8756
+ vsi = vec_ld (0, (vector signed int *)svsi);
8757
+ vbi = vec_ld (0, (vector bool int *)svbi);
8758
+ vf = vec_ld (0, (vector float *)svf);
8760
+ check (vec_all_eq (vuc, evuc), "vuc");
8761
+ check (vec_all_eq (vsc, evsc), "vsc");
8762
+ check (vec_all_eq (vbc, evbc), "vbc");
8763
+ check (vec_all_eq (vus, evus), "vus");
8764
+ check (vec_all_eq (vss, evss), "vss");
8765
+ check (vec_all_eq (vbs, evbs), "vbs");
8766
+ check (vec_all_eq (vp, evp ), "vp" );
8767
+ check (vec_all_eq (vui, evui), "vui");
8768
+ check (vec_all_eq (vsi, evsi), "vsi");
8769
+ check (vec_all_eq (vbi, evbi), "vbi");
8770
+ check (vec_all_eq (vf, evf ), "vf" );
8772
--- a/src/gcc/testsuite/gcc.dg/vmx/ld.c
8773
+++ b/src/gcc/testsuite/gcc.dg/vmx/ld.c
8775
+#include "harness.h"
8777
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8778
+static signed char svsc[16] __attribute__ ((aligned (16)));
8779
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
8780
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8781
+static signed short svss[8] __attribute__ ((aligned (16)));
8782
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
8783
+static unsigned short svp[8] __attribute__ ((aligned (16)));
8784
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8785
+static signed int svsi[4] __attribute__ ((aligned (16)));
8786
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
8787
+static float svf[4] __attribute__ ((aligned (16)));
8789
+static void init ()
8792
+ for (i = 0; i < 16; ++i)
8796
+ svbc[i] = (i % 2) ? 0xff : 0;
8798
+ for (i = 0; i < 8; ++i)
8802
+ svbs[i] = (i % 2) ? 0xffff : 0;
8805
+ for (i = 0; i < 4; ++i)
8809
+ svbi[i] = (i % 2) ? 0xffffffff : 0;
8810
+ svf[i] = i * 1.0f;
8814
+static void test ()
8816
+ vector unsigned char evuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8817
+ vector signed char evsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8818
+ vector bool char evbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
8819
+ vector unsigned short evus = {0,1,2,3,4,5,6,7};
8820
+ vector signed short evss = {-4,-3,-2,-1,0,1,2,3};
8821
+ vector bool short evbs = {0,65535,0,65535,0,65535,0,65535};
8822
+ vector pixel evp = {0,1,2,3,4,5,6,7};
8823
+ vector unsigned int evui = {0,1,2,3};
8824
+ vector signed int evsi = {-2,-1,0,1};
8825
+ vector bool int evbi = {0,0xffffffff,0,0xffffffff};
8826
+ vector float evf = {0.0,1.0,2.0,3.0};
8828
+ vector unsigned char vuc;
8829
+ vector signed char vsc;
8830
+ vector bool char vbc;
8831
+ vector unsigned short vus;
8832
+ vector signed short vss;
8833
+ vector bool short vbs;
8835
+ vector unsigned int vui;
8836
+ vector signed int vsi;
8837
+ vector bool int vbi;
8842
+ vuc = vec_ld (0, (vector unsigned char *)svuc);
8843
+ vsc = vec_ld (0, (vector signed char *)svsc);
8844
+ vbc = vec_ld (0, (vector bool char *)svbc);
8845
+ vus = vec_ld (0, (vector unsigned short *)svus);
8846
+ vss = vec_ld (0, (vector signed short *)svss);
8847
+ vbs = vec_ld (0, (vector bool short *)svbs);
8848
+ vp = vec_ld (0, (vector pixel *)svp);
8849
+ vui = vec_ld (0, (vector unsigned int *)svui);
8850
+ vsi = vec_ld (0, (vector signed int *)svsi);
8851
+ vbi = vec_ld (0, (vector bool int *)svbi);
8852
+ vf = vec_ld (0, (vector float *)svf);
8854
+ check (vec_all_eq (vuc, evuc), "vuc");
8855
+ check (vec_all_eq (vsc, evsc), "vsc");
8856
+ check (vec_all_eq (vbc, evbc), "vbc");
8857
+ check (vec_all_eq (vus, evus), "vus");
8858
+ check (vec_all_eq (vss, evss), "vss");
8859
+ check (vec_all_eq (vbs, evbs), "vbs");
8860
+ check (vec_all_eq (vp, evp ), "vp" );
8861
+ check (vec_all_eq (vui, evui), "vui");
8862
+ check (vec_all_eq (vsi, evsi), "vsi");
8863
+ check (vec_all_eq (vbi, evbi), "vbi");
8864
+ check (vec_all_eq (vf, evf ), "vf" );
7860
8866
--- a/src/gcc/testsuite/gcc.dg/vmx/sn7153.c
7861
8867
+++ b/src/gcc/testsuite/gcc.dg/vmx/sn7153.c
7862
8868
@@ -34,7 +34,11 @@
7872
8878
union {vector unsigned short v; unsigned short s[8];} u;
7873
8879
u.v = vec_mfvscr();
8880
--- a/src/gcc/testsuite/gcc.dg/vmx/stl.c
8881
+++ b/src/gcc/testsuite/gcc.dg/vmx/stl.c
8883
+#include "harness.h"
8885
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
8886
+static signed char svsc[16] __attribute__ ((aligned (16)));
8887
+static unsigned char svbc[16] __attribute__ ((aligned (16)));
8888
+static unsigned short svus[8] __attribute__ ((aligned (16)));
8889
+static signed short svss[8] __attribute__ ((aligned (16)));
8890
+static unsigned short svbs[8] __attribute__ ((aligned (16)));
8891
+static unsigned short svp[8] __attribute__ ((aligned (16)));
8892
+static unsigned int svui[4] __attribute__ ((aligned (16)));
8893
+static signed int svsi[4] __attribute__ ((aligned (16)));
8894
+static unsigned int svbi[4] __attribute__ ((aligned (16)));
8895
+static float svf[4] __attribute__ ((aligned (16)));
8897
+static void check_arrays ()
8900
+ for (i = 0; i < 16; ++i)
8902
+ check (svuc[i] == i, "svuc");
8903
+ check (svsc[i] == i - 8, "svsc");
8904
+ check (svbc[i] == ((i % 2) ? 0xff : 0), "svbc");
8906
+ for (i = 0; i < 8; ++i)
8908
+ check (svus[i] == i, "svus");
8909
+ check (svss[i] == i - 4, "svss");
8910
+ check (svbs[i] == ((i % 2) ? 0xffff : 0), "svbs");
8911
+ check (svp[i] == i, "svp");
8913
+ for (i = 0; i < 4; ++i)
8915
+ check (svui[i] == i, "svui");
8916
+ check (svsi[i] == i - 2, "svsi");
8917
+ check (svbi[i] == ((i % 2) ? 0xffffffff : 0), "svbi");
8918
+ check (svf[i] == i * 1.0f, "svf");
8922
+static void test ()
8924
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
8925
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
8926
+ vector bool char vbc = {0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255};
8927
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
8928
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
8929
+ vector bool short vbs = {0,65535,0,65535,0,65535,0,65535};
8930
+ vector pixel vp = {0,1,2,3,4,5,6,7};
8931
+ vector unsigned int vui = {0,1,2,3};
8932
+ vector signed int vsi = {-2,-1,0,1};
8933
+ vector bool int vbi = {0,0xffffffff,0,0xffffffff};
8934
+ vector float vf = {0.0,1.0,2.0,3.0};
8936
+ vec_stl (vuc, 0, (vector unsigned char *)svuc);
8937
+ vec_stl (vsc, 0, (vector signed char *)svsc);
8938
+ vec_stl (vbc, 0, (vector bool char *)svbc);
8939
+ vec_stl (vus, 0, (vector unsigned short *)svus);
8940
+ vec_stl (vss, 0, (vector signed short *)svss);
8941
+ vec_stl (vbs, 0, (vector bool short *)svbs);
8942
+ vec_stl (vp, 0, (vector pixel *)svp);
8943
+ vec_stl (vui, 0, (vector unsigned int *)svui);
8944
+ vec_stl (vsi, 0, (vector signed int *)svsi);
8945
+ vec_stl (vbi, 0, (vector bool int *)svbi);
8946
+ vec_stl (vf, 0, (vector float *)svf);
8950
--- a/src/gcc/testsuite/gcc.dg/vmx/st-vsx.c
8951
+++ b/src/gcc/testsuite/gcc.dg/vmx/st-vsx.c
8953
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
8954
+/* { dg-require-effective-target powerpc_vsx_ok } */
8955
+/* { dg-options "-maltivec -mabi=altivec -std=gnu99 -mvsx" } */
8957
+#include "harness.h"
8959
+static unsigned long svul[2] __attribute__ ((aligned (16)));
8960
+static double svd[2] __attribute__ ((aligned (16)));
8962
+static void check_arrays ()
8965
+ for (i = 0; i < 2; ++i)
8967
+ check (svul[i] == i, "svul");
8968
+ check (svd[i] == i * 1.0, "svd");
8972
+static void test ()
8974
+ vector unsigned long vul = {0,1};
8975
+ vector double vd = {0.0,1.0};
8977
+ vec_st (vul, 0, (vector unsigned long *)svul);
8978
+ vec_st (vd, 0, (vector double *)svd);
7874
8982
--- a/src/gcc/testsuite/gcc.dg/vmx/sum2s.c
7875
8983
+++ b/src/gcc/testsuite/gcc.dg/vmx/sum2s.c
7876
8984
@@ -0,0 +1,13 @@
8048
9156
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
8049
9157
+ vector signed int vb = {128,0,0,0};
9158
+ vector signed int evd = {136,0,0,0};
8051
9160
+ vector signed int vb = {0,0,0,128};
9161
+ vector signed int evd = {0,0,0,136};
8054
9164
+ vector signed int vd = vec_sums (va, vb);
8055
+ signed int r = vec_extract (vd, 3);
8057
+ check (r == 136, "sums");
9166
+ check (vec_all_eq (vd, evd), "sums");
9168
--- a/src/gcc/testsuite/gcc.dg/vmx/ldl-vsx.c
9169
+++ b/src/gcc/testsuite/gcc.dg/vmx/ldl-vsx.c
9171
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
9172
+/* { dg-require-effective-target powerpc_vsx_ok } */
9173
+/* { dg-options "-maltivec -mabi=altivec -std=gnu99 -mvsx" } */
9175
+#include "harness.h"
9177
+static unsigned long svul[2] __attribute__ ((aligned (16)));
9178
+static double svd[2] __attribute__ ((aligned (16)));
9180
+static void init ()
9183
+ for (i = 0; i < 2; ++i)
9190
+static void test ()
9192
+ vector unsigned long evul = {0,1};
9193
+ vector double evd = {0.0,1.0};
9195
+ vector unsigned long vul;
9200
+ vul = vec_ldl (0, (vector unsigned long *)svul);
9201
+ vd = vec_ldl (0, (vector double *)svd);
9203
+ check (vec_all_eq (vul, evul), "vul");
9204
+ check (vec_all_eq (vd, evd ), "vd" );
9206
--- a/src/gcc/testsuite/gcc.dg/vmx/ste.c
9207
+++ b/src/gcc/testsuite/gcc.dg/vmx/ste.c
9209
+#include "harness.h"
9211
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
9212
+static signed char svsc[16] __attribute__ ((aligned (16)));
9213
+static unsigned short svus[8] __attribute__ ((aligned (16)));
9214
+static signed short svss[8] __attribute__ ((aligned (16)));
9215
+static unsigned int svui[4] __attribute__ ((aligned (16)));
9216
+static signed int svsi[4] __attribute__ ((aligned (16)));
9217
+static float svf[4] __attribute__ ((aligned (16)));
9219
+static void check_arrays ()
9221
+ check (svuc[9] == 9, "svuc");
9222
+ check (svsc[14] == 6, "svsc");
9223
+ check (svus[7] == 7, "svus");
9224
+ check (svss[1] == -3, "svss");
9225
+ check (svui[3] == 3, "svui");
9226
+ check (svsi[2] == 0, "svsi");
9227
+ check (svf[0] == 0.0, "svf");
9230
+static void test ()
9232
+ vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
9233
+ vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
9234
+ vector unsigned short vus = {0,1,2,3,4,5,6,7};
9235
+ vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
9236
+ vector unsigned int vui = {0,1,2,3};
9237
+ vector signed int vsi = {-2,-1,0,1};
9238
+ vector float vf = {0.0,1.0,2.0,3.0};
9240
+ vec_ste (vuc, 9*1, (unsigned char *)svuc);
9241
+ vec_ste (vsc, 14*1, (signed char *)svsc);
9242
+ vec_ste (vus, 7*2, (unsigned short *)svus);
9243
+ vec_ste (vss, 1*2, (signed short *)svss);
9244
+ vec_ste (vui, 3*4, (unsigned int *)svui);
9245
+ vec_ste (vsi, 2*4, (signed int *)svsi);
9246
+ vec_ste (vf, 0*4, (float *)svf);
9250
--- a/src/gcc/testsuite/gcc.dg/vmx/lde-be-order.c
9251
+++ b/src/gcc/testsuite/gcc.dg/vmx/lde-be-order.c
9253
+/* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
9255
+#include "harness.h"
9257
+static unsigned char svuc[16] __attribute__ ((aligned (16)));
9258
+static signed char svsc[16] __attribute__ ((aligned (16)));
9259
+static unsigned short svus[8] __attribute__ ((aligned (16)));
9260
+static signed short svss[8] __attribute__ ((aligned (16)));
9261
+static unsigned int svui[4] __attribute__ ((aligned (16)));
9262
+static signed int svsi[4] __attribute__ ((aligned (16)));
9263
+static float svf[4] __attribute__ ((aligned (16)));
9265
+static void init ()
9268
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
9269
+ for (i = 15; i >= 0; --i)
9271
+ for (i = 0; i < 16; ++i)
9277
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
9278
+ for (i = 7; i >= 0; --i)
9280
+ for (i = 0; i < 8; ++i)
9286
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
9287
+ for (i = 3; i >= 0; --i)
9289
+ for (i = 0; i < 4; ++i)
9294
+ svf[i] = i * 1.0f;
9298
+static void test ()
9300
+ vector unsigned char vuc;
9301
+ vector signed char vsc;
9302
+ vector unsigned short vus;
9303
+ vector signed short vss;
9304
+ vector unsigned int vui;
9305
+ vector signed int vsi;
9310
+ vuc = vec_lde (9*1, (unsigned char *)svuc);
9311
+ vsc = vec_lde (14*1, (signed char *)svsc);
9312
+ vus = vec_lde (7*2, (unsigned short *)svus);
9313
+ vss = vec_lde (1*2, (signed short *)svss);
9314
+ vui = vec_lde (3*4, (unsigned int *)svui);
9315
+ vsi = vec_lde (2*4, (signed int *)svsi);
9316
+ vf = vec_lde (0*4, (float *)svf);
9318
+ check (vec_extract (vuc, 9) == 9, "vuc");
9319
+ check (vec_extract (vsc, 14) == 6, "vsc");
9320
+ check (vec_extract (vus, 7) == 7, "vus");
9321
+ check (vec_extract (vss, 1) == -3, "vss");
9322
+ check (vec_extract (vui, 3) == 3, "vui");
9323
+ check (vec_extract (vsi, 2) == 0, "vsi");
9324
+ check (vec_extract (vf, 0) == 0.0, "vf");
8059
9326
--- a/src/gcc/testsuite/gcc.dg/vmx/splat-vsx.c
8060
9327
+++ b/src/gcc/testsuite/gcc.dg/vmx/splat-vsx.c
14093
15511
{ ALTIVEC_BUILTIN_VEC_CMPLT, ALTIVEC_BUILTIN_VCMPGTFP,
14094
15512
RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
14095
15513
{ ALTIVEC_BUILTIN_VEC_CMPLT, VSX_BUILTIN_XVCMPGTDP,
15514
@@ -1045,54 +1106,54 @@
15515
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
15516
{ VSX_BUILTIN_VEC_DIV, VSX_BUILTIN_XVDIVDP,
15517
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
15518
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15519
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DF,
15520
RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 },
15521
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15522
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI,
15523
RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 },
15524
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15525
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI,
15526
RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI,
15527
~RS6000_BTI_unsigned_V2DI, 0 },
15528
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15529
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI,
15530
RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 },
15531
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15532
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SF,
15533
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 },
15534
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15535
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SF,
15536
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 },
15537
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15538
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15539
RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 },
15540
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15541
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15542
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 },
15543
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15544
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15545
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 },
15546
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15547
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15548
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 },
15549
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15550
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15551
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 },
15552
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15553
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15554
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 },
15555
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15556
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SI,
15557
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 },
15558
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15559
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15560
RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 },
15561
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15562
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15563
RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 },
15564
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15565
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15566
RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 },
15567
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15568
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15569
RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 },
15570
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15571
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15572
RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 },
15573
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15574
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V8HI,
15575
RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 },
15576
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15577
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V16QI,
15578
RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 },
15579
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15580
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V16QI,
15581
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 },
15582
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15583
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V16QI,
15584
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 },
15585
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15586
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V16QI,
15587
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI, 0 },
15588
- { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX,
15589
+ { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V16QI,
15590
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 },
15591
{ ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEBX,
15592
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 },
15593
@@ -1130,55 +1191,55 @@
15594
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 },
15595
{ ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX,
15596
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 },
15597
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15598
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF,
15599
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 },
15600
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15601
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF,
15602
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 },
15603
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15604
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15605
RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 },
15606
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15607
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15608
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 },
15609
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15610
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15611
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 },
15612
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15613
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15614
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 },
15615
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15616
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15617
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 },
15618
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15619
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15620
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 },
15621
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15622
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI,
15623
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 },
15624
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15625
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15626
RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 },
15627
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15628
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15629
RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 },
15630
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15631
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15632
RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 },
15633
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15634
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15635
RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 },
15636
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15637
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15638
RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 },
15639
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15640
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI,
15641
RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 },
15642
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15643
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI,
15644
RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 },
15645
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15646
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI,
15647
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 },
15648
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15649
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI,
15650
RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 },
15651
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15652
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI,
15653
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI,
15654
~RS6000_BTI_unsigned_V16QI, 0 },
15655
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15656
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI,
15657
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 },
15658
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15659
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DF,
15660
RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 },
15661
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15662
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI,
15663
RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 },
15664
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15665
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI,
15666
RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI,
15667
~RS6000_BTI_unsigned_V2DI, 0 },
15668
- { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL,
15669
+ { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI,
15670
RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 },
15671
{ ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL,
15672
RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 },
14096
15673
@@ -1418,6 +1479,18 @@
14097
15674
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
14098
15675
{ ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW,
14227
15804
{ ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBFP,
14228
15805
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
14229
15806
{ ALTIVEC_BUILTIN_VEC_SUB, VSX_BUILTIN_XVSUBDP,
15807
@@ -2730,63 +2855,63 @@
15808
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE },
15809
{ ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI,
15810
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_NOT_OPAQUE },
15811
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15812
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF,
15813
RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF },
15814
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15815
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
15816
RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI },
15817
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15818
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
15819
RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI,
15820
~RS6000_BTI_unsigned_V2DI },
15821
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15822
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
15823
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
15824
~RS6000_BTI_bool_V2DI },
15825
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15826
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SF,
15827
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF },
15828
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15829
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SF,
15830
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float },
15831
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15832
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15833
RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI },
15834
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15835
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15836
RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
15837
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15838
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15839
RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI },
15840
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15841
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15842
RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
15843
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15844
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15845
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI },
15846
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15847
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15848
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
15849
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15850
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SI,
15851
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
15852
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15853
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15854
RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI },
15855
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15856
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15857
RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI },
15858
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15859
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15860
RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI },
15861
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15862
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15863
RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI },
15864
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15865
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15866
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI },
15867
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15868
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15869
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI },
15870
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15871
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15872
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI },
15873
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15874
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15875
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI },
15876
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15877
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15878
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI },
15879
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15880
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15881
RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI },
15882
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15883
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15884
RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI },
15885
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15886
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15887
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI },
15888
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15889
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15890
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI },
15891
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15892
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V16QI,
15893
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI },
15894
- { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX,
15895
+ { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V8HI,
15896
RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI },
15897
{ ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEBX,
15898
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI },
15899
@@ -2858,64 +2983,64 @@
15900
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_void },
15901
{ ALTIVEC_BUILTIN_VEC_STVEBX, ALTIVEC_BUILTIN_STVEBX,
15902
RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_void },
15903
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15904
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SF,
15905
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF },
15906
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15907
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SF,
15908
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float },
15909
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15910
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15911
RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI },
15912
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15913
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15914
RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
15915
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15916
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15917
RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI },
15918
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15919
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15920
RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
15921
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15922
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15923
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI },
15924
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15925
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15926
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
15927
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15928
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V4SI,
15929
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
15930
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15931
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15932
RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI },
15933
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15934
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15935
RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI },
15936
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15937
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15938
RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI },
15939
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15940
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15941
RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI },
15942
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15943
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15944
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI },
15945
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15946
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15947
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI },
15948
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15949
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15950
RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI },
15951
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15952
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15953
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI },
15954
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15955
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15956
RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI },
15957
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15958
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15959
RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI },
15960
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15961
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15962
RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI },
15963
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15964
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15965
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI },
15966
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15967
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15968
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI },
15969
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15970
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V16QI,
15971
RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI },
15972
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15973
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V8HI,
15974
RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI },
15975
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15976
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V2DF,
15977
RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF },
15978
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15979
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V2DF,
15980
RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double },
15981
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15982
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V2DI,
15983
RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI },
15984
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15985
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V2DI,
15986
RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI,
15987
~RS6000_BTI_unsigned_V2DI },
15988
- { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL,
15989
+ { ALTIVEC_BUILTIN_VEC_STL, ALTIVEC_BUILTIN_STVXL_V2DI,
15990
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
15991
~RS6000_BTI_bool_V2DI },
15992
{ ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_STVLX,
14230
15993
@@ -3327,6 +3452,20 @@
14231
15994
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI },
14232
15995
{ ALTIVEC_BUILTIN_VEC_VCMPEQ_P, ALTIVEC_BUILTIN_VCMPEQUW_P,
18246
20009
/* Return true if a builtin function is overloaded. */
18248
20011
rs6000_overloaded_builtin_p (enum rs6000_builtins fncode)
18249
@@ -10352,7 +11901,198 @@
20012
@@ -10190,7 +11739,101 @@
20016
+/* Return a constant vector for use as a little-endian permute control vector
20017
+ to reverse the order of elements of the given vector mode. */
20019
+swap_selector_for_mode (enum machine_mode mode)
20021
+ /* These are little endian vectors, so their elements are reversed
20022
+ from what you would normally expect for a permute control vector. */
20023
+ unsigned int swap2[16] = {7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8};
20024
+ unsigned int swap4[16] = {3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12};
20025
+ unsigned int swap8[16] = {1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14};
20026
+ unsigned int swap16[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
20027
+ unsigned int *swaparray, i;
20034
+ swaparray = swap2;
20038
+ swaparray = swap4;
20041
+ swaparray = swap8;
20044
+ swaparray = swap16;
20047
+ gcc_unreachable ();
20050
+ for (i = 0; i < 16; ++i)
20051
+ perm[i] = GEN_INT (swaparray[i]);
20053
+ return force_reg (V16QImode, gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, perm)));
20056
+/* Generate code for an "lvx", "lvxl", or "lve*x" built-in for a little endian target
20057
+ with -maltivec=be specified. Issue the load followed by an element-reversing
20060
+altivec_expand_lvx_be (rtx op0, rtx op1, enum machine_mode mode, unsigned unspec)
20062
+ rtx tmp = gen_reg_rtx (mode);
20063
+ rtx load = gen_rtx_SET (VOIDmode, tmp, op1);
20064
+ rtx lvx = gen_rtx_UNSPEC (mode, gen_rtvec (1, const0_rtx), unspec);
20065
+ rtx par = gen_rtx_PARALLEL (mode, gen_rtvec (2, load, lvx));
20066
+ rtx sel = swap_selector_for_mode (mode);
20067
+ rtx vperm = gen_rtx_UNSPEC (mode, gen_rtvec (3, tmp, tmp, sel), UNSPEC_VPERM);
20069
+ gcc_assert (REG_P (op0));
20071
+ emit_insn (gen_rtx_SET (VOIDmode, op0, vperm));
20074
+/* Generate code for a "stvx" or "stvxl" built-in for a little endian target
20075
+ with -maltivec=be specified. Issue the store preceded by an element-reversing
20078
+altivec_expand_stvx_be (rtx op0, rtx op1, enum machine_mode mode, unsigned unspec)
20080
+ rtx tmp = gen_reg_rtx (mode);
20081
+ rtx store = gen_rtx_SET (VOIDmode, op0, tmp);
20082
+ rtx stvx = gen_rtx_UNSPEC (mode, gen_rtvec (1, const0_rtx), unspec);
20083
+ rtx par = gen_rtx_PARALLEL (mode, gen_rtvec (2, store, stvx));
20084
+ rtx sel = swap_selector_for_mode (mode);
20087
+ gcc_assert (REG_P (op1));
20088
+ vperm = gen_rtx_UNSPEC (mode, gen_rtvec (3, op1, op1, sel), UNSPEC_VPERM);
20089
+ emit_insn (gen_rtx_SET (VOIDmode, tmp, vperm));
20093
+/* Generate code for a "stve*x" built-in for a little endian target with -maltivec=be
20094
+ specified. Issue the store preceded by an element-reversing permute. */
20096
+altivec_expand_stvex_be (rtx op0, rtx op1, enum machine_mode mode, unsigned unspec)
20098
+ enum machine_mode inner_mode = GET_MODE_INNER (mode);
20099
+ rtx tmp = gen_reg_rtx (mode);
20100
+ rtx stvx = gen_rtx_UNSPEC (inner_mode, gen_rtvec (1, tmp), unspec);
20101
+ rtx sel = swap_selector_for_mode (mode);
20104
+ gcc_assert (REG_P (op1));
20105
+ vperm = gen_rtx_UNSPEC (mode, gen_rtvec (3, op1, op1, sel), UNSPEC_VPERM);
20106
+ emit_insn (gen_rtx_SET (VOIDmode, tmp, vperm));
20107
+ emit_insn (gen_rtx_SET (VOIDmode, op0, stvx));
20111
altivec_expand_lv_builtin (enum insn_code icode, tree exp, rtx target, bool blk)
20114
@@ -10352,7 +11995,198 @@
18250
20115
return NULL_RTX;
18474
20339
if (target == 0
18475
20340
|| GET_MODE (target) != tmode
18476
20341
|| ! (*insn_data[icode].operand[0].predicate) (target, tmode))
18477
@@ -11412,6 +13173,8 @@
20342
@@ -10770,16 +12625,38 @@
20346
+ case ALTIVEC_BUILTIN_STVX_V2DF:
20347
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2df, exp);
20348
+ case ALTIVEC_BUILTIN_STVX_V2DI:
20349
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2di, exp);
20350
+ case ALTIVEC_BUILTIN_STVX_V4SF:
20351
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4sf, exp);
20352
case ALTIVEC_BUILTIN_STVX:
20353
+ case ALTIVEC_BUILTIN_STVX_V4SI:
20354
return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4si, exp);
20355
+ case ALTIVEC_BUILTIN_STVX_V8HI:
20356
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v8hi, exp);
20357
+ case ALTIVEC_BUILTIN_STVX_V16QI:
20358
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v16qi, exp);
20359
case ALTIVEC_BUILTIN_STVEBX:
20360
return altivec_expand_stv_builtin (CODE_FOR_altivec_stvebx, exp);
20361
case ALTIVEC_BUILTIN_STVEHX:
20362
return altivec_expand_stv_builtin (CODE_FOR_altivec_stvehx, exp);
20363
case ALTIVEC_BUILTIN_STVEWX:
20364
return altivec_expand_stv_builtin (CODE_FOR_altivec_stvewx, exp);
20365
+ case ALTIVEC_BUILTIN_STVXL_V2DF:
20366
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v2df, exp);
20367
+ case ALTIVEC_BUILTIN_STVXL_V2DI:
20368
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v2di, exp);
20369
+ case ALTIVEC_BUILTIN_STVXL_V4SF:
20370
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v4sf, exp);
20371
case ALTIVEC_BUILTIN_STVXL:
20372
- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl, exp);
20373
+ case ALTIVEC_BUILTIN_STVXL_V4SI:
20374
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v4si, exp);
20375
+ case ALTIVEC_BUILTIN_STVXL_V8HI:
20376
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v8hi, exp);
20377
+ case ALTIVEC_BUILTIN_STVXL_V16QI:
20378
+ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvxl_v16qi, exp);
20380
case ALTIVEC_BUILTIN_STVLX:
20381
return altivec_expand_stv_builtin (CODE_FOR_altivec_stvlx, exp);
20382
@@ -10923,12 +12800,44 @@
20383
case ALTIVEC_BUILTIN_LVEWX:
20384
return altivec_expand_lv_builtin (CODE_FOR_altivec_lvewx,
20385
exp, target, false);
20386
+ case ALTIVEC_BUILTIN_LVXL_V2DF:
20387
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v2df,
20388
+ exp, target, false);
20389
+ case ALTIVEC_BUILTIN_LVXL_V2DI:
20390
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v2di,
20391
+ exp, target, false);
20392
+ case ALTIVEC_BUILTIN_LVXL_V4SF:
20393
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v4sf,
20394
+ exp, target, false);
20395
case ALTIVEC_BUILTIN_LVXL:
20396
- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl,
20397
+ case ALTIVEC_BUILTIN_LVXL_V4SI:
20398
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v4si,
20399
exp, target, false);
20400
+ case ALTIVEC_BUILTIN_LVXL_V8HI:
20401
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v8hi,
20402
+ exp, target, false);
20403
+ case ALTIVEC_BUILTIN_LVXL_V16QI:
20404
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v16qi,
20405
+ exp, target, false);
20406
+ case ALTIVEC_BUILTIN_LVX_V2DF:
20407
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2df,
20408
+ exp, target, false);
20409
+ case ALTIVEC_BUILTIN_LVX_V2DI:
20410
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2di,
20411
+ exp, target, false);
20412
+ case ALTIVEC_BUILTIN_LVX_V4SF:
20413
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4sf,
20414
+ exp, target, false);
20415
case ALTIVEC_BUILTIN_LVX:
20416
+ case ALTIVEC_BUILTIN_LVX_V4SI:
20417
return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4si,
20418
exp, target, false);
20419
+ case ALTIVEC_BUILTIN_LVX_V8HI:
20420
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v8hi,
20421
+ exp, target, false);
20422
+ case ALTIVEC_BUILTIN_LVX_V16QI:
20423
+ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v16qi,
20424
+ exp, target, false);
20425
case ALTIVEC_BUILTIN_LVLX:
20426
return altivec_expand_lv_builtin (CODE_FOR_altivec_lvlx,
20427
exp, target, true);
20428
@@ -11412,6 +13321,8 @@
18478
20429
error ("Builtin function %s is only valid for the cell processor", name);
18479
20430
else if ((fnmask & RS6000_BTM_VSX) != 0)
18480
20431
error ("Builtin function %s requires the -mvsx option", name);
18538
20489
tree v4si_ftype_v4si
18539
20490
= build_function_type_list (V4SI_type_node, V4SI_type_node, NULL_TREE);
18540
20491
tree v8hi_ftype_v8hi
18541
@@ -12335,6 +14115,9 @@
20492
@@ -12225,10 +14153,58 @@
20493
def_builtin ("__builtin_altivec_lvehx", v8hi_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVEHX);
20494
def_builtin ("__builtin_altivec_lvewx", v4si_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVEWX);
20495
def_builtin ("__builtin_altivec_lvxl", v4si_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVXL);
20496
+ def_builtin ("__builtin_altivec_lvxl_v2df", v2df_ftype_long_pcvoid,
20497
+ ALTIVEC_BUILTIN_LVXL_V2DF);
20498
+ def_builtin ("__builtin_altivec_lvxl_v2di", v2di_ftype_long_pcvoid,
20499
+ ALTIVEC_BUILTIN_LVXL_V2DI);
20500
+ def_builtin ("__builtin_altivec_lvxl_v4sf", v4sf_ftype_long_pcvoid,
20501
+ ALTIVEC_BUILTIN_LVXL_V4SF);
20502
+ def_builtin ("__builtin_altivec_lvxl_v4si", v4si_ftype_long_pcvoid,
20503
+ ALTIVEC_BUILTIN_LVXL_V4SI);
20504
+ def_builtin ("__builtin_altivec_lvxl_v8hi", v8hi_ftype_long_pcvoid,
20505
+ ALTIVEC_BUILTIN_LVXL_V8HI);
20506
+ def_builtin ("__builtin_altivec_lvxl_v16qi", v16qi_ftype_long_pcvoid,
20507
+ ALTIVEC_BUILTIN_LVXL_V16QI);
20508
def_builtin ("__builtin_altivec_lvx", v4si_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVX);
20509
+ def_builtin ("__builtin_altivec_lvx_v2df", v2df_ftype_long_pcvoid,
20510
+ ALTIVEC_BUILTIN_LVX_V2DF);
20511
+ def_builtin ("__builtin_altivec_lvx_v2di", v2di_ftype_long_pcvoid,
20512
+ ALTIVEC_BUILTIN_LVX_V2DI);
20513
+ def_builtin ("__builtin_altivec_lvx_v4sf", v4sf_ftype_long_pcvoid,
20514
+ ALTIVEC_BUILTIN_LVX_V4SF);
20515
+ def_builtin ("__builtin_altivec_lvx_v4si", v4si_ftype_long_pcvoid,
20516
+ ALTIVEC_BUILTIN_LVX_V4SI);
20517
+ def_builtin ("__builtin_altivec_lvx_v8hi", v8hi_ftype_long_pcvoid,
20518
+ ALTIVEC_BUILTIN_LVX_V8HI);
20519
+ def_builtin ("__builtin_altivec_lvx_v16qi", v16qi_ftype_long_pcvoid,
20520
+ ALTIVEC_BUILTIN_LVX_V16QI);
20521
def_builtin ("__builtin_altivec_stvx", void_ftype_v4si_long_pvoid, ALTIVEC_BUILTIN_STVX);
20522
+ def_builtin ("__builtin_altivec_stvx_v2df", void_ftype_v2df_long_pvoid,
20523
+ ALTIVEC_BUILTIN_STVX_V2DF);
20524
+ def_builtin ("__builtin_altivec_stvx_v2di", void_ftype_v2di_long_pvoid,
20525
+ ALTIVEC_BUILTIN_STVX_V2DI);
20526
+ def_builtin ("__builtin_altivec_stvx_v4sf", void_ftype_v4sf_long_pvoid,
20527
+ ALTIVEC_BUILTIN_STVX_V4SF);
20528
+ def_builtin ("__builtin_altivec_stvx_v4si", void_ftype_v4si_long_pvoid,
20529
+ ALTIVEC_BUILTIN_STVX_V4SI);
20530
+ def_builtin ("__builtin_altivec_stvx_v8hi", void_ftype_v8hi_long_pvoid,
20531
+ ALTIVEC_BUILTIN_STVX_V8HI);
20532
+ def_builtin ("__builtin_altivec_stvx_v16qi", void_ftype_v16qi_long_pvoid,
20533
+ ALTIVEC_BUILTIN_STVX_V16QI);
20534
def_builtin ("__builtin_altivec_stvewx", void_ftype_v4si_long_pvoid, ALTIVEC_BUILTIN_STVEWX);
20535
def_builtin ("__builtin_altivec_stvxl", void_ftype_v4si_long_pvoid, ALTIVEC_BUILTIN_STVXL);
20536
+ def_builtin ("__builtin_altivec_stvxl_v2df", void_ftype_v2df_long_pvoid,
20537
+ ALTIVEC_BUILTIN_STVXL_V2DF);
20538
+ def_builtin ("__builtin_altivec_stvxl_v2di", void_ftype_v2di_long_pvoid,
20539
+ ALTIVEC_BUILTIN_STVXL_V2DI);
20540
+ def_builtin ("__builtin_altivec_stvxl_v4sf", void_ftype_v4sf_long_pvoid,
20541
+ ALTIVEC_BUILTIN_STVXL_V4SF);
20542
+ def_builtin ("__builtin_altivec_stvxl_v4si", void_ftype_v4si_long_pvoid,
20543
+ ALTIVEC_BUILTIN_STVXL_V4SI);
20544
+ def_builtin ("__builtin_altivec_stvxl_v8hi", void_ftype_v8hi_long_pvoid,
20545
+ ALTIVEC_BUILTIN_STVXL_V8HI);
20546
+ def_builtin ("__builtin_altivec_stvxl_v16qi", void_ftype_v16qi_long_pvoid,
20547
+ ALTIVEC_BUILTIN_STVXL_V16QI);
20548
def_builtin ("__builtin_altivec_stvebx", void_ftype_v16qi_long_pvoid, ALTIVEC_BUILTIN_STVEBX);
20549
def_builtin ("__builtin_altivec_stvehx", void_ftype_v8hi_long_pvoid, ALTIVEC_BUILTIN_STVEHX);
20550
def_builtin ("__builtin_vec_ld", opaque_ftype_long_pcvoid, ALTIVEC_BUILTIN_VEC_LD);
20551
@@ -12335,6 +14311,9 @@
18542
20552
case VOIDmode:
18543
20553
type = int_ftype_int_opaque_opaque;
26435
28445
"vcmpgtu<VI_char>. %0,%1,%2"
26436
28446
[(set_attr "type" "veccmp")])
26438
@@ -1779,20 +2394,28 @@
28448
@@ -1710,12 +2325,26 @@
28449
;; Parallel some of the LVE* and STV*'s with unspecs because some have
28450
;; identical rtl but different instructions-- and gcc gets confused.
28452
-(define_insn "altivec_lve<VI_char>x"
28453
+(define_expand "altivec_lve<VI_char>x"
28455
[(set (match_operand:VI 0 "register_operand" "=v")
28456
(match_operand:VI 1 "memory_operand" "Z"))
28457
(unspec [(const_int 0)] UNSPEC_LVE)])]
28460
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28462
+ altivec_expand_lvx_be (operands[0], operands[1], <MODE>mode, UNSPEC_LVE);
28467
+(define_insn "*altivec_lve<VI_char>x_internal"
28469
+ [(set (match_operand:VI 0 "register_operand" "=v")
28470
+ (match_operand:VI 1 "memory_operand" "Z"))
28471
+ (unspec [(const_int 0)] UNSPEC_LVE)])]
28473
"lve<VI_char>x %0,%y1"
28474
[(set_attr "type" "vecload")])
28476
@@ -1728,46 +2357,114 @@
28478
[(set_attr "type" "vecload")])
28480
-(define_insn "altivec_lvxl"
28481
+(define_expand "altivec_lvxl_<mode>"
28483
- [(set (match_operand:V4SI 0 "register_operand" "=v")
28484
- (match_operand:V4SI 1 "memory_operand" "Z"))
28485
+ [(set (match_operand:VM2 0 "register_operand" "=v")
28486
+ (match_operand:VM2 1 "memory_operand" "Z"))
28487
(unspec [(const_int 0)] UNSPEC_SET_VSCR)])]
28491
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28493
+ altivec_expand_lvx_be (operands[0], operands[1], <MODE>mode, UNSPEC_SET_VSCR);
28498
+(define_insn "*altivec_lvxl_<mode>_internal"
28500
+ [(set (match_operand:VM2 0 "register_operand" "=v")
28501
+ (match_operand:VM2 1 "memory_operand" "Z"))
28502
+ (unspec [(const_int 0)] UNSPEC_SET_VSCR)])]
28505
[(set_attr "type" "vecload")])
28507
-(define_insn "altivec_lvx_<mode>"
28508
+(define_expand "altivec_lvx_<mode>"
28510
[(set (match_operand:VM2 0 "register_operand" "=v")
28511
(match_operand:VM2 1 "memory_operand" "Z"))
28512
(unspec [(const_int 0)] UNSPEC_LVX)])]
28515
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28517
+ altivec_expand_lvx_be (operands[0], operands[1], <MODE>mode, UNSPEC_LVX);
28522
+(define_insn "*altivec_lvx_<mode>_internal"
28524
+ [(set (match_operand:VM2 0 "register_operand" "=v")
28525
+ (match_operand:VM2 1 "memory_operand" "Z"))
28526
+ (unspec [(const_int 0)] UNSPEC_LVX)])]
28529
[(set_attr "type" "vecload")])
28531
-(define_insn "altivec_stvx_<mode>"
28532
+(define_expand "altivec_stvx_<mode>"
28534
[(set (match_operand:VM2 0 "memory_operand" "=Z")
28535
(match_operand:VM2 1 "register_operand" "v"))
28536
(unspec [(const_int 0)] UNSPEC_STVX)])]
28539
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28541
+ altivec_expand_stvx_be (operands[0], operands[1], <MODE>mode, UNSPEC_STVX);
28546
+(define_insn "*altivec_stvx_<mode>_internal"
28548
+ [(set (match_operand:VM2 0 "memory_operand" "=Z")
28549
+ (match_operand:VM2 1 "register_operand" "v"))
28550
+ (unspec [(const_int 0)] UNSPEC_STVX)])]
28553
[(set_attr "type" "vecstore")])
28555
-(define_insn "altivec_stvxl"
28556
+(define_expand "altivec_stvxl_<mode>"
28558
- [(set (match_operand:V4SI 0 "memory_operand" "=Z")
28559
- (match_operand:V4SI 1 "register_operand" "v"))
28560
+ [(set (match_operand:VM2 0 "memory_operand" "=Z")
28561
+ (match_operand:VM2 1 "register_operand" "v"))
28562
(unspec [(const_int 0)] UNSPEC_STVXL)])]
28565
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28567
+ altivec_expand_stvx_be (operands[0], operands[1], <MODE>mode, UNSPEC_STVXL);
28572
+(define_insn "*altivec_stvxl_<mode>_internal"
28574
+ [(set (match_operand:VM2 0 "memory_operand" "=Z")
28575
+ (match_operand:VM2 1 "register_operand" "v"))
28576
+ (unspec [(const_int 0)] UNSPEC_STVXL)])]
28579
[(set_attr "type" "vecstore")])
28581
-(define_insn "altivec_stve<VI_char>x"
28582
+(define_expand "altivec_stve<VI_char>x"
28583
[(set (match_operand:<VI_scalar> 0 "memory_operand" "=Z")
28584
(unspec:<VI_scalar> [(match_operand:VI 1 "register_operand" "v")] UNSPEC_STVE))]
28587
+ if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
28589
+ altivec_expand_stvex_be (operands[0], operands[1], <MODE>mode, UNSPEC_STVE);
28594
+(define_insn "*altivec_stve<VI_char>x_internal"
28595
+ [(set (match_operand:<VI_scalar> 0 "memory_operand" "=Z")
28596
+ (unspec:<VI_scalar> [(match_operand:VI 1 "register_operand" "v")] UNSPEC_STVE))]
28598
"stve<VI_char>x %1,%y0"
28599
[(set_attr "type" "vecstore")])
28601
@@ -1779,20 +2476,28 @@
26439
28602
[(set_attr "type" "vecstore")])
26719
28891
emit_insn (gen_vec_initv16qi (mask, gen_rtx_PARALLEL (V16QImode, v)));
26720
28892
emit_insn (gen_vperm_v8hiv4si (operands[0], operands[1], vzero, mask));
26721
@@ -2166,9 +2763,18 @@
26722
rtx ve = gen_reg_rtx (V8HImode);
26723
rtx vo = gen_reg_rtx (V8HImode);
26725
- emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
26726
- emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
26727
- emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
26728
+ if (BYTES_BIG_ENDIAN)
26730
+ emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
26731
+ emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
26732
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], ve, vo));
26736
+ emit_insn (gen_altivec_vmuloub (ve, operands[1], operands[2]));
26737
+ emit_insn (gen_altivec_vmuleub (vo, operands[1], operands[2]));
26738
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], vo, ve));
26743
@@ -2183,9 +2789,18 @@
26744
rtx ve = gen_reg_rtx (V8HImode);
26745
rtx vo = gen_reg_rtx (V8HImode);
26747
- emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
26748
- emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
26749
- emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
26750
+ if (BYTES_BIG_ENDIAN)
26752
+ emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
26753
+ emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
26754
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], ve, vo));
26758
+ emit_insn (gen_altivec_vmuloub (ve, operands[1], operands[2]));
26759
+ emit_insn (gen_altivec_vmuleub (vo, operands[1], operands[2]));
26760
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], vo, ve));
26765
@@ -2200,9 +2815,18 @@
26766
rtx ve = gen_reg_rtx (V8HImode);
26767
rtx vo = gen_reg_rtx (V8HImode);
26769
- emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
26770
- emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
26771
- emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
26772
+ if (BYTES_BIG_ENDIAN)
26774
+ emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
26775
+ emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
26776
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], ve, vo));
26780
+ emit_insn (gen_altivec_vmulosb (ve, operands[1], operands[2]));
26781
+ emit_insn (gen_altivec_vmulesb (vo, operands[1], operands[2]));
26782
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], vo, ve));
26787
@@ -2217,9 +2841,18 @@
26788
rtx ve = gen_reg_rtx (V8HImode);
26789
rtx vo = gen_reg_rtx (V8HImode);
26791
- emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
26792
- emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
26793
- emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
26794
+ if (BYTES_BIG_ENDIAN)
26796
+ emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
26797
+ emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
26798
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], ve, vo));
26802
+ emit_insn (gen_altivec_vmulosb (ve, operands[1], operands[2]));
26803
+ emit_insn (gen_altivec_vmulesb (vo, operands[1], operands[2]));
26804
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], vo, ve));
26809
@@ -2234,9 +2867,18 @@
28893
@@ -2166,9 +2845,18 @@
28894
rtx ve = gen_reg_rtx (V8HImode);
28895
rtx vo = gen_reg_rtx (V8HImode);
28897
- emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
28898
- emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
28899
- emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
28900
+ if (BYTES_BIG_ENDIAN)
28902
+ emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
28903
+ emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
28904
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], ve, vo));
28908
+ emit_insn (gen_altivec_vmuloub (ve, operands[1], operands[2]));
28909
+ emit_insn (gen_altivec_vmuleub (vo, operands[1], operands[2]));
28910
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], vo, ve));
28915
@@ -2183,9 +2871,18 @@
28916
rtx ve = gen_reg_rtx (V8HImode);
28917
rtx vo = gen_reg_rtx (V8HImode);
28919
- emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
28920
- emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
28921
- emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
28922
+ if (BYTES_BIG_ENDIAN)
28924
+ emit_insn (gen_altivec_vmuleub (ve, operands[1], operands[2]));
28925
+ emit_insn (gen_altivec_vmuloub (vo, operands[1], operands[2]));
28926
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], ve, vo));
28930
+ emit_insn (gen_altivec_vmuloub (ve, operands[1], operands[2]));
28931
+ emit_insn (gen_altivec_vmuleub (vo, operands[1], operands[2]));
28932
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], vo, ve));
28937
@@ -2200,9 +2897,18 @@
28938
rtx ve = gen_reg_rtx (V8HImode);
28939
rtx vo = gen_reg_rtx (V8HImode);
28941
- emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
28942
- emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
28943
- emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
28944
+ if (BYTES_BIG_ENDIAN)
28946
+ emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
28947
+ emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
28948
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], ve, vo));
28952
+ emit_insn (gen_altivec_vmulosb (ve, operands[1], operands[2]));
28953
+ emit_insn (gen_altivec_vmulesb (vo, operands[1], operands[2]));
28954
+ emit_insn (gen_altivec_vmrghh_direct (operands[0], vo, ve));
28959
@@ -2217,9 +2923,18 @@
28960
rtx ve = gen_reg_rtx (V8HImode);
28961
rtx vo = gen_reg_rtx (V8HImode);
28963
- emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
28964
- emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
28965
- emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
28966
+ if (BYTES_BIG_ENDIAN)
28968
+ emit_insn (gen_altivec_vmulesb (ve, operands[1], operands[2]));
28969
+ emit_insn (gen_altivec_vmulosb (vo, operands[1], operands[2]));
28970
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], ve, vo));
28974
+ emit_insn (gen_altivec_vmulosb (ve, operands[1], operands[2]));
28975
+ emit_insn (gen_altivec_vmulesb (vo, operands[1], operands[2]));
28976
+ emit_insn (gen_altivec_vmrglh_direct (operands[0], vo, ve));
28981
@@ -2234,9 +2949,18 @@
26810
28982
rtx ve = gen_reg_rtx (V4SImode);
26811
28983
rtx vo = gen_reg_rtx (V4SImode);