#include "vector.h"

s390_test_generate(vfaeb0,  "vfaeb %%v5, %%v1, %%v2, 0")
s390_test_generate(vfaeb1,  "vfaeb %%v5, %%v1, %%v2, 1\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb2,  "vfaeb %%v5, %%v1, %%v2, 2")
s390_test_generate(vfaeb3,  "vfaeb %%v5, %%v1, %%v2, 3\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb4,  "vfaeb %%v5, %%v1, %%v2, 4")
s390_test_generate(vfaeb5,  "vfaeb %%v5, %%v1, %%v2, 5\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb6,  "vfaeb %%v5, %%v1, %%v2, 6")
s390_test_generate(vfaeb7,  "vfaeb %%v5, %%v1, %%v2, 7\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb8,  "vfaeb %%v5, %%v1, %%v2, 8")
s390_test_generate(vfaeb9,  "vfaeb %%v5, %%v1, %%v2, 9\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb10, "vfaeb %%v5, %%v1, %%v2, 10")
s390_test_generate(vfaeb11, "vfaeb %%v5, %%v1, %%v2, 11\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb12, "vfaeb %%v5, %%v1, %%v2, 12")
s390_test_generate(vfaeb13, "vfaeb %%v5, %%v1, %%v2, 13\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeb14, "vfaeb %%v5, %%v1, %%v2, 14")
s390_test_generate(vfaeb15, "vfaeb %%v5, %%v1, %%v2, 15\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh0,  "vfaeh %%v5, %%v1, %%v2, 0")
s390_test_generate(vfaeh1,  "vfaeh %%v5, %%v1, %%v2, 1\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh2,  "vfaeh %%v5, %%v1, %%v2, 2")
s390_test_generate(vfaeh3,  "vfaeh %%v5, %%v1, %%v2, 3\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh4,  "vfaeh %%v5, %%v1, %%v2, 4")
s390_test_generate(vfaeh5,  "vfaeh %%v5, %%v1, %%v2, 5\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh6,  "vfaeh %%v5, %%v1, %%v2, 6")
s390_test_generate(vfaeh7,  "vfaeh %%v5, %%v1, %%v2, 7\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh8,  "vfaeh %%v5, %%v1, %%v2, 8")
s390_test_generate(vfaeh9,  "vfaeh %%v5, %%v1, %%v2, 9\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh10, "vfaeh %%v5, %%v1, %%v2, 10")
s390_test_generate(vfaeh11, "vfaeh %%v5, %%v1, %%v2, 11\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh12, "vfaeh %%v5, %%v1, %%v2, 12")
s390_test_generate(vfaeh13, "vfaeh %%v5, %%v1, %%v2, 13\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaeh14, "vfaeh %%v5, %%v1, %%v2, 14")
s390_test_generate(vfaeh15, "vfaeh %%v5, %%v1, %%v2, 15\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef0,  "vfaef %%v5, %%v1, %%v2, 0")
s390_test_generate(vfaef1,  "vfaef %%v5, %%v1, %%v2, 1\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef2,  "vfaef %%v5, %%v1, %%v2, 2")
s390_test_generate(vfaef3,  "vfaef %%v5, %%v1, %%v2, 3\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef4,  "vfaef %%v5, %%v1, %%v2, 4")
s390_test_generate(vfaef5,  "vfaef %%v5, %%v1, %%v2, 5\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef6,  "vfaef %%v5, %%v1, %%v2, 6")
s390_test_generate(vfaef7,  "vfaef %%v5, %%v1, %%v2, 7\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef8,  "vfaef %%v5, %%v1, %%v2, 8")
s390_test_generate(vfaef9,  "vfaef %%v5, %%v1, %%v2, 9\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef10, "vfaef %%v5, %%v1, %%v2, 10")
s390_test_generate(vfaef11, "vfaef %%v5, %%v1, %%v2, 11\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef12, "vfaef %%v5, %%v1, %%v2, 12")
s390_test_generate(vfaef13, "vfaef %%v5, %%v1, %%v2, 13\n" \
                            S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfaef14, "vfaef %%v5, %%v1, %%v2, 14")
s390_test_generate(vfaef15, "vfaef %%v5, %%v1, %%v2, 15\n" \
                            S390_TEST_PUT_CC_TO_RESULT)

s390_test_generate(vfeeb,     "vfeeb %%v5, %%v1, %%v2")
s390_test_generate(vfeeh,     "vfeeh %%v5, %%v1, %%v2")
s390_test_generate(vfeef,     "vfeef %%v5, %%v1, %%v2")
s390_test_generate(vfeezb,    "vfeezb %%v5, %%v1, %%v2")
s390_test_generate(vfeezh,    "vfeezb %%v5, %%v1, %%v2")
s390_test_generate(vfeezf,    "vfeezb %%v5, %%v1, %%v2")
s390_test_generate(vfeezbs,   "vfeezbs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfeezhs,   "vfeezhs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfeezfs,   "vfeezfs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfeebs,    "vfeebs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfeehs,    "vfeehs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfeefs,    "vfeefs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)

s390_test_generate(vfeneb,   "vfeneb %%v5, %%v1, %%v2")
s390_test_generate(vfeneh,   "vfeneh %%v5, %%v1, %%v2")
s390_test_generate(vfenef,   "vfenef %%v5, %%v1, %%v2")
s390_test_generate(vfenezb,  "vfenezb %%v5, %%v1, %%v2")
s390_test_generate(vfenezh,  "vfenezb %%v5, %%v1, %%v2")
s390_test_generate(vfenezf,  "vfenezb %%v5, %%v1, %%v2")
s390_test_generate(vfenezbs, "vfenezbs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenezhs, "vfenezhs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenezfs, "vfenezfs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenebs,  "vfenebs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenehs,  "vfenehs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenefs,  "vfenefs %%v5, %%v1, %%v2\n" \
                             S390_TEST_PUT_CC_TO_RESULT)

s390_test_generate(vstrcb0,  "vstrcb %%v5, %%v1, %%v2, %%v3, 0")
s390_test_generate(vstrcb1,  "vstrcb %%v5, %%v1, %%v2, %%v3, 1\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb2,  "vstrcb %%v5, %%v1, %%v2, %%v3, 2")
s390_test_generate(vstrcb3,  "vstrcb %%v5, %%v1, %%v2, %%v3, 3\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb4,  "vstrcb %%v5, %%v1, %%v2, %%v3, 4")
s390_test_generate(vstrcb5,  "vstrcb %%v5, %%v1, %%v2, %%v3, 5\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb6,  "vstrcb %%v5, %%v1, %%v2, %%v3, 6")
s390_test_generate(vstrcb7,  "vstrcb %%v5, %%v1, %%v2, %%v3, 7\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb8,  "vstrcb %%v5, %%v1, %%v2, %%v3, 8")
s390_test_generate(vstrcb9,  "vstrcb %%v5, %%v1, %%v2, %%v3, 9\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb10, "vstrcb %%v5, %%v1, %%v2, %%v3, 10")
s390_test_generate(vstrcb11, "vstrcb %%v5, %%v1, %%v2, %%v3, 11\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb12, "vstrcb %%v5, %%v1, %%v2, %%v3, 12")
s390_test_generate(vstrcb13, "vstrcb %%v5, %%v1, %%v2, %%v3, 13\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcb14, "vstrcb %%v5, %%v1, %%v2, %%v3, 14")
s390_test_generate(vstrcb15, "vstrcb %%v5, %%v1, %%v2, %%v3, 15\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch0,  "vstrch %%v5, %%v1, %%v2, %%v3, 0")
s390_test_generate(vstrch1,  "vstrch %%v5, %%v1, %%v2, %%v3, 1\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch2,  "vstrch %%v5, %%v1, %%v2, %%v3, 2")
s390_test_generate(vstrch3,  "vstrch %%v5, %%v1, %%v2, %%v3, 3\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch4,  "vstrch %%v5, %%v1, %%v2, %%v3, 4")
s390_test_generate(vstrch5,  "vstrch %%v5, %%v1, %%v2, %%v3, 5\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch6,  "vstrch %%v5, %%v1, %%v2, %%v3, 6")
s390_test_generate(vstrch7,  "vstrch %%v5, %%v1, %%v2, %%v3, 7\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch8,  "vstrch %%v5, %%v1, %%v2, %%v3, 8")
s390_test_generate(vstrch9,  "vstrch %%v5, %%v1, %%v2, %%v3, 9\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch10, "vstrch %%v5, %%v1, %%v2, %%v3, 10")
s390_test_generate(vstrch11, "vstrch %%v5, %%v1, %%v2, %%v3, 11\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch12, "vstrch %%v5, %%v1, %%v2, %%v3, 12")
s390_test_generate(vstrch13, "vstrch %%v5, %%v1, %%v2, %%v3, 13\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrch14, "vstrch %%v5, %%v1, %%v2, %%v3, 14")
s390_test_generate(vstrch15, "vstrch %%v5, %%v1, %%v2, %%v3, 15\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf0,  "vstrcf %%v5, %%v1, %%v2, %%v3, 0")
s390_test_generate(vstrcf1,  "vstrcf %%v5, %%v1, %%v2, %%v3, 1\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf2,  "vstrcf %%v5, %%v1, %%v2, %%v3, 2")
s390_test_generate(vstrcf3,  "vstrcf %%v5, %%v1, %%v2, %%v3, 3\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf4,  "vstrcf %%v5, %%v1, %%v2, %%v3, 4")
s390_test_generate(vstrcf5,  "vstrcf %%v5, %%v1, %%v2, %%v3, 5\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf6,  "vstrcf %%v5, %%v1, %%v2, %%v3, 6")
s390_test_generate(vstrcf7,  "vstrcf %%v5, %%v1, %%v2, %%v3, 7\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf8,  "vstrcf %%v5, %%v1, %%v2, %%v3, 8")
s390_test_generate(vstrcf9,  "vstrcf %%v5, %%v1, %%v2, %%v3, 9\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf10, "vstrcf %%v5, %%v1, %%v2, %%v3, 10")
s390_test_generate(vstrcf11, "vstrcf %%v5, %%v1, %%v2, %%v3, 11\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf12, "vstrcf %%v5, %%v1, %%v2, %%v3, 12")
s390_test_generate(vstrcf13, "vstrcf %%v5, %%v1, %%v2, %%v3, 13\n" \
                             S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vstrcf14, "vstrcf %%v5, %%v1, %%v2, %%v3, 14")
s390_test_generate(vstrcf15, "vstrcf %%v5, %%v1, %%v2, %%v3, 15\n" \
                             S390_TEST_PUT_CC_TO_RESULT)

s390_test_generate(vfenezbs0, "vleib    %%v1, 0x00, 0\n" \
                              "vfenezbs %%v5, %%v1, %%v1\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenezbs1, "vleib %%v1, 0x00, 1\n" \
                              "vleib %%v2, 0xaa, 1\n" \
                              "vfenezbs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenezbs2, "vleib %%v1, 0xaa, 1\n" \
                              "vleib %%v2, 0x00, 1\n" \
                              "vfenezbs %%v5, %%v1, %%v2\n" \
                              S390_TEST_PUT_CC_TO_RESULT)
s390_test_generate(vfenezbs3, "vfenezbs %%v5, %%v5, %%v5\n" \
                              S390_TEST_PUT_CC_TO_RESULT)

int main() {
   size_t iteration = 0;

   test(vfaeb0);
   test(vfaeb1);
   test(vfaeb2);
   test(vfaeb3);
   test(vfaeb4);
   test(vfaeb5);
   test(vfaeb6);
   test(vfaeb7);
   test(vfaeb8);
   test(vfaeb9);
   test(vfaeb10);
   test(vfaeb11);
   test(vfaeb12);
   test(vfaeb13);
   test(vfaeb14);
   test(vfaeb15);
   test(vfaeh0);
   test(vfaeh1);
   test(vfaeh2);
   test(vfaeh3);
   test(vfaeh4);
   test(vfaeh5);
   test(vfaeh6);
   test(vfaeh7);
   test(vfaeh8);
   test(vfaeh9);
   test(vfaeh10);
   test(vfaeh11);
   test(vfaeh12);
   test(vfaeh13);
   test(vfaeh14);
   test(vfaeh15);
   test(vfaef0);
   test(vfaef1);
   test(vfaef2);
   test(vfaef3);
   test(vfaef4);
   test(vfaef5);
   test(vfaef6);
   test(vfaef7);
   test(vfaef8);
   test(vfaef9);
   test(vfaef10);
   test(vfaef11);
   test(vfaef12);
   test(vfaef13);
   test(vfaef14);
   test(vfaef15);

   test(vfeeb);
   test(vfeeh);
   test(vfeef);
   test(vfeezb);
   test(vfeezh);
   test(vfeezf);
   test(vfeezbs);
   test(vfeezhs);
   test(vfeezfs);
   test(vfeebs);
   test(vfeehs);
   test(vfeefs);

   test(vfeneb);
   test(vfeneh);
   test(vfenef);
   test(vfenezb);
   test(vfenezh);
   test(vfenezf);
   test(vfenezbs);
   test(vfenezhs);
   test(vfenezfs);
   test(vfenebs);
   test(vfenehs);
   test(vfenefs);

   test(vstrcb0);
   test(vstrcb1);
   test(vstrcb2);
   test(vstrcb3);
   test(vstrcb4);
   test(vstrcb5);
   test(vstrcb6);
   test(vstrcb7);
   test(vstrcb8);
   test(vstrcb9);
   test(vstrcb10);
   test(vstrcb11);
   test(vstrcb12);
   test(vstrcb13);
   test(vstrcb14);
   test(vstrcb15);
   test(vstrch0);
   test(vstrch1);
   test(vstrch2);
   test(vstrch3);
   test(vstrch4);
   test(vstrch5);
   test(vstrch6);
   test(vstrch7);
   test(vstrch8);
   test(vstrch9);
   test(vstrch10);
   test(vstrch11);
   test(vstrch12);
   test(vstrch13);
   test(vstrch14);
   test(vstrch15);
   test(vstrcf0);
   test(vstrcf1);
   test(vstrcf2);
   test(vstrcf3);
   test(vstrcf4);
   test(vstrcf5);
   test(vstrcf6);
   test(vstrcf7);
   test(vstrcf8);
   test(vstrcf9);
   test(vstrcf10);
   test(vstrcf11);
   test(vstrcf12);
   test(vstrcf13);
   test(vstrcf14);
   test(vstrcf15);

   test_once(vfenezbs0);
   test_once(vfenezbs1);
   test_once(vfenezbs2);
   test_once(vfenezbs3);

   return 0;
}
