# source file to test illegal mips64r2 instructions .set noreorder .set noat .text text_label: # dext macro position/size checks # constraint: 0 <= pos < 64 dext $4, $5, -1, 1 # error (position) dext $4, $5, 0, 1 dext $4, $5, 63, 1 dext $4, $5, 64, 1 # error (position) # constraint: 0 < size <= 64 dext $4, $5, 0, 0 # error (size) dext $4, $5, 0, 1 dext $4, $5, 0, 64 dext $4, $5, 0, 65 # error (size) # constraint: 0 < (pos+size) <= 64 dext $4, $5, 0, 1 dext $4, $5, 0, 2 dext $4, $5, 0, 63 dext $4, $5, 0, 64 dext $4, $5, 1, 1 dext $4, $5, 1, 2 dext $4, $5, 1, 63 dext $4, $5, 1, 64 # error (size) dext $4, $5, 63, 1 dext $4, $5, 63, 2 # error (size) dext $4, $5, 63, 63 # error (size) dext $4, $5, 63, 64 # error (size) # dextm instruction position/size checks # constraint: 0 <= pos < 32 dextm $4, $5, -1, 33 # error (position) dextm $4, $5, 0, 33 dextm $4, $5, 31, 33 dextm $4, $5, 32, 33 # error (position) # constraint: 32 < size <= 64 dextm $4, $5, 0, 32 # error (size) dextm $4, $5, 0, 33 dextm $4, $5, 0, 64 dextm $4, $5, 0, 65 # error (size) # constraint: 32 < (pos+size) <= 64 dextm $4, $5, 0, 33 dextm $4, $5, 0, 34 dextm $4, $5, 0, 63 dextm $4, $5, 0, 64 dextm $4, $5, 1, 33 dextm $4, $5, 1, 34 dextm $4, $5, 1, 63 dextm $4, $5, 1, 64 # error (size) dextm $4, $5, 31, 33 dextm $4, $5, 31, 34 # error (size) dextm $4, $5, 31, 63 # error (size) dextm $4, $5, 31, 64 # error (size) # dextu instruction position/size checks # constraint: 32 <= pos < 64 dextu $4, $5, 31, 1 # error (position) dextu $4, $5, 32, 1 dextu $4, $5, 63, 1 dextu $4, $5, 64, 1 # error (position) # constraint: 0 < size <= 32 dextu $4, $5, 32, 0 # error (size) dextu $4, $5, 32, 1 dextu $4, $5, 32, 32 dextu $4, $5, 32, 33 # error (size) # constraint: 32 < (pos+size) <= 64 dextu $4, $5, 32, 1 dextu $4, $5, 32, 2 dextu $4, $5, 32, 31 dextu $4, $5, 32, 32 dextu $4, $5, 33, 1 dextu $4, $5, 33, 2 dextu $4, $5, 33, 31 dextu $4, $5, 33, 32 # error (size) dextu $4, $5, 63, 1 dextu $4, $5, 63, 2 # error (size) dextu $4, $5, 63, 31 # error (size) dextu $4, $5, 63, 32 # error (size) # dins macro position/size checks # constraint: 0 <= pos < 64 dins $4, $5, -1, 1 # error (position) dins $4, $5, 0, 1 dins $4, $5, 63, 1 dins $4, $5, 64, 1 # error (position) # constraint: 0 < size <= 64 dins $4, $5, 0, 0 # error (size) dins $4, $5, 0, 1 dins $4, $5, 0, 64 dins $4, $5, 0, 65 # error (size) # constraint: 0 < (pos+size) <= 64 dins $4, $5, 0, 1 dins $4, $5, 0, 2 dins $4, $5, 0, 63 dins $4, $5, 0, 64 dins $4, $5, 1, 1 dins $4, $5, 1, 2 dins $4, $5, 1, 63 dins $4, $5, 1, 64 # error (size) dins $4, $5, 63, 1 dins $4, $5, 63, 2 # error (size) dins $4, $5, 63, 63 # error (size) dins $4, $5, 63, 64 # error (size) # dinsm instruction position/size checks # constraint: 0 <= pos < 32 dinsm $4, $5, -1, 33 # error (position) dinsm $4, $5, 0, 33 dinsm $4, $5, 31, 33 dinsm $4, $5, 32, 33 # error (position) # constraint: 2 <= size <= 64 dinsm $4, $5, 31, 1 # error (size) dinsm $4, $5, 31, 2 dinsm $4, $5, 0, 64 dinsm $4, $5, 0, 65 # error (size) # constraint: 32 < (pos+size) <= 64 dinsm $4, $5, 0, 2 # error (size) dinsm $4, $5, 0, 3 # error (size) dinsm $4, $5, 0, 63 dinsm $4, $5, 0, 64 dinsm $4, $5, 1, 2 # error (size) dinsm $4, $5, 1, 3 # error (size) dinsm $4, $5, 1, 63 dinsm $4, $5, 1, 64 # error (size) dinsm $4, $5, 30, 2 # error (size) dinsm $4, $5, 30, 3 dinsm $4, $5, 30, 63 # error (size) dinsm $4, $5, 30, 64 # error (size) dinsm $4, $5, 31, 2 dinsm $4, $5, 31, 3 dinsm $4, $5, 31, 63 # error (size) dinsm $4, $5, 31, 64 # error (size) # dinsu instruction position/size checks # constraint: 32 <= pos < 64 dinsu $4, $5, 31, 1 # error (position) dinsu $4, $5, 32, 1 dinsu $4, $5, 63, 1 dinsu $4, $5, 64, 1 # error (position) # constraint: 1 <= size <= 32 dinsu $4, $5, 32, 0 # error (size) dinsu $4, $5, 32, 1 dinsu $4, $5, 32, 32 dinsu $4, $5, 32, 33 # error (size) # constraint: 32 < (pos+size) <= 64 dinsu $4, $5, 32, 1 dinsu $4, $5, 32, 2 dinsu $4, $5, 32, 31 dinsu $4, $5, 32, 32 dinsu $4, $5, 33, 1 dinsu $4, $5, 33, 2 dinsu $4, $5, 33, 31 dinsu $4, $5, 33, 32 # error (size) dinsu $4, $5, 62, 1 dinsu $4, $5, 62, 2 dinsu $4, $5, 62, 31 # error (size) dinsu $4, $5, 62, 32 # error (size) dinsu $4, $5, 63, 1 dinsu $4, $5, 63, 2 # error (size) dinsu $4, $5, 63, 31 # error (size) dinsu $4, $5, 63, 32 # error (size) # Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... .space 8