< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page




8945 %}
8946 
8947 // TODO
8948 // implement storeImmF0 and storeFImmPacked
8949 
8950 // Store Double
8951 instruct storeD_volatile(vRegD src, /* sync_memory*/indirect mem)
8952 %{
8953   match(Set mem (StoreD mem src));
8954 
8955   ins_cost(VOLATILE_REF_COST);
8956   format %{ "stlrd  $src, $mem\t# double" %}
8957 
8958   ins_encode( aarch64_enc_fstlrd(src, mem) );
8959 
8960   ins_pipe(pipe_class_memory);
8961 %}
8962 
8963 //  ---------------- end of volatile loads and stores ----------------
8964 






































8965 // ============================================================================
8966 // BSWAP Instructions
8967 
8968 instruct bytes_reverse_int(iRegINoSp dst, iRegIorL2I src) %{
8969   match(Set dst (ReverseBytesI src));
8970 
8971   ins_cost(INSN_COST);
8972   format %{ "revw  $dst, $src" %}
8973 
8974   ins_encode %{
8975     __ revw(as_Register($dst$$reg), as_Register($src$$reg));
8976   %}
8977 
8978   ins_pipe(ialu_reg);
8979 %}
8980 
8981 instruct bytes_reverse_long(iRegLNoSp dst, iRegL src) %{
8982   match(Set dst (ReverseBytesL src));
8983 
8984   ins_cost(INSN_COST);




8945 %}
8946 
8947 // TODO
8948 // implement storeImmF0 and storeFImmPacked
8949 
8950 // Store Double
8951 instruct storeD_volatile(vRegD src, /* sync_memory*/indirect mem)
8952 %{
8953   match(Set mem (StoreD mem src));
8954 
8955   ins_cost(VOLATILE_REF_COST);
8956   format %{ "stlrd  $src, $mem\t# double" %}
8957 
8958   ins_encode( aarch64_enc_fstlrd(src, mem) );
8959 
8960   ins_pipe(pipe_class_memory);
8961 %}
8962 
8963 //  ---------------- end of volatile loads and stores ----------------
8964 
8965 instruct cacheWB(indirect addr)
8966 %{
8967   match(CacheWB addr);
8968 
8969   ins_cost(100);
8970   format %{"cache wb $addr" %}
8971   ins_encode %{
8972     assert($addr->index_position() < 0, "should be");
8973     assert($addr$$disp == 0, "should be");
8974     __ cache_wb(Address($addr$$base$$Register, 0));
8975   %}
8976   ins_pipe(pipe_slow); // XXX
8977 %}
8978 
8979 instruct cacheWBPreSync()
8980 %{
8981   match(CacheWBPreSync);
8982 
8983   ins_cost(100);
8984   format %{"cache wb presync" %}
8985   ins_encode %{
8986     __ cache_wbsync(true);
8987   %}
8988   ins_pipe(pipe_slow); // XXX
8989 %}
8990 
8991 instruct cacheWBPostSync()
8992 %{
8993   match(CacheWBPostSync);
8994 
8995   ins_cost(100);
8996   format %{"cache wb postsync" %}
8997   ins_encode %{
8998     __ cache_wbsync(false);
8999   %}
9000   ins_pipe(pipe_slow); // XXX
9001 %}
9002 
9003 // ============================================================================
9004 // BSWAP Instructions
9005 
9006 instruct bytes_reverse_int(iRegINoSp dst, iRegIorL2I src) %{
9007   match(Set dst (ReverseBytesI src));
9008 
9009   ins_cost(INSN_COST);
9010   format %{ "revw  $dst, $src" %}
9011 
9012   ins_encode %{
9013     __ revw(as_Register($dst$$reg), as_Register($src$$reg));
9014   %}
9015 
9016   ins_pipe(ialu_reg);
9017 %}
9018 
9019 instruct bytes_reverse_long(iRegLNoSp dst, iRegL src) %{
9020   match(Set dst (ReverseBytesL src));
9021 
9022   ins_cost(INSN_COST);


< prev index next >