[llvm] r236273 - [AArch64] Fix bad register class constraint in fast-isel for TST instruction.
Quentin Colombet
qcolombet at apple.com
Thu Apr 30 15:27:21 PDT 2015
Author: qcolombet
Date: Thu Apr 30 17:27:20 2015
New Revision: 236273
URL: http://llvm.org/viewvc/llvm-project?rev=236273&view=rev
Log:
[AArch64] Fix bad register class constraint in fast-isel for TST instruction.
rdar://problem/20748715
Modified:
llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp
llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel.ll
Modified: llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp?rev=236273&r1=236272&r2=236273&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp Thu Apr 30 17:27:20 2015
@@ -2679,8 +2679,11 @@ bool AArch64FastISel::selectSelect(const
return false;
bool CondIsKill = hasTrivialKill(Cond);
+ const MCInstrDesc &II = TII.get(AArch64::ANDSWri);
+ CondReg = constrainOperandRegClass(II, CondReg, 1);
+
// Emit a TST instruction (ANDS wzr, reg, #imm).
- BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(AArch64::ANDSWri),
+ BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, II,
AArch64::WZR)
.addReg(CondReg, getKillRegState(CondIsKill))
.addImm(AArch64_AM::encodeLogicalImmediate(1, 32));
Modified: llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel.ll?rev=236273&r1=236272&r2=236273&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel.ll (original)
+++ llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel.ll Thu Apr 30 17:27:20 2015
@@ -91,3 +91,13 @@ define void @t6() nounwind {
}
declare void @llvm.trap() nounwind
+
+define void @ands(i32* %addr) {
+; CHECK-LABEL: ands:
+; CHECK: tst [[COND:w[0-9]+]], #0x1
+; CHECK-NEXT: csel [[COND]],
+entry:
+ %cond91 = select i1 undef, i32 1, i32 2
+ store i32 %cond91, i32* %addr, align 4
+ ret void
+}
More information about the llvm-commits
mailing list