# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mc -triple aarch64 -mattr=+lsui -disassemble %s  | FileCheck %s

# LDTXR and STTXR
[0xe9,0x7f,0x5f,0xc9]
[0xe9,0x7f,0x5f,0xc9]
[0x6a,0x7d,0x5f,0xc9]
[0x6a,0x7d,0x5f,0xc9]

[0xe4,0x7f,0x1f,0x89]
[0xe4,0x7f,0x1f,0x89]
[0xe6,0x7c,0x05,0xc9]
[0xe6,0x7c,0x05,0xc9]

# LDATXR and STLTXR
[0xe9,0xff,0x5f,0xc9]
[0x6a,0xfd,0x5f,0xc9]

[0xe4,0xff,0x02,0x89]
[0xe6,0xfc,0x05,0xc9]

# STTP and LDTP
[0x55,0xf4,0x5f,0xe9]
[0x76,0x5c,0x60,0xe9]
[0x98,0xe4,0x40,0xe9]

[0xe3,0x17,0x81,0xe8]
[0xe3,0x97,0x80,0xe9]
[0xe3,0x17,0x00,0xed]
[0xf1,0xcf,0x1f,0xed]

[0x55,0xf4,0xdf,0xe8]
[0x76,0x5c,0xe0,0xe8]
[0x98,0xe4,0xc0,0xe8]

[0xe3,0x17,0x80,0xec]
[0xf1,0xcf,0x9f,0xec]
[0x37,0x74,0xe0,0xec]

[0x55,0xf4,0xdf,0xe9]
[0x76,0x5c,0xe0,0xe9]
[0x98,0xe4,0xc0,0xe9]

[0xe3,0x17,0x80,0xed]
[0xf1,0xcf,0x9f,0xed]
[0x37,0x74,0xe0,0xed]

[0x55,0xf4,0x5f,0xe8]
[0x76,0x5c,0x60,0xe8]
[0x98,0xe4,0x40,0xe8]
[0x37,0x74,0x60,0xec]

[0xe3,0x17,0x00,0xe8]
[0xf1,0x4f,0x04,0xe8]
[0xe3,0x17,0x00,0xec]
[0xf1,0xcf,0x1f,0xec]

# SWPT{A|L}
[0xbf,0x84,0x27,0x19]
[0xff,0x87,0x29,0x59]

[0xbf,0x84,0xa7,0x19]
[0xff,0x87,0xa9,0x59]

[0xbf,0x84,0x67,0x19]
[0xff,0x87,0x69,0x59]

[0xbf,0x84,0xe7,0x19]
[0xff,0x87,0xe9,0x59]

# CAS{A|L}T
[0x41,0x7c,0x80,0xc9]
[0xe1,0x7f,0x80,0xc9]
[0x41,0x7c,0xc0,0xc9]
[0xe1,0x7f,0xc0,0xc9]
[0x41,0xfc,0xc0,0xc9]
[0xe1,0xff,0xc0,0xc9]
[0x41,0xfc,0x80,0xc9]
[0xe1,0xff,0x80,0xc9]

# CASP{A|L}T
[0x82,0x7c,0x80,0x49]
[0xe2,0x7f,0x80,0x49]
[0x82,0x7c,0xc0,0x49]
[0xe2,0x7f,0xc0,0x49]
[0x82,0xfc,0x80,0x49]
[0xe2,0xff,0x80,0x49]
[0x82,0xfc,0xc0,0x49]
[0xe2,0xff,0xc0,0x49]

#LDT{SET|ADD|CLR}{A|L} and STT{ADD|SET|CLR}{L}

[0xbf,0x04,0x27,0x19]
[0xff,0x07,0x29,0x59]

[0xbf,0x04,0xa7,0x19]
[0xff,0x07,0xa9,0x59]

[0xbf,0x04,0x67,0x19]
[0xff,0x07,0x69,0x59]

[0xbf,0x04,0xe7,0x19]
[0xff,0x07,0xe9,0x59]

[0xbf,0x14,0x27,0x19]
[0xff,0x17,0x29,0x59]

[0xbf,0x14,0x67,0x19]
[0xff,0x17,0x69,0x59]

[0xbf,0x14,0xa7,0x19]
[0xff,0x17,0xa9,0x59]

[0xbf,0x14,0xe7,0x19]
[0xff,0x17,0xe9,0x59]

