[opaque pointer type] Add textual IR support for explicit type parameter to load instruction

Essentially the same as the GEP change in r230786.

A similar migration script can be used to update test cases, though a few more
test case improvements/changes were required this time around: (r229269-r229278)

import fileinput
import sys
import re

pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)")

for line in sys.stdin:
  sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line))

Reviewers: rafael, dexonsmith, grosser

Differential Revision: http://reviews.llvm.org/D7649

llvm-svn: 230794
diff --git a/llvm/test/CodeGen/PowerPC/structsinmem.ll b/llvm/test/CodeGen/PowerPC/structsinmem.ll
index 5d94e5a..4b51e3a 100644
--- a/llvm/test/CodeGen/PowerPC/structsinmem.ll
+++ b/llvm/test/CodeGen/PowerPC/structsinmem.ll
@@ -89,27 +89,27 @@
   store i32 %z7, i32* %z7.addr, align 4
   store i32 %z8, i32* %z8.addr, align 4
   %a = getelementptr inbounds %struct.s1, %struct.s1* %v1, i32 0, i32 0
-  %0 = load i8* %a, align 1
+  %0 = load i8, i8* %a, align 1
   %conv = zext i8 %0 to i32
   %a1 = getelementptr inbounds %struct.s2, %struct.s2* %v2, i32 0, i32 0
-  %1 = load i16* %a1, align 2
+  %1 = load i16, i16* %a1, align 2
   %conv2 = sext i16 %1 to i32
   %add = add nsw i32 %conv, %conv2
   %a3 = getelementptr inbounds %struct.s3, %struct.s3* %v3, i32 0, i32 0
-  %2 = load i16* %a3, align 2
+  %2 = load i16, i16* %a3, align 2
   %conv4 = sext i16 %2 to i32
   %add5 = add nsw i32 %add, %conv4
   %a6 = getelementptr inbounds %struct.s4, %struct.s4* %v4, i32 0, i32 0
-  %3 = load i32* %a6, align 4
+  %3 = load i32, i32* %a6, align 4
   %add7 = add nsw i32 %add5, %3
   %a8 = getelementptr inbounds %struct.s5, %struct.s5* %v5, i32 0, i32 0
-  %4 = load i32* %a8, align 4
+  %4 = load i32, i32* %a8, align 4
   %add9 = add nsw i32 %add7, %4
   %a10 = getelementptr inbounds %struct.s6, %struct.s6* %v6, i32 0, i32 0
-  %5 = load i32* %a10, align 4
+  %5 = load i32, i32* %a10, align 4
   %add11 = add nsw i32 %add9, %5
   %a12 = getelementptr inbounds %struct.s7, %struct.s7* %v7, i32 0, i32 0
-  %6 = load i32* %a12, align 4
+  %6 = load i32, i32* %a12, align 4
   %add13 = add nsw i32 %add11, %6
   ret i32 %add13
 
@@ -181,27 +181,27 @@
   store i32 %z7, i32* %z7.addr, align 4
   store i32 %z8, i32* %z8.addr, align 4
   %a = getelementptr inbounds %struct.t1, %struct.t1* %v1, i32 0, i32 0
-  %0 = load i8* %a, align 1
+  %0 = load i8, i8* %a, align 1
   %conv = zext i8 %0 to i32
   %a1 = getelementptr inbounds %struct.t2, %struct.t2* %v2, i32 0, i32 0
-  %1 = load i16* %a1, align 1
+  %1 = load i16, i16* %a1, align 1
   %conv2 = sext i16 %1 to i32
   %add = add nsw i32 %conv, %conv2
   %a3 = getelementptr inbounds %struct.t3, %struct.t3* %v3, i32 0, i32 0
-  %2 = load i16* %a3, align 1
+  %2 = load i16, i16* %a3, align 1
   %conv4 = sext i16 %2 to i32
   %add5 = add nsw i32 %add, %conv4
   %a6 = getelementptr inbounds %struct.t4, %struct.t4* %v4, i32 0, i32 0
-  %3 = load i32* %a6, align 1
+  %3 = load i32, i32* %a6, align 1
   %add7 = add nsw i32 %add5, %3
   %a8 = getelementptr inbounds %struct.t5, %struct.t5* %v5, i32 0, i32 0
-  %4 = load i32* %a8, align 1
+  %4 = load i32, i32* %a8, align 1
   %add9 = add nsw i32 %add7, %4
   %a10 = getelementptr inbounds %struct.t6, %struct.t6* %v6, i32 0, i32 0
-  %5 = load i32* %a10, align 1
+  %5 = load i32, i32* %a10, align 1
   %add11 = add nsw i32 %add9, %5
   %a12 = getelementptr inbounds %struct.t7, %struct.t7* %v7, i32 0, i32 0
-  %6 = load i32* %a12, align 1
+  %6 = load i32, i32* %a12, align 1
   %add13 = add nsw i32 %add11, %6
   ret i32 %add13