xref: /llvm-project/llvm/test/MC/Mips/set-at-directive-explicit-at.s (revision d9d344b48584727c2690cce89f320ad0a09f659c)
1b1d7e53aSDaniel Sanders# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 \
2b1d7e53aSDaniel Sanders# RUN:     2>%t1 | FileCheck %s
3b1d7e53aSDaniel Sanders# RUN: FileCheck -check-prefix=WARNINGS %s < %t1
4*d9d344b4SToma Tabacu
5*d9d344b4SToma Tabacu# Check that the assembler can handle the documented syntax for ".set at" and
6*d9d344b4SToma Tabacu# will set the correct value for $at.
7*d9d344b4SToma Tabacu# Note that writing $at is always the same as writing $1.
8*d9d344b4SToma Tabacu
9b1d7e53aSDaniel Sanders    .text
10b1d7e53aSDaniel Sandersfoo:
11b1d7e53aSDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
12*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $1) without ".set noat"
13b1d7e53aSDaniel Sanders    .set    at=$1
14b1d7e53aSDaniel Sanders    jr    $at
15b1d7e53aSDaniel Sanders
16b1d7e53aSDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
17*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $1) without ".set noat"
18b1d7e53aSDaniel Sanders    .set    at=$1
19b1d7e53aSDaniel Sanders    jr    $1
2016a74499SToma Tabacu
2116a74499SToma Tabacu# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
22*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $1) without ".set noat"
2316a74499SToma Tabacu    .set    at=$at
2416a74499SToma Tabacu    jr    $at
2516a74499SToma Tabacu
2616a74499SToma Tabacu# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
27*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $1) without ".set noat"
2816a74499SToma Tabacu    .set    at=$at
2916a74499SToma Tabacu    jr    $1
30b1d7e53aSDaniel Sanders
31*d9d344b4SToma Tabacu# WARNINGS-NOT: warning: used $at (currently ${{[0-9]+}}) without ".set noat"
32b1d7e53aSDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
33b1d7e53aSDaniel Sanders    .set    at=$2
34b1d7e53aSDaniel Sanders    jr    $at
35b1d7e53aSDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
36b1d7e53aSDaniel Sanders    .set    at=$3
37b1d7e53aSDaniel Sanders    jr    $at
38b1d7e53aSDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
39b1d7e53aSDaniel Sanders    .set noat
40b1d7e53aSDaniel Sanders    jr    $at
4171a89d92SDaniel Sanders# CHECK:   jr    $1                      # encoding: [0x08,0x00,0x20,0x00]
4271a89d92SDaniel Sanders    .set at=$0
4371a89d92SDaniel Sanders    jr    $at
44b1d7e53aSDaniel Sanders
45b1d7e53aSDaniel Sanders# CHECK:   jr    $16                     # encoding: [0x08,0x00,0x00,0x02]
46*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $16) without ".set noat"
47b1d7e53aSDaniel Sanders    .set    at=$16
48b1d7e53aSDaniel Sanders    jr    $s0
49b1d7e53aSDaniel Sanders
50b1d7e53aSDaniel Sanders# CHECK:   jr    $16                     # encoding: [0x08,0x00,0x00,0x02]
51*d9d344b4SToma Tabacu# WARNINGS: :[[@LINE+2]]:11: warning: used $at (currently $16) without ".set noat"
52b1d7e53aSDaniel Sanders    .set    at=$16
53b1d7e53aSDaniel Sanders    jr    $16
54