[0xbf,0x34,0x27,0x19]
[0xff,0x37,0x29,0x59]

[0xbf,0x34,0x67,0x19]
[0xff,0x37,0x69,0x59]

[0xbf,0x34,0xa7,0x19]
[0xff,0x37,0xa9,0x59]

[0xbf,0x34,0xe7,0x19]
[0xff,0x37,0xe9,0x59]

[0x5f,0x04,0x20,0x19]
[0xff,0x07,0x22,0x19]
[0x5f,0x04,0x20,0x59]
[0xff,0x07,0x22,0x59]

[0x5f,0x04,0x20,0x19]
[0xff,0x07,0x22,0x19]
[0x5f,0x04,0x20,0x59]
[0xff,0x07,0x22,0x59]

[0x5f,0x04,0x20,0x19]
[0xff,0x07,0x22,0x19]
[0x5f,0x04,0x20,0x59]
[0xff,0x07,0x22,0x59]

[0x5f,0x04,0x20,0x19]
[0xff,0x07,0x22,0x19]
[0x5f,0x04,0x20,0x59]
[0xff,0x07,0x22,0x59]

[0x5f,0x14,0x20,0x19]
[0xff,0x17,0x22,0x19]
[0x5f,0x14,0x20,0x59]
[0xff,0x17,0x22,0x59]

[0x5f,0x14,0x20,0x19]
[0xff,0x17,0x22,0x19]
[0x5f,0x14,0x20,0x59]
[0xff,0x17,0x22,0x59]

[0x5f,0x14,0x20,0x19]
[0xff,0x17,0x22,0x19]
[0x5f,0x14,0x20,0x59]
[0xff,0x17,0x22,0x59]

[0x5f,0x14,0x20,0x19]
[0xff,0x17,0x22,0x59]
[0x5f,0x14,0x20,0x59]
[0xff,0x17,0x22,0x59]

[0x5f,0x34,0x20,0x19]
[0xff,0x37,0x22,0x19]
[0x5f,0x34,0x20,0x59]
[0xff,0x37,0x22,0x59]

[0x5f,0x34,0x20,0x19]
[0xff,0x37,0x22,0x19]
[0x5f,0x34,0x20,0x59]
[0xff,0x37,0x22,0x59]

[0x5f,0x34,0x20,0x19]
[0xff,0x37,0x22,0x19]
[0x5f,0x34,0x20,0x59]
[0xff,0x37,0x22,0x59]

[0x5f,0x34,0x20,0x19]
[0xff,0x37,0x22,0x59]
[0x5f,0x34,0x20,0x59]
[0xff,0x37,0x22,0x59]

