1# RUN: llvm-mc %s -triple=riscv32 -mattr=+a,+zabha -M no-aliases -show-encoding \ 2# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s 3# RUN: llvm-mc %s -triple=riscv64 -mattr=+a,+zabha -M no-aliases -show-encoding \ 4# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s 5# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+a,+zabha < %s \ 6# RUN: | llvm-objdump --mattr=+a,+zabha -M no-aliases -d -r - \ 7# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s 8# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+a,+zabha < %s \ 9# RUN: | llvm-objdump --mattr=+a,+zabha -M no-aliases -d -r - \ 10# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s 11 12# CHECK-ASM-AND-OBJ: amoswap.b a4, ra, (s0) 13# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x08] 14amoswap.b a4, ra, (s0) 15# CHECK-ASM-AND-OBJ: amoadd.b a1, a2, (a3) 16# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x00] 17amoadd.b a1, a2, (a3) 18# CHECK-ASM-AND-OBJ: amoxor.b a2, a3, (a4) 19# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x20] 20amoxor.b a2, a3, (a4) 21# CHECK-ASM-AND-OBJ: amoand.b a3, a4, (a5) 22# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x60] 23amoand.b a3, a4, (a5) 24# CHECK-ASM-AND-OBJ: amoor.b a4, a5, (a6) 25# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x40] 26amoor.b a4, a5, (a6) 27# CHECK-ASM-AND-OBJ: amomin.b a5, a6, (a7) 28# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x81] 29amomin.b a5, a6, (a7) 30# CHECK-ASM-AND-OBJ: amomax.b s7, s6, (s5) 31# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa1] 32amomax.b s7, s6, (s5) 33# CHECK-ASM-AND-OBJ: amominu.b s6, s5, (s4) 34# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc1] 35amominu.b s6, s5, (s4) 36# CHECK-ASM-AND-OBJ: amomaxu.b s5, s4, (s3) 37# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe1] 38amomaxu.b s5, s4, (s3) 39 40# CHECK-ASM-AND-OBJ: amoswap.b.aq a4, ra, (s0) 41# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0c] 42amoswap.b.aq a4, ra, (s0) 43# CHECK-ASM-AND-OBJ: amoadd.b.aq a1, a2, (a3) 44# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x04] 45amoadd.b.aq a1, a2, (a3) 46# CHECK-ASM-AND-OBJ: amoxor.b.aq a2, a3, (a4) 47# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x24] 48amoxor.b.aq a2, a3, (a4) 49# CHECK-ASM-AND-OBJ: amoand.b.aq a3, a4, (a5) 50# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x64] 51amoand.b.aq a3, a4, (a5) 52# CHECK-ASM-AND-OBJ: amoor.b.aq a4, a5, (a6) 53# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x44] 54amoor.b.aq a4, a5, (a6) 55# CHECK-ASM-AND-OBJ: amomin.b.aq a5, a6, (a7) 56# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x85] 57amomin.b.aq a5, a6, (a7) 58# CHECK-ASM-AND-OBJ: amomax.b.aq s7, s6, (s5) 59# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa5] 60amomax.b.aq s7, s6, (s5) 61# CHECK-ASM-AND-OBJ: amominu.b.aq s6, s5, (s4) 62# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc5] 63amominu.b.aq s6, s5, (s4) 64# CHECK-ASM-AND-OBJ: amomaxu.b.aq s5, s4, (s3) 65# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe5] 66amomaxu.b.aq s5, s4, (s3) 67 68# CHECK-ASM-AND-OBJ: amoswap.b.rl a4, ra, (s0) 69# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0a] 70amoswap.b.rl a4, ra, (s0) 71# CHECK-ASM-AND-OBJ: amoadd.b.rl a1, a2, (a3) 72# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x02] 73amoadd.b.rl a1, a2, (a3) 74# CHECK-ASM-AND-OBJ: amoxor.b.rl a2, a3, (a4) 75# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x22] 76amoxor.b.rl a2, a3, (a4) 77# CHECK-ASM-AND-OBJ: amoand.b.rl a3, a4, (a5) 78# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x62] 79amoand.b.rl a3, a4, (a5) 80# CHECK-ASM-AND-OBJ: amoor.b.rl a4, a5, (a6) 81# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x42] 82amoor.b.rl a4, a5, (a6) 83# CHECK-ASM-AND-OBJ: amomin.b.rl a5, a6, (a7) 84# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x83] 85amomin.b.rl a5, a6, (a7) 86# CHECK-ASM-AND-OBJ: amomax.b.rl s7, s6, (s5) 87# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa3] 88amomax.b.rl s7, s6, (s5) 89# CHECK-ASM-AND-OBJ: amominu.b.rl s6, s5, (s4) 90# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc3] 91amominu.b.rl s6, s5, (s4) 92# CHECK-ASM-AND-OBJ: amomaxu.b.rl s5, s4, (s3) 93# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe3] 94amomaxu.b.rl s5, s4, (s3) 95 96# CHECK-ASM-AND-OBJ: amoswap.b.aqrl a4, ra, (s0) 97# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0e] 98amoswap.b.aqrl a4, ra, (s0) 99# CHECK-ASM-AND-OBJ: amoadd.b.aqrl a1, a2, (a3) 100# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x06] 101amoadd.b.aqrl a1, a2, (a3) 102# CHECK-ASM-AND-OBJ: amoxor.b.aqrl a2, a3, (a4) 103# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x26] 104amoxor.b.aqrl a2, a3, (a4) 105# CHECK-ASM-AND-OBJ: amoand.b.aqrl a3, a4, (a5) 106# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x66] 107amoand.b.aqrl a3, a4, (a5) 108# CHECK-ASM-AND-OBJ: amoor.b.aqrl a4, a5, (a6) 109# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x46] 110amoor.b.aqrl a4, a5, (a6) 111# CHECK-ASM-AND-OBJ: amomin.b.aqrl a5, a6, (a7) 112# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x87] 113amomin.b.aqrl a5, a6, (a7) 114# CHECK-ASM-AND-OBJ: amomax.b.aqrl s7, s6, (s5) 115# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa7] 116amomax.b.aqrl s7, s6, (s5) 117# CHECK-ASM-AND-OBJ: amominu.b.aqrl s6, s5, (s4) 118# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc7] 119amominu.b.aqrl s6, s5, (s4) 120# CHECK-ASM-AND-OBJ: amomaxu.b.aqrl s5, s4, (s3) 121# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe7] 122amomaxu.b.aqrl s5, s4, (s3) 123 124 125# CHECK-ASM-AND-OBJ: amoswap.h a4, ra, (s0) 126# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x08] 127amoswap.h a4, ra, (s0) 128# CHECK-ASM-AND-OBJ: amoadd.h a1, a2, (a3) 129# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x00] 130amoadd.h a1, a2, (a3) 131# CHECK-ASM-AND-OBJ: amoxor.h a2, a3, (a4) 132# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x20] 133amoxor.h a2, a3, (a4) 134# CHECK-ASM-AND-OBJ: amoand.h a3, a4, (a5) 135# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x60] 136amoand.h a3, a4, (a5) 137# CHECK-ASM-AND-OBJ: amoor.h a4, a5, (a6) 138# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x40] 139amoor.h a4, a5, (a6) 140# CHECK-ASM-AND-OBJ: amomin.h a5, a6, (a7) 141# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x81] 142amomin.h a5, a6, (a7) 143# CHECK-ASM-AND-OBJ: amomax.h s7, s6, (s5) 144# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa1] 145amomax.h s7, s6, (s5) 146# CHECK-ASM-AND-OBJ: amominu.h s6, s5, (s4) 147# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc1] 148amominu.h s6, s5, (s4) 149# CHECK-ASM-AND-OBJ: amomaxu.h s5, s4, (s3) 150# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe1] 151amomaxu.h s5, s4, (s3) 152 153# CHECK-ASM-AND-OBJ: amoswap.h.aq a4, ra, (s0) 154# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0c] 155amoswap.h.aq a4, ra, (s0) 156# CHECK-ASM-AND-OBJ: amoadd.h.aq a1, a2, (a3) 157# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x04] 158amoadd.h.aq a1, a2, (a3) 159# CHECK-ASM-AND-OBJ: amoxor.h.aq a2, a3, (a4) 160# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x24] 161amoxor.h.aq a2, a3, (a4) 162# CHECK-ASM-AND-OBJ: amoand.h.aq a3, a4, (a5) 163# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x64] 164amoand.h.aq a3, a4, (a5) 165# CHECK-ASM-AND-OBJ: amoor.h.aq a4, a5, (a6) 166# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x44] 167amoor.h.aq a4, a5, (a6) 168# CHECK-ASM-AND-OBJ: amomin.h.aq a5, a6, (a7) 169# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x85] 170amomin.h.aq a5, a6, (a7) 171# CHECK-ASM-AND-OBJ: amomax.h.aq s7, s6, (s5) 172# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa5] 173amomax.h.aq s7, s6, (s5) 174# CHECK-ASM-AND-OBJ: amominu.h.aq s6, s5, (s4) 175# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc5] 176amominu.h.aq s6, s5, (s4) 177# CHECK-ASM-AND-OBJ: amomaxu.h.aq s5, s4, (s3) 178# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe5] 179amomaxu.h.aq s5, s4, (s3) 180 181# CHECK-ASM-AND-OBJ: amoswap.h.rl a4, ra, (s0) 182# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0a] 183amoswap.h.rl a4, ra, (s0) 184# CHECK-ASM-AND-OBJ: amoadd.h.rl a1, a2, (a3) 185# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x02] 186amoadd.h.rl a1, a2, (a3) 187# CHECK-ASM-AND-OBJ: amoxor.h.rl a2, a3, (a4) 188# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x22] 189amoxor.h.rl a2, a3, (a4) 190# CHECK-ASM-AND-OBJ: amoand.h.rl a3, a4, (a5) 191# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x62] 192amoand.h.rl a3, a4, (a5) 193# CHECK-ASM-AND-OBJ: amoor.h.rl a4, a5, (a6) 194# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x42] 195amoor.h.rl a4, a5, (a6) 196# CHECK-ASM-AND-OBJ: amomin.h.rl a5, a6, (a7) 197# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x83] 198amomin.h.rl a5, a6, (a7) 199# CHECK-ASM-AND-OBJ: amomax.h.rl s7, s6, (s5) 200# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa3] 201amomax.h.rl s7, s6, (s5) 202# CHECK-ASM-AND-OBJ: amominu.h.rl s6, s5, (s4) 203# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc3] 204amominu.h.rl s6, s5, (s4) 205# CHECK-ASM-AND-OBJ: amomaxu.h.rl s5, s4, (s3) 206# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe3] 207amomaxu.h.rl s5, s4, (s3) 208 209# CHECK-ASM-AND-OBJ: amoswap.h.aqrl a4, ra, (s0) 210# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0e] 211amoswap.h.aqrl a4, ra, (s0) 212# CHECK-ASM-AND-OBJ: amoadd.h.aqrl a1, a2, (a3) 213# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x06] 214amoadd.h.aqrl a1, a2, (a3) 215# CHECK-ASM-AND-OBJ: amoxor.h.aqrl a2, a3, (a4) 216# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x26] 217amoxor.h.aqrl a2, a3, (a4) 218# CHECK-ASM-AND-OBJ: amoand.h.aqrl a3, a4, (a5) 219# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x66] 220amoand.h.aqrl a3, a4, (a5) 221# CHECK-ASM-AND-OBJ: amoor.h.aqrl a4, a5, (a6) 222# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x46] 223amoor.h.aqrl a4, a5, (a6) 224# CHECK-ASM-AND-OBJ: amomin.h.aqrl a5, a6, (a7) 225# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x87] 226amomin.h.aqrl a5, a6, (a7) 227# CHECK-ASM-AND-OBJ: amomax.h.aqrl s7, s6, (s5) 228# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa7] 229amomax.h.aqrl s7, s6, (s5) 230# CHECK-ASM-AND-OBJ: amominu.h.aqrl s6, s5, (s4) 231# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc7] 232amominu.h.aqrl s6, s5, (s4) 233# CHECK-ASM-AND-OBJ: amomaxu.h.aqrl s5, s4, (s3) 234# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe7] 235amomaxu.h.aqrl s5, s4, (s3) 236