162306a36Sopenharmony_ci{
262306a36Sopenharmony_ci	"atomic exchange smoketest - 64bit",
362306a36Sopenharmony_ci	.insns = {
462306a36Sopenharmony_ci		/* val = 3; */
562306a36Sopenharmony_ci		BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 3),
662306a36Sopenharmony_ci		/* old = atomic_xchg(&val, 4); */
762306a36Sopenharmony_ci		BPF_MOV64_IMM(BPF_REG_1, 4),
862306a36Sopenharmony_ci		BPF_ATOMIC_OP(BPF_DW, BPF_XCHG, BPF_REG_10, BPF_REG_1, -8),
962306a36Sopenharmony_ci		/* if (old != 3) exit(1); */
1062306a36Sopenharmony_ci		BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 2),
1162306a36Sopenharmony_ci		BPF_MOV64_IMM(BPF_REG_0, 1),
1262306a36Sopenharmony_ci		BPF_EXIT_INSN(),
1362306a36Sopenharmony_ci		/* if (val != 4) exit(2); */
1462306a36Sopenharmony_ci		BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_10, -8),
1562306a36Sopenharmony_ci		BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 4, 2),
1662306a36Sopenharmony_ci		BPF_MOV64_IMM(BPF_REG_0, 2),
1762306a36Sopenharmony_ci		BPF_EXIT_INSN(),
1862306a36Sopenharmony_ci		/* exit(0); */
1962306a36Sopenharmony_ci		BPF_MOV64_IMM(BPF_REG_0, 0),
2062306a36Sopenharmony_ci		BPF_EXIT_INSN(),
2162306a36Sopenharmony_ci	},
2262306a36Sopenharmony_ci	.result = ACCEPT,
2362306a36Sopenharmony_ci},
2462306a36Sopenharmony_ci{
2562306a36Sopenharmony_ci	"atomic exchange smoketest - 32bit",
2662306a36Sopenharmony_ci	.insns = {
2762306a36Sopenharmony_ci		/* val = 3; */
2862306a36Sopenharmony_ci		BPF_ST_MEM(BPF_W, BPF_REG_10, -4, 3),
2962306a36Sopenharmony_ci		/* old = atomic_xchg(&val, 4); */
3062306a36Sopenharmony_ci		BPF_MOV32_IMM(BPF_REG_1, 4),
3162306a36Sopenharmony_ci		BPF_ATOMIC_OP(BPF_W, BPF_XCHG, BPF_REG_10, BPF_REG_1, -4),
3262306a36Sopenharmony_ci		/* if (old != 3) exit(1); */
3362306a36Sopenharmony_ci		BPF_JMP32_IMM(BPF_JEQ, BPF_REG_1, 3, 2),
3462306a36Sopenharmony_ci		BPF_MOV32_IMM(BPF_REG_0, 1),
3562306a36Sopenharmony_ci		BPF_EXIT_INSN(),
3662306a36Sopenharmony_ci		/* if (val != 4) exit(2); */
3762306a36Sopenharmony_ci		BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4),
3862306a36Sopenharmony_ci		BPF_JMP32_IMM(BPF_JEQ, BPF_REG_0, 4, 2),
3962306a36Sopenharmony_ci		BPF_MOV32_IMM(BPF_REG_0, 2),
4062306a36Sopenharmony_ci		BPF_EXIT_INSN(),
4162306a36Sopenharmony_ci		/* exit(0); */
4262306a36Sopenharmony_ci		BPF_MOV32_IMM(BPF_REG_0, 0),
4362306a36Sopenharmony_ci		BPF_EXIT_INSN(),
4462306a36Sopenharmony_ci	},
4562306a36Sopenharmony_ci	.result = ACCEPT,
4662306a36Sopenharmony_ci},
47