VirtualBox

Ignore:
Timestamp:
Jul 4, 2022 8:08:41 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152126
Message:

ValKit/bs3-cpu-instr-3: Simple tests for [v]punpck[hl]bw, [v]punpck[hl]wd, [v]punpck[hl]dq, and [v]punpck[hl]qdq. bugref:9898

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac

    r95498 r95507  
    606606 %endif
    607607
     608;
     609; [V]PUNPCKHBW
     610;
     611EMIT_INSTR_PLUS_ICEBP   punpckhbw, MM1, MM2
     612EMIT_INSTR_PLUS_ICEBP   punpckhbw, MM1, FSxBX
     613
     614EMIT_INSTR_PLUS_ICEBP   punpckhbw, XMM1, XMM2
     615EMIT_INSTR_PLUS_ICEBP   punpckhbw, XMM1, FSxBX
     616 %if TMPL_BITS == 64
     617EMIT_INSTR_PLUS_ICEBP   punpckhbw, XMM8, XMM9
     618EMIT_INSTR_PLUS_ICEBP   punpckhbw, XMM8, FSxBX
     619 %endif
     620
     621EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, XMM1, XMM2, XMM3
     622EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, XMM1, XMM2, FSxBX
     623 %if TMPL_BITS == 64
     624EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, XMM8, XMM9, XMM10
     625EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, XMM8, XMM9, FSxBX
     626 %endif
     627
     628EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, YMM1, YMM2, YMM3
     629EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, YMM1, YMM2, FSxBX
     630 %if TMPL_BITS == 64
     631EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, YMM8, YMM9, YMM10
     632EMIT_INSTR_PLUS_ICEBP   vpunpckhbw, YMM8, YMM9, FSxBX
     633 %endif
     634
     635;
     636; [V]PUNPCKHWD
     637;
     638EMIT_INSTR_PLUS_ICEBP   punpckhwd, MM1, MM2
     639EMIT_INSTR_PLUS_ICEBP   punpckhwd, MM1, FSxBX
     640
     641EMIT_INSTR_PLUS_ICEBP   punpckhwd, XMM1, XMM2
     642EMIT_INSTR_PLUS_ICEBP   punpckhwd, XMM1, FSxBX
     643 %if TMPL_BITS == 64
     644EMIT_INSTR_PLUS_ICEBP   punpckhwd, XMM8, XMM9
     645EMIT_INSTR_PLUS_ICEBP   punpckhwd, XMM8, FSxBX
     646 %endif
     647
     648EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, XMM1, XMM2, XMM3
     649EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, XMM1, XMM2, FSxBX
     650 %if TMPL_BITS == 64
     651EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, XMM8, XMM9, XMM10
     652EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, XMM8, XMM9, FSxBX
     653 %endif
     654
     655EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, YMM1, YMM2, YMM3
     656EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, YMM1, YMM2, FSxBX
     657 %if TMPL_BITS == 64
     658EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, YMM8, YMM9, YMM10
     659EMIT_INSTR_PLUS_ICEBP   vpunpckhwd, YMM8, YMM9, FSxBX
     660 %endif
     661
     662;
     663; [V]PUNPCKHDQ
     664;
     665EMIT_INSTR_PLUS_ICEBP   punpckhdq, MM1, MM2
     666EMIT_INSTR_PLUS_ICEBP   punpckhdq, MM1, FSxBX
     667
     668EMIT_INSTR_PLUS_ICEBP   punpckhdq, XMM1, XMM2
     669EMIT_INSTR_PLUS_ICEBP   punpckhdq, XMM1, FSxBX
     670 %if TMPL_BITS == 64
     671EMIT_INSTR_PLUS_ICEBP   punpckhdq, XMM8, XMM9
     672EMIT_INSTR_PLUS_ICEBP   punpckhdq, XMM8, FSxBX
     673 %endif
     674
     675EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, XMM1, XMM2, XMM3
     676EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, XMM1, XMM2, FSxBX
     677 %if TMPL_BITS == 64
     678EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, XMM8, XMM9, XMM10
     679EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, XMM8, XMM9, FSxBX
     680 %endif
     681
     682EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, YMM1, YMM2, YMM3
     683EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, YMM1, YMM2, FSxBX
     684 %if TMPL_BITS == 64
     685EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, YMM8, YMM9, YMM10
     686EMIT_INSTR_PLUS_ICEBP   vpunpckhdq, YMM8, YMM9, FSxBX
     687 %endif
     688
     689;
     690; [V]PUNPCKHQDQ (no MMX)
     691;
     692EMIT_INSTR_PLUS_ICEBP   punpckhqdq, XMM1, XMM2
     693EMIT_INSTR_PLUS_ICEBP   punpckhqdq, XMM1, FSxBX
     694 %if TMPL_BITS == 64
     695EMIT_INSTR_PLUS_ICEBP   punpckhqdq, XMM8, XMM9
     696EMIT_INSTR_PLUS_ICEBP   punpckhqdq, XMM8, FSxBX
     697 %endif
     698
     699EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, XMM1, XMM2, XMM3
     700EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, XMM1, XMM2, FSxBX
     701 %if TMPL_BITS == 64
     702EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, XMM8, XMM9, XMM10
     703EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, XMM8, XMM9, FSxBX
     704 %endif
     705
     706EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, YMM1, YMM2, YMM3
     707EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, YMM1, YMM2, FSxBX
     708 %if TMPL_BITS == 64
     709EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, YMM8, YMM9, YMM10
     710EMIT_INSTR_PLUS_ICEBP   vpunpckhqdq, YMM8, YMM9, FSxBX
     711 %endif
     712
     713;
     714; [V]PUNPCKLBW
     715;
     716EMIT_INSTR_PLUS_ICEBP   punpcklbw, MM1, MM2
     717EMIT_INSTR_PLUS_ICEBP   punpcklbw, MM1, FSxBX
     718
     719EMIT_INSTR_PLUS_ICEBP   punpcklbw, XMM1, XMM2
     720EMIT_INSTR_PLUS_ICEBP   punpcklbw, XMM1, FSxBX
     721 %if TMPL_BITS == 64
     722EMIT_INSTR_PLUS_ICEBP   punpcklbw, XMM8, XMM9
     723EMIT_INSTR_PLUS_ICEBP   punpcklbw, XMM8, FSxBX
     724 %endif
     725
     726EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, XMM1, XMM2, XMM3
     727EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, XMM1, XMM2, FSxBX
     728 %if TMPL_BITS == 64
     729EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, XMM8, XMM9, XMM10
     730EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, XMM8, XMM9, FSxBX
     731 %endif
     732
     733EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, YMM1, YMM2, YMM3
     734EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, YMM1, YMM2, FSxBX
     735 %if TMPL_BITS == 64
     736EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, YMM8, YMM9, YMM10
     737EMIT_INSTR_PLUS_ICEBP   vpunpcklbw, YMM8, YMM9, FSxBX
     738 %endif
     739
     740;
     741; [V]PUNPCKLWD
     742;
     743EMIT_INSTR_PLUS_ICEBP   punpcklwd, MM1, MM2
     744EMIT_INSTR_PLUS_ICEBP   punpcklwd, MM1, FSxBX
     745
     746EMIT_INSTR_PLUS_ICEBP   punpcklwd, XMM1, XMM2
     747EMIT_INSTR_PLUS_ICEBP   punpcklwd, XMM1, FSxBX
     748 %if TMPL_BITS == 64
     749EMIT_INSTR_PLUS_ICEBP   punpcklwd, XMM8, XMM9
     750EMIT_INSTR_PLUS_ICEBP   punpcklwd, XMM8, FSxBX
     751 %endif
     752
     753EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, XMM1, XMM2, XMM3
     754EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, XMM1, XMM2, FSxBX
     755 %if TMPL_BITS == 64
     756EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, XMM8, XMM9, XMM10
     757EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, XMM8, XMM9, FSxBX
     758 %endif
     759
     760EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, YMM1, YMM2, YMM3
     761EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, YMM1, YMM2, FSxBX
     762 %if TMPL_BITS == 64
     763EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, YMM8, YMM9, YMM10
     764EMIT_INSTR_PLUS_ICEBP   vpunpcklwd, YMM8, YMM9, FSxBX
     765 %endif
     766
     767;
     768; [V]PUNPCKLDQ
     769;
     770EMIT_INSTR_PLUS_ICEBP   punpckldq, MM1, MM2
     771EMIT_INSTR_PLUS_ICEBP   punpckldq, MM1, FSxBX
     772
     773EMIT_INSTR_PLUS_ICEBP   punpckldq, XMM1, XMM2
     774EMIT_INSTR_PLUS_ICEBP   punpckldq, XMM1, FSxBX
     775 %if TMPL_BITS == 64
     776EMIT_INSTR_PLUS_ICEBP   punpckldq, XMM8, XMM9
     777EMIT_INSTR_PLUS_ICEBP   punpckldq, XMM8, FSxBX
     778 %endif
     779
     780EMIT_INSTR_PLUS_ICEBP   vpunpckldq, XMM1, XMM2, XMM3
     781EMIT_INSTR_PLUS_ICEBP   vpunpckldq, XMM1, XMM2, FSxBX
     782 %if TMPL_BITS == 64
     783EMIT_INSTR_PLUS_ICEBP   vpunpckldq, XMM8, XMM9, XMM10
     784EMIT_INSTR_PLUS_ICEBP   vpunpckldq, XMM8, XMM9, FSxBX
     785 %endif
     786
     787EMIT_INSTR_PLUS_ICEBP   vpunpckldq, YMM1, YMM2, YMM3
     788EMIT_INSTR_PLUS_ICEBP   vpunpckldq, YMM1, YMM2, FSxBX
     789 %if TMPL_BITS == 64
     790EMIT_INSTR_PLUS_ICEBP   vpunpckldq, YMM8, YMM9, YMM10
     791EMIT_INSTR_PLUS_ICEBP   vpunpckldq, YMM8, YMM9, FSxBX
     792 %endif
     793
     794;
     795; [V]PUNPCKLQDQ (no MMX)
     796;
     797EMIT_INSTR_PLUS_ICEBP   punpcklqdq, XMM1, XMM2
     798EMIT_INSTR_PLUS_ICEBP   punpcklqdq, XMM1, FSxBX
     799 %if TMPL_BITS == 64
     800EMIT_INSTR_PLUS_ICEBP   punpcklqdq, XMM8, XMM9
     801EMIT_INSTR_PLUS_ICEBP   punpcklqdq, XMM8, FSxBX
     802 %endif
     803
     804EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, XMM1, XMM2, XMM3
     805EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, XMM1, XMM2, FSxBX
     806 %if TMPL_BITS == 64
     807EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, XMM8, XMM9, XMM10
     808EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, XMM8, XMM9, FSxBX
     809 %endif
     810
     811EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, YMM1, YMM2, YMM3
     812EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, YMM1, YMM2, FSxBX
     813 %if TMPL_BITS == 64
     814EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, YMM8, YMM9, YMM10
     815EMIT_INSTR_PLUS_ICEBP   vpunpcklqdq, YMM8, YMM9, FSxBX
     816 %endif
     817
    608818%endif ; BS3_INSTANTIATING_CMN
    609819
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32

    r95498 r95507  
    453453extern FNBS3FAR             bs3CpuInstr3_vpshufd_YMM9_YMM12_01Bh_icebp_c64;
    454454
     455/* [V]PUNPCKHBW */
     456BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhbw_MM1_MM2_icebp);
     457BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhbw_MM1_FSxBX_icebp);
     458BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhbw_XMM1_XMM2_icebp);
     459BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhbw_XMM1_FSxBX_icebp);
     460extern FNBS3FAR             bs3CpuInstr3_punpckhbw_XMM8_XMM9_icebp_c64;
     461extern FNBS3FAR             bs3CpuInstr3_punpckhbw_XMM8_FSxBX_icebp_c64;
     462BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_XMM3_icebp);
     463BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_FSxBX_icebp);
     464extern FNBS3FAR             bs3CpuInstr3_vpunpckhbw_XMM8_XMM9_XMM10_icebp_c64;
     465extern FNBS3FAR             bs3CpuInstr3_vpunpckhbw_XMM8_XMM9_FSxBX_icebp_c64;
     466BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_YMM3_icebp);
     467BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_FSxBX_icebp);
     468extern FNBS3FAR             bs3CpuInstr3_vpunpckhbw_YMM8_YMM9_YMM10_icebp_c64;
     469extern FNBS3FAR             bs3CpuInstr3_vpunpckhbw_YMM8_YMM9_FSxBX_icebp_c64;
     470
     471/* [V]PUNPCKHWD */
     472BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhwd_MM1_MM2_icebp);
     473BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhwd_MM1_FSxBX_icebp);
     474BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhwd_XMM1_XMM2_icebp);
     475BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhwd_XMM1_FSxBX_icebp);
     476extern FNBS3FAR             bs3CpuInstr3_punpckhwd_XMM8_XMM9_icebp_c64;
     477extern FNBS3FAR             bs3CpuInstr3_punpckhwd_XMM8_FSxBX_icebp_c64;
     478BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_XMM3_icebp);
     479BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_FSxBX_icebp);
     480extern FNBS3FAR             bs3CpuInstr3_vpunpckhwd_XMM8_XMM9_XMM10_icebp_c64;
     481extern FNBS3FAR             bs3CpuInstr3_vpunpckhwd_XMM8_XMM9_FSxBX_icebp_c64;
     482BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_YMM3_icebp);
     483BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_FSxBX_icebp);
     484extern FNBS3FAR             bs3CpuInstr3_vpunpckhwd_YMM8_YMM9_YMM10_icebp_c64;
     485extern FNBS3FAR             bs3CpuInstr3_vpunpckhwd_YMM8_YMM9_FSxBX_icebp_c64;
     486
     487/* [V]PUNPCKHDQ */
     488BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhdq_MM1_MM2_icebp);
     489BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhdq_MM1_FSxBX_icebp);
     490BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhdq_XMM1_XMM2_icebp);
     491BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhdq_XMM1_FSxBX_icebp);
     492extern FNBS3FAR             bs3CpuInstr3_punpckhdq_XMM8_XMM9_icebp_c64;
     493extern FNBS3FAR             bs3CpuInstr3_punpckhdq_XMM8_FSxBX_icebp_c64;
     494BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_XMM3_icebp);
     495BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_FSxBX_icebp);
     496extern FNBS3FAR             bs3CpuInstr3_vpunpckhdq_XMM8_XMM9_XMM10_icebp_c64;
     497extern FNBS3FAR             bs3CpuInstr3_vpunpckhdq_XMM8_XMM9_FSxBX_icebp_c64;
     498BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_YMM3_icebp);
     499BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_FSxBX_icebp);
     500extern FNBS3FAR             bs3CpuInstr3_vpunpckhdq_YMM8_YMM9_YMM10_icebp_c64;
     501extern FNBS3FAR             bs3CpuInstr3_vpunpckhdq_YMM8_YMM9_FSxBX_icebp_c64;
     502
     503/* [V]PUNPCKHQDQ */
     504BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhqdq_XMM1_XMM2_icebp);
     505BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckhqdq_XMM1_FSxBX_icebp);
     506extern FNBS3FAR             bs3CpuInstr3_punpckhqdq_XMM8_XMM9_icebp_c64;
     507extern FNBS3FAR             bs3CpuInstr3_punpckhqdq_XMM8_FSxBX_icebp_c64;
     508BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_XMM3_icebp);
     509BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_FSxBX_icebp);
     510extern FNBS3FAR             bs3CpuInstr3_vpunpckhqdq_XMM8_XMM9_XMM10_icebp_c64;
     511extern FNBS3FAR             bs3CpuInstr3_vpunpckhqdq_XMM8_XMM9_FSxBX_icebp_c64;
     512BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_YMM3_icebp);
     513BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_FSxBX_icebp);
     514extern FNBS3FAR             bs3CpuInstr3_vpunpckhqdq_YMM8_YMM9_YMM10_icebp_c64;
     515extern FNBS3FAR             bs3CpuInstr3_vpunpckhqdq_YMM8_YMM9_FSxBX_icebp_c64;
     516
     517/* [V]PUNPCKLBW */
     518BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklbw_MM1_MM2_icebp);
     519BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklbw_MM1_FSxBX_icebp);
     520BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklbw_XMM1_XMM2_icebp);
     521BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklbw_XMM1_FSxBX_icebp);
     522extern FNBS3FAR             bs3CpuInstr3_punpcklbw_XMM8_XMM9_icebp_c64;
     523extern FNBS3FAR             bs3CpuInstr3_punpcklbw_XMM8_FSxBX_icebp_c64;
     524BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_XMM3_icebp);
     525BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_FSxBX_icebp);
     526extern FNBS3FAR             bs3CpuInstr3_vpunpcklbw_XMM8_XMM9_XMM10_icebp_c64;
     527extern FNBS3FAR             bs3CpuInstr3_vpunpcklbw_XMM8_XMM9_FSxBX_icebp_c64;
     528BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_YMM3_icebp);
     529BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_FSxBX_icebp);
     530extern FNBS3FAR             bs3CpuInstr3_vpunpcklbw_YMM8_YMM9_YMM10_icebp_c64;
     531extern FNBS3FAR             bs3CpuInstr3_vpunpcklbw_YMM8_YMM9_FSxBX_icebp_c64;
     532
     533/* [V]PUNPCKLWD */
     534BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklwd_MM1_MM2_icebp);
     535BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklwd_MM1_FSxBX_icebp);
     536BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklwd_XMM1_XMM2_icebp);
     537BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklwd_XMM1_FSxBX_icebp);
     538extern FNBS3FAR             bs3CpuInstr3_punpcklwd_XMM8_XMM9_icebp_c64;
     539extern FNBS3FAR             bs3CpuInstr3_punpcklwd_XMM8_FSxBX_icebp_c64;
     540BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_XMM3_icebp);
     541BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_FSxBX_icebp);
     542extern FNBS3FAR             bs3CpuInstr3_vpunpcklwd_XMM8_XMM9_XMM10_icebp_c64;
     543extern FNBS3FAR             bs3CpuInstr3_vpunpcklwd_XMM8_XMM9_FSxBX_icebp_c64;
     544BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_YMM3_icebp);
     545BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_FSxBX_icebp);
     546extern FNBS3FAR             bs3CpuInstr3_vpunpcklwd_YMM8_YMM9_YMM10_icebp_c64;
     547extern FNBS3FAR             bs3CpuInstr3_vpunpcklwd_YMM8_YMM9_FSxBX_icebp_c64;
     548
     549/* [V]PUNPCKLDQ */
     550BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckldq_MM1_MM2_icebp);
     551BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckldq_MM1_FSxBX_icebp);
     552BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckldq_XMM1_XMM2_icebp);
     553BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpckldq_XMM1_FSxBX_icebp);
     554extern FNBS3FAR             bs3CpuInstr3_punpckldq_XMM8_XMM9_icebp_c64;
     555extern FNBS3FAR             bs3CpuInstr3_punpckldq_XMM8_FSxBX_icebp_c64;
     556BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckldq_XMM1_XMM2_XMM3_icebp);
     557BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckldq_XMM1_XMM2_FSxBX_icebp);
     558extern FNBS3FAR             bs3CpuInstr3_vpunpckldq_XMM8_XMM9_XMM10_icebp_c64;
     559extern FNBS3FAR             bs3CpuInstr3_vpunpckldq_XMM8_XMM9_FSxBX_icebp_c64;
     560BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckldq_YMM1_YMM2_YMM3_icebp);
     561BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpckldq_YMM1_YMM2_FSxBX_icebp);
     562extern FNBS3FAR             bs3CpuInstr3_vpunpckldq_YMM8_YMM9_YMM10_icebp_c64;
     563extern FNBS3FAR             bs3CpuInstr3_vpunpckldq_YMM8_YMM9_FSxBX_icebp_c64;
     564
     565/* [V]PUNPCKLQDQ */
     566BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklqdq_XMM1_XMM2_icebp);
     567BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_punpcklqdq_XMM1_FSxBX_icebp);
     568extern FNBS3FAR             bs3CpuInstr3_punpcklqdq_XMM8_XMM9_icebp_c64;
     569extern FNBS3FAR             bs3CpuInstr3_punpcklqdq_XMM8_FSxBX_icebp_c64;
     570BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_XMM3_icebp);
     571BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_FSxBX_icebp);
     572extern FNBS3FAR             bs3CpuInstr3_vpunpcklqdq_XMM8_XMM9_XMM10_icebp_c64;
     573extern FNBS3FAR             bs3CpuInstr3_vpunpcklqdq_XMM8_XMM9_FSxBX_icebp_c64;
     574BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_YMM3_icebp);
     575BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_FSxBX_icebp);
     576extern FNBS3FAR             bs3CpuInstr3_vpunpcklqdq_YMM8_YMM9_YMM10_icebp_c64;
     577extern FNBS3FAR             bs3CpuInstr3_vpunpcklqdq_YMM8_YMM9_FSxBX_icebp_c64;
    455578
    456579
     
    21852308        {  bs3CpuInstr3_vpshufb_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    21862309        {  bs3CpuInstr3_vpshufb_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2310    };
     2311    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2312    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2313    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2314                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2315}
     2316
     2317
     2318/*
     2319 * [V]PUNPCKHBW
     2320 */
     2321BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckhbw(uint8_t bMode)
     2322{
     2323    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2324    {
     2325        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2326            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2327            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2328        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2329            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2330            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf1e1f2e2f3e3f4e4) },
     2331        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2332            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2333            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x55dd55dd66ee66ee) },
     2334        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2335            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2336            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x9c435cd3e0cd73a0) },
     2337    };
     2338    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2339    {
     2340        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2341            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2342            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2343        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2344            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2345            /* => */ RTUINT256_INIT_C(0xf1b1f2b2f3b3f4b4, 0xf5b5f6b6f7b7f8b8, 0xd191d292d393d494, 0xd595d696d797d898) },
     2346        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2347            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2348            /* => */ RTUINT256_INIT_C(0x55dd55dd66ee66ee, 0x77ff77ff88008800, 0x1199119922aa22aa, 0x33bb33bb44cc44cc) },
     2349        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2350            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2351            /* => */ RTUINT256_INIT_C(0x4d1e09ddf0dd2aac, 0x6c09dc637332d594, 0xb48821002fe9a85b, 0x56bf4c999b62a2c3) },
     2352    };
     2353
     2354    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2355    {
     2356        {  bs3CpuInstr3_punpckhbw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2357        {  bs3CpuInstr3_punpckhbw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2358        {  bs3CpuInstr3_punpckhbw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2359        {  bs3CpuInstr3_punpckhbw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2360        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2361        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2362        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2363        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2364    };
     2365    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2366    {
     2367        {  bs3CpuInstr3_punpckhbw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2368        {  bs3CpuInstr3_punpckhbw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2369        {  bs3CpuInstr3_punpckhbw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2370        {  bs3CpuInstr3_punpckhbw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2371        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2372        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2373        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2374        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2375    };
     2376    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2377    {
     2378        {  bs3CpuInstr3_punpckhbw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2379        {  bs3CpuInstr3_punpckhbw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2380        {  bs3CpuInstr3_punpckhbw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2381        {  bs3CpuInstr3_punpckhbw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2382        {  bs3CpuInstr3_punpckhbw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2383        {  bs3CpuInstr3_punpckhbw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2384        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2385        {  bs3CpuInstr3_vpunpckhbw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2386        {  bs3CpuInstr3_vpunpckhbw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2387        {  bs3CpuInstr3_vpunpckhbw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2388        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2389        {  bs3CpuInstr3_vpunpckhbw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2390        {  bs3CpuInstr3_vpunpckhbw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2391        {  bs3CpuInstr3_vpunpckhbw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2392    };
     2393    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2394    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2395    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2396                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2397}
     2398
     2399
     2400/*
     2401 * [V]PUNPCKHWD
     2402 */
     2403BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckhwd(uint8_t bMode)
     2404{
     2405    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2406    {
     2407        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2408            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2409            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2410        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2411            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2412            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2e1e2f3f4e3e4) },
     2413        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2414            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2415            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x5555dddd6666eeee) },
     2416        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2417            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2418            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x9c5c43d3e073cda0) },
     2419    };
     2420    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2421    {
     2422        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2423            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2424            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2425        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2426            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2427            /* => */ RTUINT256_INIT_C(0xf1f2b1b2f3f4b3b4, 0xf5f6b5b6f7f8b7b8, 0xd1d29192d3d49394, 0xd5d69596d7d89798) },
     2428        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2429            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2430            /* => */ RTUINT256_INIT_C(0x5555dddd6666eeee, 0x7777ffff88880000, 0x111199992222aaaa, 0x3333bbbb4444cccc) },
     2431        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2432            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2433            /* => */ RTUINT256_INIT_C(0x4d091eddf02addac, 0x6cdc096373d53294, 0xb42188002fa8e95b, 0x564cbf999ba262c3) },
     2434    };
     2435
     2436    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2437    {
     2438        {  bs3CpuInstr3_punpckhwd_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2439        {  bs3CpuInstr3_punpckhwd_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2440        {  bs3CpuInstr3_punpckhwd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2441        {  bs3CpuInstr3_punpckhwd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2442        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2443        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2444        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2445        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2446    };
     2447    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2448    {
     2449        {  bs3CpuInstr3_punpckhwd_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2450        {  bs3CpuInstr3_punpckhwd_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2451        {  bs3CpuInstr3_punpckhwd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2452        {  bs3CpuInstr3_punpckhwd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2453        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2454        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2455        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2456        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2457    };
     2458    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2459    {
     2460        {  bs3CpuInstr3_punpckhwd_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2461        {  bs3CpuInstr3_punpckhwd_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2462        {  bs3CpuInstr3_punpckhwd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2463        {  bs3CpuInstr3_punpckhwd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2464        {  bs3CpuInstr3_punpckhwd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2465        {  bs3CpuInstr3_punpckhwd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2466        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2467        {  bs3CpuInstr3_vpunpckhwd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2468        {  bs3CpuInstr3_vpunpckhwd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2469        {  bs3CpuInstr3_vpunpckhwd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2470        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2471        {  bs3CpuInstr3_vpunpckhwd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2472        {  bs3CpuInstr3_vpunpckhwd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2473        {  bs3CpuInstr3_vpunpckhwd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2474    };
     2475    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2476    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2477    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2478                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2479}
     2480
     2481
     2482/*
     2483 * [V]PUNPCKHDQ
     2484 */
     2485BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckhdq(uint8_t bMode)
     2486{
     2487    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2488    {
     2489        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2490            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2491            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2492        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2493            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2494            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4e1e2e3e4) },
     2495        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2496            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2497            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x55556666ddddeeee) },
     2498        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2499            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2500            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x9c5ce07343d3cda0) },
     2501    };
     2502    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2503    {
     2504        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2505            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2506            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2507        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2508            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2509            /* => */ RTUINT256_INIT_C(0xf1f2f3f4b1b2b3b4, 0xf5f6f7f8b5b6b7b8, 0xd1d2d3d491929394, 0xd5d6d7d895969798) },
     2510        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2511            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2512            /* => */ RTUINT256_INIT_C(0x55556666ddddeeee, 0x77778888ffff0000, 0x111122229999aaaa, 0x33334444bbbbcccc) },
     2513        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2514            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2515            /* => */ RTUINT256_INIT_C(0x4d09f02a1eddddac, 0x6cdc73d509633294, 0xb4212fa88800e95b, 0x564c9ba2bf9962c3) },
     2516    };
     2517
     2518    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2519    {
     2520        {  bs3CpuInstr3_punpckhdq_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2521        {  bs3CpuInstr3_punpckhdq_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2522        {  bs3CpuInstr3_punpckhdq_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2523        {  bs3CpuInstr3_punpckhdq_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2524        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2525        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2526        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2527        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2528    };
     2529    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2530    {
     2531        {  bs3CpuInstr3_punpckhdq_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2532        {  bs3CpuInstr3_punpckhdq_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2533        {  bs3CpuInstr3_punpckhdq_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2534        {  bs3CpuInstr3_punpckhdq_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2535        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2536        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2537        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2538        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2539    };
     2540    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2541    {
     2542        {  bs3CpuInstr3_punpckhdq_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2543        {  bs3CpuInstr3_punpckhdq_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2544        {  bs3CpuInstr3_punpckhdq_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2545        {  bs3CpuInstr3_punpckhdq_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2546        {  bs3CpuInstr3_punpckhdq_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2547        {  bs3CpuInstr3_punpckhdq_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2548        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2549        {  bs3CpuInstr3_vpunpckhdq_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2550        {  bs3CpuInstr3_vpunpckhdq_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2551        {  bs3CpuInstr3_vpunpckhdq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2552        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2553        {  bs3CpuInstr3_vpunpckhdq_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2554        {  bs3CpuInstr3_vpunpckhdq_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2555        {  bs3CpuInstr3_vpunpckhdq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2556    };
     2557    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2558    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2559    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2560                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2561}
     2562
     2563
     2564/*
     2565 * [V]PUNPCKHQDQ
     2566 */
     2567BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckhqdq(uint8_t bMode)
     2568{
     2569    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2570    {
     2571        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2572            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2573            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2574        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2575            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2576            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xb1b2b3b4b5b6b7b8, 0xd1d2d3d4d5d6d7d8, 0x9192939495969798) },
     2577        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2578            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2579            /* => */ RTUINT256_INIT_C(0x5555666677778888, 0xddddeeeeffff0000, 0x1111222233334444, 0x9999aaaabbbbcccc) },
     2580        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2581            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2582            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x1eddddac09633294, 0xb4212fa8564c9ba2, 0x8800e95bbf9962c3) },
     2583    };
     2584
     2585    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2586    {
     2587        {  bs3CpuInstr3_punpckhqdq_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2588        {  bs3CpuInstr3_punpckhqdq_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2589        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2590        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2591        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2592        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2593    };
     2594    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2595    {
     2596        {  bs3CpuInstr3_punpckhqdq_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2597        {  bs3CpuInstr3_punpckhqdq_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2598        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2599        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2600        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2601        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2602    };
     2603    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2604    {
     2605        {  bs3CpuInstr3_punpckhqdq_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2606        {  bs3CpuInstr3_punpckhqdq_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2607        {  bs3CpuInstr3_punpckhqdq_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2608        {  bs3CpuInstr3_punpckhqdq_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2609        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2610        {  bs3CpuInstr3_vpunpckhqdq_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2611        {  bs3CpuInstr3_vpunpckhqdq_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2612        {  bs3CpuInstr3_vpunpckhqdq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2613        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2614        {  bs3CpuInstr3_vpunpckhqdq_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2615        {  bs3CpuInstr3_vpunpckhqdq_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2616        {  bs3CpuInstr3_vpunpckhqdq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2617    };
     2618    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2619    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2620    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2621                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2622}
     2623
     2624
     2625/*
     2626 * [V]PUNPCKLBW
     2627 */
     2628BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpcklbw(uint8_t bMode)
     2629{
     2630    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2631    {
     2632        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2633            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2634            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2635        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2636            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2637            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf5e5f6e6f7e7f8e8) },
     2638        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2639            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2640            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x77ff77ff88008800) },
     2641        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2642            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2643            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x932309849699bbfd) },
     2644    };
     2645    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2646    {
     2647        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2648            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2649            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2650        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2651            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2652            /* => */ RTUINT256_INIT_C(0xe1a1e2a2e3a3e4a4, 0xe5a5e6a6e7a7e8a8, 0xc181c282c383c484, 0xc585c686c787c888) },
     2653        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2654            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2655            /* => */ RTUINT256_INIT_C(0x1199119922aa22aa, 0x33bb33bb44cc44cc, 0x55dd55dd66ee66ee, 0x77ff77ff88008800) },
     2656        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2657            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2658            /* => */ RTUINT256_INIT_C(0x3ef9f45c178ec8ec, 0x66406b723f56e633, 0x9c435cd3e0cd73a0, 0x932309849699bbfd) },
     2659    };
     2660
     2661    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2662    {
     2663        {  bs3CpuInstr3_punpcklbw_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2664        {  bs3CpuInstr3_punpcklbw_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2665        {  bs3CpuInstr3_punpcklbw_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2666        {  bs3CpuInstr3_punpcklbw_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2667        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2668        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2669        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2670        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2671    };
     2672    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2673    {
     2674        {  bs3CpuInstr3_punpcklbw_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2675        {  bs3CpuInstr3_punpcklbw_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2676        {  bs3CpuInstr3_punpcklbw_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2677        {  bs3CpuInstr3_punpcklbw_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2678        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2679        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2680        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2681        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2682    };
     2683    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2684    {
     2685        {  bs3CpuInstr3_punpcklbw_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2686        {  bs3CpuInstr3_punpcklbw_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2687        {  bs3CpuInstr3_punpcklbw_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2688        {  bs3CpuInstr3_punpcklbw_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2689        {  bs3CpuInstr3_punpcklbw_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2690        {  bs3CpuInstr3_punpcklbw_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2691        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2692        {  bs3CpuInstr3_vpunpcklbw_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2693        {  bs3CpuInstr3_vpunpcklbw_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2694        {  bs3CpuInstr3_vpunpcklbw_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2695        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2696        {  bs3CpuInstr3_vpunpcklbw_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2697        {  bs3CpuInstr3_vpunpcklbw_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2698        {  bs3CpuInstr3_vpunpcklbw_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2699    };
     2700    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2701    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2702    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2703                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2704}
     2705
     2706
     2707/*
     2708 * [V]PUNPCKLWD
     2709 */
     2710BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpcklwd(uint8_t bMode)
     2711{
     2712    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2713    {
     2714        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2715            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2716            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2717        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2718            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2719            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf5f6e5e6f7f8e7e8) },
     2720        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2721            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2722            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x7777ffff88880000) },
     2723        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2724            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2725            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x9309238496bb99fd) },
     2726    };
     2727    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2728    {
     2729        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2730            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2731            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2732        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2733            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2734            /* => */ RTUINT256_INIT_C(0xe1e2a1a2e3e4a3a4, 0xe5e6a5a6e7e8a7a8, 0xc1c28182c3c48384, 0xc5c68586c7c88788) },
     2735        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2736            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2737            /* => */ RTUINT256_INIT_C(0x111199992222aaaa, 0x3333bbbb4444cccc, 0x5555dddd6666eeee, 0x7777ffff88880000) },
     2738        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2739            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2740            /* => */ RTUINT256_INIT_C(0x3ef4f95c17c88eec, 0x666b40723fe65633, 0x9c5c43d3e073cda0, 0x9309238496bb99fd) },
     2741    };
     2742
     2743    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2744    {
     2745        {  bs3CpuInstr3_punpcklwd_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2746        {  bs3CpuInstr3_punpcklwd_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2747        {  bs3CpuInstr3_punpcklwd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2748        {  bs3CpuInstr3_punpcklwd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2749        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2750        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2751        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2752        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2753    };
     2754    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2755    {
     2756        {  bs3CpuInstr3_punpcklwd_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2757        {  bs3CpuInstr3_punpcklwd_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2758        {  bs3CpuInstr3_punpcklwd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2759        {  bs3CpuInstr3_punpcklwd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2760        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2761        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2762        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2763        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2764    };
     2765    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2766    {
     2767        {  bs3CpuInstr3_punpcklwd_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2768        {  bs3CpuInstr3_punpcklwd_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2769        {  bs3CpuInstr3_punpcklwd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2770        {  bs3CpuInstr3_punpcklwd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2771        {  bs3CpuInstr3_punpcklwd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2772        {  bs3CpuInstr3_punpcklwd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2773        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2774        {  bs3CpuInstr3_vpunpcklwd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2775        {  bs3CpuInstr3_vpunpcklwd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2776        {  bs3CpuInstr3_vpunpcklwd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2777        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2778        {  bs3CpuInstr3_vpunpcklwd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2779        {  bs3CpuInstr3_vpunpcklwd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2780        {  bs3CpuInstr3_vpunpcklwd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2781    };
     2782    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2783    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2784    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2785                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2786}
     2787
     2788
     2789/*
     2790 * [V]PUNPCKLDQ
     2791 */
     2792BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckldq(uint8_t bMode)
     2793{
     2794    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues64[] =
     2795    {
     2796        {   /*src2*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2797            /*src1*/ RTUINT256_INIT_C( 0,  0,  0, 0),
     2798            /* => */ RTUINT256_INIT_C( 0,  0,  0, 0) },
     2799        {   /*src2*/ RTUINT256_INIT_C( 1,  2,  3, 0xf1f2f3f4f5f6f7f8),
     2800            /*src1*/ RTUINT256_INIT_C( 1,  2,  3, 0xe1e2e3e4e5e6e7e8),
     2801            /* => */ RTUINT256_INIT_C( 1,  2,  3, 0xf5f6f7f8e5e6e7e8) },
     2802        {   /*src2*/ RTUINT256_INIT_C( 4,  5,  7, 0x5555666677778888),
     2803            /*src1*/ RTUINT256_INIT_C( 4,  6,  7, 0xddddeeeeffff0000),
     2804            /* => */ RTUINT256_INIT_C( 8, 10, 11, 0x77778888ffff0000) },
     2805        {   /*src2*/ RTUINT256_INIT_C( 8, 10, 11, 0x9c5ce073930996bb),
     2806            /*src1*/ RTUINT256_INIT_C(12, 13, 14, 0x43d3cda0238499fd),
     2807            /* => */ RTUINT256_INIT_C(12, 13, 14, 0x930996bb238499fd) },
     2808    };
     2809    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2810    {
     2811        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2812            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2813            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2814        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2815            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2816            /* => */ RTUINT256_INIT_C(0xe1e2e3e4a1a2a3a4, 0xe5e6e7e8a5a6a7a8, 0xc1c2c3c481828384, 0xc5c6c7c885868788) },
     2817        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2818            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2819            /* => */ RTUINT256_INIT_C(0x111122229999aaaa, 0x33334444bbbbcccc, 0x55556666ddddeeee, 0x77778888ffff0000) },
     2820        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2821            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2822            /* => */ RTUINT256_INIT_C(0x3ef417c8f95c8eec, 0x666b3fe640725633, 0x9c5ce07343d3cda0, 0x930996bb238499fd) },
     2823    };
     2824
     2825    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2826    {
     2827        {  bs3CpuInstr3_punpckldq_MM1_MM2_icebp_c16,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2828        {  bs3CpuInstr3_punpckldq_MM1_FSxBX_icebp_c16,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2829        {  bs3CpuInstr3_punpckldq_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2830        {  bs3CpuInstr3_punpckldq_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2831        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2832        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2833        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2834        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2835    };
     2836    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2837    {
     2838        {  bs3CpuInstr3_punpckldq_MM1_MM2_icebp_c32,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2839        {  bs3CpuInstr3_punpckldq_MM1_FSxBX_icebp_c32,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2840        {  bs3CpuInstr3_punpckldq_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2841        {  bs3CpuInstr3_punpckldq_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2842        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2843        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2844        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2845        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2846    };
     2847    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2848    {
     2849        {  bs3CpuInstr3_punpckldq_MM1_MM2_icebp_c64,          255,         RM_REG, T_MMX_SSSE3, 1, 1,   2, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2850        {  bs3CpuInstr3_punpckldq_MM1_FSxBX_icebp_c64,        255,         RM_MEM, T_MMX_SSSE3, 1, 1, 255, RT_ELEMENTS(s_aValues64), s_aValues64 },
     2851        {  bs3CpuInstr3_punpckldq_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2852        {  bs3CpuInstr3_punpckldq_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2853        {  bs3CpuInstr3_punpckldq_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2854        {  bs3CpuInstr3_punpckldq_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2855        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2856        {  bs3CpuInstr3_vpunpckldq_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2857        {  bs3CpuInstr3_vpunpckldq_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2858        {  bs3CpuInstr3_vpunpckldq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2859        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2860        {  bs3CpuInstr3_vpunpckldq_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2861        {  bs3CpuInstr3_vpunpckldq_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2862        {  bs3CpuInstr3_vpunpckldq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2863    };
     2864    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     2865    unsigned const                         iTest       = BS3CPUINSTR3_TEST1_MODES_INDEX(bMode);
     2866    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     2867                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
     2868}
     2869
     2870
     2871/*
     2872 * [V]PUNPCKLQDQ
     2873 */
     2874BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpcklqdq(uint8_t bMode)
     2875{
     2876    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesOthers[] =
     2877    {
     2878        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2879            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
     2880            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
     2881        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
     2882            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
     2883            /* => */ RTUINT256_INIT_C(0xe1e2e3e4e5e6e7e8, 0xa1a2a3a4a5a6a7a8, 0xc1c2c3c4c5c6c7c8, 0x8182838485868788) },
     2884        {   /*src2*/ RTUINT256_INIT_C(0x5555666677778888, 0x1111222233334444, 0x1111222233334444, 0x5555666677778888),
     2885            /*src1*/ RTUINT256_INIT_C(0xddddeeeeffff0000, 0x9999aaaabbbbcccc, 0x9999aaaabbbbcccc, 0xddddeeeeffff0000),
     2886            /* => */ RTUINT256_INIT_C(0x1111222233334444, 0x9999aaaabbbbcccc, 0x5555666677778888, 0xddddeeeeffff0000) },
     2887        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
     2888            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
     2889            /* => */ RTUINT256_INIT_C(0x3ef417c8666b3fe6, 0xf95c8eec40725633, 0x9c5ce073930996bb, 0x43d3cda0238499fd) },
     2890    };
     2891
     2892    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
     2893    {
     2894        {  bs3CpuInstr3_punpcklqdq_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2895        {  bs3CpuInstr3_punpcklqdq_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2896        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2897        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2898        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2899        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2900    };
     2901    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
     2902    {
     2903        {  bs3CpuInstr3_punpcklqdq_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2904        {  bs3CpuInstr3_punpcklqdq_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2905        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2906        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2907        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2908        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2909    };
     2910    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
     2911    {
     2912        {  bs3CpuInstr3_punpcklqdq_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSSE3,     1, 1,   2, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2913        {  bs3CpuInstr3_punpcklqdq_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     1, 1, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2914        {  bs3CpuInstr3_punpcklqdq_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSSE3,     8, 8,   9, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2915        {  bs3CpuInstr3_punpcklqdq_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSSE3,     8, 8, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2916        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2917        {  bs3CpuInstr3_vpunpcklqdq_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2918        {  bs3CpuInstr3_vpunpcklqdq_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2919        {  bs3CpuInstr3_vpunpcklqdq_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2920        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2921        {  bs3CpuInstr3_vpunpcklqdq_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2922        {  bs3CpuInstr3_vpunpcklqdq_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
     2923        {  bs3CpuInstr3_vpunpcklqdq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesOthers), s_aValuesOthers },
    21872924    };
    21882925    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     
    30913828    static const BS3TESTMODEBYONEENTRY g_aTests[] =
    30923829    {
    3093 #if 0
     3830#if 1
    30943831        { "[v]andps/[v]andpd/[v]pand",                      bs3CpuInstr3_v_andps_andpd_pand, 0 },
    30953832        { "[v]andnps/[v]andnpd/[v]pandn",                   bs3CpuInstr3_v_andnps_andnpd_pandn, 0 },
     
    30973834        { "[v]xorps/[v]xorpd/[v]pxor",                      bs3CpuInstr3_v_xorps_xorpd_pxor, 0 },
    30983835#endif
    3099 #if 0
     3836#if 1
    31003837        { "[v]pcmpgtb/[v]pcmpgtw/[v]pcmpgtd/[v]pcmpgtq",    bs3CpuInstr3_v_pcmpgtb_pcmpgtw_pcmpgtd_pcmpgtq, 0 },
    31013838        { "[v]pcmpeqb/[v]pcmpeqw/[v]pcmpeqd/[v]pcmpeqq",    bs3CpuInstr3_v_pcmpeqb_pcmpeqw_pcmpeqd_pcmpeqq, 0 },
    31023839#endif
    3103 #if 0
     3840#if 1
    31043841        { "[v]paddb/[v]paddw/[v]paddd/[v]paddq",            bs3CpuInstr3_v_paddb_paddw_paddd_paddq, 0 },
    31053842        { "[v]psubb/[v]psubw/[v]psubd/[v]psubq",            bs3CpuInstr3_v_psubb_psubw_psubd_psubq, 0 },
    31063843#endif
    31073844#if 1
    3108         //{ "[v]pmovmskb",                                    bs3CpuInstr3_v_pmovmskb, 0 },
     3845        { "[v]pmovmskb",                                    bs3CpuInstr3_v_pmovmskb, 0 },
    31093846        { "pshufb",                                         bs3CpuInstr3_pshufb, 0 },
    3110         //{ "pshufw",                                         bs3CpuInstr3_pshufw, 0 },
    3111         //{ "[v]pshufhw",                                     bs3CpuInstr3_v_pshufhw, 0 },
    3112         //{ "[v]pshuflw",                                     bs3CpuInstr3_v_pshuflw, 0 },
    3113         //{ "[v]pshufd",                                      bs3CpuInstr3_v_pshufd, 0 },
     3847        { "pshufw",                                         bs3CpuInstr3_pshufw, 0 },
     3848        { "[v]pshufhw",                                     bs3CpuInstr3_v_pshufhw, 0 },
     3849        { "[v]pshuflw",                                     bs3CpuInstr3_v_pshuflw, 0 },
     3850        { "[v]pshufd",                                      bs3CpuInstr3_v_pshufd, 0 },
     3851#endif
     3852#if 1
     3853        { "[v]punpckhbw",                                   bs3CpuInstr3_v_punpckhbw, 0 },
     3854        { "[v]punpckhwd",                                   bs3CpuInstr3_v_punpckhwd, 0 },
     3855        { "[v]punpckhdq",                                   bs3CpuInstr3_v_punpckhdq, 0 },
     3856        { "[v]punpckhqdq",                                  bs3CpuInstr3_v_punpckhqdq, 0 },
     3857#endif
     3858#if 1
     3859        { "[v]punpcklbw",                                   bs3CpuInstr3_v_punpcklbw, 0 },
     3860        { "[v]punpcklwd",                                   bs3CpuInstr3_v_punpcklwd, 0 },
     3861        { "[v]punpckldq",                                   bs3CpuInstr3_v_punpckldq, 0 },
     3862        { "[v]punpcklqdq",                                  bs3CpuInstr3_v_punpcklqdq, 0 },
    31143863#endif
    31153864    };
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette