xref: /aosp_15_r20/external/swiftshader/src/Reactor/x86.hpp (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1*03ce13f7SAndroid Build Coastguard Worker // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2*03ce13f7SAndroid Build Coastguard Worker //
3*03ce13f7SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*03ce13f7SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*03ce13f7SAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*03ce13f7SAndroid Build Coastguard Worker //
7*03ce13f7SAndroid Build Coastguard Worker //    http://www.apache.org/licenses/LICENSE-2.0
8*03ce13f7SAndroid Build Coastguard Worker //
9*03ce13f7SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*03ce13f7SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*03ce13f7SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*03ce13f7SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*03ce13f7SAndroid Build Coastguard Worker // limitations under the License.
14*03ce13f7SAndroid Build Coastguard Worker 
15*03ce13f7SAndroid Build Coastguard Worker #ifndef sw_x86_hpp
16*03ce13f7SAndroid Build Coastguard Worker #define sw_x86_hpp
17*03ce13f7SAndroid Build Coastguard Worker 
18*03ce13f7SAndroid Build Coastguard Worker #include "Reactor.hpp"
19*03ce13f7SAndroid Build Coastguard Worker 
20*03ce13f7SAndroid Build Coastguard Worker namespace rr {
21*03ce13f7SAndroid Build Coastguard Worker namespace x86 {
22*03ce13f7SAndroid Build Coastguard Worker 
23*03ce13f7SAndroid Build Coastguard Worker RValue<Int> cvtss2si(RValue<Float> val);
24*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> cvtps2dq(RValue<Float4> val);
25*03ce13f7SAndroid Build Coastguard Worker 
26*03ce13f7SAndroid Build Coastguard Worker RValue<Float> rcpss(RValue<Float> val);
27*03ce13f7SAndroid Build Coastguard Worker RValue<Float> sqrtss(RValue<Float> val);
28*03ce13f7SAndroid Build Coastguard Worker RValue<Float> rsqrtss(RValue<Float> val);
29*03ce13f7SAndroid Build Coastguard Worker 
30*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> rcpps(RValue<Float4> val);
31*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> sqrtps(RValue<Float4> val);
32*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> rsqrtps(RValue<Float4> val);
33*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> maxps(RValue<Float4> x, RValue<Float4> y);
34*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> minps(RValue<Float4> x, RValue<Float4> y);
35*03ce13f7SAndroid Build Coastguard Worker 
36*03ce13f7SAndroid Build Coastguard Worker RValue<Float> roundss(RValue<Float> val, unsigned char imm);
37*03ce13f7SAndroid Build Coastguard Worker RValue<Float> floorss(RValue<Float> val);
38*03ce13f7SAndroid Build Coastguard Worker RValue<Float> ceilss(RValue<Float> val);
39*03ce13f7SAndroid Build Coastguard Worker 
40*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> roundps(RValue<Float4> val, unsigned char imm);
41*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> floorps(RValue<Float4> val);
42*03ce13f7SAndroid Build Coastguard Worker RValue<Float4> ceilps(RValue<Float4> val);
43*03ce13f7SAndroid Build Coastguard Worker 
44*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> paddsw(RValue<Short4> x, RValue<Short4> y);
45*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> psubsw(RValue<Short4> x, RValue<Short4> y);
46*03ce13f7SAndroid Build Coastguard Worker RValue<UShort4> paddusw(RValue<UShort4> x, RValue<UShort4> y);
47*03ce13f7SAndroid Build Coastguard Worker RValue<UShort4> psubusw(RValue<UShort4> x, RValue<UShort4> y);
48*03ce13f7SAndroid Build Coastguard Worker RValue<SByte8> paddsb(RValue<SByte8> x, RValue<SByte8> y);
49*03ce13f7SAndroid Build Coastguard Worker RValue<SByte8> psubsb(RValue<SByte8> x, RValue<SByte8> y);
50*03ce13f7SAndroid Build Coastguard Worker RValue<Byte8> paddusb(RValue<Byte8> x, RValue<Byte8> y);
51*03ce13f7SAndroid Build Coastguard Worker RValue<Byte8> psubusb(RValue<Byte8> x, RValue<Byte8> y);
52*03ce13f7SAndroid Build Coastguard Worker 
53*03ce13f7SAndroid Build Coastguard Worker RValue<UShort4> pavgw(RValue<UShort4> x, RValue<UShort4> y);
54*03ce13f7SAndroid Build Coastguard Worker 
55*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> pmaxsw(RValue<Short4> x, RValue<Short4> y);
56*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> pminsw(RValue<Short4> x, RValue<Short4> y);
57*03ce13f7SAndroid Build Coastguard Worker 
58*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> pcmpgtw(RValue<Short4> x, RValue<Short4> y);
59*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> pcmpeqw(RValue<Short4> x, RValue<Short4> y);
60*03ce13f7SAndroid Build Coastguard Worker RValue<Byte8> pcmpgtb(RValue<SByte8> x, RValue<SByte8> y);
61*03ce13f7SAndroid Build Coastguard Worker RValue<Byte8> pcmpeqb(RValue<Byte8> x, RValue<Byte8> y);
62*03ce13f7SAndroid Build Coastguard Worker 
63*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> packssdw(RValue<Int2> x, RValue<Int2> y);
64*03ce13f7SAndroid Build Coastguard Worker RValue<Short8> packssdw(RValue<Int4> x, RValue<Int4> y);
65*03ce13f7SAndroid Build Coastguard Worker RValue<SByte8> packsswb(RValue<Short4> x, RValue<Short4> y);
66*03ce13f7SAndroid Build Coastguard Worker RValue<Byte8> packuswb(RValue<Short4> x, RValue<Short4> y);
67*03ce13f7SAndroid Build Coastguard Worker 
68*03ce13f7SAndroid Build Coastguard Worker RValue<UShort8> packusdw(RValue<Int4> x, RValue<Int4> y);
69*03ce13f7SAndroid Build Coastguard Worker 
70*03ce13f7SAndroid Build Coastguard Worker RValue<UShort4> psrlw(RValue<UShort4> x, unsigned char y);
71*03ce13f7SAndroid Build Coastguard Worker RValue<UShort8> psrlw(RValue<UShort8> x, unsigned char y);
72*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> psraw(RValue<Short4> x, unsigned char y);
73*03ce13f7SAndroid Build Coastguard Worker RValue<Short8> psraw(RValue<Short8> x, unsigned char y);
74*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> psllw(RValue<Short4> x, unsigned char y);
75*03ce13f7SAndroid Build Coastguard Worker RValue<Short8> psllw(RValue<Short8> x, unsigned char y);
76*03ce13f7SAndroid Build Coastguard Worker RValue<Int2> pslld(RValue<Int2> x, unsigned char y);
77*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> pslld(RValue<Int4> x, unsigned char y);
78*03ce13f7SAndroid Build Coastguard Worker RValue<Int2> psrad(RValue<Int2> x, unsigned char y);
79*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> psrad(RValue<Int4> x, unsigned char y);
80*03ce13f7SAndroid Build Coastguard Worker RValue<UInt2> psrld(RValue<UInt2> x, unsigned char y);
81*03ce13f7SAndroid Build Coastguard Worker RValue<UInt4> psrld(RValue<UInt4> x, unsigned char y);
82*03ce13f7SAndroid Build Coastguard Worker 
83*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> pmaxsd(RValue<Int4> x, RValue<Int4> y);
84*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> pminsd(RValue<Int4> x, RValue<Int4> y);
85*03ce13f7SAndroid Build Coastguard Worker RValue<UInt4> pmaxud(RValue<UInt4> x, RValue<UInt4> y);
86*03ce13f7SAndroid Build Coastguard Worker RValue<UInt4> pminud(RValue<UInt4> x, RValue<UInt4> y);
87*03ce13f7SAndroid Build Coastguard Worker 
88*03ce13f7SAndroid Build Coastguard Worker RValue<Short4> pmulhw(RValue<Short4> x, RValue<Short4> y);
89*03ce13f7SAndroid Build Coastguard Worker RValue<UShort4> pmulhuw(RValue<UShort4> x, RValue<UShort4> y);
90*03ce13f7SAndroid Build Coastguard Worker RValue<Int2> pmaddwd(RValue<Short4> x, RValue<Short4> y);
91*03ce13f7SAndroid Build Coastguard Worker 
92*03ce13f7SAndroid Build Coastguard Worker RValue<Short8> pmulhw(RValue<Short8> x, RValue<Short8> y);
93*03ce13f7SAndroid Build Coastguard Worker RValue<UShort8> pmulhuw(RValue<UShort8> x, RValue<UShort8> y);
94*03ce13f7SAndroid Build Coastguard Worker RValue<Int4> pmaddwd(RValue<Short8> x, RValue<Short8> y);
95*03ce13f7SAndroid Build Coastguard Worker 
96*03ce13f7SAndroid Build Coastguard Worker RValue<Int> movmskps(RValue<Float4> x);
97*03ce13f7SAndroid Build Coastguard Worker RValue<Int> pmovmskb(RValue<Byte8> x);
98*03ce13f7SAndroid Build Coastguard Worker 
99*03ce13f7SAndroid Build Coastguard Worker }  // namespace x86
100*03ce13f7SAndroid Build Coastguard Worker }  // namespace rr
101*03ce13f7SAndroid Build Coastguard Worker 
102*03ce13f7SAndroid Build Coastguard Worker #endif  // rr_x86_hpp