[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / speculative-hardening-brcond.mir
bloba158f2466dce7d6843662a51c266cfa1e1befc93
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64-unknown-unknown -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s
4 # Verify that when a function has the speculative_load_hardening attribute we
5 # never produce a CB(N)Z or TB(N)Z.
8 --- |
9     define void @no_tbnz() speculative_load_hardening { ret void }
10     define void @no_cbz() speculative_load_hardening { ret void }
11     define void @fp() speculative_load_hardening { ret void }
12 ...
14 ---
15 name:            no_tbnz
16 legalized:       true
17 regBankSelected: true
18 body:             |
19   ; CHECK-LABEL: name: no_tbnz
20   ; CHECK: bb.0:
21   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
22   ; CHECK:   %reg:gpr32 = COPY $w0
23   ; CHECK:   [[ANDSWri:%[0-9]+]]:gpr32 = ANDSWri %reg, 1, implicit-def $nzcv
24   ; CHECK:   Bcc 1, %bb.1, implicit $nzcv
25   ; CHECK:   B %bb.0
26   ; CHECK: bb.1:
27   ; CHECK:   RET_ReallyLR
28   bb.0:
29     liveins: $w0
30     successors: %bb.0, %bb.1
31     %reg:gpr(s32) = COPY $w0
32     G_BRCOND %reg, %bb.1
33     G_BR %bb.0
34   bb.1:
35     RET_ReallyLR
36 ...
37 ---
38 name:            no_cbz
39 legalized:       true
40 regBankSelected: true
41 body:             |
42   ; CHECK-LABEL: name: no_cbz
43   ; CHECK: bb.0:
44   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
45   ; CHECK:   %reg:gpr32sp = COPY $w0
46   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri %reg, 0, 0, implicit-def $nzcv
47   ; CHECK:   Bcc 0, %bb.1, implicit $nzcv
48   ; CHECK:   B %bb.0
49   ; CHECK: bb.1:
50   ; CHECK:   RET_ReallyLR
51   bb.0:
52     liveins: $w0
53     successors: %bb.0, %bb.1
54     %reg:gpr(s32) = COPY $w0
55     %zero:gpr(s32) = G_CONSTANT i32 0
56     %cmp:gpr(s32) = G_ICMP intpred(eq), %reg, %zero
57     G_BRCOND %cmp, %bb.1
58     G_BR %bb.0
59   bb.1:
60     RET_ReallyLR
61 ...
62 ---
63 name:            fp
64 legalized:       true
65 regBankSelected: true
66 body:             |
67   ; CHECK-LABEL: name: fp
68   ; CHECK: bb.0:
69   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
70   ; CHECK:   %reg0:fpr32 = COPY $s0
71   ; CHECK:   %reg1:fpr32 = COPY $s1
72   ; CHECK:   FCMPSrr %reg0, %reg1, implicit-def $nzcv
73   ; CHECK:   Bcc 0, %bb.1, implicit $nzcv
74   ; CHECK:   B %bb.0
75   ; CHECK: bb.1:
76   ; CHECK:   RET_ReallyLR
77   bb.0:
78     liveins: $s0, $s1
79     successors: %bb.0, %bb.1
80     %reg0:fpr(s32) = COPY $s0
81     %reg1:fpr(s32) = COPY $s1
82     %cmp:gpr(s32) = G_FCMP floatpred(oeq), %reg0, %reg1
83     G_BRCOND %cmp, %bb.1
84     G_BR %bb.0
85   bb.1:
86     RET_ReallyLR