--- /dev/null
+#as: -Av9c
+#objdump: -dr
+#name: sparc LDTXA
+
+.*: +file format .*sparc.*
+
+Disassembly of section .text:
+
+0+ <.text>:
+ 0: d4 98 c4 40 ldtxa \[ %g3 \] #ASI_TWINX_AIUP, %o2
+ 4: d4 98 c4 42 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_AIUP, %o2
+ 8: d4 98 c4 60 ldtxa \[ %g3 \] #ASI_BLK_INIT_QUAD_LDD_AIUS, %o2
+ c: d4 98 c4 62 ldtxa \[ %g3 \+ %g2 \] #ASI_BLK_INIT_QUAD_LDD_AIUS, %o2
+ 10: d4 98 c4 c0 ldtxa \[ %g3 \] #ASI_QUAD_LDD_PHYS_4V, %o2
+ 14: d4 98 c4 c2 ldtxa \[ %g3 \+ %g2 \] #ASI_QUAD_LDD_PHYS_4V, %o2
+ 18: d4 98 c4 e0 ldtxa \[ %g3 \] #ASI_TWINX_N, %o2
+ 1c: d4 98 c4 e2 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_N, %o2
+ 20: d4 98 c5 40 ldtxa \[ %g3 \] #ASI_TWINX_AIUP_L, %o2
+ 24: d4 98 c5 42 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_AIUP_L, %o2
+ 28: d4 98 c5 60 ldtxa \[ %g3 \] #ASI_TWINX_AIUS_L, %o2
+ 2c: d4 98 c5 62 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_AIUS_L, %o2
+ 30: d4 98 c5 c0 ldtxa \[ %g3 \] #ASI_TWINX_REAL_L, %o2
+ 34: d4 98 c5 c2 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_REAL_L, %o2
+ 38: d4 98 c5 e0 ldtxa \[ %g3 \] #ASI_TWINX_NL, %o2
+ 3c: d4 98 c5 e2 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_NL, %o2
+ 40: d4 98 dc 40 ldtxa \[ %g3 \] #ASI_BLK_INIT_QUAD_LDD_P, %o2
+ 44: d4 98 dc 42 ldtxa \[ %g3 \+ %g2 \] #ASI_BLK_INIT_QUAD_LDD_P, %o2
+ 48: d4 98 dc 60 ldtxa \[ %g3 \] #ASI_TWINX_S, %o2
+ 4c: d4 98 dc 62 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_S, %o2
+ 50: d4 98 dd 40 ldtxa \[ %g3 \] #ASI_TWINX_PL, %o2
+ 54: d4 98 dd 42 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_PL, %o2
+ 58: d4 98 dd 60 ldtxa \[ %g3 \] #ASI_TWINX_SL, %o2
+ 5c: d4 98 dd 62 ldtxa \[ %g3 \+ %g2 \] #ASI_TWINX_SL, %o2
\ No newline at end of file
--- /dev/null
+# Test ldtxa
+ .text
+ ldtxa [%g3] #ASI_TWINX_AIUP, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_AIUP, %o2
+ ldtxa [%g3] #ASI_TWINX_AIUS, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_AIUS, %o2
+ ldtxa [%g3] #ASI_TWINX_REAL, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_REAL, %o2
+ ldtxa [%g3] #ASI_TWINX_N, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_N, %o2
+ ldtxa [%g3] #ASI_TWINX_AIUP_L, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_AIUP_L, %o2
+ ldtxa [%g3] #ASI_TWINX_AIUS_L, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_AIUS_L, %o2
+ ldtxa [%g3] #ASI_TWINX_REAL_L, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_REAL_L, %o2
+ ldtxa [%g3] #ASI_TWINX_NL, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_NL, %o2
+ ldtxa [%g3] #ASI_TWINX_P, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_P, %o2
+ ldtxa [%g3] #ASI_TWINX_S, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_S, %o2
+ ldtxa [%g3] #ASI_TWINX_PL, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_PL, %o2
+ ldtxa [%g3] #ASI_TWINX_SL, %o2
+ ldtxa [%g3+%g2] #ASI_TWINX_SL, %o2
{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i]o,g", 0, 0, 0, v9 },
{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1]o,g", 0, 0, 0, v9 }, /* ld [rs1+0],d */
+/* Note that the LDTXA instructions share an opcode with the
+ (deprecated) LDTWA instructions below. They are differenciated by
+ the combination of the `i' instruction field and the ASI used in
+ the instruction. */
+
+#define ldtxa(asi) \
+{ "ldtxa", F3(3, 0x13, 0)|ASI((asi)), F3(~3, ~0x13, ~0)|ASI(~(asi)), "[1+2]A,d", 0, HWCAP_ASI_BLK_INIT, 0, v9c }, \
+{ "ldtxa", F3(3, 0x13, 0)|ASI((asi)), F3(~3, ~0x13, ~0)|ASI(~(asi))|RS2_G0, "[1]A,d", 0, HWCAP_ASI_BLK_INIT, 0, v9c }
+
+ldtxa (0x22), /* #ASI_TWINX_AIUP */
+ldtxa (0x23), /* #ASI_TWINX_AIUS */
+ldtxa (0x26), /* #ASI_TWINX_REAL */
+ldtxa (0x27), /* #ASI_TWINX_N */
+ldtxa (0x2A), /* #ASI_TWINX_AIUP_L */
+ldtxa (0x2B), /* #ASI_TWINX_AIUS_L */
+ldtxa (0x2E), /* #ASI_TWINX_REAL_L */
+ldtxa (0x2F), /* #ASI_TWINX_NL */
+ldtxa (0xE2), /* #ASI_TWINX_P */
+ldtxa (0xE3), /* #ASI_TWINX_S */
+ldtxa (0xEA), /* #ASI_TWINX_PL */
+ldtxa (0xEB), /* #ASI_TWINX_SL */
+
{ "ldtwa", F3(3, 0x13, 0), F3(~3, ~0x13, ~0), "[1+2]A,d", 0, 0, 0, v9 },
{ "ldtwa", F3(3, 0x13, 0), F3(~3, ~0x13, ~0)|RS2_G0, "[1]A,d", 0, 0, 0, v9 }, /* ldda [rs1+%g0],d */
{ "ldtwa", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[1+i]o,d", 0, 0, 0, v9 },
{ 0xf1, "#ASI_BLK_S", },
{ 0xf8, "#ASI_BLK_PL", },
{ 0xf9, "#ASI_BLK_SL", },
+ { 0x22, "#ASI_TWINX_AIUP", },
+ { 0x23, "#ASI_TWINX_AIUS", },
+ { 0x26, "#ASI_TWINX_REAL", },
+ { 0x27, "#ASI_TWINX_N", },
+ { 0x2A, "#ASI_TWINX_AIUP_L", },
+ { 0x2B, "#ASI_TWINX_AIUS_L", },
+ { 0x2E, "#ASI_TWINX_REAL_L", },
+ { 0x2F, "#ASI_TWINX_NL", },
+ { 0xE2, "#ASI_TWINX_P", },
+ { 0xE3, "#ASI_TWINX_S", },
+ { 0xEA, "#ASI_TWINX_PL", },
+ { 0xEB, "#ASI_TWINX_SL", },
{ 0, 0 }
};