IntrinsicsMips.td 95 KB

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