diff --git a/llvm/lib/Target/Sparc/SparcInstrAliases.td b/llvm/lib/Target/Sparc/SparcInstrAliases.td index e77b7f5c376bf4..673a2db59b0929 100644 --- a/llvm/lib/Target/Sparc/SparcInstrAliases.td +++ b/llvm/lib/Target/Sparc/SparcInstrAliases.td @@ -601,6 +601,10 @@ def : InstAlias<"flush", (FLUSH), 0>; // unimp -> unimp 0 def : InstAlias<"unimp", (UNIMP 0), 0>; +// Not in spec, but we follow Solaris behavior of having `illtrap` +// interchangeable with `unimp` all the time. +def : MnemonicAlias<"illtrap", "unimp">; + def : MnemonicAlias<"iflush", "flush">; def : MnemonicAlias<"stub", "stb">; diff --git a/llvm/test/MC/Sparc/sparc-misc-instructions.s b/llvm/test/MC/Sparc/sparc-misc-instructions.s index 0547575eb3db51..8119088cd0dbb1 100644 --- a/llvm/test/MC/Sparc/sparc-misc-instructions.s +++ b/llvm/test/MC/Sparc/sparc-misc-instructions.s @@ -6,3 +6,9 @@ ! CHECK: unimp 0 ! encoding: [0x00,0x00,0x00,0x00] unimp 0 + + ! CHECK: unimp 0 ! encoding: [0x00,0x00,0x00,0x00] + illtrap + + ! CHECK: unimp 0 ! encoding: [0x00,0x00,0x00,0x00] + illtrap 0