GIComplexOperandMatcher<s32, (ops i32imm, i32imm), "selectArithImmed">,
GIComplexPatternEquiv<addsub_shifted_imm32>;
+def gi_addsub_shifted_imm64 :
+ GIComplexOperandMatcher<s64, (ops i32imm, i32imm), "selectArithImmed">,
+ GIComplexPatternEquiv<addsub_shifted_imm64>;
+
class neg_addsub_shifted_imm<ValueType Ty>
: Operand<Ty>, ComplexPattern<Ty, 2, "SelectNegArithImmed", [imm]> {
let PrintMethod = "printAddSubImm";
define void @add_s64_gpr() { ret void }
define void @add_imm_s32_gpr() { ret void }
+ define void @add_imm_s64_gpr() { ret void }
+
define void @add_imm_s32_gpr_bb() { ret void }
define void @sub_s32_gpr() { ret void }
...
---
+# CHECK-LABEL: name: add_imm_s64_gpr
+name: add_imm_s64_gpr
+legalized: true
+regBankSelected: true
+
+# CHECK: registers:
+# CHECK-NEXT: - { id: 0, class: gpr64sp }
+# CHECK-NEXT: - { id: 1, class: gpr64 }
+# CHECK-NEXT: - { id: 2, class: gpr64sp }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: gpr }
+ - { id: 2, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %x0
+# CHECK: %2 = ADDXri %0, 1, 0
+body: |
+ bb.0:
+ liveins: %x0, %w1
+
+ %0(s64) = COPY %x0
+ %1(s64) = G_CONSTANT 1
+ %2(s64) = G_ADD %0, %1
+...
+
+---
# CHECK-LABEL: name: add_imm_s32_gpr_bb
name: add_imm_s32_gpr_bb
legalized: true