[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-amdgcn.ldexp.mir
blob6c4b5d596706acb69d8c923773d6ea95ebeb2f30
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o -  | FileCheck -check-prefix=GCN %s
4 ---
5 name: ldexp_s32_vsv
6 legalized: true
7 regBankSelected: true
8 tracksRegLiveness: true
10 body: |
11   bb.0:
12     liveins: $sgpr0, $vgpr0
13     ; GCN-LABEL: name: ldexp_s32_vsv
14     ; GCN: liveins: $sgpr0, $vgpr0
15     ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
16     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
17     ; GCN: [[V_LDEXP_F32_e64_:%[0-9]+]]:vgpr_32 = V_LDEXP_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
18     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F32_e64_]]
19     %0:sgpr(s32) = COPY $sgpr0
20     %1:vgpr(s32) = COPY $vgpr0
21     %2:vgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
22     S_ENDPGM 0, implicit %2
23 ...
25 ---
26 name: ldexp_s32_vvs
27 legalized: true
28 regBankSelected: true
29 tracksRegLiveness: true
31 body: |
32   bb.0:
33     liveins: $sgpr0, $vgpr0
34     ; GCN-LABEL: name: ldexp_s32_vvs
35     ; GCN: liveins: $sgpr0, $vgpr0
36     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
37     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
38     ; GCN: [[V_LDEXP_F32_e64_:%[0-9]+]]:vgpr_32 = V_LDEXP_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
39     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F32_e64_]]
40     %0:vgpr(s32) = COPY $vgpr0
41     %1:sgpr(s32) = COPY $sgpr0
42     %2:vgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
43     S_ENDPGM 0, implicit %2
44 ...
46 ---
47 name: ldexp_s32_vvv
48 legalized: true
49 regBankSelected: true
50 tracksRegLiveness: true
52 body: |
53   bb.0:
54     liveins: $vgpr0, $vgpr1
55     ; GCN-LABEL: name: ldexp_s32_vvv
56     ; GCN: liveins: $vgpr0, $vgpr1
57     ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
58     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
59     ; GCN: [[V_LDEXP_F32_e64_:%[0-9]+]]:vgpr_32 = V_LDEXP_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
60     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F32_e64_]]
61     %0:vgpr(s32) = COPY $vgpr0
62     %1:vgpr(s32) = COPY $vgpr1
63     %2:vgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
64     S_ENDPGM 0, implicit %2
65 ...
67 ---
68 name: ldexp_s64_vsv
69 legalized: true
70 regBankSelected: true
71 tracksRegLiveness: true
73 body: |
74   bb.0:
75     liveins: $sgpr0_sgpr1, $vgpr0
76     ; GCN-LABEL: name: ldexp_s64_vsv
77     ; GCN: liveins: $sgpr0_sgpr1, $vgpr0
78     ; GCN: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1
79     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
80     ; GCN: [[V_LDEXP_F64_:%[0-9]+]]:vreg_64 = V_LDEXP_F64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
81     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F64_]]
82     %0:sgpr(s64) = COPY $sgpr0_sgpr1
83     %1:vgpr(s32) = COPY $vgpr0
84     %2:vgpr(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
85     S_ENDPGM 0, implicit %2
86 ...
88 ---
89 name: ldexp_s64_vvs
90 legalized: true
91 regBankSelected: true
92 tracksRegLiveness: true
94 body: |
95   bb.0:
96     liveins: $sgpr0_sgpr1, $vgpr0
97     ; GCN-LABEL: name: ldexp_s64_vvs
98     ; GCN: liveins: $sgpr0_sgpr1, $vgpr0
99     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
100     ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
101     ; GCN: [[V_LDEXP_F64_:%[0-9]+]]:vreg_64 = V_LDEXP_F64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
102     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F64_]]
103     %0:vgpr(s64) = COPY $vgpr0_vgpr1
104     %1:sgpr(s32) = COPY $sgpr0
105     %2:vgpr(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
106     S_ENDPGM 0, implicit %2
110 name: ldexp_s64_vvv
111 legalized: true
112 regBankSelected: true
113 tracksRegLiveness: true
115 body: |
116   bb.0:
117     liveins: $vgpr0_vgpr1, $vgpr2
118     ; GCN-LABEL: name: ldexp_s64_vvv
119     ; GCN: liveins: $vgpr0_vgpr1, $vgpr2
120     ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
121     ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
122     ; GCN: [[V_LDEXP_F64_:%[0-9]+]]:vreg_64 = V_LDEXP_F64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec
123     ; GCN: S_ENDPGM 0, implicit [[V_LDEXP_F64_]]
124     %0:vgpr(s64) = COPY $vgpr0_vgpr1
125     %1:vgpr(s32) = COPY $vgpr2
126     %2:vgpr(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), %0, %1
127     S_ENDPGM 0, implicit %2