[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / speculative-hardening-brcond.mir
blob7a688d1325f4048dd5b1e9a357c5a174779d4507
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64-unknown-unknown -run-pass=instruction-select -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 0, %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     %cond:gpr(s1) = G_TRUNC %reg
33     G_BRCOND %cond(s1), %bb.1
34     G_BR %bb.0
35   bb.1:
36     RET_ReallyLR
37 ...
38 ---
39 name:            no_cbz
40 legalized:       true
41 regBankSelected: true
42 body:             |
43   ; CHECK-LABEL: name: no_cbz
44   ; CHECK: bb.0:
45   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
46   ; CHECK:   %reg:gpr32sp = COPY $w0
47   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri %reg, 0, 0, implicit-def $nzcv
48   ; CHECK:   Bcc 0, %bb.1, implicit $nzcv
49   ; CHECK:   B %bb.0
50   ; CHECK: bb.1:
51   ; CHECK:   RET_ReallyLR
52   bb.0:
53     liveins: $w0
54     successors: %bb.0, %bb.1
55     %reg:gpr(s32) = COPY $w0
56     %zero:gpr(s32) = G_CONSTANT i32 0
57     %cmp:gpr(s32) = G_ICMP intpred(eq), %reg, %zero
58     %cond:gpr(s1) = G_TRUNC %cmp(s32)
59     G_BRCOND %cond(s1), %bb.1
60     G_BR %bb.0
61   bb.1:
62     RET_ReallyLR
63 ...
64 ---
65 name:            fp
66 legalized:       true
67 regBankSelected: true
68 body:             |
69   ; CHECK-LABEL: name: fp
70   ; CHECK: bb.0:
71   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
72   ; CHECK:   %reg0:fpr32 = COPY $s0
73   ; CHECK:   %reg1:fpr32 = COPY $s1
74   ; CHECK:   FCMPSrr %reg0, %reg1, implicit-def $nzcv
75   ; CHECK:   Bcc 0, %bb.1, implicit $nzcv
76   ; CHECK:   B %bb.0
77   ; CHECK: bb.1:
78   ; CHECK:   RET_ReallyLR
79   bb.0:
80     liveins: $s0, $s1
81     successors: %bb.0, %bb.1
82     %reg0:fpr(s32) = COPY $s0
83     %reg1:fpr(s32) = COPY $s1
84     %cmp:gpr(s32) = G_FCMP floatpred(oeq), %reg0, %reg1
85     %cond:gpr(s1) = G_TRUNC %cmp(s32)
86     G_BRCOND %cond(s1), %bb.1
87     G_BR %bb.0
88   bb.1:
89     RET_ReallyLR