11abf0afdd4d8e9d58518a878f30b9eede81303ccAkira Hatanaka# RUN: llvm-mc %s -triple=mips64el-unknown-linux -show-encoding -mcpu=mips64r2 | FileCheck %s 2ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# Check that the assembler can handle the documented syntax 3ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# for arithmetic and logical instructions. 4ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter#------------------------------------------------------------------------------ 5ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# Logical instructions 6ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter#------------------------------------------------------------------------------ 7ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: and $9, $6, $7 # encoding: [0x24,0x48,0xc7,0x00] 8ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: andi $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x30] 9ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: andi $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x30] 10ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: clo $6, $7 # encoding: [0x21,0x30,0xe6,0x70] 11ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: clz $6, $7 # encoding: [0x20,0x30,0xe6,0x70] 12ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: ins $19, $9, 6, 7 # encoding: [0x84,0x61,0x33,0x7d] 13ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: nor $9, $6, $7 # encoding: [0x27,0x48,0xc7,0x00] 14ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: or $3, $3, $5 # encoding: [0x25,0x18,0x65,0x00] 158d99ec574849ca8266e6491ceafee6c6029692b3Akira Hatanaka# CHECK: ori $4, $5, 17767 # encoding: [0x67,0x45,0xa4,0x34] 16ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: ori $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x34] 17ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: rotr $9, $6, 7 # encoding: [0xc2,0x49,0x26,0x00] 18ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: rotrv $9, $6, $7 # encoding: [0x46,0x48,0xe6,0x00] 19ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: sll $4, $3, 7 # encoding: [0xc0,0x21,0x03,0x00] 20ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: sllv $2, $3, $5 # encoding: [0x04,0x10,0xa3,0x00] 21ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: slt $3, $3, $5 # encoding: [0x2a,0x18,0x65,0x00] 22ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: slti $3, $3, 103 # encoding: [0x67,0x00,0x63,0x28] 23ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: slti $3, $3, 103 # encoding: [0x67,0x00,0x63,0x28] 24ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: sltiu $3, $3, 103 # encoding: [0x67,0x00,0x63,0x2c] 25ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: sltu $3, $3, $5 # encoding: [0x2b,0x18,0x65,0x00] 26ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: sra $4, $3, 7 # encoding: [0xc3,0x21,0x03,0x00] 27ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: srav $2, $3, $5 # encoding: [0x07,0x10,0xa3,0x00] 28ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: srl $4, $3, 7 # encoding: [0xc2,0x21,0x03,0x00] 29ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: srlv $2, $3, $5 # encoding: [0x06,0x10,0xa3,0x00] 30ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: xor $3, $3, $5 # encoding: [0x26,0x18,0x65,0x00] 31ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: xori $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x38] 32ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: xori $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x38] 33ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: wsbh $6, $7 # encoding: [0xa0,0x30,0x07,0x7c] 3437ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: not $7, $8 # encoding: [0x27,0x38,0x00,0x01] 35ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter and $9, $6, $7 36ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter and $9, $6, 17767 37ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter andi $9, $6, 17767 38ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter clo $6, $7 39ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter clz $6, $7 40ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter ins $19, $9, 6,7 41ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter nor $9, $6, $7 42ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter or $3, $3, $5 438d99ec574849ca8266e6491ceafee6c6029692b3Akira Hatanaka or $4, $5, 17767 44ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter ori $9, $6, 17767 45ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter rotr $9, $6, 7 46ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter rotrv $9, $6, $7 47ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter sll $4, $3, 7 48ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter sllv $2, $3, $5 49ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter slt $3, $3, $5 50ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter slt $3, $3, 103 51ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter slti $3, $3, 103 52ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter sltiu $3, $3, 103 53ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter sltu $3, $3, $5 54ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter sra $4, $3, 7 55ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter srav $2, $3, $5 56ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter srl $4, $3, 7 57ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter srlv $2, $3, $5 58ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter xor $3, $3, $5 59ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter xor $9, $6, 17767 60ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter xori $9, $6, 17767 61ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter wsbh $6, $7 62ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter not $7 ,$8 63ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter 64ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter#------------------------------------------------------------------------------ 65ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# Arithmetic instructions 66ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter#------------------------------------------------------------------------------ 67ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter 68ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: dadd $9, $6, $7 # encoding: [0x2c,0x48,0xc7,0x00] 69ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: daddi $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x60] 70ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: daddiu $9, $6, -15001 # encoding: [0x67,0xc5,0xc9,0x64] 71ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: daddi $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x60] 72e351865b65e92bea8ceeb32ad757d783d0ecea0fJack Carter# CHECK: daddi $9, $9, 17767 # encoding: [0x67,0x45,0x29,0x61] 73ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: daddiu $9, $6, -15001 # encoding: [0x67,0xc5,0xc9,0x64] 74e351865b65e92bea8ceeb32ad757d783d0ecea0fJack Carter# CHECK: daddiu $9, $9, -15001 # encoding: [0x67,0xc5,0x29,0x65] 75ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: daddu $9, $6, $7 # encoding: [0x2d,0x48,0xc7,0x00] 761abf0afdd4d8e9d58518a878f30b9eede81303ccAkira Hatanaka# CHECK: drotr $9, $6, 20 # encoding: [0x3a,0x4d,0x26,0x00] 771abf0afdd4d8e9d58518a878f30b9eede81303ccAkira Hatanaka# CHECK: drotr32 $9, $6, 52 # encoding: [0x3e,0x4d,0x26,0x00] 78ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: madd $6, $7 # encoding: [0x00,0x00,0xc7,0x70] 79ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: maddu $6, $7 # encoding: [0x01,0x00,0xc7,0x70] 80ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: msub $6, $7 # encoding: [0x04,0x00,0xc7,0x70] 81ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: msubu $6, $7 # encoding: [0x05,0x00,0xc7,0x70] 82ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: mult $3, $5 # encoding: [0x18,0x00,0x65,0x00] 83ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter# CHECK: multu $3, $5 # encoding: [0x19,0x00,0x65,0x00] 8436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: dsub $9, $6, $7 # encoding: [0x2e,0x48,0xc7,0x00] 8537ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: dsubu $4, $3, $5 # encoding: [0x2f,0x20,0x65,0x00] 8636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $6, -17767 # encoding: [0x99,0xba,0xc9,0x64] 8737ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: move $7, $8 # encoding: [0x2d,0x38,0x00,0x01] 8837ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: .set push 8937ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: .set mips32r2 9037ef65b9c1b93c386d13089d9ace6a1cc00e82dcJack Carter# CHECK: rdhwr $5, $29 91c147b678206db510336ee95c3b55dc9c0ff19595Jack Carter# CHECK: .set pop # encoding: [0x3b,0xe8,0x05,0x7c] 92c147b678206db510336ee95c3b55dc9c0ff19595Jack Carter 93ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter dadd $9,$6,$7 94ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter dadd $9,$6,17767 95ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter daddu $9,$6,-15001 96ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter daddi $9,$6,17767 97e351865b65e92bea8ceeb32ad757d783d0ecea0fJack Carter daddi $9,17767 98ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter daddiu $9,$6,-15001 99e351865b65e92bea8ceeb32ad757d783d0ecea0fJack Carter daddiu $9,-15001 100ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter daddu $9,$6,$7 1011abf0afdd4d8e9d58518a878f30b9eede81303ccAkira Hatanaka drotr $9, $6, 20 1021abf0afdd4d8e9d58518a878f30b9eede81303ccAkira Hatanaka drotr32 $9, $6, 52 103ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter madd $6,$7 104ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter maddu $6,$7 105ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter msub $6,$7 106ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter msubu $6,$7 107ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter mult $3,$5 108ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter multu $3,$5 10936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsub $9,$6,$7 110ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter dsubu $4,$3,$5 11136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsubu $9,$6,17767 112ec3199f675b17b12fd779df557c6bff25aa4e862Jack Carter move $7,$8 113c147b678206db510336ee95c3b55dc9c0ff19595Jack Carter rdhwr $5, $29 11436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 11536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#------------------------------------------------------------------------------ 11636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# Shortcuts for arithmetic instructions 11736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#------------------------------------------------------------------------------ 11836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 11936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: and $9, $9, $3 # encoding: [0x24,0x48,0x23,0x01] 12036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: dadd $9, $9, $3 # encoding: [0x2c,0x48,0x23,0x01] 12136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddu $9, $9, $3 # encoding: [0x2d,0x48,0x23,0x01] 12236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddi $9, $9, 10 # encoding: [0x0a,0x00,0x29,0x61] 12336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $9, 10 # encoding: [0x0a,0x00,0x29,0x65] 12436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: dsub $9, $9, $3 # encoding: [0x2e,0x48,0x23,0x01] 12536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: dsubu $9, $9, $3 # encoding: [0x2f,0x48,0x23,0x01] 12636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddi $9, $9, -10 # encoding: [0xf6,0xff,0x29,0x61] 12736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $9, -10 # encoding: [0xf6,0xff,0x29,0x65] 12836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: or $9, $9, $3 # encoding: [0x25,0x48,0x23,0x01] 12936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: xor $9, $9, $3 # encoding: [0x26,0x48,0x23,0x01] 13036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines and $9, $3 13136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dadd $9, $3 13236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines daddu $9, $3 13336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dadd $9, 10 13436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines daddu $9, 10 13536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsub $9, $3 13636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsubu $9, $3 13736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsub $9, 10 13836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsubu $9, 10 13936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines or $9, $3 14036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines xor $9, $3 14136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 14236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#------------------------------------------------------------------------------ 14336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# Did you know that GAS supports complex arithmetic expressions in assembly? 14436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#------------------------------------------------------------------------------ 14536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $3, 32 # encoding: [0x20,0x00,0x69,0x64] 14636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $3, 32 # encoding: [0x20,0x00,0x69,0x64] 14736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $3, -32 # encoding: [0xe0,0xff,0x69,0x64] 14836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# CHECK: daddiu $9, $3, -32 # encoding: [0xe0,0xff,0x69,0x64] 14936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines daddiu $9, $3, 8 * 4 15036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines daddiu $9, $3, (8 * 4) 15136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsubu $9, $3, 8 * 4 15236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines dsubu $9, $3, (8 * 4) 153