if (Constraint.size() == 1) {
switch (Constraint[0]) {
case 'r':
- return std::make_pair(0U, &WebAssembly::I32RegClass);
+ if (VT == MVT::i32)
+ return std::make_pair(0U, &WebAssembly::I32RegClass);
+ if (VT == MVT::i64)
+ return std::make_pair(0U, &WebAssembly::I64RegClass);
+ break;
default:
break;
}
ret i32 %0
}
+; CHECK-LABEL: foo_i64:
+; CHECK-NEXT: .param i64{{$}}
+; CHECK-NEXT: .result i64{{$}}
+; CHECK-NEXT: #APP{{$}}
+; CHECK-NEXT: # $0 = aaa($0){{$}}
+; CHECK-NEXT: #NO_APP{{$}}
+; CHECK-NEXT: return $0{{$}}
+define i64 @foo_i64(i64 %r) {
+entry:
+ %0 = tail call i64 asm sideeffect "# $0 = aaa($1)", "=r,r"(i64 %r) #0, !srcloc !0
+ ret i64 %0
+}
+
attributes #0 = { nounwind }
!0 = !{i32 47}