# CHECK:      	ldtxr	x9, [sp]
# CHECK-NEXT: 	ldtxr	x9, [sp]
# CHECK-NEXT: 	ldtxr	x10, [x11]
# CHECK-NEXT: 	ldtxr	x10, [x11]
# CHECK-NEXT: 	sttxr	wzr, w4, [sp]
# CHECK-NEXT: 	sttxr	wzr, w4, [sp]
# CHECK-NEXT: 	sttxr	w5, x6, [x7]
# CHECK-NEXT: 	sttxr	w5, x6, [x7]
# CHECK-NEXT: 	ldatxr	x9, [sp]
# CHECK-NEXT: 	ldatxr	x10, [x11]
# CHECK-NEXT: 	stltxr	w2, w4, [sp]
# CHECK-NEXT: 	stltxr	w5, x6, [x7]
# CHECK-NEXT: 	ldtp	x21, x29, [x2, #504]
# CHECK-NEXT: 	ldtp	x22, x23, [x3, #-512]
# CHECK-NEXT: 	ldtp	x24, x25, [x4, #8]
# CHECK-NEXT:	sttp	x3, x5, [sp], #16
# CHECK-NEXT:	sttp	x3, x5, [sp, #8]!
# CHECK-NEXT: 	sttp	q3, q5, [sp]
# CHECK-NEXT: 	sttp	q17, q19, [sp, #1008]
# CHECK-NEXT: 	ldtp	x21, x29, [x2], #504
# CHECK-NEXT: 	ldtp	x22, x23, [x3], #-512
# CHECK-NEXT: 	ldtp	x24, x25, [x4], #8
# CHECK-NEXT: 	sttp	q3, q5, [sp], #0
# CHECK-NEXT: 	sttp	q17, q19, [sp], #1008
# CHECK-NEXT: 	ldtp	q23, q29, [x1], #-1024
# CHECK-NEXT: 	ldtp	x21, x29, [x2, #504]!
# CHECK-NEXT: 	ldtp	x22, x23, [x3, #-512]!
# CHECK-NEXT: 	ldtp	x24, x25, [x4, #8]!
# CHECK-NEXT: 	sttp	q3, q5, [sp, #0]!
# CHECK-NEXT: 	sttp	q17, q19, [sp, #1008]!
# CHECK-NEXT: 	ldtp	q23, q29, [x1, #-1024]!
# CHECK-NEXT: 	ldtnp	x21, x29, [x2, #504]
# CHECK-NEXT: 	ldtnp	x22, x23, [x3, #-512]
# CHECK-NEXT: 	ldtnp	x24, x25, [x4, #8]
# CHECK-NEXT: 	ldtnp	q23, q29, [x1, #-1024]
# CHECK-NEXT: 	sttnp	x3, x5, [sp]
# CHECK-NEXT: 	sttnp	x17, x19, [sp, #64]
# CHECK-NEXT: 	sttnp	q3, q5, [sp]
# CHECK-NEXT: 	sttnp	q17, q19, [sp, #1008]
# CHECK-NEXT: 	swpt	w7, wzr, [x5]
# CHECK-NEXT: 	swpt	x9, xzr, [sp]
# CHECK-NEXT: 	swpta	w7, wzr, [x5]
# CHECK-NEXT: 	swpta	x9, xzr, [sp]
# CHECK-NEXT: 	swptl	w7, wzr, [x5]
# CHECK-NEXT: 	swptl	x9, xzr, [sp]
# CHECK-NEXT: 	swptal	w7, wzr, [x5]
# CHECK-NEXT: 	swptal	x9, xzr, [sp]
# CHECK-NEXT: 	cast	x0, x1, [x2]
# CHECK-NEXT: 	cast	x0, x1, [sp]
# CHECK-NEXT: 	casat	x0, x1, [x2]
# CHECK-NEXT: 	casat	x0, x1, [sp]
# CHECK-NEXT: 	casalt	x0, x1, [x2]
# CHECK-NEXT: 	casalt	x0, x1, [sp]
# CHECK-NEXT: 	caslt	x0, x1, [x2]
# CHECK-NEXT: 	caslt	x0, x1, [sp]
# CHECK-NEXT: 	caspt	x0, x1, x2, x3, [x4]
# CHECK-NEXT: 	caspt	x0, x1, x2, x3, [sp]
# CHECK-NEXT: 	caspat	x0, x1, x2, x3, [x4]
# CHECK-NEXT: 	caspat	x0, x1, x2, x3, [sp]
# CHECK-NEXT: 	casplt	x0, x1, x2, x3, [x4]
# CHECK-NEXT: 	casplt	x0, x1, x2, x3, [sp]
# CHECK-NEXT: 	caspalt	x0, x1, x2, x3, [x4]
# CHECK-NEXT: 	caspalt	x0, x1, x2, x3, [sp]
# CHECK-NEXT: 	ldtadd	w7, wzr, [x5]
# CHECK-NEXT: 	ldtadd	x9, xzr, [sp]
# CHECK-NEXT: 	ldtadda	w7, wzr, [x5]
# CHECK-NEXT: 	ldtadda	x9, xzr, [sp]
# CHECK-NEXT: 	ldtaddl	w7, wzr, [x5]
# CHECK-NEXT: 	ldtaddl	x9, xzr, [sp]
# CHECK-NEXT: 	ldtaddal	w7, wzr, [x5]
# CHECK-NEXT: 	ldtaddal	x9, xzr, [sp]
# CHECK-NEXT: 	ldtclr	w7, wzr, [x5]
# CHECK-NEXT: 	ldtclr	x9, xzr, [sp]
# CHECK-NEXT: 	ldtclrl	w7, wzr, [x5]
# CHECK-NEXT: 	ldtclrl	x9, xzr, [sp]
# CHECK-NEXT: 	ldtclra	w7, wzr, [x5]
# CHECK-NEXT: 	ldtclra	x9, xzr, [sp]
# CHECK-NEXT: 	ldtclral	w7, wzr, [x5]
# CHECK-NEXT: 	ldtclral	x9, xzr, [sp]
# CHECK-NEXT: 	ldtset	w7, wzr, [x5]
# CHECK-NEXT: 	ldtset	x9, xzr, [sp]
# CHECK-NEXT: 	ldtsetl	w7, wzr, [x5]
# CHECK-NEXT: 	ldtsetl	x9, xzr, [sp]
# CHECK-NEXT: 	ldtseta	w7, wzr, [x5]
# CHECK-NEXT: 	ldtseta	x9, xzr, [sp]
# CHECK-NEXT: 	ldtsetal	w7, wzr, [x5]
# CHECK-NEXT: 	ldtsetal	x9, xzr, [sp]
# CHECK-NEXT: 	ldtadd	w0, wzr, [x2]
# CHECK-NEXT: 	ldtadd	w2, wzr, [sp]
# CHECK-NEXT: 	ldtadd	x0, xzr, [x2]
# CHECK-NEXT: 	ldtadd	x2, xzr, [sp]
# CHECK-NEXT: 	ldtadd	w0, wzr, [x2]
# CHECK-NEXT: 	ldtadd	w2, wzr, [sp]
# CHECK-NEXT: 	ldtadd	x0, xzr, [x2]
# CHECK-NEXT: 	ldtadd	x2, xzr, [sp]
# CHECK-NEXT: 	ldtadd	w0, wzr, [x2]
# CHECK-NEXT: 	ldtadd	w2, wzr, [sp]
# CHECK-NEXT: 	ldtadd	x0, xzr, [x2]
# CHECK-NEXT: 	ldtadd	x2, xzr, [sp]
# CHECK-NEXT: 	ldtadd	w0, wzr, [x2]
# CHECK-NEXT: 	ldtadd	w2, wzr, [sp]
# CHECK-NEXT: 	ldtadd	x0, xzr, [x2]
# CHECK-NEXT: 	ldtadd	x2, xzr, [sp]
# CHECK-NEXT: 	ldtclr	w0, wzr, [x2]
# CHECK-NEXT: 	ldtclr	w2, wzr, [sp]
# CHECK-NEXT: 	ldtclr	x0, xzr, [x2]
# CHECK-NEXT: 	ldtclr	x2, xzr, [sp]
# CHECK-NEXT: 	ldtclr	w0, wzr, [x2]
# CHECK-NEXT: 	ldtclr	w2, wzr, [sp]
# CHECK-NEXT: 	ldtclr	x0, xzr, [x2]
# CHECK-NEXT: 	ldtclr	x2, xzr, [sp]
# CHECK-NEXT: 	ldtclr	w0, wzr, [x2]
# CHECK-NEXT: 	ldtclr	w2, wzr, [sp]
# CHECK-NEXT: 	ldtclr	x0, xzr, [x2]
# CHECK-NEXT: 	ldtclr	x2, xzr, [sp]
# CHECK-NEXT: 	ldtclr	w0, wzr, [x2]
# CHECK-NEXT: 	ldtclr	x2, xzr, [sp]
# CHECK-NEXT: 	ldtclr	x0, xzr, [x2]
# CHECK-NEXT: 	ldtclr	x2, xzr, [sp]
# CHECK-NEXT: 	ldtset	w0, wzr, [x2]
# CHECK-NEXT: 	ldtset	w2, wzr, [sp]
# CHECK-NEXT: 	ldtset	x0, xzr, [x2]
# CHECK-NEXT: 	ldtset	x2, xzr, [sp]
# CHECK-NEXT: 	ldtset	w0, wzr, [x2]
# CHECK-NEXT: 	ldtset	w2, wzr, [sp]
# CHECK-NEXT: 	ldtset	x0, xzr, [x2]
# CHECK-NEXT: 	ldtset	x2, xzr, [sp]
# CHECK-NEXT: 	ldtset	w0, wzr, [x2]
# CHECK-NEXT: 	ldtset	w2, wzr, [sp]
# CHECK-NEXT: 	ldtset	x0, xzr, [x2]
# CHECK-NEXT: 	ldtset	x2, xzr, [sp]
# CHECK-NEXT: 	ldtset	w0, wzr, [x2]
# CHECK-NEXT: 	ldtset	x2, xzr, [sp]
# CHECK-NEXT: 	ldtset	x0, xzr, [x2]
# CHECK-NEXT: 	ldtset	x2, xzr, [sp]
