├── .gitignore ├── .gitmodules ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dictionaries │ └── stefan.xml ├── highlighting.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── libraries │ ├── SBT__com_assembla_scala_incubator_graph_core_2_11_1_9_4_jar.xml │ ├── SBT__com_assembla_scala_incubator_graph_dot_2_11_1_10_0_jar.xml │ ├── SBT__com_github_nscala_time_nscala_time_2_11_2_2_0_jar.xml │ ├── SBT__com_github_scopt_scopt_2_11_3_3_0_jar.xml │ ├── SBT__com_github_tototoshi_scala_csv_2_11_1_2_2_jar.xml │ ├── SBT__com_jsuereth_scala_arm_2_11_1_4_jar.xml │ ├── SBT__com_thoughtworks_paranamer_paranamer_2_8_jar.xml │ ├── SBT__commons_io_commons_io_2_3_jar.xml │ ├── SBT__joda_time_joda_time_2_8_2_jar.xml │ ├── SBT__org_joda_joda_convert_1_7_jar.xml │ ├── SBT__org_json4s_json4s_ast_2_11_3_3_0_RC6_jar.xml │ ├── SBT__org_json4s_json4s_core_2_11_3_3_0_RC6_jar.xml │ ├── SBT__org_json4s_json4s_ext_2_11_3_3_0_RC6_jar.xml │ ├── SBT__org_json4s_json4s_native_2_11_3_3_0_RC6_jar.xml │ ├── SBT__org_json4s_json4s_scalap_2_11_3_3_0_RC6_jar.xml │ ├── SBT__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_1_jar.xml │ ├── SBT__org_scala_lang_modules_scala_xml_2_11_1_0_5_jar.xml │ ├── SBT__org_scala_lang_plugins_scala_continuations_library_2_11_1_0_1_jar.xml │ ├── SBT__org_scala_lang_scala_library_2_11_7_jar.xml │ ├── SBT__org_scala_lang_scala_reflect_2_11_7_jar.xml │ ├── SBT__org_scalatest_scalatest_2_11_2_1_6_jar.xml │ └── SBT__pl_project13_scala_rainbow_2_11_0_2_jar.xml ├── misc.xml ├── modules.xml ├── modules │ ├── strata-build.iml │ └── strata.iml ├── sbt.xml ├── scala_compiler.xml └── vcs.xml ├── LICENSE.md ├── Makefile ├── README.md ├── build.sbt ├── resources ├── conf-files │ ├── formal.conf │ └── search.conf ├── empty.s ├── function-templates │ ├── move_gp16_gp16_gp32.s │ ├── move_gp16_gp8_gp8.s │ ├── move_gp32_gp16_gp16.s │ ├── move_gp32_gp32_gp64.s │ ├── move_gp64_gp32_gp32.s │ ├── move_gp64_gp64_xmm.s │ ├── move_gp8_gp8_gp16.s │ ├── move_xmm_combine_2ways.s │ ├── move_xmm_combine_4way.s │ ├── move_xmm_gp32_gp32_gp32_gp32.s │ ├── move_xmm_gp64_gp64.s │ ├── move_xmm_split_2ways.s │ ├── move_xmm_split_4way.s │ ├── move_xmm_xmm_ymm.s │ └── move_ymm_xmm_xmm.s ├── imm8_baseset │ ├── adcb_r8_rh.s │ ├── adcb_rh_r8.s │ ├── adcb_rh_rh.s │ ├── addb_r8_r8.s │ ├── addb_r8_rh.s │ ├── addb_rh_r8.s │ ├── addb_rh_rh.s │ ├── addl_r32_r32.s │ ├── addpd_xmm_xmm.s │ ├── addps_xmm_xmm.s │ ├── addq_r64_r64.s │ ├── addsd_xmm_xmm.s │ ├── addss_xmm_xmm.s │ ├── addsubpd_xmm_xmm.s │ ├── addsubps_xmm_xmm.s │ ├── addw_r16_r16.s │ ├── andb_r8_r8.s │ ├── andb_r8_rh.s │ ├── andb_rh_r8.s │ ├── andb_rh_rh.s │ ├── andl_r32_r32.s │ ├── andnl_r32_r32_r32.s │ ├── andnpd_xmm_xmm.s │ ├── andnps_xmm_xmm.s │ ├── andnq_r64_r64_r64.s │ ├── andpd_xmm_xmm.s │ ├── andps_xmm_xmm.s │ ├── andq_r64_r64.s │ ├── andw_r16_r16.s │ ├── blsmskl_r32_r32.s │ ├── blsrl_r32_r32.s │ ├── bswap_r32.s │ ├── bswap_r64.s │ ├── btq_r64_r64.s │ ├── cbtw.s │ ├── clc.s │ ├── cltd.s │ ├── cltq.s │ ├── cmc.s │ ├── cmovael_r32_r32.s │ ├── cmovaeq_r64_r64.s │ ├── cmovaew_r16_r16.s │ ├── cmoval_r32_r32.s │ ├── cmovaq_r64_r64.s │ ├── cmovaw_r16_r16.s │ ├── cmovbel_r32_r32.s │ ├── cmovbeq_r64_r64.s │ ├── cmovbew_r16_r16.s │ ├── cmovbl_r32_r32.s │ ├── cmovbq_r64_r64.s │ ├── cmovbw_r16_r16.s │ ├── cmovcl_r32_r32.s │ ├── cmovcq_r64_r64.s │ ├── cmovcw_r16_r16.s │ ├── cmovel_r32_r32.s │ ├── cmovew_r16_r16.s │ ├── cmovgel_r32_r32.s │ ├── cmovgeq_r64_r64.s │ ├── cmovgew_r16_r16.s │ ├── cmovgl_r32_r32.s │ ├── cmovgq_r64_r64.s │ ├── cmovgw_r16_r16.s │ ├── cmovlel_r32_r32.s │ ├── cmovleq_r64_r64.s │ ├── cmovlew_r16_r16.s │ ├── cmovll_r32_r32.s │ ├── cmovlq_r64_r64.s │ ├── cmovlw_r16_r16.s │ ├── cmovnael_r32_r32.s │ ├── cmovnaeq_r64_r64.s │ ├── cmovnaew_r16_r16.s │ ├── cmovnal_r32_r32.s │ ├── cmovnaq_r64_r64.s │ ├── cmovnaw_r16_r16.s │ ├── cmovnbel_r32_r32.s │ ├── cmovnbeq_r64_r64.s │ ├── cmovnbew_r16_r16.s │ ├── cmovnbl_r32_r32.s │ ├── cmovnbq_r64_r64.s │ ├── cmovnbw_r16_r16.s │ ├── cmovncl_r32_r32.s │ ├── cmovncq_r64_r64.s │ ├── cmovncw_r16_r16.s │ ├── cmovnel_r32_r32.s │ ├── cmovneq_r64_r64.s │ ├── cmovnew_r16_r16.s │ ├── cmovngel_r32_r32.s │ ├── cmovngeq_r64_r64.s │ ├── cmovngew_r16_r16.s │ ├── cmovngl_r32_r32.s │ ├── cmovngq_r64_r64.s │ ├── cmovngw_r16_r16.s │ ├── cmovnlel_r32_r32.s │ ├── cmovnleq_r64_r64.s │ ├── cmovnlew_r16_r16.s │ ├── cmovnll_r32_r32.s │ ├── cmovnlq_r64_r64.s │ ├── cmovnlw_r16_r16.s │ ├── cmovnol_r32_r32.s │ ├── cmovnoq_r64_r64.s │ ├── cmovnow_r16_r16.s │ ├── cmovnpl_r32_r32.s │ ├── cmovnpq_r64_r64.s │ ├── cmovnpw_r16_r16.s │ ├── cmovnsl_r32_r32.s │ ├── cmovnsq_r64_r64.s │ ├── cmovnsw_r16_r16.s │ ├── cmovnzl_r32_r32.s │ ├── cmovnzq_r64_r64.s │ ├── cmovnzw_r16_r16.s │ ├── cmovol_r32_r32.s │ ├── cmovoq_r64_r64.s │ ├── cmovow_r16_r16.s │ ├── cmovpel_r32_r32.s │ ├── cmovpeq_r64_r64.s │ ├── cmovpew_r16_r16.s │ ├── cmovpl_r32_r32.s │ ├── cmovpol_r32_r32.s │ ├── cmovpoq_r64_r64.s │ ├── cmovpow_r16_r16.s │ ├── cmovpq_r64_r64.s │ ├── cmovpw_r16_r16.s │ ├── cmovsl_r32_r32.s │ ├── cmovsq_r64_r64.s │ ├── cmovsw_r16_r16.s │ ├── cmovzl_r32_r32.s │ ├── cmovzq_r64_r64.s │ ├── cmovzw_r16_r16.s │ ├── cmpb_r8_r8.s │ ├── cmpb_r8_rh.s │ ├── cmpb_rh_r8.s │ ├── cmpb_rh_rh.s │ ├── cmpl_r32_r32.s │ ├── cmpq_r64_r64.s │ ├── cmpw_r16_r16.s │ ├── cmpxchgb_r8_r8.s │ ├── cmpxchgb_r8_rh.s │ ├── cmpxchgb_rh_r8.s │ ├── cmpxchgb_rh_rh.s │ ├── cmpxchgw_r16_r16.s │ ├── cqto.s │ ├── cvtdq2pd_xmm_xmm.s │ ├── cvtdq2ps_xmm_xmm.s │ ├── cvtpd2dq_xmm_xmm.s │ ├── cvtpd2ps_xmm_xmm.s │ ├── cvtps2dq_xmm_xmm.s │ ├── cvtps2pd_xmm_xmm.s │ ├── cvtsd2sil_r32_xmm.s │ ├── cvtsd2ss_xmm_xmm.s │ ├── cvtsi2sdl_xmm_r32.s │ ├── cvtsi2ssl_xmm_r32.s │ ├── cvtss2sd_xmm_xmm.s │ ├── cvtss2sil_r32_xmm.s │ ├── cvttpd2dq_xmm_xmm.s │ ├── cvttsd2sil_r32_xmm.s │ ├── cvttss2sil_r32_xmm.s │ ├── cwtd.s │ ├── cwtl.s │ ├── decb_r8.s │ ├── decb_rh.s │ ├── decl_r32.s │ ├── decq_r64.s │ ├── decw_r16.s │ ├── divpd_xmm_xmm.s │ ├── divps_xmm_xmm.s │ ├── divsd_xmm_xmm.s │ ├── divss_xmm_xmm.s │ ├── haddpd_xmm_xmm.s │ ├── haddps_xmm_xmm.s │ ├── hsubpd_xmm_xmm.s │ ├── hsubps_xmm_xmm.s │ ├── incb_r8.s │ ├── incb_rh.s │ ├── incl_r32.s │ ├── incq_r64.s │ ├── incw_r16.s │ ├── maxpd_xmm_xmm.s │ ├── maxps_xmm_xmm.s │ ├── maxsd_xmm_xmm.s │ ├── maxss_xmm_xmm.s │ ├── minpd_xmm_xmm.s │ ├── minps_xmm_xmm.s │ ├── minsd_xmm_xmm.s │ ├── minss_xmm_xmm.s │ ├── movapd_xmm_xmm.s │ ├── movaps_xmm_xmm.s │ ├── movb_r8_r8.s │ ├── movb_rh_rh.s │ ├── movd_r32_xmm.s │ ├── movd_xmm_r32.s │ ├── movddup_xmm_xmm.s │ ├── movdqa_xmm_xmm.s │ ├── movdqu_xmm_xmm.s │ ├── movhlps_xmm_xmm.s │ ├── movl_r32_r32.s │ ├── movlhps_xmm_xmm.s │ ├── movmskpd_r32_xmm.s │ ├── movmskpd_r64_xmm.s │ ├── movq_r64_xmm.s │ ├── movq_xmm_r64.s │ ├── movq_xmm_xmm.s │ ├── movsbl_r32_r8.s │ ├── movsbl_r32_rh.s │ ├── movsbw_r16_r8.s │ ├── movsbw_r16_rh.s │ ├── movsd_xmm_xmm.s │ ├── movshdup_xmm_xmm.s │ ├── movsldup_xmm_xmm.s │ ├── movss_xmm_xmm.s │ ├── movswl_r32_r16.s │ ├── movupd_xmm_xmm.s │ ├── movups_xmm_xmm.s │ ├── movw_r16_r16.s │ ├── movzbl_r32_r8.s │ ├── movzbl_r32_rh.s │ ├── movzbq_r64_r8.s │ ├── movzbw_r16_r8.s │ ├── movzbw_r16_rh.s │ ├── movzwl_r32_r16.s │ ├── movzwq_r64_r16.s │ ├── mulpd_xmm_xmm.s │ ├── mulps_xmm_xmm.s │ ├── mulsd_xmm_xmm.s │ ├── mulss_xmm_xmm.s │ ├── negb_r8.s │ ├── negb_rh.s │ ├── negl_r32.s │ ├── negq_r64.s │ ├── negw_r16.s │ ├── nop.s │ ├── nopl_r32.s │ ├── nopw_r16.s │ ├── notb_r8.s │ ├── notb_rh.s │ ├── notl_r32.s │ ├── notq_r64.s │ ├── notw_r16.s │ ├── orb_r8_r8.s │ ├── orb_r8_rh.s │ ├── orb_rh_r8.s │ ├── orb_rh_rh.s │ ├── orl_r32_r32.s │ ├── orpd_xmm_xmm.s │ ├── orps_xmm_xmm.s │ ├── orw_r16_r16.s │ ├── paddd_xmm_xmm.s │ ├── paddq_xmm_xmm.s │ ├── pand_xmm_xmm.s │ ├── pandn_xmm_xmm.s │ ├── phaddd_xmm_xmm.s │ ├── phsubd_xmm_xmm.s │ ├── pmovsxbd_xmm_xmm.s │ ├── pmovsxbq_xmm_xmm.s │ ├── pmovsxdq_xmm_xmm.s │ ├── pmovsxwd_xmm_xmm.s │ ├── pmovsxwq_xmm_xmm.s │ ├── pmovzxbd_xmm_xmm.s │ ├── pmovzxbq_xmm_xmm.s │ ├── pmovzxdq_xmm_xmm.s │ ├── pmovzxwd_xmm_xmm.s │ ├── pmovzxwq_xmm_xmm.s │ ├── popcntl_r32_r32.s │ ├── popcntw_r16_r16.s │ ├── por_xmm_xmm.s │ ├── psubd_xmm_xmm.s │ ├── psubq_xmm_xmm.s │ ├── punpckhdq_xmm_xmm.s │ ├── punpckhqdq_xmm_xmm.s │ ├── punpckldq_xmm_xmm.s │ ├── punpcklqdq_xmm_xmm.s │ ├── pxor_xmm_xmm.s │ ├── rclb_r8_one.s │ ├── rclb_rh_one.s │ ├── rcll_r32_one.s │ ├── rclq_r64_one.s │ ├── rclw_r16_one.s │ ├── rcpps_xmm_xmm.s │ ├── rcpss_xmm_xmm.s │ ├── rolb_r8_one.s │ ├── rolb_rh_one.s │ ├── roll_r32_one.s │ ├── rolq_r64_one.s │ ├── rolw_r16_one.s │ ├── rorb_r8_one.s │ ├── rorb_rh_one.s │ ├── rsqrtps_xmm_xmm.s │ ├── rsqrtss_xmm_xmm.s │ ├── salb_r8_one.s │ ├── salb_rh_one.s │ ├── sall_r32_one.s │ ├── salq_r64_one.s │ ├── salw_r16_one.s │ ├── sarb_r8_one.s │ ├── sarb_rh_one.s │ ├── sarl_r32_one.s │ ├── sarq_r64_one.s │ ├── sarw_r16_one.s │ ├── sarxq_r64_r64_r64.s │ ├── sbbb_r8_r8.s │ ├── sbbb_r8_rh.s │ ├── sbbb_rh_r8.s │ ├── sbbb_rh_rh.s │ ├── sbbl_r32_r32.s │ ├── sbbq_r64_r64.s │ ├── sbbw_r16_r16.s │ ├── seta_r8.s │ ├── seta_rh.s │ ├── setae_r8.s │ ├── setae_rh.s │ ├── setb_r8.s │ ├── setb_rh.s │ ├── setbe_r8.s │ ├── setbe_rh.s │ ├── setc_r8.s │ ├── setc_rh.s │ ├── sete_r8.s │ ├── sete_rh.s │ ├── setg_r8.s │ ├── setg_rh.s │ ├── setge_r8.s │ ├── setge_rh.s │ ├── setl_r8.s │ ├── setl_rh.s │ ├── setle_r8.s │ ├── setle_rh.s │ ├── setna_r8.s │ ├── setna_rh.s │ ├── setnae_r8.s │ ├── setnae_rh.s │ ├── setnb_r8.s │ ├── setnb_rh.s │ ├── setnbe_r8.s │ ├── setnbe_rh.s │ ├── setnc_r8.s │ ├── setnc_rh.s │ ├── setne_r8.s │ ├── setne_rh.s │ ├── setng_r8.s │ ├── setng_rh.s │ ├── setnge_r8.s │ ├── setnge_rh.s │ ├── setnl_r8.s │ ├── setnl_rh.s │ ├── setnle_r8.s │ ├── setnle_rh.s │ ├── setno_r8.s │ ├── setno_rh.s │ ├── setnp_r8.s │ ├── setnp_rh.s │ ├── setns_r8.s │ ├── setns_rh.s │ ├── setnz_r8.s │ ├── setnz_rh.s │ ├── seto_r8.s │ ├── seto_rh.s │ ├── setp_r8.s │ ├── setp_rh.s │ ├── setpe_r8.s │ ├── setpe_rh.s │ ├── setpo_r8.s │ ├── setpo_rh.s │ ├── sets_r8.s │ ├── sets_rh.s │ ├── setz_r8.s │ ├── setz_rh.s │ ├── shlb_r8_one.s │ ├── shlb_rh_one.s │ ├── shll_r32_one.s │ ├── shlq_r64_cl.s │ ├── shlq_r64_one.s │ ├── shlw_r16_one.s │ ├── shlxq_r64_r64_r64.s │ ├── shrxq_r64_r64_r64.s │ ├── sqrtpd_xmm_xmm.s │ ├── sqrtps_xmm_xmm.s │ ├── sqrtsd_xmm_xmm.s │ ├── sqrtss_xmm_xmm.s │ ├── stc.s │ ├── subb_r8_r8.s │ ├── subb_r8_rh.s │ ├── subb_rh_r8.s │ ├── subb_rh_rh.s │ ├── subl_r32_r32.s │ ├── subpd_xmm_xmm.s │ ├── subps_xmm_xmm.s │ ├── subq_r64_r64.s │ ├── subsd_xmm_xmm.s │ ├── subss_xmm_xmm.s │ ├── subw_r16_r16.s │ ├── testb_r8_r8.s │ ├── testb_r8_rh.s │ ├── testb_rh_r8.s │ ├── testb_rh_rh.s │ ├── testl_r32_r32.s │ ├── testq_r64_r64.s │ ├── testw_r16_r16.s │ ├── tzcntl_r32_r32.s │ ├── unpckhpd_xmm_xmm.s │ ├── unpckhps_xmm_xmm.s │ ├── unpcklpd_xmm_xmm.s │ ├── unpcklps_xmm_xmm.s │ ├── vaddpd_xmm_xmm_xmm.s │ ├── vaddps_xmm_xmm_xmm.s │ ├── vaddsd_xmm_xmm_xmm.s │ ├── vaddss_xmm_xmm_xmm.s │ ├── vaddsubpd_xmm_xmm_xmm.s │ ├── vaddsubps_xmm_xmm_xmm.s │ ├── vandnpd_xmm_xmm_xmm.s │ ├── vandnpd_ymm_ymm_ymm.s │ ├── vandnps_xmm_xmm_xmm.s │ ├── vandnps_ymm_ymm_ymm.s │ ├── vandpd_xmm_xmm_xmm.s │ ├── vandpd_ymm_ymm_ymm.s │ ├── vandps_xmm_xmm_xmm.s │ ├── vandps_ymm_ymm_ymm.s │ ├── vbroadcastsd_ymm_xmm.s │ ├── vbroadcastss_xmm_xmm.s │ ├── vbroadcastss_ymm_xmm.s │ ├── vcvtdq2pd_xmm_xmm.s │ ├── vcvtdq2ps_xmm_xmm.s │ ├── vcvtpd2dqx_xmm_xmm.s │ ├── vcvtpd2ps_xmm_xmm.s │ ├── vcvtps2dq_xmm_xmm.s │ ├── vcvtps2pd_xmm_xmm.s │ ├── vcvtsd2sil_r32_xmm.s │ ├── vcvtsd2ss_xmm_xmm_xmm.s │ ├── vcvtsi2sdl_xmm_xmm_r32.s │ ├── vcvtsi2ssl_xmm_xmm_r32.s │ ├── vcvtss2sd_xmm_xmm_xmm.s │ ├── vcvtss2sil_r32_xmm.s │ ├── vcvttpd2dq_xmm_xmm.s │ ├── vcvttps2dq_xmm_xmm.s │ ├── vcvttsd2sil_r32_xmm.s │ ├── vcvttss2sil_r32_xmm.s │ ├── vdivpd_xmm_xmm_xmm.s │ ├── vdivps_xmm_xmm_xmm.s │ ├── vdivsd_xmm_xmm_xmm.s │ ├── vdivss_xmm_xmm_xmm.s │ ├── vfmadd132pd_xmm_xmm_xmm.s │ ├── vfmadd132ps_xmm_xmm_xmm.s │ ├── vfmadd132sd_xmm_xmm_xmm.s │ ├── vfmadd132ss_xmm_xmm_xmm.s │ ├── vfmadd213pd_xmm_xmm_xmm.s │ ├── vfmadd213pd_ymm_ymm_ymm.s │ ├── vfmadd213ps_xmm_xmm_xmm.s │ ├── vfmadd213ps_ymm_ymm_ymm.s │ ├── vfmadd213sd_xmm_xmm_xmm.s │ ├── vfmadd213ss_xmm_xmm_xmm.s │ ├── vfmadd231pd_xmm_xmm_xmm.s │ ├── vfmadd231pd_ymm_ymm_ymm.s │ ├── vfmadd231ps_xmm_xmm_xmm.s │ ├── vfmadd231ps_ymm_ymm_ymm.s │ ├── vfmadd231sd_xmm_xmm_xmm.s │ ├── vfmadd231ss_xmm_xmm_xmm.s │ ├── vfmaddsub132pd_xmm_xmm_xmm.s │ ├── vfmaddsub132ps_xmm_xmm_xmm.s │ ├── vfmaddsub213pd_xmm_xmm_xmm.s │ ├── vfmaddsub213ps_xmm_xmm_xmm.s │ ├── vfmaddsub231pd_xmm_xmm_xmm.s │ ├── vfmaddsub231ps_xmm_xmm_xmm.s │ ├── vfmsub132pd_xmm_xmm_xmm.s │ ├── vfmsub132ps_xmm_xmm_xmm.s │ ├── vfmsub132sd_xmm_xmm_xmm.s │ ├── vfmsub132ss_xmm_xmm_xmm.s │ ├── vfmsub213pd_xmm_xmm_xmm.s │ ├── vfmsub213pd_ymm_ymm_ymm.s │ ├── vfmsub213ps_xmm_xmm_xmm.s │ ├── vfmsub213ps_ymm_ymm_ymm.s │ ├── vfmsub213sd_xmm_xmm_xmm.s │ ├── vfmsub213ss_xmm_xmm_xmm.s │ ├── vfmsub231pd_xmm_xmm_xmm.s │ ├── vfmsub231pd_ymm_ymm_ymm.s │ ├── vfmsub231ps_xmm_xmm_xmm.s │ ├── vfmsub231ps_ymm_ymm_ymm.s │ ├── vfmsub231sd_xmm_xmm_xmm.s │ ├── vfmsub231ss_xmm_xmm_xmm.s │ ├── vfmsubadd132pd_xmm_xmm_xmm.s │ ├── vfmsubadd132ps_xmm_xmm_xmm.s │ ├── vfmsubadd213pd_xmm_xmm_xmm.s │ ├── vfmsubadd213ps_xmm_xmm_xmm.s │ ├── vfmsubadd231pd_xmm_xmm_xmm.s │ ├── vfmsubadd231ps_xmm_xmm_xmm.s │ ├── vfnmadd132pd_xmm_xmm_xmm.s │ ├── vfnmadd132ps_xmm_xmm_xmm.s │ ├── vfnmadd132sd_xmm_xmm_xmm.s │ ├── vfnmadd132ss_xmm_xmm_xmm.s │ ├── vfnmadd213pd_xmm_xmm_xmm.s │ ├── vfnmadd213pd_ymm_ymm_ymm.s │ ├── vfnmadd213ps_xmm_xmm_xmm.s │ ├── vfnmadd213ps_ymm_ymm_ymm.s │ ├── vfnmadd213sd_xmm_xmm_xmm.s │ ├── vfnmadd231pd_xmm_xmm_xmm.s │ ├── vfnmadd231pd_ymm_ymm_ymm.s │ ├── vfnmadd231ps_xmm_xmm_xmm.s │ ├── vfnmadd231ps_ymm_ymm_ymm.s │ ├── vfnmadd231sd_xmm_xmm_xmm.s │ ├── vfnmadd231ss_xmm_xmm_xmm.s │ ├── vfnmsub132pd_xmm_xmm_xmm.s │ ├── vfnmsub132ps_xmm_xmm_xmm.s │ ├── vfnmsub132sd_xmm_xmm_xmm.s │ ├── vfnmsub132ss_xmm_xmm_xmm.s │ ├── vfnmsub213pd_xmm_xmm_xmm.s │ ├── vfnmsub213pd_ymm_ymm_ymm.s │ ├── vfnmsub213ps_xmm_xmm_xmm.s │ ├── vfnmsub213ps_ymm_ymm_ymm.s │ ├── vfnmsub213sd_xmm_xmm_xmm.s │ ├── vfnmsub213ss_xmm_xmm_xmm.s │ ├── vfnmsub231pd_xmm_xmm_xmm.s │ ├── vfnmsub231pd_ymm_ymm_ymm.s │ ├── vfnmsub231ps_xmm_xmm_xmm.s │ ├── vfnmsub231ps_ymm_ymm_ymm.s │ ├── vfnmsub231sd_xmm_xmm_xmm.s │ ├── vfnmsub231ss_xmm_xmm_xmm.s │ ├── vhaddpd_xmm_xmm_xmm.s │ ├── vhaddpd_ymm_ymm_ymm.s │ ├── vhaddps_xmm_xmm_xmm.s │ ├── vhaddps_ymm_ymm_ymm.s │ ├── vhsubpd_xmm_xmm_xmm.s │ ├── vhsubpd_ymm_ymm_ymm.s │ ├── vhsubps_xmm_xmm_xmm.s │ ├── vhsubps_ymm_ymm_ymm.s │ ├── vmaxpd_xmm_xmm_xmm.s │ ├── vmaxps_xmm_xmm_xmm.s │ ├── vmaxsd_xmm_xmm_xmm.s │ ├── vmaxss_xmm_xmm_xmm.s │ ├── vminpd_xmm_xmm_xmm.s │ ├── vminps_xmm_xmm_xmm.s │ ├── vminsd_xmm_xmm_xmm.s │ ├── vminss_xmm_xmm_xmm.s │ ├── vmovapd_xmm_xmm.s │ ├── vmovapd_ymm_ymm.s │ ├── vmovaps_xmm_xmm.s │ ├── vmovaps_ymm_ymm.s │ ├── vmovd_r32_xmm.s │ ├── vmovd_xmm_r32.s │ ├── vmovddup_xmm_xmm.s │ ├── vmovddup_ymm_ymm.s │ ├── vmovdqa_xmm_xmm.s │ ├── vmovdqa_ymm_ymm.s │ ├── vmovdqu_xmm_xmm.s │ ├── vmovdqu_ymm_ymm.s │ ├── vmovhlps_xmm_xmm_xmm.s │ ├── vmovlhps_xmm_xmm_xmm.s │ ├── vmovmskpd_r32_xmm.s │ ├── vmovmskpd_r64_xmm.s │ ├── vmovq_r64_xmm.s │ ├── vmovq_xmm_r64.s │ ├── vmovq_xmm_xmm.s │ ├── vmovsd_xmm_xmm_xmm.s │ ├── vmovshdup_xmm_xmm.s │ ├── vmovshdup_ymm_ymm.s │ ├── vmovsldup_xmm_xmm.s │ ├── vmovsldup_ymm_ymm.s │ ├── vmovss_xmm_xmm_xmm.s │ ├── vmovupd_xmm_xmm.s │ ├── vmovupd_ymm_ymm.s │ ├── vmovups_xmm_xmm.s │ ├── vmovups_ymm_ymm.s │ ├── vmulpd_xmm_xmm_xmm.s │ ├── vmulps_xmm_xmm_xmm.s │ ├── vmulsd_xmm_xmm_xmm.s │ ├── vmulss_xmm_xmm_xmm.s │ ├── vorpd_xmm_xmm_xmm.s │ ├── vorpd_ymm_ymm_ymm.s │ ├── vorps_xmm_xmm_xmm.s │ ├── vorps_ymm_ymm_ymm.s │ ├── vpaddd_xmm_xmm_xmm.s │ ├── vpaddd_ymm_ymm_ymm.s │ ├── vpaddq_xmm_xmm_xmm.s │ ├── vpand_xmm_xmm_xmm.s │ ├── vpand_ymm_ymm_ymm.s │ ├── vpandn_xmm_xmm_xmm.s │ ├── vpandn_ymm_ymm_ymm.s │ ├── vpbroadcastb_xmm_xmm.s │ ├── vpbroadcastb_ymm_xmm.s │ ├── vpbroadcastd_xmm_xmm.s │ ├── vpbroadcastd_ymm_xmm.s │ ├── vpbroadcastq_xmm_xmm.s │ ├── vpbroadcastq_ymm_xmm.s │ ├── vpbroadcastw_xmm_xmm.s │ ├── vpbroadcastw_ymm_xmm.s │ ├── vphaddd_xmm_xmm_xmm.s │ ├── vphaddd_ymm_ymm_ymm.s │ ├── vphsubd_xmm_xmm_xmm.s │ ├── vphsubd_ymm_ymm_ymm.s │ ├── vpmovsxbd_xmm_xmm.s │ ├── vpmovsxbd_ymm_xmm.s │ ├── vpmovsxbq_xmm_xmm.s │ ├── vpmovsxbq_ymm_xmm.s │ ├── vpmovsxdq_xmm_xmm.s │ ├── vpmovsxdq_ymm_xmm.s │ ├── vpmovsxwd_xmm_xmm.s │ ├── vpmovsxwd_ymm_xmm.s │ ├── vpmovsxwq_xmm_xmm.s │ ├── vpmovsxwq_ymm_xmm.s │ ├── vpmovzxbd_xmm_xmm.s │ ├── vpmovzxbd_ymm_xmm.s │ ├── vpmovzxbq_xmm_xmm.s │ ├── vpmovzxbq_ymm_xmm.s │ ├── vpmovzxdq_xmm_xmm.s │ ├── vpmovzxdq_ymm_xmm.s │ ├── vpmovzxwd_xmm_xmm.s │ ├── vpmovzxwd_ymm_xmm.s │ ├── vpmovzxwq_xmm_xmm.s │ ├── vpmovzxwq_ymm_xmm.s │ ├── vpor_xmm_xmm_xmm.s │ ├── vpor_ymm_ymm_ymm.s │ ├── vpsubd_xmm_xmm_xmm.s │ ├── vpsubd_ymm_ymm_ymm.s │ ├── vpsubq_xmm_xmm_xmm.s │ ├── vpunpckhdq_xmm_xmm_xmm.s │ ├── vpunpckhdq_ymm_ymm_ymm.s │ ├── vpunpckhqdq_xmm_xmm_xmm.s │ ├── vpunpckhqdq_ymm_ymm_ymm.s │ ├── vpunpckldq_xmm_xmm_xmm.s │ ├── vpunpckldq_ymm_ymm_ymm.s │ ├── vpunpcklqdq_xmm_xmm_xmm.s │ ├── vpunpcklqdq_ymm_ymm_ymm.s │ ├── vpxor_xmm_xmm_xmm.s │ ├── vpxor_ymm_ymm_ymm.s │ ├── vrcpps_xmm_xmm.s │ ├── vrcpss_xmm_xmm_xmm.s │ ├── vrsqrtps_xmm_xmm.s │ ├── vrsqrtss_xmm_xmm_xmm.s │ ├── vsqrtpd_xmm_xmm.s │ ├── vsqrtps_xmm_xmm.s │ ├── vsqrtsd_xmm_xmm_xmm.s │ ├── vsqrtss_xmm_xmm_xmm.s │ ├── vsubpd_xmm_xmm_xmm.s │ ├── vsubps_xmm_xmm_xmm.s │ ├── vsubsd_xmm_xmm_xmm.s │ ├── vsubss_xmm_xmm_xmm.s │ ├── vunpckhpd_xmm_xmm_xmm.s │ ├── vunpckhpd_ymm_ymm_ymm.s │ ├── vunpckhps_xmm_xmm_xmm.s │ ├── vunpckhps_ymm_ymm_ymm.s │ ├── vunpcklpd_xmm_xmm_xmm.s │ ├── vunpcklpd_ymm_ymm_ymm.s │ ├── vunpcklps_xmm_xmm_xmm.s │ ├── vunpcklps_ymm_ymm_ymm.s │ ├── vxorpd_xmm_xmm_xmm.s │ ├── vxorpd_ymm_ymm_ymm.s │ ├── vxorps_xmm_xmm_xmm.s │ ├── vxorps_ymm_ymm_ymm.s │ ├── xaddb_r8_r8.s │ ├── xaddb_r8_rh.s │ ├── xaddb_rh_r8.s │ ├── xaddb_rh_rh.s │ ├── xaddl_r32_r32.s │ ├── xaddq_r64_r64.s │ ├── xaddw_r16_r16.s │ ├── xchgb_r8_r8.s │ ├── xchgb_r8_rh.s │ ├── xchgb_rh_r8.s │ ├── xchgb_rh_rh.s │ ├── xchgl_eax_r32.s │ ├── xchgl_r32_eax.s │ ├── xchgl_r32_r32.s │ ├── xchgq_r64_r64.s │ ├── xchgq_r64_rax.s │ ├── xchgq_rax_r64.s │ ├── xchgw_ax_r16.s │ ├── xchgw_r16_ax.s │ ├── xchgw_r16_r16.s │ ├── xorb_r8_r8.s │ ├── xorb_r8_rh.s │ ├── xorb_rh_r8.s │ ├── xorb_rh_rh.s │ ├── xorl_r32_r32.s │ ├── xorpd_xmm_xmm.s │ ├── xorps_xmm_xmm.s │ └── xorw_r16_r16.s └── logo │ └── strata.png ├── scripts ├── graphs │ ├── config.py │ ├── levels.py │ ├── progress.py │ ├── size.py │ ├── size2.py │ └── style.mplstyle └── python │ ├── create_functions.py │ └── fs.py ├── src └── main │ ├── resources │ └── all.instrs │ └── scala │ └── strata │ ├── Check.scala │ ├── Driver.scala │ ├── Initialize.scala │ ├── Statistics.scala │ ├── data │ ├── Instruction.scala │ ├── InstructionMeta.scala │ ├── Log.scala │ ├── Program.scala │ ├── State.scala │ └── Stoke.scala │ ├── main.scala │ ├── tasks │ ├── InitialSearch.scala │ ├── Result.scala │ ├── SecondarySearch.scala │ └── Task.scala │ └── util │ ├── ColoredOutput.scala │ ├── Distribution.scala │ ├── IO.scala │ ├── Locking.scala │ ├── Sorting.scala │ └── Timing.scala └── strata /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .idea/workspace.xml 3 | *.pyc 4 | bin/ 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "stoke"] 2 | path = stoke 3 | url = git@github.com:StanfordPL/stoke.git 4 | branch = feature-strata 5 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | strata -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dictionaries/stefan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | opcode 5 | workdir 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/highlighting.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_assembla_scala_incubator_graph_core_2_11_1_9_4_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_assembla_scala_incubator_graph_dot_2_11_1_10_0_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_github_nscala_time_nscala_time_2_11_2_2_0_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_github_scopt_scopt_2_11_3_3_0_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_github_tototoshi_scala_csv_2_11_1_2_2_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_jsuereth_scala_arm_2_11_1_4_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__com_thoughtworks_paranamer_paranamer_2_8_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__commons_io_commons_io_2_3_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__joda_time_joda_time_2_8_2_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_joda_joda_convert_1_7_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_json4s_json4s_ast_2_11_3_3_0_RC6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_json4s_json4s_core_2_11_3_3_0_RC6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_json4s_json4s_ext_2_11_3_3_0_RC6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_json4s_json4s_native_2_11_3_3_0_RC6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_json4s_json4s_scalap_2_11_3_3_0_RC6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_1_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scala_lang_modules_scala_xml_2_11_1_0_5_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scala_lang_plugins_scala_continuations_library_2_11_1_0_1_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scala_lang_scala_library_2_11_7_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scala_lang_scala_reflect_2_11_7_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__org_scalatest_scalatest_2_11_2_1_6_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/SBT__pl_project13_scala_rainbow_2_11_0_2_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/scala_compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/empty.s: -------------------------------------------------------------------------------- 1 | .empty: 2 | retq 3 | -------------------------------------------------------------------------------- /resources/function-templates/move_gp16_gp16_gp32.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_016_032_[gp16_0]_[gp16_1]_[gp32_0] 3 | .type [name], @function 4 | #! maybe-read { %[gp16_0] %[gp16_1] } 5 | #! maybe-write { %[gp32_0] } 6 | #! must-undef { %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp16_0] and [gp16_1] to [gp32_0]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movw %[gp16_1], %r15w 13 | shlq $0x10, %r15 14 | movw %[gp16_0], %r15w 15 | movl %r15d, %[gp32_0] 16 | popfq 17 | retq 18 | 19 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/function-templates/move_gp16_gp8_gp8.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_016_008_[gp16_0]_[gp8_0]_[gp8_1] 3 | .type [name], @function 4 | #! maybe-read { %[gp16_0] } 5 | #! maybe-write { %[gp8_0] %[gp8_1] } 6 | #! must-undef { %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp16_0] to [gp8_0] and [gp8_1]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movw %[gp16_0], %r15w 13 | movb %r15b, %[gp8_0] 14 | shrq $0x8, %r15 15 | movb %r15b, %[gp8_1] 16 | popfq 17 | retq 18 | 19 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/function-templates/move_gp32_gp16_gp16.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_032_016_[gp32_0]_[gp16_0]_[gp16_1] 3 | .type [name], @function 4 | #! maybe-read { %[gp32_0] } 5 | #! maybe-write { %[gp16_0] %[gp16_1] } 6 | #! must-undef { %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp32_0] to [gp16_0] and [gp16_1]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movl %[gp32_0], %r15d 13 | movw %r15w, %[gp16_0] 14 | shrq $0x10, %r15 15 | movw %r15w, %[gp16_1] 16 | popfq 17 | retq 18 | 19 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/function-templates/move_gp32_gp32_gp64.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_032_064_[gp32_0]_[gp32_1]_[gp64_0] 3 | .type [name], @function 4 | #! maybe-read { %[gp32_0] %[gp32_1] } 5 | #! maybe-write { %[gp64_0] } 6 | #! must-undef { %r14 %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp32_0] and [gp32_1] to [gp64_0]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movl %[gp32_1], %r15d 13 | shlq $0x20, %r15 14 | movl %[gp32_0], %r14d 15 | orq %r14, %r15 16 | movq %r15, %[gp64_0] 17 | popfq 18 | retq 19 | 20 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/function-templates/move_gp64_gp32_gp32.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_064_032_[gp64_0]_[gp32_0]_[gp32_1] 3 | .type [name], @function 4 | #! maybe-read { %[gp64_0] } 5 | #! maybe-write { %[gp32_0] %[gp32_1] } 6 | #! must-undef { %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp64_0] to [gp32_0] and [gp32_1]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movq %[gp64_0], %r15 13 | movl %r15d, %[gp32_0] 14 | shrq $0x20, %r15 15 | movl %r15d, %[gp32_1] 16 | popfq 17 | retq 18 | 19 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/function-templates/move_gp8_gp8_gp16.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl move_008_016_[gp8_0]_[gp8_1]_[gp16_0] 3 | .type [name], @function 4 | #! maybe-read { %[gp8_0] %[gp8_1] } 5 | #! maybe-write { %[gp16_0] } 6 | #! must-undef { %r15 } 7 | .[name]: 8 | # ---------------------------------------------------------------------------- 9 | # moves [gp8_0] and [gp8_1] to [gp16_0]. 10 | # ---------------------------------------------------------------------------- 11 | pushfq 12 | movb %[gp8_1], %r15b 13 | shlq $0x8, %r15 14 | movb %[gp8_0], %r15b 15 | movw %r15w, %[gp16_0] 16 | popfq 17 | retq 18 | 19 | .size [name], .-[name] -------------------------------------------------------------------------------- /resources/imm8_baseset/adcb_r8_rh.s: -------------------------------------------------------------------------------- 1 | .text 2 | .globl target 3 | .type target, @function 4 | 5 | #! file-offset 0 6 | #! rip-offset 0 7 | #! capacity 3 bytes 8 | 9 | # Text # Line RIP Bytes Opcode 10 | .target: # 0 0 OPC=