1
- ; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s
1
+ ; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s --check-prefixes CHECK,SLOW
2
2
; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -fast-isel -fast-isel-abort=1 | FileCheck %s
3
3
4
4
; Test that wasm select instruction is selected from LLVM select instruction.
@@ -16,6 +16,16 @@ define i32 @select_i32_bool(i1 zeroext %a, i32 %b, i32 %c) {
16
16
ret i32 %cond
17
17
}
18
18
19
+ ; CHECK-LABEL: select_i32_bool_nozext:
20
+ ; CHECK-NEXT: .param i32, i32, i32{{$}}
21
+ ; CHECK-NEXT: .result i32{{$}}
22
+ ; SLOW-NEXT: i32.select $push0=, $1, $2, $0{{$}}
23
+ ; SLOW-NEXT: return $pop0{{$}}
24
+ define i32 @select_i32_bool_nozext (i1 %a , i32 %b , i32 %c ) {
25
+ %cond = select i1 %a , i32 %b , i32 %c
26
+ ret i32 %cond
27
+ }
28
+
19
29
; CHECK-LABEL: select_i32_eq:
20
30
; CHECK-NEXT: .param i32, i32, i32{{$}}
21
31
; CHECK-NEXT: .result i32{{$}}
@@ -48,6 +58,16 @@ define i64 @select_i64_bool(i1 zeroext %a, i64 %b, i64 %c) {
48
58
ret i64 %cond
49
59
}
50
60
61
+ ; CHECK-LABEL: select_i64_bool_nozext:
62
+ ; CHECK-NEXT: .param i32, i64, i64{{$}}
63
+ ; CHECK-NEXT: .result i64{{$}}
64
+ ; SLOW-NEXT: i64.select $push0=, $1, $2, $0{{$}}
65
+ ; SLOW-NEXT: return $pop0{{$}}
66
+ define i64 @select_i64_bool_nozext (i1 %a , i64 %b , i64 %c ) {
67
+ %cond = select i1 %a , i64 %b , i64 %c
68
+ ret i64 %cond
69
+ }
70
+
51
71
; CHECK-LABEL: select_i64_eq:
52
72
; CHECK-NEXT: .param i32, i64, i64{{$}}
53
73
; CHECK-NEXT: .result i64{{$}}
@@ -80,6 +100,16 @@ define float @select_f32_bool(i1 zeroext %a, float %b, float %c) {
80
100
ret float %cond
81
101
}
82
102
103
+ ; CHECK-LABEL: select_f32_bool_nozext:
104
+ ; CHECK-NEXT: .param i32, f32, f32{{$}}
105
+ ; CHECK-NEXT: .result f32{{$}}
106
+ ; SLOW-NEXT: f32.select $push0=, $1, $2, $0{{$}}
107
+ ; SLOW-NEXT: return $pop0{{$}}
108
+ define float @select_f32_bool_nozext (i1 %a , float %b , float %c ) {
109
+ %cond = select i1 %a , float %b , float %c
110
+ ret float %cond
111
+ }
112
+
83
113
; CHECK-LABEL: select_f32_eq:
84
114
; CHECK-NEXT: .param i32, f32, f32{{$}}
85
115
; CHECK-NEXT: .result f32{{$}}
@@ -112,6 +142,16 @@ define double @select_f64_bool(i1 zeroext %a, double %b, double %c) {
112
142
ret double %cond
113
143
}
114
144
145
+ ; CHECK-LABEL: select_f64_bool_nozext:
146
+ ; CHECK-NEXT: .param i32, f64, f64{{$}}
147
+ ; CHECK-NEXT: .result f64{{$}}
148
+ ; SLOW-NEXT: f64.select $push0=, $1, $2, $0{{$}}
149
+ ; SLOW-NEXT: return $pop0{{$}}
150
+ define double @select_f64_bool_nozext (i1 %a , double %b , double %c ) {
151
+ %cond = select i1 %a , double %b , double %c
152
+ ret double %cond
153
+ }
154
+
115
155
; CHECK-LABEL: select_f64_eq:
116
156
; CHECK-NEXT: .param i32, f64, f64{{$}}
117
157
; CHECK-NEXT: .result f64{{$}}
0 commit comments