Skip to content

Commit 3d3ee87

Browse files
author
Evan Cheng
committed
llvm can't correctly support 'H', 'Q' and 'R' modifiers. Just mark it an error.
llvm-svn: 104891
1 parent 9738f64 commit 3d3ee87

File tree

2 files changed

+2
-26
lines changed

2 files changed

+2
-26
lines changed

llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,27 +1064,11 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
10641064
printOperand(MI, OpNum, O);
10651065
return false;
10661066
case 'Q':
1067-
// Print the least significant half of a register pair.
1068-
if (TM.getTargetData()->isBigEndian())
1069-
break;
1070-
printOperand(MI, OpNum, O);
1071-
return false;
10721067
case 'R':
1073-
// Print the most significant half of a register pair.
1074-
if (TM.getTargetData()->isLittleEndian())
1075-
break;
1076-
printOperand(MI, OpNum, O);
1077-
return false;
10781068
case 'H':
1079-
break;
1080-
}
1081-
// Print the second half of a register pair (for 'Q', 'R' or 'H').
1082-
// Verify that this operand has two consecutive registers.
1083-
if (!MI->getOperand(OpNum).isReg() ||
1084-
OpNum+1 == MI->getNumOperands() ||
1085-
!MI->getOperand(OpNum+1).isReg())
1069+
llvm_unreachable("llvm does not support 'Q', 'R', and 'H' modifiers!");
10861070
return true;
1087-
++OpNum;
1071+
}
10881072
}
10891073

10901074
printOperand(MI, OpNum, O);

llvm/test/CodeGen/ARM/inlineasm.ll

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,6 @@ define i32 @test1(i32 %tmp54) {
66
}
77

88
define void @test2() {
9-
%tmp1 = call i64 asm "ldmia $1!, {$0, ${0:H}}", "=r,=*r,1"( i32** null, i32* null ) ; <i64> [#uses=2]
10-
%tmp2 = lshr i64 %tmp1, 32 ; <i64> [#uses=1]
11-
%tmp3 = trunc i64 %tmp2 to i32 ; <i32> [#uses=1]
12-
%tmp4 = call i32 asm "pkhbt $0, $1, $2, lsl #16", "=r,r,r"( i32 0, i32 %tmp3 ) ; <i32> [#uses=0]
13-
ret void
14-
}
15-
16-
define void @test3() {
179
tail call void asm sideeffect "/* number: ${0:c} */", "i"( i32 1 )
1810
ret void
1911
}

0 commit comments

Comments
 (0)