1*9880d681SAndroid Build Coastguard Worker# Check the hardware registers 2*9880d681SAndroid Build Coastguard Worker# 3*9880d681SAndroid Build Coastguard Worker# FIXME: Use the code generator in order to print the .set directives 4*9880d681SAndroid Build Coastguard Worker# instead of the instruction printer. 5*9880d681SAndroid Build Coastguard Worker# 6*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ 7*9880d681SAndroid Build Coastguard Worker# RUN: FileCheck %s 8*9880d681SAndroid Build Coastguard Worker .set noat 9*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 10*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 11*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $hwr_cpunum 12*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x00,0x3b] 13*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$hwr_cpunum 14*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 15*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 16*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $hwr_cpunum 17*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x00,0x3b] 18*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$0 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 21*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 22*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $5, $hwr_synci_step 23*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x05,0x08,0x3b] 24*9880d681SAndroid Build Coastguard Worker rdhwr $a1,$hwr_synci_step 25*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 26*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 27*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $5, $hwr_synci_step 28*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x05,0x08,0x3b] 29*9880d681SAndroid Build Coastguard Worker rdhwr $a1,$1 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 32*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 33*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $6, $hwr_cc 34*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x06,0x10,0x3b] 35*9880d681SAndroid Build Coastguard Worker rdhwr $a2,$hwr_cc 36*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 37*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 38*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $6, $hwr_cc 39*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x06,0x10,0x3b] 40*9880d681SAndroid Build Coastguard Worker rdhwr $a2,$2 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 43*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 44*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $7, $hwr_ccres 45*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x07,0x18,0x3b] 46*9880d681SAndroid Build Coastguard Worker rdhwr $a3,$hwr_ccres 47*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 48*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 49*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $7, $hwr_ccres 50*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x07,0x18,0x3b] 51*9880d681SAndroid Build Coastguard Worker rdhwr $a3,$3 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 54*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 55*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $4 56*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x20,0x3b] 57*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$4 58*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 59*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 60*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $5 61*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x28,0x3b] 62*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$5 63*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 64*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 65*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $6 66*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x30,0x3b] 67*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$6 68*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 69*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 70*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $7 71*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x38,0x3b] 72*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$7 73*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 74*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 75*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $8 76*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x40,0x3b] 77*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$8 78*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 79*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 80*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $9 81*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x48,0x3b] 82*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$9 83*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 84*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 85*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $10 86*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x50,0x3b] 87*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$10 88*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 89*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 90*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $11 91*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x58,0x3b] 92*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$11 93*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 94*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 95*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $12 96*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x60,0x3b] 97*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$12 98*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 99*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 100*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $13 101*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x68,0x3b] 102*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$13 103*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 104*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 105*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $14 106*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x70,0x3b] 107*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$14 108*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 109*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 110*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $15 111*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x78,0x3b] 112*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$15 113*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 114*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 115*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $16 116*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x80,0x3b] 117*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$16 118*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 119*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 120*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $17 121*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x88,0x3b] 122*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$17 123*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 124*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 125*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $18 126*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x90,0x3b] 127*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$18 128*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 129*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 130*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $19 131*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0x98,0x3b] 132*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$19 133*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 134*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 135*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $20 136*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xa0,0x3b] 137*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$20 138*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 139*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 140*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $21 141*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xa8,0x3b] 142*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$21 143*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 144*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 145*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $22 146*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xb0,0x3b] 147*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$22 148*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 149*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 150*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $23 151*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xb8,0x3b] 152*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$23 153*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 154*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 155*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $24 156*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xc0,0x3b] 157*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$24 158*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 159*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 160*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $25 161*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xc8,0x3b] 162*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$25 163*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 164*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 165*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $26 166*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xd0,0x3b] 167*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$26 168*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 169*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 170*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $27 171*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xd8,0x3b] 172*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$27 173*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 174*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 175*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $28 176*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xe0,0x3b] 177*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$28 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 180*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 181*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $29 182*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xe8,0x3b] 183*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$29 184*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 185*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 186*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $29 187*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xe8,0x3b] 188*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$hwr_ulr 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 191*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 192*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $30 193*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xf0,0x3b] 194*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$30 195*9880d681SAndroid Build Coastguard Worker # CHECK: .set push 196*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set mips32r2 197*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: rdhwr $4, $31 198*9880d681SAndroid Build Coastguard Worker # CHECK-NEXT: .set pop # encoding: [0x7c,0x04,0xf8,0x3b] 199*9880d681SAndroid Build Coastguard Worker rdhwr $a0,$31 200