1*d3860e66SSimon Dardis# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -show-inst -mcpu=mips32r2 | FileCheck %s --check-prefixes=CHECK,CHECK-32 2*d3860e66SSimon Dardis# RUN: llvm-mc %s -triple=mips64el-unknown-linux -show-encoding -show-inst -mcpu=mips64r2 | FileCheck %s --check-prefixes=CHECK,CHECK-64 3a63b16acSJack Carter# Check that the assembler can handle the documented syntax 4a63b16acSJack Carter# for FPU instructions. 5a63b16acSJack Carter#------------------------------------------------------------------------------ 6a63b16acSJack Carter# FP aritmetic instructions 7a63b16acSJack Carter#------------------------------------------------------------------------------ 8a63b16acSJack Carter 9a63b16acSJack Carter# CHECK: abs.d $f12, $f14 # encoding: [0x05,0x73,0x20,0x46] 10a63b16acSJack Carter# CHECK: abs.s $f6, $f7 # encoding: [0x85,0x39,0x00,0x46] 11a63b16acSJack Carter# CHECK: add.d $f8, $f12, $f14 # encoding: [0x00,0x62,0x2e,0x46] 12a63b16acSJack Carter# CHECK: add.s $f9, $f6, $f7 # encoding: [0x40,0x32,0x07,0x46] 13a63b16acSJack Carter# CHECK: floor.w.d $f12, $f14 # encoding: [0x0f,0x73,0x20,0x46] 14a63b16acSJack Carter# CHECK: floor.w.s $f6, $f7 # encoding: [0x8f,0x39,0x00,0x46] 15a63b16acSJack Carter# CHECK: ceil.w.d $f12, $f14 # encoding: [0x0e,0x73,0x20,0x46] 16a63b16acSJack Carter# CHECK: ceil.w.s $f6, $f7 # encoding: [0x8e,0x39,0x00,0x46] 17a63b16acSJack Carter# CHECK: mul.d $f8, $f12, $f14 # encoding: [0x02,0x62,0x2e,0x46] 18a63b16acSJack Carter# CHECK: mul.s $f9, $f6, $f7 # encoding: [0x42,0x32,0x07,0x46] 19a63b16acSJack Carter# CHECK: neg.d $f12, $f14 # encoding: [0x07,0x73,0x20,0x46] 20a63b16acSJack Carter# CHECK: neg.s $f6, $f7 # encoding: [0x87,0x39,0x00,0x46] 21a63b16acSJack Carter# CHECK: round.w.d $f12, $f14 # encoding: [0x0c,0x73,0x20,0x46] 22a63b16acSJack Carter# CHECK: round.w.s $f6, $f7 # encoding: [0x8c,0x39,0x00,0x46] 23a63b16acSJack Carter# CHECK: sqrt.d $f12, $f14 # encoding: [0x04,0x73,0x20,0x46] 24a63b16acSJack Carter# CHECK: sqrt.s $f6, $f7 # encoding: [0x84,0x39,0x00,0x46] 25a63b16acSJack Carter# CHECK: sub.d $f8, $f12, $f14 # encoding: [0x01,0x62,0x2e,0x46] 26a63b16acSJack Carter# CHECK: sub.s $f9, $f6, $f7 # encoding: [0x41,0x32,0x07,0x46] 27a63b16acSJack Carter# CHECK: trunc.w.d $f12, $f14 # encoding: [0x0d,0x73,0x20,0x46] 28a63b16acSJack Carter# CHECK: trunc.w.s $f6, $f7 # encoding: [0x8d,0x39,0x00,0x46] 29a63b16acSJack Carter 30a63b16acSJack Carter abs.d $f12,$f14 31a63b16acSJack Carter abs.s $f6,$f7 32a63b16acSJack Carter add.d $f8,$f12,$f14 33a63b16acSJack Carter add.s $f9,$f6,$f7 34a63b16acSJack Carter floor.w.d $f12,$f14 35a63b16acSJack Carter floor.w.s $f6,$f7 36a63b16acSJack Carter ceil.w.d $f12,$f14 37a63b16acSJack Carter ceil.w.s $f6,$f7 38a63b16acSJack Carter mul.d $f8,$f12,$f14 39a63b16acSJack Carter mul.s $f9,$f6, $f7 40a63b16acSJack Carter neg.d $f12,$f14 41a63b16acSJack Carter neg.s $f6,$f7 42a63b16acSJack Carter round.w.d $f12,$f14 43a63b16acSJack Carter round.w.s $f6,$f7 44a63b16acSJack Carter sqrt.d $f12,$f14 45a63b16acSJack Carter sqrt.s $f6,$f7 46a63b16acSJack Carter sub.d $f8,$f12,$f14 47a63b16acSJack Carter sub.s $f9,$f6,$f7 48a63b16acSJack Carter trunc.w.d $f12,$f14 49a63b16acSJack Carter trunc.w.s $f6,$f7 50a63b16acSJack Carter 51a63b16acSJack Carter#------------------------------------------------------------------------------ 52a63b16acSJack Carter# FP compare instructions 53a63b16acSJack Carter#------------------------------------------------------------------------------ 54a63b16acSJack Carter 55a63b16acSJack Carter# CHECK: c.eq.d $f12, $f14 # encoding: [0x32,0x60,0x2e,0x46] 56a63b16acSJack Carter# CHECK: c.eq.s $f6, $f7 # encoding: [0x32,0x30,0x07,0x46] 57a63b16acSJack Carter# CHECK: c.f.d $f12, $f14 # encoding: [0x30,0x60,0x2e,0x46] 58a63b16acSJack Carter# CHECK: c.f.s $f6, $f7 # encoding: [0x30,0x30,0x07,0x46] 59a63b16acSJack Carter# CHECK: c.le.d $f12, $f14 # encoding: [0x3e,0x60,0x2e,0x46] 60a63b16acSJack Carter# CHECK: c.le.s $f6, $f7 # encoding: [0x3e,0x30,0x07,0x46] 61a63b16acSJack Carter# CHECK: c.lt.d $f12, $f14 # encoding: [0x3c,0x60,0x2e,0x46] 62a63b16acSJack Carter# CHECK: c.lt.s $f6, $f7 # encoding: [0x3c,0x30,0x07,0x46] 63a63b16acSJack Carter# CHECK: c.nge.d $f12, $f14 # encoding: [0x3d,0x60,0x2e,0x46] 64a63b16acSJack Carter# CHECK: c.nge.s $f6, $f7 # encoding: [0x3d,0x30,0x07,0x46] 65a63b16acSJack Carter# CHECK: c.ngl.d $f12, $f14 # encoding: [0x3b,0x60,0x2e,0x46] 66a63b16acSJack Carter# CHECK: c.ngl.s $f6, $f7 # encoding: [0x3b,0x30,0x07,0x46] 67a63b16acSJack Carter# CHECK: c.ngle.d $f12, $f14 # encoding: [0x39,0x60,0x2e,0x46] 68a63b16acSJack Carter# CHECK: c.ngle.s $f6, $f7 # encoding: [0x39,0x30,0x07,0x46] 69a63b16acSJack Carter# CHECK: c.ngt.d $f12, $f14 # encoding: [0x3f,0x60,0x2e,0x46] 70a63b16acSJack Carter# CHECK: c.ngt.s $f6, $f7 # encoding: [0x3f,0x30,0x07,0x46] 71a63b16acSJack Carter# CHECK: c.ole.d $f12, $f14 # encoding: [0x36,0x60,0x2e,0x46] 72a63b16acSJack Carter# CHECK: c.ole.s $f6, $f7 # encoding: [0x36,0x30,0x07,0x46] 73a63b16acSJack Carter# CHECK: c.olt.d $f12, $f14 # encoding: [0x34,0x60,0x2e,0x46] 74a63b16acSJack Carter# CHECK: c.olt.s $f6, $f7 # encoding: [0x34,0x30,0x07,0x46] 75a63b16acSJack Carter# CHECK: c.seq.d $f12, $f14 # encoding: [0x3a,0x60,0x2e,0x46] 76a63b16acSJack Carter# CHECK: c.seq.s $f6, $f7 # encoding: [0x3a,0x30,0x07,0x46] 77a63b16acSJack Carter# CHECK: c.sf.d $f12, $f14 # encoding: [0x38,0x60,0x2e,0x46] 78a63b16acSJack Carter# CHECK: c.sf.s $f6, $f7 # encoding: [0x38,0x30,0x07,0x46] 79a63b16acSJack Carter# CHECK: c.ueq.d $f12, $f14 # encoding: [0x33,0x60,0x2e,0x46] 80a63b16acSJack Carter# CHECK: c.ueq.s $f28, $f18 # encoding: [0x33,0xe0,0x12,0x46] 81a63b16acSJack Carter# CHECK: c.ule.d $f12, $f14 # encoding: [0x37,0x60,0x2e,0x46] 82a63b16acSJack Carter# CHECK: c.ule.s $f6, $f7 # encoding: [0x37,0x30,0x07,0x46] 83a63b16acSJack Carter# CHECK: c.ult.d $f12, $f14 # encoding: [0x35,0x60,0x2e,0x46] 84a63b16acSJack Carter# CHECK: c.ult.s $f6, $f7 # encoding: [0x35,0x30,0x07,0x46] 85a63b16acSJack Carter# CHECK: c.un.d $f12, $f14 # encoding: [0x31,0x60,0x2e,0x46] 86a63b16acSJack Carter# CHECK: c.un.s $f6, $f7 # encoding: [0x31,0x30,0x07,0x46] 87a63b16acSJack Carter 88a63b16acSJack Carter c.eq.d $f12,$f14 89a63b16acSJack Carter c.eq.s $f6,$f7 90a63b16acSJack Carter c.f.d $f12,$f14 91a63b16acSJack Carter c.f.s $f6,$f7 92a63b16acSJack Carter c.le.d $f12,$f14 93a63b16acSJack Carter c.le.s $f6,$f7 94a63b16acSJack Carter c.lt.d $f12,$f14 95a63b16acSJack Carter c.lt.s $f6,$f7 96a63b16acSJack Carter c.nge.d $f12,$f14 97a63b16acSJack Carter c.nge.s $f6,$f7 98a63b16acSJack Carter c.ngl.d $f12,$f14 99a63b16acSJack Carter c.ngl.s $f6,$f7 100a63b16acSJack Carter c.ngle.d $f12,$f14 101a63b16acSJack Carter c.ngle.s $f6,$f7 102a63b16acSJack Carter c.ngt.d $f12,$f14 103a63b16acSJack Carter c.ngt.s $f6,$f7 104a63b16acSJack Carter c.ole.d $f12,$f14 105a63b16acSJack Carter c.ole.s $f6,$f7 106a63b16acSJack Carter c.olt.d $f12,$f14 107a63b16acSJack Carter c.olt.s $f6,$f7 108a63b16acSJack Carter c.seq.d $f12,$f14 109a63b16acSJack Carter c.seq.s $f6,$f7 110a63b16acSJack Carter c.sf.d $f12,$f14 111a63b16acSJack Carter c.sf.s $f6,$f7 112a63b16acSJack Carter c.ueq.d $f12,$f14 113a63b16acSJack Carter c.ueq.s $f28,$f18 114a63b16acSJack Carter c.ule.d $f12,$f14 115a63b16acSJack Carter c.ule.s $f6,$f7 116a63b16acSJack Carter c.ult.d $f12,$f14 117a63b16acSJack Carter c.ult.s $f6,$f7 118a63b16acSJack Carter c.un.d $f12,$f14 119a63b16acSJack Carter c.un.s $f6,$f7 120a63b16acSJack Carter 121a63b16acSJack Carter#------------------------------------------------------------------------------ 122a63b16acSJack Carter# FP convert instructions 123a63b16acSJack Carter#------------------------------------------------------------------------------ 124a63b16acSJack Carter# CHECK: cvt.d.s $f6, $f7 # encoding: [0xa1,0x39,0x00,0x46] 125a63b16acSJack Carter# CHECK: cvt.d.w $f12, $f14 # encoding: [0x21,0x73,0x80,0x46] 126*d3860e66SSimon Dardis# CHECK-32: # <MCInst #{{.*}} CVT_D32_W 127*d3860e66SSimon Dardis# CHECK-64: # <MCInst #{{.*}} CVT_D64_W 128a63b16acSJack Carter# CHECK: cvt.s.d $f12, $f14 # encoding: [0x20,0x73,0x20,0x46] 129a63b16acSJack Carter# CHECK: cvt.s.w $f6, $f7 # encoding: [0xa0,0x39,0x80,0x46] 130a63b16acSJack Carter# CHECK: cvt.w.d $f12, $f14 # encoding: [0x24,0x73,0x20,0x46] 131a63b16acSJack Carter# CHECK: cvt.w.s $f6, $f7 # encoding: [0xa4,0x39,0x00,0x46] 132a63b16acSJack Carter 133a63b16acSJack Carter cvt.d.s $f6,$f7 134a63b16acSJack Carter cvt.d.w $f12,$f14 135a63b16acSJack Carter cvt.s.d $f12,$f14 136a63b16acSJack Carter cvt.s.w $f6,$f7 137a63b16acSJack Carter cvt.w.d $f12,$f14 138a63b16acSJack Carter cvt.w.s $f6,$f7 139a63b16acSJack Carter 140a63b16acSJack Carter#------------------------------------------------------------------------------ 141a63b16acSJack Carter# FP move instructions 142a63b16acSJack Carter#------------------------------------------------------------------------------ 14377ffd7afSVladimir Medic# CHECK: bc1f $BB_1 # encoding: [A,A,0x00,0x45] 144b7915a1fSPetar Jovanovic# CHECK: # fixup A - offset: 0, value: ($BB_1)-4, kind: fixup_Mips_PC16 145a63b16acSJack Carter 1464d2ea3c6SAkira Hatanaka# CHECK: cfc1 $6, $0 # encoding: [0x00,0x00,0x46,0x44] 1474d2ea3c6SAkira Hatanaka# CHECK: ctc1 $10, $31 # encoding: [0x00,0xf8,0xca,0x44] 148a63b16acSJack Carter# CHECK: mfc1 $6, $f7 # encoding: [0x00,0x38,0x06,0x44] 149a63b16acSJack Carter# CHECK: mfhi $5 # encoding: [0x10,0x28,0x00,0x00] 150a63b16acSJack Carter# CHECK: mflo $5 # encoding: [0x12,0x28,0x00,0x00] 151a63b16acSJack Carter# CHECK: mov.d $f6, $f8 # encoding: [0x86,0x41,0x20,0x46] 152a63b16acSJack Carter# CHECK: mov.s $f6, $f7 # encoding: [0x86,0x39,0x00,0x46] 153a63b16acSJack Carter# CHECK: mtc1 $6, $f7 # encoding: [0x00,0x38,0x86,0x44] 154a63b16acSJack Carter# CHECK: mthi $7 # encoding: [0x11,0x00,0xe0,0x00] 155a63b16acSJack Carter# CHECK: mtlo $7 # encoding: [0x13,0x00,0xe0,0x00] 156a63b16acSJack Carter# CHECK: swc1 $f9, 9158($7) # encoding: [0xc6,0x23,0xe9,0xe4] 157e948ec52SJack Carter# CHECK: mfc0 $6, $7, 0 # encoding: [0x00,0x38,0x06,0x40] 158e948ec52SJack Carter# CHECK: mtc0 $9, $8, 0 # encoding: [0x00,0x40,0x89,0x40] 159e948ec52SJack Carter# CHECK: mfc2 $5, $7, 0 # encoding: [0x00,0x38,0x05,0x48] 160e948ec52SJack Carter# CHECK: mtc2 $9, $4, 0 # encoding: [0x00,0x20,0x89,0x48] 161e948ec52SJack Carter# CHECK: mfc0 $6, $7, 2 # encoding: [0x02,0x38,0x06,0x40] 162e948ec52SJack Carter# CHECK: mtc0 $9, $8, 3 # encoding: [0x03,0x40,0x89,0x40] 163e948ec52SJack Carter# CHECK: mfc2 $5, $7, 4 # encoding: [0x04,0x38,0x05,0x48] 164e948ec52SJack Carter# CHECK: mtc2 $9, $4, 5 # encoding: [0x05,0x20,0x89,0x48] 1652ad73da0SJack Carter# CHECK: movf $2, $1, $fcc0 # encoding: [0x01,0x10,0x20,0x00] 1662ad73da0SJack Carter# CHECK: movt $2, $1, $fcc0 # encoding: [0x01,0x10,0x21,0x00] 167643b3987SVladimir Medic# CHECK: movt $4, $5, $fcc4 # encoding: [0x01,0x20,0xb1,0x00] 168643b3987SVladimir Medic# CHECK: movf.d $f4, $f6, $fcc2 # encoding: [0x11,0x31,0x28,0x46] 169643b3987SVladimir Medic# CHECK: movf.s $f4, $f6, $fcc5 # encoding: [0x11,0x31,0x14,0x46] 1703467b907SVladimir Medic# CHECK: luxc1 $f0, $6($5) # encoding: [0x05,0x00,0xa6,0x4c] 1713467b907SVladimir Medic# CHECK: suxc1 $f4, $24($5) # encoding: [0x0d,0x20,0xb8,0x4c] 1729bfa2e2eSAkira Hatanaka# CHECK: lwxc1 $f20, $12($14) # encoding: [0x00,0x05,0xcc,0x4d] 1739bfa2e2eSAkira Hatanaka# CHECK: swxc1 $f26, $18($22) # encoding: [0x08,0xd0,0xd2,0x4e] 17465cd5744SVladimir Medic# CHECK: mfhc1 $17, $f4 # encoding: [0x00,0x20,0x71,0x44] 17565cd5744SVladimir Medic# CHECK: mthc1 $17, $f6 # encoding: [0x00,0x30,0xf1,0x44] 17605bcde6dSVladimir Medic# CHECK: swc2 $4, 16($sp) # encoding: [0x10,0x00,0xa4,0xeb] 17705bcde6dSVladimir Medic# CHECK: sdc2 $4, 16($sp) # encoding: [0x10,0x00,0xa4,0xfb] 17805bcde6dSVladimir Medic# CHECK: lwc2 $11, 12($ra) # encoding: [0x0c,0x00,0xeb,0xcb] 17905bcde6dSVladimir Medic# CHECK: ldc2 $11, 12($ra) # encoding: [0x0c,0x00,0xeb,0xdb] 18077ffd7afSVladimir Medic bc1f $fcc0, $BB_1 181a63b16acSJack Carter cfc1 $a2,$0 1824d2ea3c6SAkira Hatanaka ctc1 $10,$31 183a63b16acSJack Carter mfc1 $a2,$f7 184a63b16acSJack Carter mfhi $a1 185a63b16acSJack Carter mflo $a1 186a63b16acSJack Carter mov.d $f6,$f8 187a63b16acSJack Carter mov.s $f6,$f7 188a63b16acSJack Carter mtc1 $a2,$f7 189a63b16acSJack Carter mthi $a3 190a63b16acSJack Carter mtlo $a3 191a63b16acSJack Carter swc1 $f9,9158($a3) 192e948ec52SJack Carter mfc0 $6, $7 193e948ec52SJack Carter mtc0 $9, $8 194e948ec52SJack Carter mfc2 $5, $7 195e948ec52SJack Carter mtc2 $9, $4 196e948ec52SJack Carter mfc0 $6, $7, 2 197e948ec52SJack Carter mtc0 $9, $8, 3 198e948ec52SJack Carter mfc2 $5, $7, 4 199e948ec52SJack Carter mtc2 $9, $4, 5 2002ad73da0SJack Carter movf $2, $1, $fcc0 2012ad73da0SJack Carter movt $2, $1, $fcc0 202643b3987SVladimir Medic movt $4, $5, $fcc4 203643b3987SVladimir Medic movf.d $f4, $f6, $fcc2 204643b3987SVladimir Medic movf.s $f4, $f6, $fcc5 2053467b907SVladimir Medic luxc1 $f0, $a2($a1) 2063467b907SVladimir Medic suxc1 $f4, $t8($a1) 2079bfa2e2eSAkira Hatanaka lwxc1 $f20, $12($14) 2089bfa2e2eSAkira Hatanaka swxc1 $f26, $s2($s6) 20965cd5744SVladimir Medic mfhc1 $17, $f4 21065cd5744SVladimir Medic mthc1 $17, $f6 21105bcde6dSVladimir Medic swc2 $4, 16($sp) 21205bcde6dSVladimir Medic sdc2 $4, 16($sp) 21305bcde6dSVladimir Medic lwc2 $11, 12($ra) 21405bcde6dSVladimir Medic ldc2 $11, 12($ra) 215