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