IntrinsicsMips.td 92 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769
  1. //===- IntrinsicsMips.td - Defines Mips intrinsics ---------*- tablegen -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file defines all of the MIPS-specific intrinsics.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. def mips_v2q15_ty: LLVMType<v2i16>;
  14. def mips_v4q7_ty: LLVMType<v4i8>;
  15. def mips_q31_ty: LLVMType<i32>;
  16. let TargetPrefix = "mips" in { // All intrinsics start with "llvm.mips.".
  17. //===----------------------------------------------------------------------===//
  18. // MIPS DSP Rev 1
  19. //===----------------------------------------------------------------------===//
  20. // Addition/subtraction
  21. def int_mips_addu_qb : GCCBuiltin<"__builtin_mips_addu_qb">,
  22. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
  23. [Commutative, IntrNoMem]>;
  24. def int_mips_addu_s_qb : GCCBuiltin<"__builtin_mips_addu_s_qb">,
  25. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
  26. [Commutative, IntrNoMem]>;
  27. def int_mips_subu_qb : GCCBuiltin<"__builtin_mips_subu_qb">,
  28. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
  29. def int_mips_subu_s_qb : GCCBuiltin<"__builtin_mips_subu_s_qb">,
  30. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
  31. def int_mips_addq_ph : GCCBuiltin<"__builtin_mips_addq_ph">,
  32. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
  33. [Commutative, IntrNoMem]>;
  34. def int_mips_addq_s_ph : GCCBuiltin<"__builtin_mips_addq_s_ph">,
  35. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
  36. [Commutative, IntrNoMem]>;
  37. def int_mips_subq_ph : GCCBuiltin<"__builtin_mips_subq_ph">,
  38. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  39. def int_mips_subq_s_ph : GCCBuiltin<"__builtin_mips_subq_s_ph">,
  40. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  41. def int_mips_madd: GCCBuiltin<"__builtin_mips_madd">,
  42. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
  43. [IntrNoMem, Commutative]>;
  44. def int_mips_maddu: GCCBuiltin<"__builtin_mips_maddu">,
  45. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
  46. [IntrNoMem, Commutative]>;
  47. def int_mips_msub: GCCBuiltin<"__builtin_mips_msub">,
  48. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
  49. [IntrNoMem]>;
  50. def int_mips_msubu: GCCBuiltin<"__builtin_mips_msubu">,
  51. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
  52. [IntrNoMem]>;
  53. def int_mips_addq_s_w: GCCBuiltin<"__builtin_mips_addq_s_w">,
  54. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
  55. def int_mips_subq_s_w: GCCBuiltin<"__builtin_mips_subq_s_w">,
  56. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], []>;
  57. def int_mips_addsc: GCCBuiltin<"__builtin_mips_addsc">,
  58. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
  59. def int_mips_addwc: GCCBuiltin<"__builtin_mips_addwc">,
  60. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
  61. def int_mips_modsub: GCCBuiltin<"__builtin_mips_modsub">,
  62. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
  63. def int_mips_raddu_w_qb: GCCBuiltin<"__builtin_mips_raddu_w_qb">,
  64. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  65. //===----------------------------------------------------------------------===//
  66. // Absolute value
  67. def int_mips_absq_s_ph: GCCBuiltin<"__builtin_mips_absq_s_ph">,
  68. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty], []>;
  69. def int_mips_absq_s_w: GCCBuiltin<"__builtin_mips_absq_s_w">,
  70. Intrinsic<[mips_q31_ty], [mips_q31_ty], []>;
  71. //===----------------------------------------------------------------------===//
  72. // Precision reduce/expand
  73. def int_mips_precrq_qb_ph: GCCBuiltin<"__builtin_mips_precrq_qb_ph">,
  74. Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  75. def int_mips_precrqu_s_qb_ph: GCCBuiltin<"__builtin_mips_precrqu_s_qb_ph">,
  76. Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
  77. def int_mips_precrq_ph_w: GCCBuiltin<"__builtin_mips_precrq_ph_w">,
  78. Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
  79. def int_mips_precrq_rs_ph_w: GCCBuiltin<"__builtin_mips_precrq_rs_ph_w">,
  80. Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], []>;
  81. def int_mips_preceq_w_phl: GCCBuiltin<"__builtin_mips_preceq_w_phl">,
  82. Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
  83. def int_mips_preceq_w_phr: GCCBuiltin<"__builtin_mips_preceq_w_phr">,
  84. Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
  85. def int_mips_precequ_ph_qbl: GCCBuiltin<"__builtin_mips_precequ_ph_qbl">,
  86. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  87. def int_mips_precequ_ph_qbr: GCCBuiltin<"__builtin_mips_precequ_ph_qbr">,
  88. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  89. def int_mips_precequ_ph_qbla: GCCBuiltin<"__builtin_mips_precequ_ph_qbla">,
  90. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  91. def int_mips_precequ_ph_qbra: GCCBuiltin<"__builtin_mips_precequ_ph_qbra">,
  92. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  93. def int_mips_preceu_ph_qbl: GCCBuiltin<"__builtin_mips_preceu_ph_qbl">,
  94. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  95. def int_mips_preceu_ph_qbr: GCCBuiltin<"__builtin_mips_preceu_ph_qbr">,
  96. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  97. def int_mips_preceu_ph_qbla: GCCBuiltin<"__builtin_mips_preceu_ph_qbla">,
  98. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  99. def int_mips_preceu_ph_qbra: GCCBuiltin<"__builtin_mips_preceu_ph_qbra">,
  100. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
  101. //===----------------------------------------------------------------------===//
  102. // Shift
  103. def int_mips_shll_qb: GCCBuiltin<"__builtin_mips_shll_qb">,
  104. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], []>;
  105. def int_mips_shrl_qb: GCCBuiltin<"__builtin_mips_shrl_qb">,
  106. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
  107. def int_mips_shll_ph: GCCBuiltin<"__builtin_mips_shll_ph">,
  108. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
  109. def int_mips_shll_s_ph: GCCBuiltin<"__builtin_mips_shll_s_ph">,
  110. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
  111. def int_mips_shra_ph: GCCBuiltin<"__builtin_mips_shra_ph">,
  112. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
  113. def int_mips_shra_r_ph: GCCBuiltin<"__builtin_mips_shra_r_ph">,
  114. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
  115. def int_mips_shll_s_w: GCCBuiltin<"__builtin_mips_shll_s_w">,
  116. Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], []>;
  117. def int_mips_shra_r_w: GCCBuiltin<"__builtin_mips_shra_r_w">,
  118. Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], [IntrNoMem]>;
  119. def int_mips_shilo: GCCBuiltin<"__builtin_mips_shilo">,
  120. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>;
  121. //===----------------------------------------------------------------------===//
  122. // Multiplication
  123. def int_mips_muleu_s_ph_qbl: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbl">,
  124. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
  125. def int_mips_muleu_s_ph_qbr: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbr">,
  126. Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
  127. def int_mips_mulq_rs_ph: GCCBuiltin<"__builtin_mips_mulq_rs_ph">,
  128. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
  129. def int_mips_muleq_s_w_phl: GCCBuiltin<"__builtin_mips_muleq_s_w_phl">,
  130. Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
  131. def int_mips_muleq_s_w_phr: GCCBuiltin<"__builtin_mips_muleq_s_w_phr">,
  132. Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
  133. def int_mips_mulsaq_s_w_ph: GCCBuiltin<"__builtin_mips_mulsaq_s_w_ph">,
  134. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  135. def int_mips_maq_s_w_phl: GCCBuiltin<"__builtin_mips_maq_s_w_phl">,
  136. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  137. def int_mips_maq_s_w_phr: GCCBuiltin<"__builtin_mips_maq_s_w_phr">,
  138. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  139. def int_mips_maq_sa_w_phl: GCCBuiltin<"__builtin_mips_maq_sa_w_phl">,
  140. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  141. def int_mips_maq_sa_w_phr: GCCBuiltin<"__builtin_mips_maq_sa_w_phr">,
  142. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  143. def int_mips_mult: GCCBuiltin<"__builtin_mips_mult">,
  144. Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
  145. [IntrNoMem, Commutative]>;
  146. def int_mips_multu: GCCBuiltin<"__builtin_mips_multu">,
  147. Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
  148. [IntrNoMem, Commutative]>;
  149. //===----------------------------------------------------------------------===//
  150. // Dot product with accumulate/subtract
  151. def int_mips_dpau_h_qbl: GCCBuiltin<"__builtin_mips_dpau_h_qbl">,
  152. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
  153. [IntrNoMem]>;
  154. def int_mips_dpau_h_qbr: GCCBuiltin<"__builtin_mips_dpau_h_qbr">,
  155. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
  156. [IntrNoMem]>;
  157. def int_mips_dpsu_h_qbl: GCCBuiltin<"__builtin_mips_dpsu_h_qbl">,
  158. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
  159. [IntrNoMem]>;
  160. def int_mips_dpsu_h_qbr: GCCBuiltin<"__builtin_mips_dpsu_h_qbr">,
  161. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
  162. [IntrNoMem]>;
  163. def int_mips_dpaq_s_w_ph: GCCBuiltin<"__builtin_mips_dpaq_s_w_ph">,
  164. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  165. def int_mips_dpsq_s_w_ph: GCCBuiltin<"__builtin_mips_dpsq_s_w_ph">,
  166. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  167. def int_mips_dpaq_sa_l_w: GCCBuiltin<"__builtin_mips_dpaq_sa_l_w">,
  168. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
  169. def int_mips_dpsq_sa_l_w: GCCBuiltin<"__builtin_mips_dpsq_sa_l_w">,
  170. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
  171. //===----------------------------------------------------------------------===//
  172. // Comparison
  173. def int_mips_cmpu_eq_qb: GCCBuiltin<"__builtin_mips_cmpu_eq_qb">,
  174. Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
  175. def int_mips_cmpu_lt_qb: GCCBuiltin<"__builtin_mips_cmpu_lt_qb">,
  176. Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  177. def int_mips_cmpu_le_qb: GCCBuiltin<"__builtin_mips_cmpu_le_qb">,
  178. Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  179. def int_mips_cmpgu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgu_eq_qb">,
  180. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
  181. def int_mips_cmpgu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgu_lt_qb">,
  182. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  183. def int_mips_cmpgu_le_qb: GCCBuiltin<"__builtin_mips_cmpgu_le_qb">,
  184. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  185. def int_mips_cmp_eq_ph: GCCBuiltin<"__builtin_mips_cmp_eq_ph">,
  186. Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
  187. def int_mips_cmp_lt_ph: GCCBuiltin<"__builtin_mips_cmp_lt_ph">,
  188. Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
  189. def int_mips_cmp_le_ph: GCCBuiltin<"__builtin_mips_cmp_le_ph">,
  190. Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
  191. //===----------------------------------------------------------------------===//
  192. // Extracting
  193. def int_mips_extr_s_h: GCCBuiltin<"__builtin_mips_extr_s_h">,
  194. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  195. def int_mips_extr_w: GCCBuiltin<"__builtin_mips_extr_w">,
  196. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  197. def int_mips_extr_rs_w: GCCBuiltin<"__builtin_mips_extr_rs_w">,
  198. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  199. def int_mips_extr_r_w: GCCBuiltin<"__builtin_mips_extr_r_w">,
  200. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  201. def int_mips_extp: GCCBuiltin<"__builtin_mips_extp">,
  202. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  203. def int_mips_extpdp: GCCBuiltin<"__builtin_mips_extpdp">,
  204. Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  205. //===----------------------------------------------------------------------===//
  206. // Misc
  207. def int_mips_wrdsp: GCCBuiltin<"__builtin_mips_wrdsp">,
  208. Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], []>;
  209. def int_mips_rddsp: GCCBuiltin<"__builtin_mips_rddsp">,
  210. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrReadMem]>;
  211. def int_mips_insv: GCCBuiltin<"__builtin_mips_insv">,
  212. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrReadMem]>;
  213. def int_mips_bitrev: GCCBuiltin<"__builtin_mips_bitrev">,
  214. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
  215. def int_mips_packrl_ph: GCCBuiltin<"__builtin_mips_packrl_ph">,
  216. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  217. def int_mips_repl_qb: GCCBuiltin<"__builtin_mips_repl_qb">,
  218. Intrinsic<[llvm_v4i8_ty], [llvm_i32_ty], [IntrNoMem]>;
  219. def int_mips_repl_ph: GCCBuiltin<"__builtin_mips_repl_ph">,
  220. Intrinsic<[mips_v2q15_ty], [llvm_i32_ty], [IntrNoMem]>;
  221. def int_mips_pick_qb: GCCBuiltin<"__builtin_mips_pick_qb">,
  222. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrReadMem]>;
  223. def int_mips_pick_ph: GCCBuiltin<"__builtin_mips_pick_ph">,
  224. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrReadMem]>;
  225. def int_mips_mthlip: GCCBuiltin<"__builtin_mips_mthlip">,
  226. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], []>;
  227. def int_mips_bposge32: GCCBuiltin<"__builtin_mips_bposge32">,
  228. Intrinsic<[llvm_i32_ty], [], [IntrReadMem]>;
  229. def int_mips_lbux: GCCBuiltin<"__builtin_mips_lbux">,
  230. Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
  231. def int_mips_lhx: GCCBuiltin<"__builtin_mips_lhx">,
  232. Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
  233. def int_mips_lwx: GCCBuiltin<"__builtin_mips_lwx">,
  234. Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
  235. //===----------------------------------------------------------------------===//
  236. // MIPS DSP Rev 2
  237. def int_mips_absq_s_qb: GCCBuiltin<"__builtin_mips_absq_s_qb">,
  238. Intrinsic<[mips_v4q7_ty], [mips_v4q7_ty], []>;
  239. def int_mips_addqh_ph: GCCBuiltin<"__builtin_mips_addqh_ph">,
  240. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
  241. [IntrNoMem, Commutative]>;
  242. def int_mips_addqh_r_ph: GCCBuiltin<"__builtin_mips_addqh_r_ph">,
  243. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
  244. [IntrNoMem, Commutative]>;
  245. def int_mips_addqh_w: GCCBuiltin<"__builtin_mips_addqh_w">,
  246. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
  247. [IntrNoMem, Commutative]>;
  248. def int_mips_addqh_r_w: GCCBuiltin<"__builtin_mips_addqh_r_w">,
  249. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
  250. [IntrNoMem, Commutative]>;
  251. def int_mips_addu_ph: GCCBuiltin<"__builtin_mips_addu_ph">,
  252. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
  253. def int_mips_addu_s_ph: GCCBuiltin<"__builtin_mips_addu_s_ph">,
  254. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
  255. def int_mips_adduh_qb: GCCBuiltin<"__builtin_mips_adduh_qb">,
  256. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
  257. [IntrNoMem, Commutative]>;
  258. def int_mips_adduh_r_qb: GCCBuiltin<"__builtin_mips_adduh_r_qb">,
  259. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
  260. [IntrNoMem, Commutative]>;
  261. def int_mips_append: GCCBuiltin<"__builtin_mips_append">,
  262. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  263. [IntrNoMem]>;
  264. def int_mips_balign: GCCBuiltin<"__builtin_mips_balign">,
  265. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  266. [IntrNoMem]>;
  267. def int_mips_cmpgdu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgdu_eq_qb">,
  268. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
  269. def int_mips_cmpgdu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgdu_lt_qb">,
  270. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  271. def int_mips_cmpgdu_le_qb: GCCBuiltin<"__builtin_mips_cmpgdu_le_qb">,
  272. Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
  273. def int_mips_dpa_w_ph: GCCBuiltin<"__builtin_mips_dpa_w_ph">,
  274. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
  275. [IntrNoMem]>;
  276. def int_mips_dps_w_ph: GCCBuiltin<"__builtin_mips_dps_w_ph">,
  277. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
  278. [IntrNoMem]>;
  279. def int_mips_dpaqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_s_w_ph">,
  280. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  281. def int_mips_dpaqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_sa_w_ph">,
  282. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  283. def int_mips_dpax_w_ph: GCCBuiltin<"__builtin_mips_dpax_w_ph">,
  284. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
  285. [IntrNoMem]>;
  286. def int_mips_dpsx_w_ph: GCCBuiltin<"__builtin_mips_dpsx_w_ph">,
  287. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
  288. [IntrNoMem]>;
  289. def int_mips_dpsqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_s_w_ph">,
  290. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  291. def int_mips_dpsqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_sa_w_ph">,
  292. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
  293. def int_mips_mul_ph: GCCBuiltin<"__builtin_mips_mul_ph">,
  294. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
  295. def int_mips_mul_s_ph: GCCBuiltin<"__builtin_mips_mul_s_ph">,
  296. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
  297. def int_mips_mulq_rs_w: GCCBuiltin<"__builtin_mips_mulq_rs_w">,
  298. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
  299. def int_mips_mulq_s_ph: GCCBuiltin<"__builtin_mips_mulq_s_ph">,
  300. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
  301. def int_mips_mulq_s_w: GCCBuiltin<"__builtin_mips_mulq_s_w">,
  302. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
  303. def int_mips_mulsa_w_ph: GCCBuiltin<"__builtin_mips_mulsa_w_ph">,
  304. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
  305. [IntrNoMem]>;
  306. def int_mips_precr_qb_ph: GCCBuiltin<"__builtin_mips_precr_qb_ph">,
  307. Intrinsic<[llvm_v4i8_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
  308. def int_mips_precr_sra_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_ph_w">,
  309. Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  310. [IntrNoMem]>;
  311. def int_mips_precr_sra_r_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_r_ph_w">,
  312. Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  313. [IntrNoMem]>;
  314. def int_mips_prepend: GCCBuiltin<"__builtin_mips_prepend">,
  315. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  316. [IntrNoMem]>;
  317. def int_mips_shra_qb: GCCBuiltin<"__builtin_mips_shra_qb">,
  318. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
  319. def int_mips_shra_r_qb: GCCBuiltin<"__builtin_mips_shra_r_qb">,
  320. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
  321. def int_mips_shrl_ph: GCCBuiltin<"__builtin_mips_shrl_ph">,
  322. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_i32_ty], [IntrNoMem]>;
  323. def int_mips_subqh_ph: GCCBuiltin<"__builtin_mips_subqh_ph">,
  324. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  325. def int_mips_subqh_r_ph: GCCBuiltin<"__builtin_mips_subqh_r_ph">,
  326. Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
  327. def int_mips_subqh_w: GCCBuiltin<"__builtin_mips_subqh_w">,
  328. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
  329. def int_mips_subqh_r_w: GCCBuiltin<"__builtin_mips_subqh_r_w">,
  330. Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
  331. def int_mips_subu_ph: GCCBuiltin<"__builtin_mips_subu_ph">,
  332. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
  333. def int_mips_subu_s_ph: GCCBuiltin<"__builtin_mips_subu_s_ph">,
  334. Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
  335. def int_mips_subuh_qb: GCCBuiltin<"__builtin_mips_subuh_qb">,
  336. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
  337. def int_mips_subuh_r_qb: GCCBuiltin<"__builtin_mips_subuh_r_qb">,
  338. Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
  339. //===----------------------------------------------------------------------===//
  340. // MIPS MSA
  341. //===----------------------------------------------------------------------===//
  342. // Addition/subtraction
  343. def int_mips_add_a_b : GCCBuiltin<"__builtin_msa_add_a_b">,
  344. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  345. [Commutative, IntrNoMem]>;
  346. def int_mips_add_a_h : GCCBuiltin<"__builtin_msa_add_a_h">,
  347. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  348. [Commutative, IntrNoMem]>;
  349. def int_mips_add_a_w : GCCBuiltin<"__builtin_msa_add_a_w">,
  350. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  351. [Commutative, IntrNoMem]>;
  352. def int_mips_add_a_d : GCCBuiltin<"__builtin_msa_add_a_d">,
  353. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  354. [Commutative, IntrNoMem]>;
  355. def int_mips_adds_a_b : GCCBuiltin<"__builtin_msa_adds_a_b">,
  356. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  357. [Commutative, IntrNoMem]>;
  358. def int_mips_adds_a_h : GCCBuiltin<"__builtin_msa_adds_a_h">,
  359. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  360. [Commutative, IntrNoMem]>;
  361. def int_mips_adds_a_w : GCCBuiltin<"__builtin_msa_adds_a_w">,
  362. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  363. [Commutative, IntrNoMem]>;
  364. def int_mips_adds_a_d : GCCBuiltin<"__builtin_msa_adds_a_d">,
  365. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  366. [Commutative, IntrNoMem]>;
  367. def int_mips_adds_s_b : GCCBuiltin<"__builtin_msa_adds_s_b">,
  368. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  369. [Commutative, IntrNoMem]>;
  370. def int_mips_adds_s_h : GCCBuiltin<"__builtin_msa_adds_s_h">,
  371. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  372. [Commutative, IntrNoMem]>;
  373. def int_mips_adds_s_w : GCCBuiltin<"__builtin_msa_adds_s_w">,
  374. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  375. [Commutative, IntrNoMem]>;
  376. def int_mips_adds_s_d : GCCBuiltin<"__builtin_msa_adds_s_d">,
  377. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  378. [Commutative, IntrNoMem]>;
  379. def int_mips_adds_u_b : GCCBuiltin<"__builtin_msa_adds_u_b">,
  380. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  381. [Commutative, IntrNoMem]>;
  382. def int_mips_adds_u_h : GCCBuiltin<"__builtin_msa_adds_u_h">,
  383. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  384. [Commutative, IntrNoMem]>;
  385. def int_mips_adds_u_w : GCCBuiltin<"__builtin_msa_adds_u_w">,
  386. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  387. [Commutative, IntrNoMem]>;
  388. def int_mips_adds_u_d : GCCBuiltin<"__builtin_msa_adds_u_d">,
  389. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  390. [Commutative, IntrNoMem]>;
  391. def int_mips_addv_b : GCCBuiltin<"__builtin_msa_addv_b">,
  392. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  393. [Commutative, IntrNoMem]>;
  394. def int_mips_addv_h : GCCBuiltin<"__builtin_msa_addv_h">,
  395. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  396. [Commutative, IntrNoMem]>;
  397. def int_mips_addv_w : GCCBuiltin<"__builtin_msa_addv_w">,
  398. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  399. [Commutative, IntrNoMem]>;
  400. def int_mips_addv_d : GCCBuiltin<"__builtin_msa_addv_d">,
  401. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  402. [Commutative, IntrNoMem]>;
  403. def int_mips_addvi_b : GCCBuiltin<"__builtin_msa_addvi_b">,
  404. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty],
  405. [Commutative, IntrNoMem]>;
  406. def int_mips_addvi_h : GCCBuiltin<"__builtin_msa_addvi_h">,
  407. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty],
  408. [Commutative, IntrNoMem]>;
  409. def int_mips_addvi_w : GCCBuiltin<"__builtin_msa_addvi_w">,
  410. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty],
  411. [Commutative, IntrNoMem]>;
  412. def int_mips_addvi_d : GCCBuiltin<"__builtin_msa_addvi_d">,
  413. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty],
  414. [Commutative, IntrNoMem]>;
  415. def int_mips_and_v : GCCBuiltin<"__builtin_msa_and_v">,
  416. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  417. def int_mips_andi_b : GCCBuiltin<"__builtin_msa_andi_b">,
  418. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  419. def int_mips_asub_s_b : GCCBuiltin<"__builtin_msa_asub_s_b">,
  420. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  421. def int_mips_asub_s_h : GCCBuiltin<"__builtin_msa_asub_s_h">,
  422. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  423. def int_mips_asub_s_w : GCCBuiltin<"__builtin_msa_asub_s_w">,
  424. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  425. def int_mips_asub_s_d : GCCBuiltin<"__builtin_msa_asub_s_d">,
  426. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  427. def int_mips_asub_u_b : GCCBuiltin<"__builtin_msa_asub_u_b">,
  428. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  429. def int_mips_asub_u_h : GCCBuiltin<"__builtin_msa_asub_u_h">,
  430. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  431. def int_mips_asub_u_w : GCCBuiltin<"__builtin_msa_asub_u_w">,
  432. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  433. def int_mips_asub_u_d : GCCBuiltin<"__builtin_msa_asub_u_d">,
  434. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  435. def int_mips_ave_s_b : GCCBuiltin<"__builtin_msa_ave_s_b">,
  436. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  437. [Commutative, IntrNoMem]>;
  438. def int_mips_ave_s_h : GCCBuiltin<"__builtin_msa_ave_s_h">,
  439. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  440. [Commutative, IntrNoMem]>;
  441. def int_mips_ave_s_w : GCCBuiltin<"__builtin_msa_ave_s_w">,
  442. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  443. [Commutative, IntrNoMem]>;
  444. def int_mips_ave_s_d : GCCBuiltin<"__builtin_msa_ave_s_d">,
  445. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  446. [Commutative, IntrNoMem]>;
  447. def int_mips_ave_u_b : GCCBuiltin<"__builtin_msa_ave_u_b">,
  448. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  449. [Commutative, IntrNoMem]>;
  450. def int_mips_ave_u_h : GCCBuiltin<"__builtin_msa_ave_u_h">,
  451. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  452. [Commutative, IntrNoMem]>;
  453. def int_mips_ave_u_w : GCCBuiltin<"__builtin_msa_ave_u_w">,
  454. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  455. [Commutative, IntrNoMem]>;
  456. def int_mips_ave_u_d : GCCBuiltin<"__builtin_msa_ave_u_d">,
  457. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  458. [Commutative, IntrNoMem]>;
  459. def int_mips_aver_s_b : GCCBuiltin<"__builtin_msa_aver_s_b">,
  460. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  461. [Commutative, IntrNoMem]>;
  462. def int_mips_aver_s_h : GCCBuiltin<"__builtin_msa_aver_s_h">,
  463. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  464. [Commutative, IntrNoMem]>;
  465. def int_mips_aver_s_w : GCCBuiltin<"__builtin_msa_aver_s_w">,
  466. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  467. [Commutative, IntrNoMem]>;
  468. def int_mips_aver_s_d : GCCBuiltin<"__builtin_msa_aver_s_d">,
  469. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  470. [Commutative, IntrNoMem]>;
  471. def int_mips_aver_u_b : GCCBuiltin<"__builtin_msa_aver_u_b">,
  472. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty],
  473. [Commutative, IntrNoMem]>;
  474. def int_mips_aver_u_h : GCCBuiltin<"__builtin_msa_aver_u_h">,
  475. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty],
  476. [Commutative, IntrNoMem]>;
  477. def int_mips_aver_u_w : GCCBuiltin<"__builtin_msa_aver_u_w">,
  478. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty],
  479. [Commutative, IntrNoMem]>;
  480. def int_mips_aver_u_d : GCCBuiltin<"__builtin_msa_aver_u_d">,
  481. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty],
  482. [Commutative, IntrNoMem]>;
  483. def int_mips_bclr_b : GCCBuiltin<"__builtin_msa_bclr_b">,
  484. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  485. def int_mips_bclr_h : GCCBuiltin<"__builtin_msa_bclr_h">,
  486. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  487. def int_mips_bclr_w : GCCBuiltin<"__builtin_msa_bclr_w">,
  488. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  489. def int_mips_bclr_d : GCCBuiltin<"__builtin_msa_bclr_d">,
  490. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  491. def int_mips_bclri_b : GCCBuiltin<"__builtin_msa_bclri_b">,
  492. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  493. def int_mips_bclri_h : GCCBuiltin<"__builtin_msa_bclri_h">,
  494. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  495. def int_mips_bclri_w : GCCBuiltin<"__builtin_msa_bclri_w">,
  496. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  497. def int_mips_bclri_d : GCCBuiltin<"__builtin_msa_bclri_d">,
  498. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  499. def int_mips_binsl_b : GCCBuiltin<"__builtin_msa_binsl_b">,
  500. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  501. [IntrNoMem]>;
  502. def int_mips_binsl_h : GCCBuiltin<"__builtin_msa_binsl_h">,
  503. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  504. [IntrNoMem]>;
  505. def int_mips_binsl_w : GCCBuiltin<"__builtin_msa_binsl_w">,
  506. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  507. [IntrNoMem]>;
  508. def int_mips_binsl_d : GCCBuiltin<"__builtin_msa_binsl_d">,
  509. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
  510. [IntrNoMem]>;
  511. def int_mips_binsli_b : GCCBuiltin<"__builtin_msa_binsli_b">,
  512. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  513. [IntrNoMem]>;
  514. def int_mips_binsli_h : GCCBuiltin<"__builtin_msa_binsli_h">,
  515. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
  516. [IntrNoMem]>;
  517. def int_mips_binsli_w : GCCBuiltin<"__builtin_msa_binsli_w">,
  518. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
  519. [IntrNoMem]>;
  520. def int_mips_binsli_d : GCCBuiltin<"__builtin_msa_binsli_d">,
  521. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
  522. [IntrNoMem]>;
  523. def int_mips_binsr_b : GCCBuiltin<"__builtin_msa_binsr_b">,
  524. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  525. [IntrNoMem]>;
  526. def int_mips_binsr_h : GCCBuiltin<"__builtin_msa_binsr_h">,
  527. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  528. [IntrNoMem]>;
  529. def int_mips_binsr_w : GCCBuiltin<"__builtin_msa_binsr_w">,
  530. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  531. [IntrNoMem]>;
  532. def int_mips_binsr_d : GCCBuiltin<"__builtin_msa_binsr_d">,
  533. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
  534. [IntrNoMem]>;
  535. def int_mips_binsri_b : GCCBuiltin<"__builtin_msa_binsri_b">,
  536. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  537. [IntrNoMem]>;
  538. def int_mips_binsri_h : GCCBuiltin<"__builtin_msa_binsri_h">,
  539. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
  540. [IntrNoMem]>;
  541. def int_mips_binsri_w : GCCBuiltin<"__builtin_msa_binsri_w">,
  542. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
  543. [IntrNoMem]>;
  544. def int_mips_binsri_d : GCCBuiltin<"__builtin_msa_binsri_d">,
  545. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
  546. [IntrNoMem]>;
  547. def int_mips_bmnz_v : GCCBuiltin<"__builtin_msa_bmnz_v">,
  548. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  549. [IntrNoMem]>;
  550. def int_mips_bmnzi_b : GCCBuiltin<"__builtin_msa_bmnzi_b">,
  551. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  552. [IntrNoMem]>;
  553. def int_mips_bmz_v : GCCBuiltin<"__builtin_msa_bmz_v">,
  554. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  555. [IntrNoMem]>;
  556. def int_mips_bmzi_b : GCCBuiltin<"__builtin_msa_bmzi_b">,
  557. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  558. [IntrNoMem]>;
  559. def int_mips_bneg_b : GCCBuiltin<"__builtin_msa_bneg_b">,
  560. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  561. def int_mips_bneg_h : GCCBuiltin<"__builtin_msa_bneg_h">,
  562. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  563. def int_mips_bneg_w : GCCBuiltin<"__builtin_msa_bneg_w">,
  564. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  565. def int_mips_bneg_d : GCCBuiltin<"__builtin_msa_bneg_d">,
  566. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  567. def int_mips_bnegi_b : GCCBuiltin<"__builtin_msa_bnegi_b">,
  568. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  569. def int_mips_bnegi_h : GCCBuiltin<"__builtin_msa_bnegi_h">,
  570. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  571. def int_mips_bnegi_w : GCCBuiltin<"__builtin_msa_bnegi_w">,
  572. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  573. def int_mips_bnegi_d : GCCBuiltin<"__builtin_msa_bnegi_d">,
  574. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  575. def int_mips_bnz_b : GCCBuiltin<"__builtin_msa_bnz_b">,
  576. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  577. def int_mips_bnz_h : GCCBuiltin<"__builtin_msa_bnz_h">,
  578. Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  579. def int_mips_bnz_w : GCCBuiltin<"__builtin_msa_bnz_w">,
  580. Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  581. def int_mips_bnz_d : GCCBuiltin<"__builtin_msa_bnz_d">,
  582. Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  583. def int_mips_bnz_v : GCCBuiltin<"__builtin_msa_bnz_v">,
  584. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  585. def int_mips_bsel_v : GCCBuiltin<"__builtin_msa_bsel_v">,
  586. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  587. [IntrNoMem]>;
  588. def int_mips_bseli_b : GCCBuiltin<"__builtin_msa_bseli_b">,
  589. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  590. [IntrNoMem]>;
  591. def int_mips_bset_b : GCCBuiltin<"__builtin_msa_bset_b">,
  592. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  593. def int_mips_bset_h : GCCBuiltin<"__builtin_msa_bset_h">,
  594. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  595. def int_mips_bset_w : GCCBuiltin<"__builtin_msa_bset_w">,
  596. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  597. def int_mips_bset_d : GCCBuiltin<"__builtin_msa_bset_d">,
  598. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  599. def int_mips_bseti_b : GCCBuiltin<"__builtin_msa_bseti_b">,
  600. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  601. def int_mips_bseti_h : GCCBuiltin<"__builtin_msa_bseti_h">,
  602. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  603. def int_mips_bseti_w : GCCBuiltin<"__builtin_msa_bseti_w">,
  604. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  605. def int_mips_bseti_d : GCCBuiltin<"__builtin_msa_bseti_d">,
  606. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  607. def int_mips_bz_b : GCCBuiltin<"__builtin_msa_bz_b">,
  608. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  609. def int_mips_bz_h : GCCBuiltin<"__builtin_msa_bz_h">,
  610. Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  611. def int_mips_bz_w : GCCBuiltin<"__builtin_msa_bz_w">,
  612. Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  613. def int_mips_bz_d : GCCBuiltin<"__builtin_msa_bz_d">,
  614. Intrinsic<[llvm_i32_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  615. def int_mips_bz_v : GCCBuiltin<"__builtin_msa_bz_v">,
  616. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  617. def int_mips_ceq_b : GCCBuiltin<"__builtin_msa_ceq_b">,
  618. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  619. def int_mips_ceq_h : GCCBuiltin<"__builtin_msa_ceq_h">,
  620. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  621. def int_mips_ceq_w : GCCBuiltin<"__builtin_msa_ceq_w">,
  622. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  623. def int_mips_ceq_d : GCCBuiltin<"__builtin_msa_ceq_d">,
  624. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  625. def int_mips_ceqi_b : GCCBuiltin<"__builtin_msa_ceqi_b">,
  626. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  627. def int_mips_ceqi_h : GCCBuiltin<"__builtin_msa_ceqi_h">,
  628. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  629. def int_mips_ceqi_w : GCCBuiltin<"__builtin_msa_ceqi_w">,
  630. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  631. def int_mips_ceqi_d : GCCBuiltin<"__builtin_msa_ceqi_d">,
  632. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  633. def int_mips_cfcmsa : GCCBuiltin<"__builtin_msa_cfcmsa">,
  634. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], []>;
  635. def int_mips_cle_s_b : GCCBuiltin<"__builtin_msa_cle_s_b">,
  636. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  637. def int_mips_cle_s_h : GCCBuiltin<"__builtin_msa_cle_s_h">,
  638. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  639. def int_mips_cle_s_w : GCCBuiltin<"__builtin_msa_cle_s_w">,
  640. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  641. def int_mips_cle_s_d : GCCBuiltin<"__builtin_msa_cle_s_d">,
  642. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  643. def int_mips_cle_u_b : GCCBuiltin<"__builtin_msa_cle_u_b">,
  644. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  645. def int_mips_cle_u_h : GCCBuiltin<"__builtin_msa_cle_u_h">,
  646. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  647. def int_mips_cle_u_w : GCCBuiltin<"__builtin_msa_cle_u_w">,
  648. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  649. def int_mips_cle_u_d : GCCBuiltin<"__builtin_msa_cle_u_d">,
  650. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  651. def int_mips_clei_s_b : GCCBuiltin<"__builtin_msa_clei_s_b">,
  652. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  653. def int_mips_clei_s_h : GCCBuiltin<"__builtin_msa_clei_s_h">,
  654. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  655. def int_mips_clei_s_w : GCCBuiltin<"__builtin_msa_clei_s_w">,
  656. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  657. def int_mips_clei_s_d : GCCBuiltin<"__builtin_msa_clei_s_d">,
  658. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  659. def int_mips_clei_u_b : GCCBuiltin<"__builtin_msa_clei_u_b">,
  660. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  661. def int_mips_clei_u_h : GCCBuiltin<"__builtin_msa_clei_u_h">,
  662. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  663. def int_mips_clei_u_w : GCCBuiltin<"__builtin_msa_clei_u_w">,
  664. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  665. def int_mips_clei_u_d : GCCBuiltin<"__builtin_msa_clei_u_d">,
  666. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  667. def int_mips_clt_s_b : GCCBuiltin<"__builtin_msa_clt_s_b">,
  668. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  669. def int_mips_clt_s_h : GCCBuiltin<"__builtin_msa_clt_s_h">,
  670. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  671. def int_mips_clt_s_w : GCCBuiltin<"__builtin_msa_clt_s_w">,
  672. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  673. def int_mips_clt_s_d : GCCBuiltin<"__builtin_msa_clt_s_d">,
  674. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  675. def int_mips_clt_u_b : GCCBuiltin<"__builtin_msa_clt_u_b">,
  676. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  677. def int_mips_clt_u_h : GCCBuiltin<"__builtin_msa_clt_u_h">,
  678. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  679. def int_mips_clt_u_w : GCCBuiltin<"__builtin_msa_clt_u_w">,
  680. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  681. def int_mips_clt_u_d : GCCBuiltin<"__builtin_msa_clt_u_d">,
  682. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  683. def int_mips_clti_s_b : GCCBuiltin<"__builtin_msa_clti_s_b">,
  684. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  685. def int_mips_clti_s_h : GCCBuiltin<"__builtin_msa_clti_s_h">,
  686. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  687. def int_mips_clti_s_w : GCCBuiltin<"__builtin_msa_clti_s_w">,
  688. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  689. def int_mips_clti_s_d : GCCBuiltin<"__builtin_msa_clti_s_d">,
  690. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  691. def int_mips_clti_u_b : GCCBuiltin<"__builtin_msa_clti_u_b">,
  692. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  693. def int_mips_clti_u_h : GCCBuiltin<"__builtin_msa_clti_u_h">,
  694. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  695. def int_mips_clti_u_w : GCCBuiltin<"__builtin_msa_clti_u_w">,
  696. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  697. def int_mips_clti_u_d : GCCBuiltin<"__builtin_msa_clti_u_d">,
  698. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  699. def int_mips_copy_s_b : GCCBuiltin<"__builtin_msa_copy_s_b">,
  700. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  701. def int_mips_copy_s_h : GCCBuiltin<"__builtin_msa_copy_s_h">,
  702. Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  703. def int_mips_copy_s_w : GCCBuiltin<"__builtin_msa_copy_s_w">,
  704. Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  705. def int_mips_copy_s_d : GCCBuiltin<"__builtin_msa_copy_s_d">,
  706. Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  707. def int_mips_copy_u_b : GCCBuiltin<"__builtin_msa_copy_u_b">,
  708. Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  709. def int_mips_copy_u_h : GCCBuiltin<"__builtin_msa_copy_u_h">,
  710. Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  711. def int_mips_copy_u_w : GCCBuiltin<"__builtin_msa_copy_u_w">,
  712. Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  713. def int_mips_copy_u_d : GCCBuiltin<"__builtin_msa_copy_u_d">,
  714. Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  715. def int_mips_ctcmsa : GCCBuiltin<"__builtin_msa_ctcmsa">,
  716. Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], []>;
  717. def int_mips_div_s_b : GCCBuiltin<"__builtin_msa_div_s_b">,
  718. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  719. def int_mips_div_s_h : GCCBuiltin<"__builtin_msa_div_s_h">,
  720. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  721. def int_mips_div_s_w : GCCBuiltin<"__builtin_msa_div_s_w">,
  722. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  723. def int_mips_div_s_d : GCCBuiltin<"__builtin_msa_div_s_d">,
  724. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  725. def int_mips_div_u_b : GCCBuiltin<"__builtin_msa_div_u_b">,
  726. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  727. def int_mips_div_u_h : GCCBuiltin<"__builtin_msa_div_u_h">,
  728. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  729. def int_mips_div_u_w : GCCBuiltin<"__builtin_msa_div_u_w">,
  730. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  731. def int_mips_div_u_d : GCCBuiltin<"__builtin_msa_div_u_d">,
  732. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  733. // This instruction is part of the MSA spec but it does not share the
  734. // __builtin_msa prefix because it operates on GP registers.
  735. def int_mips_dlsa : GCCBuiltin<"__builtin_mips_dlsa">,
  736. Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty],
  737. [IntrNoMem]>;
  738. def int_mips_dotp_s_h : GCCBuiltin<"__builtin_msa_dotp_s_h">,
  739. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  740. def int_mips_dotp_s_w : GCCBuiltin<"__builtin_msa_dotp_s_w">,
  741. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  742. def int_mips_dotp_s_d : GCCBuiltin<"__builtin_msa_dotp_s_d">,
  743. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  744. def int_mips_dotp_u_h : GCCBuiltin<"__builtin_msa_dotp_u_h">,
  745. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  746. def int_mips_dotp_u_w : GCCBuiltin<"__builtin_msa_dotp_u_w">,
  747. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  748. def int_mips_dotp_u_d : GCCBuiltin<"__builtin_msa_dotp_u_d">,
  749. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  750. def int_mips_dpadd_s_h : GCCBuiltin<"__builtin_msa_dpadd_s_h">,
  751. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  752. [IntrNoMem]>;
  753. def int_mips_dpadd_s_w : GCCBuiltin<"__builtin_msa_dpadd_s_w">,
  754. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  755. [IntrNoMem]>;
  756. def int_mips_dpadd_s_d : GCCBuiltin<"__builtin_msa_dpadd_s_d">,
  757. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  758. [IntrNoMem]>;
  759. def int_mips_dpadd_u_h : GCCBuiltin<"__builtin_msa_dpadd_u_h">,
  760. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  761. [IntrNoMem]>;
  762. def int_mips_dpadd_u_w : GCCBuiltin<"__builtin_msa_dpadd_u_w">,
  763. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  764. [IntrNoMem]>;
  765. def int_mips_dpadd_u_d : GCCBuiltin<"__builtin_msa_dpadd_u_d">,
  766. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  767. [IntrNoMem]>;
  768. def int_mips_dpsub_s_h : GCCBuiltin<"__builtin_msa_dpsub_s_h">,
  769. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  770. [IntrNoMem]>;
  771. def int_mips_dpsub_s_w : GCCBuiltin<"__builtin_msa_dpsub_s_w">,
  772. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  773. [IntrNoMem]>;
  774. def int_mips_dpsub_s_d : GCCBuiltin<"__builtin_msa_dpsub_s_d">,
  775. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  776. [IntrNoMem]>;
  777. def int_mips_dpsub_u_h : GCCBuiltin<"__builtin_msa_dpsub_u_h">,
  778. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  779. [IntrNoMem]>;
  780. def int_mips_dpsub_u_w : GCCBuiltin<"__builtin_msa_dpsub_u_w">,
  781. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  782. [IntrNoMem]>;
  783. def int_mips_dpsub_u_d : GCCBuiltin<"__builtin_msa_dpsub_u_d">,
  784. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  785. [IntrNoMem]>;
  786. def int_mips_fadd_w : GCCBuiltin<"__builtin_msa_fadd_w">,
  787. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  788. def int_mips_fadd_d : GCCBuiltin<"__builtin_msa_fadd_d">,
  789. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  790. def int_mips_fcaf_w : GCCBuiltin<"__builtin_msa_fcaf_w">,
  791. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  792. def int_mips_fcaf_d : GCCBuiltin<"__builtin_msa_fcaf_d">,
  793. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  794. def int_mips_fceq_w : GCCBuiltin<"__builtin_msa_fceq_w">,
  795. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  796. def int_mips_fceq_d : GCCBuiltin<"__builtin_msa_fceq_d">,
  797. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  798. def int_mips_fcle_w : GCCBuiltin<"__builtin_msa_fcle_w">,
  799. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  800. def int_mips_fcle_d : GCCBuiltin<"__builtin_msa_fcle_d">,
  801. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  802. def int_mips_fclt_w : GCCBuiltin<"__builtin_msa_fclt_w">,
  803. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  804. def int_mips_fclt_d : GCCBuiltin<"__builtin_msa_fclt_d">,
  805. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  806. def int_mips_fclass_w : GCCBuiltin<"__builtin_msa_fclass_w">,
  807. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  808. def int_mips_fclass_d : GCCBuiltin<"__builtin_msa_fclass_d">,
  809. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  810. def int_mips_fcne_w : GCCBuiltin<"__builtin_msa_fcne_w">,
  811. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  812. def int_mips_fcne_d : GCCBuiltin<"__builtin_msa_fcne_d">,
  813. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  814. def int_mips_fcor_w : GCCBuiltin<"__builtin_msa_fcor_w">,
  815. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  816. def int_mips_fcor_d : GCCBuiltin<"__builtin_msa_fcor_d">,
  817. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  818. def int_mips_fcueq_w : GCCBuiltin<"__builtin_msa_fcueq_w">,
  819. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  820. def int_mips_fcueq_d : GCCBuiltin<"__builtin_msa_fcueq_d">,
  821. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  822. def int_mips_fcule_w : GCCBuiltin<"__builtin_msa_fcule_w">,
  823. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  824. def int_mips_fcule_d : GCCBuiltin<"__builtin_msa_fcule_d">,
  825. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  826. def int_mips_fcult_w : GCCBuiltin<"__builtin_msa_fcult_w">,
  827. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  828. def int_mips_fcult_d : GCCBuiltin<"__builtin_msa_fcult_d">,
  829. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  830. def int_mips_fcun_w : GCCBuiltin<"__builtin_msa_fcun_w">,
  831. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  832. def int_mips_fcun_d : GCCBuiltin<"__builtin_msa_fcun_d">,
  833. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  834. def int_mips_fcune_w : GCCBuiltin<"__builtin_msa_fcune_w">,
  835. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  836. def int_mips_fcune_d : GCCBuiltin<"__builtin_msa_fcune_d">,
  837. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  838. def int_mips_fdiv_w : GCCBuiltin<"__builtin_msa_fdiv_w">,
  839. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  840. def int_mips_fdiv_d : GCCBuiltin<"__builtin_msa_fdiv_d">,
  841. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  842. def int_mips_fexdo_h : GCCBuiltin<"__builtin_msa_fexdo_h">,
  843. Intrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  844. def int_mips_fexdo_w : GCCBuiltin<"__builtin_msa_fexdo_w">,
  845. Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  846. def int_mips_fexp2_w : GCCBuiltin<"__builtin_msa_fexp2_w">,
  847. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  848. def int_mips_fexp2_d : GCCBuiltin<"__builtin_msa_fexp2_d">,
  849. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  850. def int_mips_fexupl_w : GCCBuiltin<"__builtin_msa_fexupl_w">,
  851. Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], [IntrNoMem]>;
  852. def int_mips_fexupl_d : GCCBuiltin<"__builtin_msa_fexupl_d">,
  853. Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  854. def int_mips_fexupr_w : GCCBuiltin<"__builtin_msa_fexupr_w">,
  855. Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], [IntrNoMem]>;
  856. def int_mips_fexupr_d : GCCBuiltin<"__builtin_msa_fexupr_d">,
  857. Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  858. def int_mips_ffint_s_w : GCCBuiltin<"__builtin_msa_ffint_s_w">,
  859. Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  860. def int_mips_ffint_s_d : GCCBuiltin<"__builtin_msa_ffint_s_d">,
  861. Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  862. def int_mips_ffint_u_w : GCCBuiltin<"__builtin_msa_ffint_u_w">,
  863. Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  864. def int_mips_ffint_u_d : GCCBuiltin<"__builtin_msa_ffint_u_d">,
  865. Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  866. def int_mips_ffql_w : GCCBuiltin<"__builtin_msa_ffql_w">,
  867. Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  868. def int_mips_ffql_d : GCCBuiltin<"__builtin_msa_ffql_d">,
  869. Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  870. def int_mips_ffqr_w : GCCBuiltin<"__builtin_msa_ffqr_w">,
  871. Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  872. def int_mips_ffqr_d : GCCBuiltin<"__builtin_msa_ffqr_d">,
  873. Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  874. def int_mips_fill_b : GCCBuiltin<"__builtin_msa_fill_b">,
  875. Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem]>;
  876. def int_mips_fill_h : GCCBuiltin<"__builtin_msa_fill_h">,
  877. Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem]>;
  878. def int_mips_fill_w : GCCBuiltin<"__builtin_msa_fill_w">,
  879. Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem]>;
  880. def int_mips_fill_d : GCCBuiltin<"__builtin_msa_fill_d">,
  881. Intrinsic<[llvm_v2i64_ty], [llvm_i64_ty], [IntrNoMem]>;
  882. def int_mips_flog2_w : GCCBuiltin<"__builtin_msa_flog2_w">,
  883. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  884. def int_mips_flog2_d : GCCBuiltin<"__builtin_msa_flog2_d">,
  885. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  886. def int_mips_fmadd_w : GCCBuiltin<"__builtin_msa_fmadd_w">,
  887. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty],
  888. [IntrNoMem]>;
  889. def int_mips_fmadd_d : GCCBuiltin<"__builtin_msa_fmadd_d">,
  890. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty],
  891. [IntrNoMem]>;
  892. def int_mips_fmax_w : GCCBuiltin<"__builtin_msa_fmax_w">,
  893. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  894. def int_mips_fmax_d : GCCBuiltin<"__builtin_msa_fmax_d">,
  895. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  896. def int_mips_fmax_a_w : GCCBuiltin<"__builtin_msa_fmax_a_w">,
  897. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  898. def int_mips_fmax_a_d : GCCBuiltin<"__builtin_msa_fmax_a_d">,
  899. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  900. def int_mips_fmin_w : GCCBuiltin<"__builtin_msa_fmin_w">,
  901. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  902. def int_mips_fmin_d : GCCBuiltin<"__builtin_msa_fmin_d">,
  903. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  904. def int_mips_fmin_a_w : GCCBuiltin<"__builtin_msa_fmin_a_w">,
  905. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  906. def int_mips_fmin_a_d : GCCBuiltin<"__builtin_msa_fmin_a_d">,
  907. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  908. def int_mips_fmsub_w : GCCBuiltin<"__builtin_msa_fmsub_w">,
  909. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty],
  910. [IntrNoMem]>;
  911. def int_mips_fmsub_d : GCCBuiltin<"__builtin_msa_fmsub_d">,
  912. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty],
  913. [IntrNoMem]>;
  914. def int_mips_fmul_w : GCCBuiltin<"__builtin_msa_fmul_w">,
  915. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  916. def int_mips_fmul_d : GCCBuiltin<"__builtin_msa_fmul_d">,
  917. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  918. def int_mips_frint_w : GCCBuiltin<"__builtin_msa_frint_w">,
  919. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  920. def int_mips_frint_d : GCCBuiltin<"__builtin_msa_frint_d">,
  921. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  922. def int_mips_frcp_w : GCCBuiltin<"__builtin_msa_frcp_w">,
  923. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  924. def int_mips_frcp_d : GCCBuiltin<"__builtin_msa_frcp_d">,
  925. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  926. def int_mips_frsqrt_w : GCCBuiltin<"__builtin_msa_frsqrt_w">,
  927. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  928. def int_mips_frsqrt_d : GCCBuiltin<"__builtin_msa_frsqrt_d">,
  929. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  930. def int_mips_fsaf_w : GCCBuiltin<"__builtin_msa_fsaf_w">,
  931. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  932. def int_mips_fsaf_d : GCCBuiltin<"__builtin_msa_fsaf_d">,
  933. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  934. def int_mips_fseq_w : GCCBuiltin<"__builtin_msa_fseq_w">,
  935. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  936. def int_mips_fseq_d : GCCBuiltin<"__builtin_msa_fseq_d">,
  937. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  938. def int_mips_fsle_w : GCCBuiltin<"__builtin_msa_fsle_w">,
  939. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  940. def int_mips_fsle_d : GCCBuiltin<"__builtin_msa_fsle_d">,
  941. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  942. def int_mips_fslt_w : GCCBuiltin<"__builtin_msa_fslt_w">,
  943. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  944. def int_mips_fslt_d : GCCBuiltin<"__builtin_msa_fslt_d">,
  945. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  946. def int_mips_fsne_w : GCCBuiltin<"__builtin_msa_fsne_w">,
  947. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  948. def int_mips_fsne_d : GCCBuiltin<"__builtin_msa_fsne_d">,
  949. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  950. def int_mips_fsor_w : GCCBuiltin<"__builtin_msa_fsor_w">,
  951. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  952. def int_mips_fsor_d : GCCBuiltin<"__builtin_msa_fsor_d">,
  953. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  954. def int_mips_fsqrt_w : GCCBuiltin<"__builtin_msa_fsqrt_w">,
  955. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  956. def int_mips_fsqrt_d : GCCBuiltin<"__builtin_msa_fsqrt_d">,
  957. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  958. def int_mips_fsub_w : GCCBuiltin<"__builtin_msa_fsub_w">,
  959. Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  960. def int_mips_fsub_d : GCCBuiltin<"__builtin_msa_fsub_d">,
  961. Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  962. def int_mips_fsueq_w : GCCBuiltin<"__builtin_msa_fsueq_w">,
  963. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  964. def int_mips_fsueq_d : GCCBuiltin<"__builtin_msa_fsueq_d">,
  965. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  966. def int_mips_fsule_w : GCCBuiltin<"__builtin_msa_fsule_w">,
  967. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  968. def int_mips_fsule_d : GCCBuiltin<"__builtin_msa_fsule_d">,
  969. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  970. def int_mips_fsult_w : GCCBuiltin<"__builtin_msa_fsult_w">,
  971. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  972. def int_mips_fsult_d : GCCBuiltin<"__builtin_msa_fsult_d">,
  973. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  974. def int_mips_fsun_w : GCCBuiltin<"__builtin_msa_fsun_w">,
  975. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  976. def int_mips_fsun_d : GCCBuiltin<"__builtin_msa_fsun_d">,
  977. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  978. def int_mips_fsune_w : GCCBuiltin<"__builtin_msa_fsune_w">,
  979. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  980. def int_mips_fsune_d : GCCBuiltin<"__builtin_msa_fsune_d">,
  981. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  982. def int_mips_ftint_s_w : GCCBuiltin<"__builtin_msa_ftint_s_w">,
  983. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  984. def int_mips_ftint_s_d : GCCBuiltin<"__builtin_msa_ftint_s_d">,
  985. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  986. def int_mips_ftint_u_w : GCCBuiltin<"__builtin_msa_ftint_u_w">,
  987. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  988. def int_mips_ftint_u_d : GCCBuiltin<"__builtin_msa_ftint_u_d">,
  989. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  990. def int_mips_ftq_h : GCCBuiltin<"__builtin_msa_ftq_h">,
  991. Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]>;
  992. def int_mips_ftq_w : GCCBuiltin<"__builtin_msa_ftq_w">,
  993. Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], [IntrNoMem]>;
  994. def int_mips_ftrunc_s_w : GCCBuiltin<"__builtin_msa_ftrunc_s_w">,
  995. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  996. def int_mips_ftrunc_s_d : GCCBuiltin<"__builtin_msa_ftrunc_s_d">,
  997. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  998. def int_mips_ftrunc_u_w : GCCBuiltin<"__builtin_msa_ftrunc_u_w">,
  999. Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
  1000. def int_mips_ftrunc_u_d : GCCBuiltin<"__builtin_msa_ftrunc_u_d">,
  1001. Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], [IntrNoMem]>;
  1002. def int_mips_hadd_s_h : GCCBuiltin<"__builtin_msa_hadd_s_h">,
  1003. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1004. def int_mips_hadd_s_w : GCCBuiltin<"__builtin_msa_hadd_s_w">,
  1005. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1006. def int_mips_hadd_s_d : GCCBuiltin<"__builtin_msa_hadd_s_d">,
  1007. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1008. def int_mips_hadd_u_h : GCCBuiltin<"__builtin_msa_hadd_u_h">,
  1009. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1010. def int_mips_hadd_u_w : GCCBuiltin<"__builtin_msa_hadd_u_w">,
  1011. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1012. def int_mips_hadd_u_d : GCCBuiltin<"__builtin_msa_hadd_u_d">,
  1013. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1014. def int_mips_hsub_s_h : GCCBuiltin<"__builtin_msa_hsub_s_h">,
  1015. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1016. def int_mips_hsub_s_w : GCCBuiltin<"__builtin_msa_hsub_s_w">,
  1017. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1018. def int_mips_hsub_s_d : GCCBuiltin<"__builtin_msa_hsub_s_d">,
  1019. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1020. def int_mips_hsub_u_h : GCCBuiltin<"__builtin_msa_hsub_u_h">,
  1021. Intrinsic<[llvm_v8i16_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1022. def int_mips_hsub_u_w : GCCBuiltin<"__builtin_msa_hsub_u_w">,
  1023. Intrinsic<[llvm_v4i32_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1024. def int_mips_hsub_u_d : GCCBuiltin<"__builtin_msa_hsub_u_d">,
  1025. Intrinsic<[llvm_v2i64_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1026. def int_mips_ilvev_b : GCCBuiltin<"__builtin_msa_ilvev_b">,
  1027. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1028. def int_mips_ilvev_h : GCCBuiltin<"__builtin_msa_ilvev_h">,
  1029. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1030. def int_mips_ilvev_w : GCCBuiltin<"__builtin_msa_ilvev_w">,
  1031. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1032. def int_mips_ilvev_d : GCCBuiltin<"__builtin_msa_ilvev_d">,
  1033. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1034. def int_mips_ilvl_b : GCCBuiltin<"__builtin_msa_ilvl_b">,
  1035. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1036. def int_mips_ilvl_h : GCCBuiltin<"__builtin_msa_ilvl_h">,
  1037. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1038. def int_mips_ilvl_w : GCCBuiltin<"__builtin_msa_ilvl_w">,
  1039. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1040. def int_mips_ilvl_d : GCCBuiltin<"__builtin_msa_ilvl_d">,
  1041. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1042. def int_mips_ilvod_b : GCCBuiltin<"__builtin_msa_ilvod_b">,
  1043. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1044. def int_mips_ilvod_h : GCCBuiltin<"__builtin_msa_ilvod_h">,
  1045. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1046. def int_mips_ilvod_w : GCCBuiltin<"__builtin_msa_ilvod_w">,
  1047. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1048. def int_mips_ilvod_d : GCCBuiltin<"__builtin_msa_ilvod_d">,
  1049. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1050. def int_mips_ilvr_b : GCCBuiltin<"__builtin_msa_ilvr_b">,
  1051. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1052. def int_mips_ilvr_h : GCCBuiltin<"__builtin_msa_ilvr_h">,
  1053. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1054. def int_mips_ilvr_w : GCCBuiltin<"__builtin_msa_ilvr_w">,
  1055. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1056. def int_mips_ilvr_d : GCCBuiltin<"__builtin_msa_ilvr_d">,
  1057. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1058. def int_mips_insert_b : GCCBuiltin<"__builtin_msa_insert_b">,
  1059. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty, llvm_i32_ty],
  1060. [IntrNoMem]>;
  1061. def int_mips_insert_h : GCCBuiltin<"__builtin_msa_insert_h">,
  1062. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty, llvm_i32_ty],
  1063. [IntrNoMem]>;
  1064. def int_mips_insert_w : GCCBuiltin<"__builtin_msa_insert_w">,
  1065. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty, llvm_i32_ty],
  1066. [IntrNoMem]>;
  1067. def int_mips_insert_d : GCCBuiltin<"__builtin_msa_insert_d">,
  1068. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty, llvm_i64_ty],
  1069. [IntrNoMem]>;
  1070. def int_mips_insve_b : GCCBuiltin<"__builtin_msa_insve_b">,
  1071. Intrinsic<[llvm_v16i8_ty],
  1072. [llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty],
  1073. [IntrNoMem]>;
  1074. def int_mips_insve_h : GCCBuiltin<"__builtin_msa_insve_h">,
  1075. Intrinsic<[llvm_v8i16_ty],
  1076. [llvm_v8i16_ty, llvm_i32_ty, llvm_v8i16_ty],
  1077. [IntrNoMem]>;
  1078. def int_mips_insve_w : GCCBuiltin<"__builtin_msa_insve_w">,
  1079. Intrinsic<[llvm_v4i32_ty],
  1080. [llvm_v4i32_ty, llvm_i32_ty, llvm_v4i32_ty],
  1081. [IntrNoMem]>;
  1082. def int_mips_insve_d : GCCBuiltin<"__builtin_msa_insve_d">,
  1083. Intrinsic<[llvm_v2i64_ty],
  1084. [llvm_v2i64_ty, llvm_i32_ty, llvm_v2i64_ty],
  1085. [IntrNoMem]>;
  1086. def int_mips_ld_b : GCCBuiltin<"__builtin_msa_ld_b">,
  1087. Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty, llvm_i32_ty],
  1088. [IntrReadArgMem]>;
  1089. def int_mips_ld_h : GCCBuiltin<"__builtin_msa_ld_h">,
  1090. Intrinsic<[llvm_v8i16_ty], [llvm_ptr_ty, llvm_i32_ty],
  1091. [IntrReadArgMem]>;
  1092. def int_mips_ld_w : GCCBuiltin<"__builtin_msa_ld_w">,
  1093. Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty],
  1094. [IntrReadArgMem]>;
  1095. def int_mips_ld_d : GCCBuiltin<"__builtin_msa_ld_d">,
  1096. Intrinsic<[llvm_v2i64_ty], [llvm_ptr_ty, llvm_i32_ty],
  1097. [IntrReadArgMem]>;
  1098. def int_mips_ldi_b : GCCBuiltin<"__builtin_msa_ldi_b">,
  1099. Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem]>;
  1100. def int_mips_ldi_h : GCCBuiltin<"__builtin_msa_ldi_h">,
  1101. Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem]>;
  1102. def int_mips_ldi_w : GCCBuiltin<"__builtin_msa_ldi_w">,
  1103. Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem]>;
  1104. def int_mips_ldi_d : GCCBuiltin<"__builtin_msa_ldi_d">,
  1105. Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], [IntrNoMem]>;
  1106. // This instruction is part of the MSA spec but it does not share the
  1107. // __builtin_msa prefix because it operates on the GPR registers.
  1108. def int_mips_lsa : GCCBuiltin<"__builtin_mips_lsa">,
  1109. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1110. [IntrNoMem]>;
  1111. def int_mips_madd_q_h : GCCBuiltin<"__builtin_msa_madd_q_h">,
  1112. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1113. [IntrNoMem]>;
  1114. def int_mips_madd_q_w : GCCBuiltin<"__builtin_msa_madd_q_w">,
  1115. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1116. [IntrNoMem]>;
  1117. def int_mips_maddr_q_h : GCCBuiltin<"__builtin_msa_maddr_q_h">,
  1118. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1119. [IntrNoMem]>;
  1120. def int_mips_maddr_q_w : GCCBuiltin<"__builtin_msa_maddr_q_w">,
  1121. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1122. [IntrNoMem]>;
  1123. def int_mips_maddv_b : GCCBuiltin<"__builtin_msa_maddv_b">,
  1124. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  1125. [IntrNoMem]>;
  1126. def int_mips_maddv_h : GCCBuiltin<"__builtin_msa_maddv_h">,
  1127. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1128. [IntrNoMem]>;
  1129. def int_mips_maddv_w : GCCBuiltin<"__builtin_msa_maddv_w">,
  1130. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1131. [IntrNoMem]>;
  1132. def int_mips_maddv_d : GCCBuiltin<"__builtin_msa_maddv_d">,
  1133. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
  1134. [IntrNoMem]>;
  1135. def int_mips_max_a_b : GCCBuiltin<"__builtin_msa_max_a_b">,
  1136. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1137. def int_mips_max_a_h : GCCBuiltin<"__builtin_msa_max_a_h">,
  1138. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1139. def int_mips_max_a_w : GCCBuiltin<"__builtin_msa_max_a_w">,
  1140. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1141. def int_mips_max_a_d : GCCBuiltin<"__builtin_msa_max_a_d">,
  1142. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1143. def int_mips_max_s_b : GCCBuiltin<"__builtin_msa_max_s_b">,
  1144. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1145. def int_mips_max_s_h : GCCBuiltin<"__builtin_msa_max_s_h">,
  1146. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1147. def int_mips_max_s_w : GCCBuiltin<"__builtin_msa_max_s_w">,
  1148. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1149. def int_mips_max_s_d : GCCBuiltin<"__builtin_msa_max_s_d">,
  1150. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1151. def int_mips_max_u_b : GCCBuiltin<"__builtin_msa_max_u_b">,
  1152. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1153. def int_mips_max_u_h : GCCBuiltin<"__builtin_msa_max_u_h">,
  1154. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1155. def int_mips_max_u_w : GCCBuiltin<"__builtin_msa_max_u_w">,
  1156. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1157. def int_mips_max_u_d : GCCBuiltin<"__builtin_msa_max_u_d">,
  1158. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1159. def int_mips_maxi_s_b : GCCBuiltin<"__builtin_msa_maxi_s_b">,
  1160. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1161. def int_mips_maxi_s_h : GCCBuiltin<"__builtin_msa_maxi_s_h">,
  1162. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1163. def int_mips_maxi_s_w : GCCBuiltin<"__builtin_msa_maxi_s_w">,
  1164. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1165. def int_mips_maxi_s_d : GCCBuiltin<"__builtin_msa_maxi_s_d">,
  1166. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1167. def int_mips_maxi_u_b : GCCBuiltin<"__builtin_msa_maxi_u_b">,
  1168. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1169. def int_mips_maxi_u_h : GCCBuiltin<"__builtin_msa_maxi_u_h">,
  1170. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1171. def int_mips_maxi_u_w : GCCBuiltin<"__builtin_msa_maxi_u_w">,
  1172. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1173. def int_mips_maxi_u_d : GCCBuiltin<"__builtin_msa_maxi_u_d">,
  1174. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1175. def int_mips_min_a_b : GCCBuiltin<"__builtin_msa_min_a_b">,
  1176. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1177. def int_mips_min_a_h : GCCBuiltin<"__builtin_msa_min_a_h">,
  1178. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1179. def int_mips_min_a_w : GCCBuiltin<"__builtin_msa_min_a_w">,
  1180. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1181. def int_mips_min_a_d : GCCBuiltin<"__builtin_msa_min_a_d">,
  1182. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1183. def int_mips_min_s_b : GCCBuiltin<"__builtin_msa_min_s_b">,
  1184. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1185. def int_mips_min_s_h : GCCBuiltin<"__builtin_msa_min_s_h">,
  1186. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1187. def int_mips_min_s_w : GCCBuiltin<"__builtin_msa_min_s_w">,
  1188. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1189. def int_mips_min_s_d : GCCBuiltin<"__builtin_msa_min_s_d">,
  1190. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1191. def int_mips_min_u_b : GCCBuiltin<"__builtin_msa_min_u_b">,
  1192. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1193. def int_mips_min_u_h : GCCBuiltin<"__builtin_msa_min_u_h">,
  1194. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1195. def int_mips_min_u_w : GCCBuiltin<"__builtin_msa_min_u_w">,
  1196. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1197. def int_mips_min_u_d : GCCBuiltin<"__builtin_msa_min_u_d">,
  1198. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1199. def int_mips_mini_s_b : GCCBuiltin<"__builtin_msa_mini_s_b">,
  1200. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1201. def int_mips_mini_s_h : GCCBuiltin<"__builtin_msa_mini_s_h">,
  1202. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1203. def int_mips_mini_s_w : GCCBuiltin<"__builtin_msa_mini_s_w">,
  1204. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1205. def int_mips_mini_s_d : GCCBuiltin<"__builtin_msa_mini_s_d">,
  1206. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1207. def int_mips_mini_u_b : GCCBuiltin<"__builtin_msa_mini_u_b">,
  1208. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1209. def int_mips_mini_u_h : GCCBuiltin<"__builtin_msa_mini_u_h">,
  1210. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1211. def int_mips_mini_u_w : GCCBuiltin<"__builtin_msa_mini_u_w">,
  1212. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1213. def int_mips_mini_u_d : GCCBuiltin<"__builtin_msa_mini_u_d">,
  1214. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1215. def int_mips_mod_s_b : GCCBuiltin<"__builtin_msa_mod_s_b">,
  1216. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1217. def int_mips_mod_s_h : GCCBuiltin<"__builtin_msa_mod_s_h">,
  1218. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1219. def int_mips_mod_s_w : GCCBuiltin<"__builtin_msa_mod_s_w">,
  1220. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1221. def int_mips_mod_s_d : GCCBuiltin<"__builtin_msa_mod_s_d">,
  1222. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1223. def int_mips_mod_u_b : GCCBuiltin<"__builtin_msa_mod_u_b">,
  1224. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1225. def int_mips_mod_u_h : GCCBuiltin<"__builtin_msa_mod_u_h">,
  1226. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1227. def int_mips_mod_u_w : GCCBuiltin<"__builtin_msa_mod_u_w">,
  1228. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1229. def int_mips_mod_u_d : GCCBuiltin<"__builtin_msa_mod_u_d">,
  1230. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1231. def int_mips_move_v : GCCBuiltin<"__builtin_msa_move_v">,
  1232. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  1233. def int_mips_msub_q_h : GCCBuiltin<"__builtin_msa_msub_q_h">,
  1234. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1235. [IntrNoMem]>;
  1236. def int_mips_msub_q_w : GCCBuiltin<"__builtin_msa_msub_q_w">,
  1237. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1238. [IntrNoMem]>;
  1239. def int_mips_msubr_q_h : GCCBuiltin<"__builtin_msa_msubr_q_h">,
  1240. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1241. [IntrNoMem]>;
  1242. def int_mips_msubr_q_w : GCCBuiltin<"__builtin_msa_msubr_q_w">,
  1243. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1244. [IntrNoMem]>;
  1245. def int_mips_msubv_b : GCCBuiltin<"__builtin_msa_msubv_b">,
  1246. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  1247. [IntrNoMem]>;
  1248. def int_mips_msubv_h : GCCBuiltin<"__builtin_msa_msubv_h">,
  1249. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1250. [IntrNoMem]>;
  1251. def int_mips_msubv_w : GCCBuiltin<"__builtin_msa_msubv_w">,
  1252. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1253. [IntrNoMem]>;
  1254. def int_mips_msubv_d : GCCBuiltin<"__builtin_msa_msubv_d">,
  1255. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
  1256. [IntrNoMem]>;
  1257. def int_mips_mul_q_h : GCCBuiltin<"__builtin_msa_mul_q_h">,
  1258. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1259. def int_mips_mul_q_w : GCCBuiltin<"__builtin_msa_mul_q_w">,
  1260. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1261. def int_mips_mulr_q_h : GCCBuiltin<"__builtin_msa_mulr_q_h">,
  1262. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1263. def int_mips_mulr_q_w : GCCBuiltin<"__builtin_msa_mulr_q_w">,
  1264. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1265. def int_mips_mulv_b : GCCBuiltin<"__builtin_msa_mulv_b">,
  1266. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1267. def int_mips_mulv_h : GCCBuiltin<"__builtin_msa_mulv_h">,
  1268. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1269. def int_mips_mulv_w : GCCBuiltin<"__builtin_msa_mulv_w">,
  1270. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1271. def int_mips_mulv_d : GCCBuiltin<"__builtin_msa_mulv_d">,
  1272. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1273. def int_mips_nloc_b : GCCBuiltin<"__builtin_msa_nloc_b">,
  1274. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  1275. def int_mips_nloc_h : GCCBuiltin<"__builtin_msa_nloc_h">,
  1276. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  1277. def int_mips_nloc_w : GCCBuiltin<"__builtin_msa_nloc_w">,
  1278. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  1279. def int_mips_nloc_d : GCCBuiltin<"__builtin_msa_nloc_d">,
  1280. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  1281. def int_mips_nlzc_b : GCCBuiltin<"__builtin_msa_nlzc_b">,
  1282. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  1283. def int_mips_nlzc_h : GCCBuiltin<"__builtin_msa_nlzc_h">,
  1284. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  1285. def int_mips_nlzc_w : GCCBuiltin<"__builtin_msa_nlzc_w">,
  1286. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  1287. def int_mips_nlzc_d : GCCBuiltin<"__builtin_msa_nlzc_d">,
  1288. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  1289. def int_mips_nor_v : GCCBuiltin<"__builtin_msa_nor_v">,
  1290. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1291. def int_mips_nori_b : GCCBuiltin<"__builtin_msa_nori_b">,
  1292. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1293. def int_mips_or_v : GCCBuiltin<"__builtin_msa_or_v">,
  1294. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1295. def int_mips_ori_b : GCCBuiltin<"__builtin_msa_ori_b">,
  1296. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1297. def int_mips_pckev_b : GCCBuiltin<"__builtin_msa_pckev_b">,
  1298. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1299. def int_mips_pckev_h : GCCBuiltin<"__builtin_msa_pckev_h">,
  1300. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1301. def int_mips_pckev_w : GCCBuiltin<"__builtin_msa_pckev_w">,
  1302. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1303. def int_mips_pckev_d : GCCBuiltin<"__builtin_msa_pckev_d">,
  1304. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1305. def int_mips_pckod_b : GCCBuiltin<"__builtin_msa_pckod_b">,
  1306. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1307. def int_mips_pckod_h : GCCBuiltin<"__builtin_msa_pckod_h">,
  1308. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1309. def int_mips_pckod_w : GCCBuiltin<"__builtin_msa_pckod_w">,
  1310. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1311. def int_mips_pckod_d : GCCBuiltin<"__builtin_msa_pckod_d">,
  1312. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1313. def int_mips_pcnt_b : GCCBuiltin<"__builtin_msa_pcnt_b">,
  1314. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty], [IntrNoMem]>;
  1315. def int_mips_pcnt_h : GCCBuiltin<"__builtin_msa_pcnt_h">,
  1316. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty], [IntrNoMem]>;
  1317. def int_mips_pcnt_w : GCCBuiltin<"__builtin_msa_pcnt_w">,
  1318. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty], [IntrNoMem]>;
  1319. def int_mips_pcnt_d : GCCBuiltin<"__builtin_msa_pcnt_d">,
  1320. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
  1321. def int_mips_sat_s_b : GCCBuiltin<"__builtin_msa_sat_s_b">,
  1322. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1323. def int_mips_sat_s_h : GCCBuiltin<"__builtin_msa_sat_s_h">,
  1324. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1325. def int_mips_sat_s_w : GCCBuiltin<"__builtin_msa_sat_s_w">,
  1326. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1327. def int_mips_sat_s_d : GCCBuiltin<"__builtin_msa_sat_s_d">,
  1328. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1329. def int_mips_sat_u_b : GCCBuiltin<"__builtin_msa_sat_u_b">,
  1330. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1331. def int_mips_sat_u_h : GCCBuiltin<"__builtin_msa_sat_u_h">,
  1332. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1333. def int_mips_sat_u_w : GCCBuiltin<"__builtin_msa_sat_u_w">,
  1334. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1335. def int_mips_sat_u_d : GCCBuiltin<"__builtin_msa_sat_u_d">,
  1336. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1337. def int_mips_shf_b : GCCBuiltin<"__builtin_msa_shf_b">,
  1338. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1339. def int_mips_shf_h : GCCBuiltin<"__builtin_msa_shf_h">,
  1340. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1341. def int_mips_shf_w : GCCBuiltin<"__builtin_msa_shf_w">,
  1342. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1343. def int_mips_sld_b : GCCBuiltin<"__builtin_msa_sld_b">,
  1344. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1345. def int_mips_sld_h : GCCBuiltin<"__builtin_msa_sld_h">,
  1346. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1347. def int_mips_sld_w : GCCBuiltin<"__builtin_msa_sld_w">,
  1348. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1349. def int_mips_sld_d : GCCBuiltin<"__builtin_msa_sld_d">,
  1350. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1351. def int_mips_sldi_b : GCCBuiltin<"__builtin_msa_sldi_b">,
  1352. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
  1353. [IntrNoMem]>;
  1354. def int_mips_sldi_h : GCCBuiltin<"__builtin_msa_sldi_h">,
  1355. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
  1356. [IntrNoMem]>;
  1357. def int_mips_sldi_w : GCCBuiltin<"__builtin_msa_sldi_w">,
  1358. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
  1359. [IntrNoMem]>;
  1360. def int_mips_sldi_d : GCCBuiltin<"__builtin_msa_sldi_d">,
  1361. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
  1362. [IntrNoMem]>;
  1363. def int_mips_sll_b : GCCBuiltin<"__builtin_msa_sll_b">,
  1364. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1365. def int_mips_sll_h : GCCBuiltin<"__builtin_msa_sll_h">,
  1366. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1367. def int_mips_sll_w : GCCBuiltin<"__builtin_msa_sll_w">,
  1368. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1369. def int_mips_sll_d : GCCBuiltin<"__builtin_msa_sll_d">,
  1370. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1371. def int_mips_slli_b : GCCBuiltin<"__builtin_msa_slli_b">,
  1372. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1373. def int_mips_slli_h : GCCBuiltin<"__builtin_msa_slli_h">,
  1374. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1375. def int_mips_slli_w : GCCBuiltin<"__builtin_msa_slli_w">,
  1376. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1377. def int_mips_slli_d : GCCBuiltin<"__builtin_msa_slli_d">,
  1378. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1379. def int_mips_splat_b : GCCBuiltin<"__builtin_msa_splat_b">,
  1380. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1381. def int_mips_splat_h : GCCBuiltin<"__builtin_msa_splat_h">,
  1382. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1383. def int_mips_splat_w : GCCBuiltin<"__builtin_msa_splat_w">,
  1384. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1385. def int_mips_splat_d : GCCBuiltin<"__builtin_msa_splat_d">,
  1386. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1387. def int_mips_splati_b : GCCBuiltin<"__builtin_msa_splati_b">,
  1388. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1389. def int_mips_splati_h : GCCBuiltin<"__builtin_msa_splati_h">,
  1390. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1391. def int_mips_splati_w : GCCBuiltin<"__builtin_msa_splati_w">,
  1392. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1393. def int_mips_splati_d : GCCBuiltin<"__builtin_msa_splati_d">,
  1394. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1395. def int_mips_sra_b : GCCBuiltin<"__builtin_msa_sra_b">,
  1396. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1397. def int_mips_sra_h : GCCBuiltin<"__builtin_msa_sra_h">,
  1398. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1399. def int_mips_sra_w : GCCBuiltin<"__builtin_msa_sra_w">,
  1400. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1401. def int_mips_sra_d : GCCBuiltin<"__builtin_msa_sra_d">,
  1402. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1403. def int_mips_srai_b : GCCBuiltin<"__builtin_msa_srai_b">,
  1404. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1405. def int_mips_srai_h : GCCBuiltin<"__builtin_msa_srai_h">,
  1406. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1407. def int_mips_srai_w : GCCBuiltin<"__builtin_msa_srai_w">,
  1408. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1409. def int_mips_srai_d : GCCBuiltin<"__builtin_msa_srai_d">,
  1410. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1411. def int_mips_srar_b : GCCBuiltin<"__builtin_msa_srar_b">,
  1412. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1413. def int_mips_srar_h : GCCBuiltin<"__builtin_msa_srar_h">,
  1414. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1415. def int_mips_srar_w : GCCBuiltin<"__builtin_msa_srar_w">,
  1416. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1417. def int_mips_srar_d : GCCBuiltin<"__builtin_msa_srar_d">,
  1418. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1419. def int_mips_srari_b : GCCBuiltin<"__builtin_msa_srari_b">,
  1420. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1421. def int_mips_srari_h : GCCBuiltin<"__builtin_msa_srari_h">,
  1422. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1423. def int_mips_srari_w : GCCBuiltin<"__builtin_msa_srari_w">,
  1424. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1425. def int_mips_srari_d : GCCBuiltin<"__builtin_msa_srari_d">,
  1426. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1427. def int_mips_srl_b : GCCBuiltin<"__builtin_msa_srl_b">,
  1428. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1429. def int_mips_srl_h : GCCBuiltin<"__builtin_msa_srl_h">,
  1430. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1431. def int_mips_srl_w : GCCBuiltin<"__builtin_msa_srl_w">,
  1432. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1433. def int_mips_srl_d : GCCBuiltin<"__builtin_msa_srl_d">,
  1434. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1435. def int_mips_srli_b : GCCBuiltin<"__builtin_msa_srli_b">,
  1436. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1437. def int_mips_srli_h : GCCBuiltin<"__builtin_msa_srli_h">,
  1438. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1439. def int_mips_srli_w : GCCBuiltin<"__builtin_msa_srli_w">,
  1440. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1441. def int_mips_srli_d : GCCBuiltin<"__builtin_msa_srli_d">,
  1442. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1443. def int_mips_srlr_b : GCCBuiltin<"__builtin_msa_srlr_b">,
  1444. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1445. def int_mips_srlr_h : GCCBuiltin<"__builtin_msa_srlr_h">,
  1446. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1447. def int_mips_srlr_w : GCCBuiltin<"__builtin_msa_srlr_w">,
  1448. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1449. def int_mips_srlr_d : GCCBuiltin<"__builtin_msa_srlr_d">,
  1450. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1451. def int_mips_srlri_b : GCCBuiltin<"__builtin_msa_srlri_b">,
  1452. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1453. def int_mips_srlri_h : GCCBuiltin<"__builtin_msa_srlri_h">,
  1454. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1455. def int_mips_srlri_w : GCCBuiltin<"__builtin_msa_srlri_w">,
  1456. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1457. def int_mips_srlri_d : GCCBuiltin<"__builtin_msa_srlri_d">,
  1458. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1459. def int_mips_st_b : GCCBuiltin<"__builtin_msa_st_b">,
  1460. Intrinsic<[], [llvm_v16i8_ty, llvm_ptr_ty, llvm_i32_ty],
  1461. [IntrReadWriteArgMem]>;
  1462. def int_mips_st_h : GCCBuiltin<"__builtin_msa_st_h">,
  1463. Intrinsic<[], [llvm_v8i16_ty, llvm_ptr_ty, llvm_i32_ty],
  1464. [IntrReadWriteArgMem]>;
  1465. def int_mips_st_w : GCCBuiltin<"__builtin_msa_st_w">,
  1466. Intrinsic<[], [llvm_v4i32_ty, llvm_ptr_ty, llvm_i32_ty],
  1467. [IntrReadWriteArgMem]>;
  1468. def int_mips_st_d : GCCBuiltin<"__builtin_msa_st_d">,
  1469. Intrinsic<[], [llvm_v2i64_ty, llvm_ptr_ty, llvm_i32_ty],
  1470. [IntrReadWriteArgMem]>;
  1471. def int_mips_subs_s_b : GCCBuiltin<"__builtin_msa_subs_s_b">,
  1472. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1473. def int_mips_subs_s_h : GCCBuiltin<"__builtin_msa_subs_s_h">,
  1474. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1475. def int_mips_subs_s_w : GCCBuiltin<"__builtin_msa_subs_s_w">,
  1476. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1477. def int_mips_subs_s_d : GCCBuiltin<"__builtin_msa_subs_s_d">,
  1478. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1479. def int_mips_subs_u_b : GCCBuiltin<"__builtin_msa_subs_u_b">,
  1480. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1481. def int_mips_subs_u_h : GCCBuiltin<"__builtin_msa_subs_u_h">,
  1482. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1483. def int_mips_subs_u_w : GCCBuiltin<"__builtin_msa_subs_u_w">,
  1484. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1485. def int_mips_subs_u_d : GCCBuiltin<"__builtin_msa_subs_u_d">,
  1486. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1487. def int_mips_subsus_u_b : GCCBuiltin<"__builtin_msa_subsus_u_b">,
  1488. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1489. def int_mips_subsus_u_h : GCCBuiltin<"__builtin_msa_subsus_u_h">,
  1490. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1491. def int_mips_subsus_u_w : GCCBuiltin<"__builtin_msa_subsus_u_w">,
  1492. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1493. def int_mips_subsus_u_d : GCCBuiltin<"__builtin_msa_subsus_u_d">,
  1494. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1495. def int_mips_subsuu_s_b : GCCBuiltin<"__builtin_msa_subsuu_s_b">,
  1496. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1497. def int_mips_subsuu_s_h : GCCBuiltin<"__builtin_msa_subsuu_s_h">,
  1498. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1499. def int_mips_subsuu_s_w : GCCBuiltin<"__builtin_msa_subsuu_s_w">,
  1500. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1501. def int_mips_subsuu_s_d : GCCBuiltin<"__builtin_msa_subsuu_s_d">,
  1502. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1503. def int_mips_subv_b : GCCBuiltin<"__builtin_msa_subv_b">,
  1504. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1505. def int_mips_subv_h : GCCBuiltin<"__builtin_msa_subv_h">,
  1506. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [IntrNoMem]>;
  1507. def int_mips_subv_w : GCCBuiltin<"__builtin_msa_subv_w">,
  1508. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [IntrNoMem]>;
  1509. def int_mips_subv_d : GCCBuiltin<"__builtin_msa_subv_d">,
  1510. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
  1511. def int_mips_subvi_b : GCCBuiltin<"__builtin_msa_subvi_b">,
  1512. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1513. def int_mips_subvi_h : GCCBuiltin<"__builtin_msa_subvi_h">,
  1514. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem]>;
  1515. def int_mips_subvi_w : GCCBuiltin<"__builtin_msa_subvi_w">,
  1516. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem]>;
  1517. def int_mips_subvi_d : GCCBuiltin<"__builtin_msa_subvi_d">,
  1518. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
  1519. def int_mips_vshf_b : GCCBuiltin<"__builtin_msa_vshf_b">,
  1520. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
  1521. [IntrNoMem]>;
  1522. def int_mips_vshf_h : GCCBuiltin<"__builtin_msa_vshf_h">,
  1523. Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_v8i16_ty],
  1524. [IntrNoMem]>;
  1525. def int_mips_vshf_w : GCCBuiltin<"__builtin_msa_vshf_w">,
  1526. Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_v4i32_ty],
  1527. [IntrNoMem]>;
  1528. def int_mips_vshf_d : GCCBuiltin<"__builtin_msa_vshf_d">,
  1529. Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_v2i64_ty],
  1530. [IntrNoMem]>;
  1531. def int_mips_xor_v : GCCBuiltin<"__builtin_msa_xor_v">,
  1532. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
  1533. def int_mips_xori_b : GCCBuiltin<"__builtin_msa_xori_b">,
  1534. Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
  1535. }