346 lines · plain
1# RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-xqccmp -M no-aliases -show-encoding \2# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s3# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-xqccmp < %s \4# RUN: | llvm-objdump --mattr=-c,+experimental-xqccmp -M no-aliases -d -r - \5# RUN: | FileCheck --check-prefixes=CHECK-ASM-AND-OBJ %s6 7# CHECK-ASM-AND-OBJ: qc.cm.mvsa01 s1, s08# CHECK-ASM: encoding: [0xa2,0xac]9qc.cm.mvsa01 s1, s010 11# CHECK-ASM-AND-OBJ: qc.cm.mva01s s1, s012# CHECK-ASM: encoding: [0xe2,0xac]13qc.cm.mva01s s1, s014 15# CHECK-ASM-AND-OBJ: qc.cm.mva01s s0, s016# CHECK-ASM: encoding: [0x62,0xac] 17qc.cm.mva01s s0, s018 19# CHECK-ASM-AND-OBJ: qc.cm.popret {ra}, 1620# CHECK-ASM: encoding: [0x42,0xbe]21qc.cm.popret {ra}, 1622 23# CHECK-ASM-AND-OBJ: qc.cm.popret {ra}, 1624# CHECK-ASM: encoding: [0x42,0xbe]25qc.cm.popret {x1}, 1626 27# CHECK-ASM-AND-OBJ: qc.cm.popret {ra}, 3228# CHECK-ASM: encoding: [0x46,0xbe]29qc.cm.popret {ra}, 3230 31# CHECK-ASM-AND-OBJ: qc.cm.popret {ra}, 3232# CHECK-ASM: encoding: [0x46,0xbe]33qc.cm.popret {x1}, 3234 35# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0}, 6436# CHECK-ASM: encoding: [0x5e,0xbe]37qc.cm.popret {ra, s0}, 6438 39# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0}, 6440# CHECK-ASM: encoding: [0x5e,0xbe]41qc.cm.popret {x1, x8}, 6442 43# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s1}, 1644# CHECK-ASM: encoding: [0x62,0xbe]45qc.cm.popret {ra,s0-s1}, 1646 47# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s1}, 1648# CHECK-ASM: encoding: [0x62,0xbe]49qc.cm.popret {x1, x8-x9}, 1650 51# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s2}, 3252# CHECK-ASM: encoding: [0x76,0xbe]53qc.cm.popret {ra, s0-s2}, 3254 55# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s2}, 3256# CHECK-ASM: encoding: [0x76,0xbe]57qc.cm.popret {x1, x8-x9, x18}, 3258 59# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s3}, 3260# CHECK-ASM: encoding: [0x82,0xbe]61qc.cm.popret {ra, s0-s3}, 3262 63# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s3}, 3264# CHECK-ASM: encoding: [0x82,0xbe]65qc.cm.popret {x1, x8-x9, x18-x19}, 3266 67# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s5}, 3268# CHECK-ASM: encoding: [0xa2,0xbe]69qc.cm.popret {ra, s0-s5}, 3270 71# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s5}, 3272# CHECK-ASM: encoding: [0xa2,0xbe]73qc.cm.popret {x1, x8-x9, x18-x21}, 3274 75# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s7}, 4876# CHECK-ASM: encoding: [0xc2,0xbe]77qc.cm.popret {ra, s0-s7}, 4878 79# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s7}, 4880# CHECK-ASM: encoding: [0xc2,0xbe]81qc.cm.popret {x1, x8-x9, x18-x23}, 4882 83# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s11}, 11284# CHECK-ASM: encoding: [0xfe,0xbe]85qc.cm.popret {ra, s0-s11}, 11286 87# CHECK-ASM-AND-OBJ: qc.cm.popret {ra, s0-s11}, 11288# CHECK-ASM: encoding: [0xfe,0xbe]89qc.cm.popret {x1, x8-x9, x18-x27}, 11290 91# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra}, 1692# CHECK-ASM: encoding: [0x42,0xbc]93qc.cm.popretz {ra}, 1694 95# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra}, 1696# CHECK-ASM: encoding: [0x42,0xbc]97qc.cm.popretz {x1}, 1698 99# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra}, 32100# CHECK-ASM: encoding: [0x46,0xbc]101qc.cm.popretz {ra}, 32102 103# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra}, 32104# CHECK-ASM: encoding: [0x46,0xbc]105qc.cm.popretz {x1}, 32106 107# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0}, 64108# CHECK-ASM: encoding: [0x5e,0xbc]109qc.cm.popretz {ra, s0}, 64110 111# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0}, 64112# CHECK-ASM: encoding: [0x5e,0xbc]113qc.cm.popretz {x1, x8}, 64114 115# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s1}, 16116# CHECK-ASM: encoding: [0x62,0xbc]117qc.cm.popretz {ra, s0-s1}, 16118 119# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s1}, 16120# CHECK-ASM: encoding: [0x62,0xbc]121qc.cm.popretz {x1, x8-x9}, 16122 123# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s2}, 32124# CHECK-ASM: encoding: [0x76,0xbc]125qc.cm.popretz {ra, s0-s2}, 32126 127# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s2}, 32128# CHECK-ASM: encoding: [0x76,0xbc]129qc.cm.popretz {x1, x8-x9, x18}, 32130 131# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s3}, 32132# CHECK-ASM: encoding: [0x82,0xbc]133qc.cm.popretz {ra, s0-s3}, 32134 135# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s3}, 32136# CHECK-ASM: encoding: [0x82,0xbc]137qc.cm.popretz {x1, x8-x9, x18-x19}, 32138 139# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s5}, 32140# CHECK-ASM: encoding: [0xa2,0xbc]141qc.cm.popretz {ra, s0-s5}, 32142 143# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s5}, 32144# CHECK-ASM: encoding: [0xa2,0xbc]145qc.cm.popretz {x1, x8-x9, x18-x21}, 32146 147# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s7}, 48148# CHECK-ASM: encoding: [0xc2,0xbc]149qc.cm.popretz {ra, s0-s7}, 48150 151# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s7}, 48152# CHECK-ASM: encoding: [0xc2,0xbc]153qc.cm.popretz {x1, x8-x9, x18-x23}, 48154 155# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s11}, 112156# CHECK-ASM: encoding: [0xfe,0xbc]157qc.cm.popretz {ra, s0-s11}, 112158 159# CHECK-ASM-AND-OBJ: qc.cm.popretz {ra, s0-s11}, 112160# CHECK-ASM: encoding: [0xfe,0xbc]161qc.cm.popretz {x1, x8-x9, x18-x27}, 112162 163# CHECK-ASM-AND-OBJ: qc.cm.pop {ra}, 16164# CHECK-ASM: encoding: [0x42,0xba]165qc.cm.pop {ra}, 16166 167# CHECK-ASM-AND-OBJ: qc.cm.pop {ra}, 16168# CHECK-ASM: encoding: [0x42,0xba]169qc.cm.pop {x1}, 16170 171# CHECK-ASM-AND-OBJ: qc.cm.pop {ra}, 32172# CHECK-ASM: encoding: [0x46,0xba]173qc.cm.pop {ra}, 32174 175# CHECK-ASM-AND-OBJ: qc.cm.pop {ra}, 32176# CHECK-ASM: encoding: [0x46,0xba]177qc.cm.pop {x1}, 32178 179# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0}, 16180# CHECK-ASM: encoding: [0x52,0xba]181qc.cm.pop {ra, s0}, 16182 183# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0}, 16184# CHECK-ASM: encoding: [0x52,0xba]185qc.cm.pop {x1, x8}, 16186 187# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s1}, 32188# CHECK-ASM: encoding: [0x66,0xba]189qc.cm.pop {ra, s0-s1}, 32190 191# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s1}, 32192# CHECK-ASM: encoding: [0x66,0xba]193qc.cm.pop {x1, x8-x9}, 32194 195# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s2}, 32196# CHECK-ASM: encoding: [0x76,0xba]197qc.cm.pop {ra, s0-s2}, 32198 199# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s2}, 32200# CHECK-ASM: encoding: [0x76,0xba]201qc.cm.pop {x1, x8-x9, x18}, 32202 203# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s5}, 32204# CHECK-ASM: encoding: [0xa2,0xba]205qc.cm.pop {ra, s0-s5}, 32206 207# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s5}, 32208# CHECK-ASM: encoding: [0xa2,0xba]209qc.cm.pop {x1, x8-x9, x18-x21}, 32210 211# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s7}, 48212# CHECK-ASM: encoding: [0xc2,0xba]213qc.cm.pop {ra, s0-s7}, 48214 215# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s7}, 48216# CHECK-ASM: encoding: [0xc2,0xba]217qc.cm.pop {x1, x8-x9, x18-x23}, 48218 219# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s11}, 64220# CHECK-ASM: encoding: [0xf2,0xba]221qc.cm.pop {ra, s0-s11}, 64222 223# CHECK-ASM-AND-OBJ: qc.cm.pop {ra, s0-s11}, 64224# CHECK-ASM: encoding: [0xf2,0xba]225qc.cm.pop {x1, x8-x9, x18-x27}, 64226 227# CHECK-ASM-AND-OBJ: qc.cm.push {ra}, -16228# CHECK-ASM: encoding: [0x42,0xb8]229qc.cm.push {ra}, -16230 231# CHECK-ASM-AND-OBJ: qc.cm.push {ra}, -16232# CHECK-ASM: encoding: [0x42,0xb8]233qc.cm.push {x1}, -16234 235# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0}, -32236# CHECK-ASM: encoding: [0x56,0xb8]237qc.cm.push {ra, s0}, -32238 239# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0}, -32240# CHECK-ASM: encoding: [0x56,0xb8]241qc.cm.push {x1, x8}, -32242 243# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s1}, -16244# CHECK-ASM: encoding: [0x62,0xb8]245qc.cm.push {ra, s0-s1}, -16246 247# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s1}, -16248# CHECK-ASM: encoding: [0x62,0xb8]249qc.cm.push {x1, x8-x9}, -16250 251# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s3}, -32252# CHECK-ASM: encoding: [0x82,0xb8]253qc.cm.push {ra, s0-s3}, -32254 255# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s3}, -32256# CHECK-ASM: encoding: [0x82,0xb8]257qc.cm.push {x1, x8-x9, x18-x19}, -32258 259# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s7}, -48260# CHECK-ASM: encoding: [0xc2,0xb8]261qc.cm.push {ra, s0-s7}, -48262 263# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s7}, -48264# CHECK-ASM: encoding: [0xc2,0xb8]265qc.cm.push {x1, x8-x9, x18-x23}, -48266 267# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s7}, -64268# CHECK-ASM: encoding: [0xc6,0xb8]269qc.cm.push {ra, s0-s7}, -64270 271# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s7}, -64272# CHECK-ASM: encoding: [0xc6,0xb8]273qc.cm.push {x1, x8-x9, x18-x23}, -64274 275# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s11}, -80276# CHECK-ASM: encoding: [0xf6,0xb8]277qc.cm.push {ra, s0-s11}, -80278 279# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s11}, -80280# CHECK-ASM: encoding: [0xf6,0xb8]281qc.cm.push {x1, x8-x9, x18-x27}, -80282 283# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s11}, -112284# CHECK-ASM: encoding: [0xfe,0xb8]285qc.cm.push {ra, s0-s11}, -112286 287# CHECK-ASM-AND-OBJ: qc.cm.push {ra, s0-s11}, -112288# CHECK-ASM: encoding: [0xfe,0xb8]289qc.cm.push {x1, x8-x9, x18-x27}, -112290 291# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0}, -32292# CHECK-ASM: encoding: [0x56,0xb9]293qc.cm.pushfp {ra, s0}, -32294 295# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0}, -32296# CHECK-ASM: encoding: [0x56,0xb9]297qc.cm.pushfp {x1, x8}, -32298 299# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s1}, -16300# CHECK-ASM: encoding: [0x62,0xb9]301qc.cm.pushfp {ra, s0-s1}, -16302 303# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s1}, -16304# CHECK-ASM: encoding: [0x62,0xb9]305qc.cm.pushfp {x1, x8-x9}, -16306 307# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s3}, -32308# CHECK-ASM: encoding: [0x82,0xb9]309qc.cm.pushfp {ra, s0-s3}, -32310 311# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s3}, -32312# CHECK-ASM: encoding: [0x82,0xb9]313qc.cm.pushfp {x1, x8-x9, x18-x19}, -32314 315# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s7}, -48316# CHECK-ASM: encoding: [0xc2,0xb9]317qc.cm.pushfp {ra, s0-s7}, -48318 319# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s7}, -48320# CHECK-ASM: encoding: [0xc2,0xb9]321qc.cm.pushfp {x1, x8-x9, x18-x23}, -48322 323# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s7}, -64324# CHECK-ASM: encoding: [0xc6,0xb9]325qc.cm.pushfp {ra, s0-s7}, -64326 327# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s7}, -64328# CHECK-ASM: encoding: [0xc6,0xb9]329qc.cm.pushfp {x1, x8-x9, x18-x23}, -64330 331# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s11}, -80332# CHECK-ASM: encoding: [0xf6,0xb9]333qc.cm.pushfp {ra, s0-s11}, -80334 335# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s11}, -80336# CHECK-ASM: encoding: [0xf6,0xb9]337qc.cm.pushfp {x1, x8-x9, x18-x27}, -80338 339# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s11}, -112340# CHECK-ASM: encoding: [0xfe,0xb9]341qc.cm.pushfp {ra, s0-s11}, -112342 343# CHECK-ASM-AND-OBJ: qc.cm.pushfp {ra, s0-s11}, -112344# CHECK-ASM: encoding: [0xfe,0xb9]345qc.cm.pushfp {x1, x8-x9, x18-x27}, -112346