]> granicus.if.org Git - llvm/commitdiff
[globalisel] Add support for intrinsic_void
authorDaniel Sanders <daniel_l_sanders@apple.com>
Tue, 19 Sep 2017 13:23:01 +0000 (13:23 +0000)
committerDaniel Sanders <daniel_l_sanders@apple.com>
Tue, 19 Sep 2017 13:23:01 +0000 (13:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313629 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/GlobalISel/SelectionDAGCompat.td
test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-hint.mir [new file with mode: 0644]

index 212f2e3b269c15428c0dd7e7163eb1fb4362cd73..a770951e7265f51dde511337d007c661c3a186a9 100644 (file)
@@ -66,6 +66,8 @@ def : GINodeEquiv<G_FPOW, fpow>;
 def : GINodeEquiv<G_FEXP2, fexp2>;
 def : GINodeEquiv<G_FLOG2, flog2>;
 def : GINodeEquiv<G_INTRINSIC, intrinsic_wo_chain>;
+// ISD::INTRINSIC_VOID can also be handled with G_INTRINSIC_W_SIDE_EFFECTS.
+def : GINodeEquiv<G_INTRINSIC_W_SIDE_EFFECTS, intrinsic_void>;
 def : GINodeEquiv<G_INTRINSIC_W_SIDE_EFFECTS, intrinsic_w_chain>;
 def : GINodeEquiv<G_BR, br>;
 
diff --git a/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-hint.mir b/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-hint.mir
new file mode 100644 (file)
index 0000000..61eff7c
--- /dev/null
@@ -0,0 +1,29 @@
+# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
+
+--- |
+  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+
+  define void @hint() { ret void }
+...
+
+---
+# Check that we select a 'hint' intrinsic into a HINT instruction.
+# CHECK-LABEL: name: hint
+name:            hint
+legalized:       true
+regBankSelected: true
+
+# CHECK:      registers:
+# CHECK-NEXT:  - { id: 0, class: gpr, preferred-register: '' }
+registers:
+  - { id: 0, class: gpr }
+
+# CHECK:  body:
+# CHECK:    HINT 1
+body:             |
+  bb.0:
+    liveins: %w0
+
+    %0(s32) = G_CONSTANT i32 1
+    G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.hint), %0
+...