1*1424dfb3Schristos.syntax unified 2*1424dfb3Schristos# Extra tests everywhere: 3*1424dfb3Schristos# Ensure that setting the register to something in r[1-12] works. 4*1424dfb3Schristos 5*1424dfb3Schristos# cx1{a} Has arguments in the following form 6*1424dfb3Schristos# 111a111000iiiiiidddd0pppi0iiiiii 7*1424dfb3Schristos# 8*1424dfb3Schristos# Variants to test: 9*1424dfb3Schristos# - Base (everything we can set to zero) 10*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 11*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 12*1424dfb3Schristos# concatenated) 13*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros 14*1424dfb3Schristos# - Coprocessor num set to 7 15*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing). 16*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing) 17*1424dfb3Schristos# 18*1424dfb3Schristos# IT blocks: 19*1424dfb3Schristos# Non-accumulator versions are UNPREDICTABLE in IT blocks. 20*1424dfb3Schristos# Accumulator versions are allowed in IT blocks. 21*1424dfb3Schristos 22*1424dfb3Schristos# cx1{a} extra tests. 23*1424dfb3Schristos# Arm conditional 24*1424dfb3Schristoscx1 p0, r0, #0 25*1424dfb3Schristoscx1 p0, r0, #8064 26*1424dfb3Schristoscx1 p0, r0, #64 27*1424dfb3Schristoscx1 p0, r0, #63 28*1424dfb3Schristoscx1 p7, r0, #0 29*1424dfb3Schristoscx1 p0, APSR_nzcv, #0 30*1424dfb3Schristoscx1 p0, r9, #0 31*1424dfb3Schristoscx1a p0, r0, #0 32*1424dfb3Schristoscx1a p0, r0, #8064 33*1424dfb3Schristoscx1a p0, r0, #64 34*1424dfb3Schristoscx1a p0, r0, #63 35*1424dfb3Schristoscx1a p7, r0, #0 36*1424dfb3Schristoscx1a p0, APSR_nzcv, #0 37*1424dfb3Schristoscx1a p0, r9, #0 38*1424dfb3Schristos 39*1424dfb3Schristosit ne 40*1424dfb3Schristoscx1ane p0, r0, #0 41*1424dfb3Schristos 42*1424dfb3Schristos# cx1d{a} encoding of following form: 43*1424dfb3Schristos# 111a111000iiiiiidddd0pppi1iiiiii 44*1424dfb3Schristos# 45*1424dfb3Schristos# Variants to test: 46*1424dfb3Schristos# - Base (everything we can set to zero) 47*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 48*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 49*1424dfb3Schristos# concatenated) 50*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros 51*1424dfb3Schristos# - Coprocessor num set to 7 52*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing). 53*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing) 54*1424dfb3Schristoscx1d p0, r0, r1, #0 55*1424dfb3Schristoscx1d p0, r0, r1, #8064 56*1424dfb3Schristoscx1d p0, r0, r1, #64 57*1424dfb3Schristoscx1d p0, r0, r1, #63 58*1424dfb3Schristoscx1d p7, r0, r1, #0 59*1424dfb3Schristoscx1d p0, r10, r11, #0 60*1424dfb3Schristoscx1da p0, r0, r1, #0 61*1424dfb3Schristoscx1da p0, r0, r1, #8064 62*1424dfb3Schristoscx1da p0, r0, r1, #64 63*1424dfb3Schristoscx1da p0, r0, r1, #63 64*1424dfb3Schristoscx1da p7, r0, r1, #0 65*1424dfb3Schristoscx1da p0, r10, r11, #0 66*1424dfb3Schristos 67*1424dfb3Schristosit ne 68*1424dfb3Schristoscx1dane p0, r0, r1, #0 69*1424dfb3Schristos 70*1424dfb3Schristos 71*1424dfb3Schristos# cx2{a} Has arguments of the following form: 72*1424dfb3Schristos# 111a111001iinnnndddd0pppi0iiiiii 73*1424dfb3Schristos# 74*1424dfb3Schristos# Variants to test: 75*1424dfb3Schristos# - Base (everything we can set to zero) 76*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 77*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 78*1424dfb3Schristos# concatenated) 79*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros 80*1424dfb3Schristos# - Coprocessor num set to 7 81*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing). 82*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing) 83*1424dfb3Schristoscx2 p0, r0, r0, #0 84*1424dfb3Schristoscx2 p0, r0, r0, #384 85*1424dfb3Schristoscx2 p0, r0, r0, #64 86*1424dfb3Schristoscx2 p0, r0, r0, #63 87*1424dfb3Schristoscx2 p7, r0, r0, #0 88*1424dfb3Schristoscx2 p0, APSR_nzcv, r0, #0 89*1424dfb3Schristoscx2 p0, r9, r0, #0 90*1424dfb3Schristoscx2 p0, r0, APSR_nzcv, #0 91*1424dfb3Schristoscx2 p0, r0, r9, #0 92*1424dfb3Schristoscx2a p0, r0, r0, #0 93*1424dfb3Schristoscx2a p0, r0, r0, #384 94*1424dfb3Schristoscx2a p0, r0, r0, #64 95*1424dfb3Schristoscx2a p0, r0, r0, #63 96*1424dfb3Schristoscx2a p7, r0, r0, #0 97*1424dfb3Schristoscx2a p0, APSR_nzcv, r0, #0 98*1424dfb3Schristoscx2a p0, r9, r0, #0 99*1424dfb3Schristoscx2a p0, r0, APSR_nzcv, #0 100*1424dfb3Schristoscx2a p0, r0, r9, #0 101*1424dfb3Schristos 102*1424dfb3Schristosit ne 103*1424dfb3Schristoscx2ane p0, r0, r0, #0 104*1424dfb3Schristos 105*1424dfb3Schristos# cx2d{a} encoding has following form: 106*1424dfb3Schristos# 111a111001iinnnndddd0pppi1iiiiii 107*1424dfb3Schristos# 108*1424dfb3Schristos# - Base (everything we can set to zero) 109*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 110*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 111*1424dfb3Schristos# concatenated) 112*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros 113*1424dfb3Schristos# - Coprocessor num set to 7 114*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing). 115*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing) 116*1424dfb3Schristoscx2d p0, r0, r1, r0, #0 117*1424dfb3Schristoscx2d p0, r0, r1, r0, #384 118*1424dfb3Schristoscx2d p0, r0, r1, r0, #64 119*1424dfb3Schristoscx2d p0, r0, r1, r0, #63 120*1424dfb3Schristoscx2d p7, r0, r1, r0, #0 121*1424dfb3Schristoscx2d p0, r10, r11, r0, #0 122*1424dfb3Schristoscx2d p0, r0, r1, APSR_nzcv, #0 123*1424dfb3Schristoscx2d p0, r0, r1, r9, #0 124*1424dfb3Schristoscx2da p0, r0, r1, r0, #0 125*1424dfb3Schristoscx2da p0, r0, r1, r0, #384 126*1424dfb3Schristoscx2da p0, r0, r1, r0, #64 127*1424dfb3Schristoscx2da p0, r0, r1, r0, #63 128*1424dfb3Schristoscx2da p7, r0, r1, r0, #0 129*1424dfb3Schristoscx2da p0, r10, r11, r0, #0 130*1424dfb3Schristoscx2da p0, r0, r1, APSR_nzcv, #0 131*1424dfb3Schristoscx2da p0, r0, r1, r9, #0 132*1424dfb3Schristos 133*1424dfb3Schristos# cx3{a} Has arguments in the following form: 134*1424dfb3Schristos# 111a11101iiinnnnmmmm0pppi0iidddd 135*1424dfb3Schristos# 136*1424dfb3Schristos# Variants to test: 137*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 138*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 139*1424dfb3Schristos# - Base (everything we can set to zero) 140*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 141*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 142*1424dfb3Schristos# concatenated) 143*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros 144*1424dfb3Schristos# - Coprocessor num set to 7 145*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing). 146*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing) 147*1424dfb3Schristoscx3 p0, r0, r0, r0, #0 148*1424dfb3Schristoscx3 p0, r0, r0, r0, #56 149*1424dfb3Schristoscx3 p0, r0, r0, r0, #4 150*1424dfb3Schristoscx3 p0, r0, r0, r0, #3 151*1424dfb3Schristoscx3 p7, r0, r0, r0, #0 152*1424dfb3Schristoscx3 p0, APSR_nzcv, r0, r0, #0 153*1424dfb3Schristoscx3 p0, r9, r0, r0, #0 154*1424dfb3Schristoscx3 p0, r0, APSR_nzcv, r0, #0 155*1424dfb3Schristoscx3 p0, r0, r9, r0, #0 156*1424dfb3Schristoscx3 p0, r0, r0, APSR_nzcv, #0 157*1424dfb3Schristoscx3 p0, r0, r0, r9, #0 158*1424dfb3Schristoscx3a p0, r0, r0, r0, #0 159*1424dfb3Schristoscx3a p0, r0, r0, r0, #56 160*1424dfb3Schristoscx3a p0, r0, r0, r0, #4 161*1424dfb3Schristoscx3a p0, r0, r0, r0, #3 162*1424dfb3Schristoscx3a p7, r0, r0, r0, #0 163*1424dfb3Schristoscx3a p0, APSR_nzcv, r0, r0, #0 164*1424dfb3Schristoscx3a p0, r9, r0, r0, #0 165*1424dfb3Schristoscx3a p0, r0, APSR_nzcv, r0, #0 166*1424dfb3Schristoscx3a p0, r0, r9, r0, #0 167*1424dfb3Schristoscx3a p0, r0, r0, APSR_nzcv, #0 168*1424dfb3Schristoscx3a p0, r0, r0, r9, #0 169*1424dfb3Schristos 170*1424dfb3Schristosit ne 171*1424dfb3Schristoscx3ane p0, r0, r0, r0, #0 172*1424dfb3Schristos 173*1424dfb3Schristos# cx3d{a} encoding has following form: 174*1424dfb3Schristos# 111a11101iiinnnnmmmm0pppi1iidddd 175*1424dfb3Schristos# 176*1424dfb3Schristos# Variants to test: 177*1424dfb3Schristos# - Toggle 'a' 178*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn. 179*1424dfb3Schristos# (imm = op1:op2:op3 , which is each group of `i` from left to write 180*1424dfb3Schristos# concatenated) 181*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros 182*1424dfb3Schristos# - Source register 9 (0b1001), APSR_nzcv, or all zeros 183*1424dfb3Schristos 184*1424dfb3Schristos# No longer allows APSR_nzcv in destination register 185*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #0 186*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #56 187*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #4 188*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #3 189*1424dfb3Schristoscx3d p7, r0, r1, r0, r0, #0 190*1424dfb3Schristoscx3d p0, r10, r11, r0, r0, #0 191*1424dfb3Schristoscx3d p0, r0, r1, APSR_nzcv, r0, #0 192*1424dfb3Schristoscx3d p0, r0, r1, r9, r0, #0 193*1424dfb3Schristoscx3d p0, r0, r1, r0, APSR_nzcv, #0 194*1424dfb3Schristoscx3d p0, r0, r1, r0, r9, #0 195*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #0 196*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #56 197*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #4 198*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #3 199*1424dfb3Schristoscx3da p7, r0, r1, r0, r0, #0 200*1424dfb3Schristoscx3da p0, r10, r11, r0, r0, #0 201*1424dfb3Schristoscx3da p0, r0, r1, APSR_nzcv, r0, #0 202*1424dfb3Schristoscx3da p0, r0, r1, r9, r0, #0 203*1424dfb3Schristoscx3da p0, r0, r1, r0, APSR_nzcv, #0 204*1424dfb3Schristoscx3da p0, r0, r1, r0, r9, #0 205*1424dfb3Schristos 206*1424dfb3Schristos 207