diff options
| author | Jim Grosbach <grosbach@apple.com> | 2011-07-27 22:34:17 +0000 |
|---|---|---|
| committer | Jim Grosbach <grosbach@apple.com> | 2011-07-27 22:34:17 +0000 |
| commit | 57e2d3cb8462f783110ddd7402317dde2ae3e31a (patch) | |
| tree | e64ac0c20d968f45d24b8dec3ffe81fd0ffbcd1f /llvm/lib | |
| parent | fea7a44a9b6ac4a1825affa99eb91882e300cae5 (diff) | |
| download | bcm5719-llvm-57e2d3cb8462f783110ddd7402317dde2ae3e31a.tar.gz bcm5719-llvm-57e2d3cb8462f783110ddd7402317dde2ae3e31a.zip | |
ARM assembly parsing and encoding support for USAT and USAT16.
Use range checked immediate operands for instructions. Add tests.
llvm-svn: 136285
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.td | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td index 7e9687a7cf1..722fff7d1c5 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.td +++ b/llvm/lib/Target/ARM/ARMInstrInfo.td @@ -2785,7 +2785,7 @@ def SSAT16 : AI<(outs GPR:$Rd), (ins imm1_16:$sat_imm, GPR:$Rn), SatFrm, let Inst{3-0} = Rn; } -def USAT : AI<(outs GPR:$Rd), (ins i32imm:$sat_imm, GPR:$Rn, shift_imm:$sh), +def USAT : AI<(outs GPR:$Rd), (ins imm0_31:$sat_imm, GPR:$Rn, shift_imm:$sh), SatFrm, NoItinerary, "usat", "\t$Rd, $sat_imm, $Rn$sh", []> { bits<4> Rd; bits<5> sat_imm; @@ -2800,7 +2800,7 @@ def USAT : AI<(outs GPR:$Rd), (ins i32imm:$sat_imm, GPR:$Rn, shift_imm:$sh), let Inst{3-0} = Rn; } -def USAT16 : AI<(outs GPR:$Rd), (ins i32imm:$sat_imm, GPR:$a), SatFrm, +def USAT16 : AI<(outs GPR:$Rd), (ins imm0_15:$sat_imm, GPR:$a), SatFrm, NoItinerary, "usat16", "\t$Rd, $sat_imm, $a", [/* For disassembly only; pattern left blank */]> { bits<4> Rd; @@ -4364,9 +4364,11 @@ def : InstAlias<"rsc${s}${p} $Rdn, $shift", (RSCrsr GPR:$Rdn, GPR:$Rdn, so_reg_reg:$shift, pred:$p, cc_out:$s)>, Requires<[IsARM]>; -// SSAT optional shift operand. +// SSAT/USAT optional shift operand. def : InstAlias<"ssat${p} $Rd, $sat_imm, $Rn", (SSAT GPR:$Rd, imm1_32:$sat_imm, GPR:$Rn, 0, pred:$p)>; +def : InstAlias<"usat${p} $Rd, $sat_imm, $Rn", + (USAT GPR:$Rd, imm0_31:$sat_imm, GPR:$Rn, 0, pred:$p)>; // Extend instruction optional rotate operand. |

