SB X5, (X6) // 23005300
SB X5, 4(X6) // 23025300
+ // 2.7: Memory Ordering Instructions
+ FENCE // 0f00f00f
+
// 5.2: Integer Computational Instructions (RV64I)
ADDIW $1, X5, X6 // 1b831200
SLLIW $1, X5, X6 // 1b931200
// These jumps can get printed as jumps to 2 because they go to the
// second instruction in the function (the first instruction is an
// invisible stack pointer adjustment).
- JMP start // JMP 2 // 6ff0dfcc
+ JMP start // JMP 2 // 6ff09fcc
JMP (X5) // 67800200
JMP 4(X5) // 67804200
ASH & obj.AMask: sIEncoding,
ASB & obj.AMask: sIEncoding,
+ // 2.7: Memory Ordering
+ AFENCE & obj.AMask: iIEncoding,
+
// 5.2: Integer Computational Instructions (RV64I)
AADDIW & obj.AMask: iIEncoding,
ASLLIW & obj.AMask: iIEncoding,
ins.rs1 = REG_ZERO
ins.imm = insEnc.csr
+ case AFENCE:
+ ins.rd, ins.rs1, ins.rs2 = REG_ZERO, REG_ZERO, obj.REG_NONE
+ ins.imm = 0x0ff
+
case AFCVTWS, AFCVTLS, AFCVTWUS, AFCVTLUS, AFCVTWD, AFCVTLD, AFCVTWUD, AFCVTLUD:
// Set the rounding mode in funct3 to round to zero.
ins.funct3 = 1
#include "textflag.h"
-#define FENCE WORD $0x0ff0000f
-
// func publicationBarrier()
TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
FENCE